diff --git a/cores/esp32/esp32-hal-gpio.c b/cores/esp32/esp32-hal-gpio.c index 68ab29e8..39d044a5 100644 --- a/cores/esp32/esp32-hal-gpio.c +++ b/cores/esp32/esp32-hal-gpio.c @@ -13,6 +13,7 @@ // limitations under the License. #include "esp32-hal-gpio.h" +#include "pins_arduino.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_attr.h" diff --git a/cores/esp32/esp32-hal-uart.c b/cores/esp32/esp32-hal-uart.c index e7831db0..59197161 100644 --- a/cores/esp32/esp32-hal-uart.c +++ b/cores/esp32/esp32-hal-uart.c @@ -339,8 +339,13 @@ void uartRxFifoToQueue(uart_t* uart) //disable interrupts uart->dev->int_ena.val = 0; uart->dev->int_clr.val = 0xffffffff; +#if CONFIG_IDF_TARGET_ESP32 while (uart->dev->status.rxfifo_cnt || (uart->dev->mem_rx_status.wr_addr != uart->dev->mem_rx_status.rd_addr)) { c = uart->dev->fifo.rw_byte; +#else + while (uart->dev->status.rxfifo_cnt) { + c = uart->dev->ahb_fifo.rw_byte; +#endif xQueueSend(uart->queue, &c, 0); } //enable interrupts diff --git a/libraries/WiFi/src/WiFiGeneric.cpp b/libraries/WiFi/src/WiFiGeneric.cpp index 2d707fd7..fd4a6277 100644 --- a/libraries/WiFi/src/WiFiGeneric.cpp +++ b/libraries/WiFi/src/WiFiGeneric.cpp @@ -79,9 +79,24 @@ static void _network_event_task(void * arg){ _network_event_task_handle = NULL; } +static esp_err_t _network_event_cb(void* arg, system_event_t *event) { + system_prov_event_t *sys_prov_data = (system_prov_event_t *)malloc(sizeof(system_prov_event_t)); + if(sys_prov_data == NULL) { + return ESP_FAIL; + } + sys_prov_data->sys_event = event; + sys_prov_data->prov_event = NULL; + if (postToSysQueue(sys_prov_data) != ESP_OK){ + free(sys_prov_data); + return ESP_FAIL; + } + return ESP_OK; +} + static void _network_event_cb(void* arg, esp_event_base_t base, int32_t id, void* data) { - if (xQueueSend(_network_event_queue, (system_event_t *)data, portMAX_DELAY) != pdPASS) { - log_w("Network Event Queue Send Failed!"); + system_event_t *event = (system_event_t *)data; + if(_network_event_cb(arg, event) != ESP_OK){ + log_e("event dispatch failed"); } } // static esp_err_t _network_event_cb(void *arg, system_event_t *event){ diff --git a/libraries/WiFi/src/WiFiGeneric.h b/libraries/WiFi/src/WiFiGeneric.h index 3d4b96f5..ccab20d7 100644 --- a/libraries/WiFi/src/WiFiGeneric.h +++ b/libraries/WiFi/src/WiFiGeneric.h @@ -114,7 +114,7 @@ class WiFiGenericClass bool setTxPower(wifi_power_t power); wifi_power_t getTxPower(); - static esp_err_t _eventCallback(void *arg, system_event_t *event, wifi_prov_event_t *prov_event); + static esp_err_t _eventCallback(void *arg, system_event_t *event, wifi_prov_event_t *prov_event=NULL); protected: static bool _persistent;