summaryrefslogtreecommitdiff
path: root/ports/esp32
diff options
context:
space:
mode:
Diffstat (limited to 'ports/esp32')
-rw-r--r--ports/esp32/boards/sdkconfig.base1
-rw-r--r--ports/esp32/esp32_common.cmake2
-rw-r--r--ports/esp32/machine_timer.c5
-rw-r--r--ports/esp32/modespnow.c11
-rw-r--r--ports/esp32/network_ppp.c31
-rw-r--r--ports/esp32/network_wlan.c7
6 files changed, 41 insertions, 16 deletions
diff --git a/ports/esp32/boards/sdkconfig.base b/ports/esp32/boards/sdkconfig.base
index 4bbccf77d..78b09ec6b 100644
--- a/ports/esp32/boards/sdkconfig.base
+++ b/ports/esp32/boards/sdkconfig.base
@@ -119,6 +119,7 @@ CONFIG_UART_ISR_IN_IRAM=y
# IDF 5 deprecated
CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN=y
CONFIG_RMT_SUPPRESS_DEPRECATE_WARN=y
+CONFIG_TOUCH_SUPPRESS_DEPRECATE_WARN=y
CONFIG_ETH_USE_SPI_ETHERNET=y
CONFIG_ETH_SPI_ETHERNET_W5500=y
diff --git a/ports/esp32/esp32_common.cmake b/ports/esp32/esp32_common.cmake
index 9e8acf889..79a60adac 100644
--- a/ports/esp32/esp32_common.cmake
+++ b/ports/esp32/esp32_common.cmake
@@ -265,7 +265,7 @@ target_include_directories(${MICROPY_TARGET} PUBLIC
# Add additional extmod and usermod components.
if (MICROPY_PY_BTREE)
- target_link_libraries(${MICROPY_TARGET} micropy_extmod_btree)
+ target_link_libraries(${MICROPY_TARGET} $<TARGET_OBJECTS:micropy_extmod_btree>)
endif()
target_link_libraries(${MICROPY_TARGET} usermod)
diff --git a/ports/esp32/machine_timer.c b/ports/esp32/machine_timer.c
index 3fb893aad..b0292a037 100644
--- a/ports/esp32/machine_timer.c
+++ b/ports/esp32/machine_timer.c
@@ -181,8 +181,13 @@ void machine_timer_enable(machine_timer_obj_t *self) {
timer_ll_enable_counter(self->hal_context.dev, self->index, false);
esp_clk_tree_enable_src(TIMER_CLK_SRC, true);
+ #if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0)
timer_ll_set_clock_source(self->hal_context.dev, self->index, TIMER_CLK_SRC);
timer_ll_enable_clock(self->hal_context.dev, self->index, true);
+ #else
+ timer_ll_set_clock_source(self->group, self->index, TIMER_CLK_SRC);
+ timer_ll_enable_clock(self->group, self->index, true);
+ #endif
timer_ll_set_clock_prescale(self->hal_context.dev, self->index, TIMER_DIVIDER);
timer_hal_set_counter_value(&self->hal_context, 0);
timer_ll_set_count_direction(self->hal_context.dev, self->index, GPTIMER_COUNT_UP);
diff --git a/ports/esp32/modespnow.c b/ports/esp32/modespnow.c
index 7873ff897..ab50032ff 100644
--- a/ports/esp32/modespnow.c
+++ b/ports/esp32/modespnow.c
@@ -179,7 +179,11 @@ static mp_obj_t espnow_make_new(const mp_obj_type_t *type, size_t n_args,
}
// Forward declare the send and recv ESPNow callbacks
+#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0)
static void send_cb(const uint8_t *mac_addr, esp_now_send_status_t status);
+#else
+static void send_cb(const esp_now_send_info_t *tx_info, esp_now_send_status_t status);
+#endif
static void recv_cb(const esp_now_recv_info_t *recv_info, const uint8_t *msg, int msg_len);
@@ -539,7 +543,12 @@ static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espnow_send_obj, 2, 4, espnow_send);
// Callback triggered when a sent packet is acknowledged by the peer (or not).
// Just count the number of responses and number of failures.
// These are used in the send() logic.
-static void send_cb(const uint8_t *mac_addr, esp_now_send_status_t status) {
+#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 5, 0)
+static void send_cb(const uint8_t *mac_addr, esp_now_send_status_t status)
+#else
+static void send_cb(const esp_now_send_info_t *tx_info, esp_now_send_status_t status)
+#endif
+{
esp_espnow_obj_t *self = _get_singleton();
self->tx_responses++;
if (status != ESP_NOW_SEND_SUCCESS) {
diff --git a/ports/esp32/network_ppp.c b/ports/esp32/network_ppp.c
index 8b700c98e..18e0c8816 100644
--- a/ports/esp32/network_ppp.c
+++ b/ports/esp32/network_ppp.c
@@ -68,8 +68,6 @@ typedef struct _network_ppp_obj_t {
const mp_obj_type_t esp_network_ppp_lwip_type;
-static mp_obj_t network_ppp___del__(mp_obj_t self_in);
-
static void network_ppp_stream_uart_irq_disable(network_ppp_obj_t *self) {
if (self->stream == mp_const_none) {
return;
@@ -94,8 +92,15 @@ static void network_ppp_status_cb(ppp_pcb *pcb, int err_code, void *ctx) {
// only need to free the PPP PCB, not close it.
self->state = STATE_ACTIVE;
}
+ network_ppp_stream_uart_irq_disable(self);
// Clean up the PPP PCB.
- network_ppp___del__(MP_OBJ_FROM_PTR(self));
+ // Note: Because we use pppapi_close instead of ppp_close, this
+ // callback will run on the lwIP tcpip_thread, thus to prevent a
+ // deadlock we must use the non-threadsafe function here.
+ if (ppp_free(pcb) == ERR_OK) {
+ self->state = STATE_INACTIVE;
+ self->pcb = NULL;
+ }
break;
default:
self->state = STATE_ERROR;
@@ -123,17 +128,17 @@ static mp_obj_t network_ppp_make_new(const mp_obj_type_t *type, size_t n_args, s
static mp_obj_t network_ppp___del__(mp_obj_t self_in) {
network_ppp_obj_t *self = MP_OBJ_TO_PTR(self_in);
- if (self->state >= STATE_ACTIVE) {
- if (self->state >= STATE_ERROR) {
- // Still connected over the stream.
- // Force the connection to close, with nocarrier=1.
- self->state = STATE_INACTIVE;
- pppapi_close(self->pcb, 1);
- }
- network_ppp_stream_uart_irq_disable(self);
+ network_ppp_stream_uart_irq_disable(self);
+ if (self->state >= STATE_ERROR) {
+ // Still connected over the stream.
+ // Force the connection to close, with nocarrier=1.
+ pppapi_close(self->pcb, 1);
+ } else if (self->state >= STATE_ACTIVE) {
// Free PPP PCB and reset state.
+ if (pppapi_free(self->pcb) != ERR_OK) {
+ mp_raise_msg(&mp_type_OSError, MP_ERROR_TEXT("pppapi_free failed"));
+ }
self->state = STATE_INACTIVE;
- pppapi_free(self->pcb);
self->pcb = NULL;
}
return mp_const_none;
@@ -163,7 +168,7 @@ static mp_obj_t network_ppp_poll(size_t n_args, const mp_obj_t *args) {
}
mp_printf(&mp_plat_print, ")\n");
#endif
- pppos_input(self->pcb, (u8_t *)buf, len);
+ pppos_input_tcpip(self->pcb, (u8_t *)buf, len);
total_len += len;
}
diff --git a/ports/esp32/network_wlan.c b/ports/esp32/network_wlan.c
index e85d1328f..e20af4806 100644
--- a/ports/esp32/network_wlan.c
+++ b/ports/esp32/network_wlan.c
@@ -767,6 +767,9 @@ static const mp_rom_map_elem_t wlan_if_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_SEC_WPA3_ENT), MP_ROM_INT(WIFI_AUTH_WPA3_ENTERPRISE) },
{ MP_ROM_QSTR(MP_QSTR_SEC_WPA2_WPA3_ENT), MP_ROM_INT(WIFI_AUTH_WPA2_WPA3_ENTERPRISE) },
#endif
+ #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0)
+ { MP_ROM_QSTR(MP_QSTR_SEC_WPA_ENT), MP_ROM_INT(WIFI_AUTH_WPA_ENTERPRISE) },
+ #endif
{ MP_ROM_QSTR(MP_QSTR_PM_NONE), MP_ROM_INT(WIFI_PS_NONE) },
{ MP_ROM_QSTR(MP_QSTR_PM_PERFORMANCE), MP_ROM_INT(WIFI_PS_MIN_MODEM) },
@@ -774,7 +777,9 @@ static const mp_rom_map_elem_t wlan_if_locals_dict_table[] = {
};
static MP_DEFINE_CONST_DICT(wlan_if_locals_dict, wlan_if_locals_dict_table);
-#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0)
+#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0)
+_Static_assert(WIFI_AUTH_MAX == 17, "Synchronize WIFI_AUTH_XXX constants with the ESP-IDF. Look at esp-idf/components/esp_wifi/include/esp_wifi_types_generic.h");
+#elif ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0)
_Static_assert(WIFI_AUTH_MAX == 16, "Synchronize WIFI_AUTH_XXX constants with the ESP-IDF. Look at esp-idf/components/esp_wifi/include/esp_wifi_types_generic.h");
#elif ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 3, 0)
_Static_assert(WIFI_AUTH_MAX == 14, "Synchronize WIFI_AUTH_XXX constants with the ESP-IDF. Look at esp-idf/components/esp_wifi/include/esp_wifi_types_generic.h");