WIP
This commit is contained in:
parent
38e8711732
commit
25b0b567fc
@ -9,7 +9,7 @@ static bool _rx_done_callback(rmt_channel_handle_t channel, const rmt_rx_done_ev
|
|||||||
static size_t _tx_encoder_callback(const void *data, size_t data_size, size_t symbols_written, size_t symbols_free, rmt_symbol_word_t *symbols, bool *done, void *arg);
|
static size_t _tx_encoder_callback(const void *data, size_t data_size, size_t symbols_written, size_t symbols_free, rmt_symbol_word_t *symbols, bool *done, void *arg);
|
||||||
static void _rx_processing(void *pvParameter);
|
static void _rx_processing(void *pvParameter);
|
||||||
static void _gpio_interrupt_callback(void *arg);
|
static void _gpio_interrupt_callback(void *arg);
|
||||||
static void _gpio_interrupt_processing_task(void *pvParameter);
|
static void _gpio_interrupt_processing(void *pvParameter);
|
||||||
|
|
||||||
static const char *TAG = "zh_onewire_slave";
|
static const char *TAG = "zh_onewire_slave";
|
||||||
|
|
||||||
@ -112,14 +112,22 @@ esp_err_t zh_onewire_slave_init(const zh_onewire_slave_init_config_t *config)
|
|||||||
ESP_LOGE(TAG, "Onewire slave initialization fail. Internal error at line %d.", __LINE__);
|
ESP_LOGE(TAG, "Onewire slave initialization fail. Internal error at line %d.", __LINE__);
|
||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
rmt_receive(_rx_channel_handle, _rx_raw_buffer, sizeof(_rx_raw_buffer), &_receive_config);
|
// rmt_receive(_rx_channel_handle, _rx_raw_buffer, sizeof(_rx_raw_buffer), &_receive_config);
|
||||||
gpio_config_t pin_config = {0};
|
gpio_config_t pin_config = {0};
|
||||||
pin_config.intr_type = GPIO_INTR_ANYEDGE;
|
pin_config.intr_type = GPIO_INTR_ANYEDGE;
|
||||||
pin_config.mode = GPIO_MODE_INPUT;
|
pin_config.mode = GPIO_MODE_INPUT;
|
||||||
pin_config.pin_bit_mask = (1ULL << (_init_config.bus_pin + 1));
|
pin_config.pin_bit_mask = (1ULL << (_init_config.bus_pin + 1));
|
||||||
gpio_config(&pin_config);
|
if (gpio_config(&pin_config) != pdPASS)
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG, "Onewire slave initialization fail. Internal error at line %d.", __LINE__);
|
||||||
|
return ESP_FAIL;
|
||||||
|
}
|
||||||
_gpio_interrupt_queue = xQueueCreate(10, sizeof(_gpio_interrupt_data_t)); // Check queue size!!!
|
_gpio_interrupt_queue = xQueueCreate(10, sizeof(_gpio_interrupt_data_t)); // Check queue size!!!
|
||||||
xTaskCreatePinnedToCore(&_gpio_interrupt_processing_task, "NULL", _init_config.stack_size, NULL, (_init_config.task_priority), NULL, 1);
|
if (xTaskCreatePinnedToCore(&_gpio_interrupt_processing, "NULL", _init_config.stack_size, NULL, (_init_config.task_priority), NULL, 1) != pdPASS)
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG, "Onewire slave initialization fail. Internal error at line %d.", __LINE__);
|
||||||
|
return ESP_FAIL;
|
||||||
|
}
|
||||||
gpio_install_isr_service(0);
|
gpio_install_isr_service(0);
|
||||||
gpio_isr_handler_add((_init_config.bus_pin + 1), _gpio_interrupt_callback, NULL);
|
gpio_isr_handler_add((_init_config.bus_pin + 1), _gpio_interrupt_callback, NULL);
|
||||||
_is_initialized = true;
|
_is_initialized = true;
|
||||||
@ -158,7 +166,7 @@ void _gpio_interrupt_callback(void *arg)
|
|||||||
xQueueSendFromISR(_gpio_interrupt_queue, &data, NULL);
|
xQueueSendFromISR(_gpio_interrupt_queue, &data, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _gpio_interrupt_processing_task(void *pvParameter)
|
void _gpio_interrupt_processing(void *pvParameter)
|
||||||
{
|
{
|
||||||
_gpio_interrupt_data_t data = {0};
|
_gpio_interrupt_data_t data = {0};
|
||||||
uint64_t last_time = esp_timer_get_time();
|
uint64_t last_time = esp_timer_get_time();
|
||||||
@ -173,6 +181,7 @@ void _gpio_interrupt_processing_task(void *pvParameter)
|
|||||||
if ((data.time - last_time) > (RESET_PULSE_DURATION * 0.9) && (data.time - last_time) < (RESET_PULSE_DURATION * 2))
|
if ((data.time - last_time) > (RESET_PULSE_DURATION * 0.9) && (data.time - last_time) < (RESET_PULSE_DURATION * 2))
|
||||||
{
|
{
|
||||||
uint8_t pulse[1] = {1};
|
uint8_t pulse[1] = {1};
|
||||||
|
// Reset all transmittions.
|
||||||
rmt_transmit(_tx_channel_handle, _tx_encoder_handle, pulse, sizeof(pulse), &_transmit_config);
|
rmt_transmit(_tx_channel_handle, _tx_encoder_handle, pulse, sizeof(pulse), &_transmit_config);
|
||||||
rmt_tx_wait_all_done(_tx_channel_handle, portMAX_DELAY);
|
rmt_tx_wait_all_done(_tx_channel_handle, portMAX_DELAY);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user