diff --git a/frontend/esp32/main/cardcache.cpp b/frontend/esp32/main/cardcache.cpp index 5ac13254..cb05c3fa 100644 --- a/frontend/esp32/main/cardcache.cpp +++ b/frontend/esp32/main/cardcache.cpp @@ -112,7 +112,7 @@ void Card_cache::thread_body() if (code != 200) { ESP_LOGE(TAG, "Error: Unexpected response from /v2/permissions: %d", code); - Logger::instance().log(format("Error: Unexpected response from /v2/permissions: %d", code)); + //Logger::instance().log(format("Error: Unexpected response from /v2/permissions: %d", code)); continue; } auto root = cJSON_Parse(buffer.get()); @@ -120,13 +120,13 @@ void Card_cache::thread_body() if (!root) { ESP_LOGE(TAG, "Error: Bad JSON from /v2/permissions: %s", buffer.get()); - Logger::instance().log(format("Error: Bad JSON from /v2/permissions")); + //Logger::instance().log(format("Error: Bad JSON from /v2/permissions")); continue; } if (!cJSON_IsArray(root)) { ESP_LOGE(TAG, "Error: Response from /v2/permissions is not an array"); - Logger::instance().log("Error: Response from /v2/permissions is not an array"); + //Logger::instance().log("Error: Response from /v2/permissions is not an array"); continue; } // Create new cache @@ -137,28 +137,28 @@ void Card_cache::thread_body() if (!cJSON_IsObject(it)) { ESP_LOGE(TAG, "Error: Item from /v2/permissions is not an object"); - Logger::instance().log("Error: Item from /v2/permissions is not an object"); + //Logger::instance().log("Error: Item from /v2/permissions is not an object"); continue; } auto card_id_node = cJSON_GetObjectItem(it, "card_id"); if (!cJSON_IsString(card_id_node)) { ESP_LOGE(TAG, "Error: Item from /v2/permissions has no card_id"); - Logger::instance().log("Error: Item from /v2/permissions has no card_id"); + //Logger::instance().log("Error: Item from /v2/permissions has no card_id"); continue; } auto id_node = cJSON_GetObjectItem(it, "id"); if (!cJSON_IsNumber(id_node)) { ESP_LOGE(TAG, "Error: Item from /v2/permissions has no id"); - Logger::instance().log("Error: Item from /v2/permissions has no id"); + //Logger::instance().log("Error: Item from /v2/permissions has no id"); continue; } auto int_id_node = cJSON_GetObjectItem(it, "int_id"); if (!cJSON_IsNumber(int_id_node)) { ESP_LOGE(TAG, "Error: Item from /v2/permissions has no int_id"); - Logger::instance().log("Error: Item from /v2/permissions has no int_id"); + //Logger::instance().log("Error: Item from /v2/permissions has no int_id"); continue; } const auto card_id = get_id_from_string(card_id_node->valuestring); diff --git a/frontend/esp32/main/connect.cpp b/frontend/esp32/main/connect.cpp index fdd6dd88..ce8cc3fa 100644 --- a/frontend/esp32/main/connect.cpp +++ b/frontend/esp32/main/connect.cpp @@ -52,10 +52,10 @@ static void on_got_ip(void* arg, esp_event_base_t event_base, { ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data; if (!is_our_netif(TAG, event->esp_netif)) { - ESP_LOGW(TAG, "Got IPv4 from another interface \"%s\": ignored", esp_netif_get_desc(event->esp_netif)); + //ESP_LOGW(TAG, "Got IPv4 from another interface \"%s\": ignored", esp_netif_get_desc(event->esp_netif)); return; } - ESP_LOGI(TAG, "Got IPv4 event: Interface \"%s\" address: " IPSTR, esp_netif_get_desc(event->esp_netif), IP2STR(&event->ip_info.ip)); + //ESP_LOGI(TAG, "Got IPv4 event: Interface \"%s\" address: " IPSTR, esp_netif_get_desc(event->esp_netif), IP2STR(&event->ip_info.ip)); memcpy(&s_ip_addr, &event->ip_info.ip, sizeof(s_ip_addr)); xSemaphoreGive(s_semph_get_ip_addrs); } @@ -68,18 +68,18 @@ bool connect(const wifi_creds_t& creds) int index = 0; s_esp_netif = wifi_start(creds[index].first, creds[index].second); ESP_ERROR_CHECK(esp_register_shutdown_handler(&wifi_stop)); - ESP_LOGI(TAG, "Waiting for IP"); + //ESP_LOGI(TAG, "Waiting for IP"); while (!xSemaphoreTake(s_semph_get_ip_addrs, 10000/portTICK_PERIOD_MS)) { - ESP_LOGI(TAG, "Failed to connect"); + //ESP_LOGI(TAG, "Failed to connect"); wifi_stop(); ++index; if (index >= creds.size()) return false; - ESP_LOGI(TAG, "Trying next SSID"); + //ESP_LOGI(TAG, "Trying next SSID"); s_esp_netif = wifi_start(creds[index].first, creds[index].second); } - ESP_LOGI(TAG, "Got IP(s)"); + //ESP_LOGI(TAG, "Got IP(s)"); // iterate over active interfaces, and print out IPs of "our" netifs esp_netif_t* netif = nullptr; for (int i = 0; i < esp_netif_get_nr_of_ifs(); ++i) @@ -87,11 +87,11 @@ bool connect(const wifi_creds_t& creds) netif = esp_netif_next_unsafe(netif); if (is_our_netif(TAG, netif)) { - ESP_LOGI(TAG, "Connected to %s", esp_netif_get_desc(netif)); + //ESP_LOGI(TAG, "Connected to %s", esp_netif_get_desc(netif)); esp_netif_ip_info_t ip; ESP_ERROR_CHECK(esp_netif_get_ip_info(netif, &ip)); - ESP_LOGI(TAG, "- IPv4 address: " IPSTR, IP2STR(&ip.ip)); + //ESP_LOGI(TAG, "- IPv4 address: " IPSTR, IP2STR(&ip.ip)); } } return true; @@ -111,8 +111,8 @@ esp_err_t disconnect() static void on_wifi_disconnect(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data) { - ESP_LOGI(TAG, "on_wifi_disconnect: %d", (int) event_id); - ESP_LOGI(TAG, "Wi-Fi disconnected, trying to reconnect..."); + //ESP_LOGI(TAG, "on_wifi_disconnect: %d", (int) event_id); + //ESP_LOGI(TAG, "Wi-Fi disconnected, trying to reconnect..."); esp_err_t err = esp_wifi_connect(); if (err == ESP_ERR_WIFI_NOT_STARTED) return; @@ -147,7 +147,7 @@ static esp_netif_t* wifi_start(const std::string& ssid, const std::string& passw strncpy((char*) wifi_config.sta.password, password.c_str(), sizeof(wifi_config.sta.password)); ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config)); ESP_ERROR_CHECK(esp_wifi_start()); - ESP_LOGI(TAG, "Connecting to %s", wifi_config.sta.ssid); + //ESP_LOGI(TAG, "Connecting to %s", wifi_config.sta.ssid); esp_wifi_connect(); return netif; } diff --git a/frontend/esp32/main/console.cpp b/frontend/esp32/main/console.cpp index 82c3c2d5..342a813e 100644 --- a/frontend/esp32/main/console.cpp +++ b/frontend/esp32/main/console.cpp @@ -28,6 +28,8 @@ static constexpr const int GFXFF = 1; #include #include +#ifdef HW_TEST + static int toggle_relay(int, char**) { for (int n = 0; n < 10; ++n) @@ -168,6 +170,8 @@ static int test_reader(int, char**) return 0; } +#endif + struct { struct arg_str* ssid; @@ -493,6 +497,8 @@ void run_console() esp_console_register_help_command(); +#ifdef HW_TEST + const esp_console_cmd_t toggle_relay_cmd = { .command = "relay", .help = "Toggle relay", @@ -565,6 +571,8 @@ void run_console() }; ESP_ERROR_CHECK(esp_console_cmd_register(&test_reader_cmd)); +#endif // HW_TEST + add_wifi_credentials_args.ssid = arg_str1(NULL, NULL, "", "SSID"); add_wifi_credentials_args.password = arg_strn(NULL, NULL, "", 0, 1, "Password"); add_wifi_credentials_args.end = arg_end(2); diff --git a/frontend/esp32/main/display.cpp b/frontend/esp32/main/display.cpp index cf623a29..4d4a323c 100644 --- a/frontend/esp32/main/display.cpp +++ b/frontend/esp32/main/display.cpp @@ -80,7 +80,6 @@ void Display::set_status(const std::string& status, uint16_t colour, { if (status != last_status) { - printf("set_status: new %s\n", status.c_str()); clear_status_area(); last_status = status; last_status_colour = colour; diff --git a/frontend/esp32/main/foreninglet.cpp b/frontend/esp32/main/foreninglet.cpp index 3722b721..abbe2a3f 100644 --- a/frontend/esp32/main/foreninglet.cpp +++ b/frontend/esp32/main/foreninglet.cpp @@ -95,9 +95,7 @@ void ForeningLet::thread_body() esp_http_client_set_post_field(client, data, strlen(data)); esp_err_t err = esp_http_client_perform(client); - if (err == ESP_OK) - ESP_LOGI(TAG, "foreninglet: HTTP %d", esp_http_client_get_status_code(client)); - else + if (err != ESP_OK) ESP_LOGE(TAG, "foreninglet: error %s", esp_err_to_name(err)); } } diff --git a/frontend/esp32/main/gateway.cpp b/frontend/esp32/main/gateway.cpp index 1e3a9b15..39d87965 100644 --- a/frontend/esp32/main/gateway.cpp +++ b/frontend/esp32/main/gateway.cpp @@ -119,9 +119,7 @@ bool Gateway::post_status() esp_err_t err = esp_http_client_perform(client); const bool ok = err == ESP_OK; - if (ok) - ESP_LOGI(TAG, "GW post_status: HTTP %d", esp_http_client_get_status_code(client)); - else + if (!ok) ESP_LOGE(TAG, "GW: post_status: error %s", esp_err_to_name(err)); return ok; @@ -200,10 +198,7 @@ void Gateway::check_action() } auto allow_open_node = cJSON_GetObjectItem(root, "allow_open"); if (allow_open_node && cJSON_IsBool(allow_open_node)) - { allow_open = cJSON_IsTrue(allow_open_node); - ESP_LOGI(TAG, "GW allow_open = %d", allow_open); - } } } @@ -227,13 +222,13 @@ bool Gateway::upload_coredump(Display& display) NULL); if (!p) { - printf("No coredump partition found\n"); + printf("No coredump partition\n"); return false; } char stamp[Logger::TIMESTAMP_SIZE]; Logger::make_timestamp(stamp); - printf("Coredump partition size %ld bytes\n", (long) p->size); + //printf("Coredump partition size %ld bytes\n", (long) p->size); time_t start; time(&start); constexpr size_t BUF_SIZE = 768*8*2; diff --git a/frontend/esp32/main/http.cpp b/frontend/esp32/main/http.cpp index a99c1ea4..8804fe96 100644 --- a/frontend/esp32/main/http.cpp +++ b/frontend/esp32/main/http.cpp @@ -13,19 +13,19 @@ esp_err_t http_event_handler(esp_http_client_event_t* evt) switch (evt->event_id) { case HTTP_EVENT_ERROR: - ESP_LOGD(TAG, "HTTP_EVENT_ERROR"); + //ESP_LOGD(TAG, "HTTP_EVENT_ERROR"); break; case HTTP_EVENT_ON_CONNECTED: - ESP_LOGD(TAG, "HTTP_EVENT_ON_CONNECTED"); + //ESP_LOGD(TAG, "HTTP_EVENT_ON_CONNECTED"); break; case HTTP_EVENT_HEADER_SENT: - ESP_LOGD(TAG, "HTTP_EVENT_HEADER_SENT"); + //ESP_LOGD(TAG, "HTTP_EVENT_HEADER_SENT"); break; case HTTP_EVENT_ON_HEADER: - ESP_LOGD(TAG, "HTTP_EVENT_ON_HEADER, key=%s, value=%s", evt->header_key, evt->header_value); + //ESP_LOGD(TAG, "HTTP_EVENT_ON_HEADER, key=%s, value=%s", evt->header_key, evt->header_value); break; case HTTP_EVENT_ON_DATA: - ESP_LOGD(TAG, "HTTP_EVENT_ON_DATA, len=%d", evt->data_len); + //ESP_LOGD(TAG, "HTTP_EVENT_ON_DATA, len=%d", evt->data_len); if (!esp_http_client_is_chunked_response(evt->client)) { if (evt->user_data) @@ -44,7 +44,7 @@ esp_err_t http_event_handler(esp_http_client_event_t* evt) } break; case HTTP_EVENT_ON_FINISH: - ESP_LOGD(TAG, "HTTP_EVENT_ON_FINISH"); + //ESP_LOGD(TAG, "HTTP_EVENT_ON_FINISH"); break; case HTTP_EVENT_REDIRECT: break; diff --git a/frontend/esp32/main/otafwu.cpp b/frontend/esp32/main/otafwu.cpp index 2eed2fc9..54ab364f 100644 --- a/frontend/esp32/main/otafwu.cpp +++ b/frontend/esp32/main/otafwu.cpp @@ -18,6 +18,8 @@ static const constexpr int HASH_LEN = 32; // SHA-256 digest length static const constexpr int BUFFSIZE = 1024; +#if 0 + static void print_sha256 (const uint8_t *image_hash, const char *label) { char hash_print[HASH_LEN * 2 + 1]; @@ -28,6 +30,8 @@ static void print_sha256 (const uint8_t *image_hash, const char *label) ESP_LOGI(TAG, "%s: %s", label, hash_print); } +#endif + bool check_ota_update(class Display& display) { // Get SHA256 digest for the partition table @@ -37,18 +41,18 @@ bool check_ota_update(class Display& display) partition.type = ESP_PARTITION_TYPE_DATA; uint8_t sha_256[HASH_LEN] = { 0 }; esp_partition_get_sha256(&partition, sha_256); - print_sha256(sha_256, "SHA-256 for the partition table: "); + //print_sha256(sha_256, "SHA-256 for the partition table: "); // Get SHA256 digest for bootloader partition.address = ESP_BOOTLOADER_OFFSET; partition.size = ESP_PARTITION_TABLE_OFFSET; partition.type = ESP_PARTITION_TYPE_APP; esp_partition_get_sha256(&partition, sha_256); - print_sha256(sha_256, "SHA-256 for bootloader: "); + //print_sha256(sha_256, "SHA-256 for bootloader: "); // Get SHA256 digest for running partition esp_partition_get_sha256(esp_ota_get_running_partition(), sha_256); - print_sha256(sha_256, "SHA-256 for current firmware: "); + //print_sha256(sha_256, "SHA-256 for current firmware: "); const esp_partition_t* running = esp_ota_get_running_partition(); esp_ota_img_states_t ota_state; @@ -62,12 +66,12 @@ bool check_ota_update(class Display& display) #endif if (diagnostic_is_ok) { - ESP_LOGI(TAG, "Diagnostics completed successfully! Continuing execution ..."); + ESP_LOGI(TAG, "Diagnostics ok, continuing"); esp_ota_mark_app_valid_cancel_rollback(); } else { - ESP_LOGE(TAG, "Diagnostics failed! Start rollback to the previous version ..."); + ESP_LOGE(TAG, "Diagnostics failed, rollback"); esp_ota_mark_app_invalid_rollback_and_reboot(); } } @@ -79,10 +83,10 @@ bool check_ota_update(class Display& display) { ESP_LOGW(TAG, "Configured OTA boot partition at offset 0x%08" PRIx32 ", but running from offset 0x%08" PRIx32, configured->address, running->address); - ESP_LOGW(TAG, "(This can happen if either the OTA boot data or preferred boot image become corrupted somehow.)"); + //ESP_LOGW(TAG, "(This can happen if either the OTA boot data or preferred boot image become corrupted somehow.)"); } - ESP_LOGI(TAG, "Running partition type %d subtype %d (offset 0x%08" PRIx32 ")", - running->type, running->subtype, running->address); + //ESP_LOGI(TAG, "Running partition type %d subtype %d (offset 0x%08" PRIx32 ")", + //running->type, running->subtype, running->address); char path[40]; strcpy(path, "/firmware/frontend"); @@ -121,8 +125,8 @@ bool check_ota_update(class Display& display) const esp_partition_t* update_partition = esp_ota_get_next_update_partition(NULL); assert(update_partition != NULL); - ESP_LOGI(TAG, "Writing to partition subtype %d at offset 0x%" PRIx32, - update_partition->subtype, update_partition->address); + //ESP_LOGI(TAG, "Writing to partition subtype %d at offset 0x%" PRIx32, + //update_partition->subtype, update_partition->address); int binary_file_length = 0; bool image_header_was_checked = false; @@ -167,17 +171,17 @@ bool check_ota_update(class Display& display) { if (memcmp(invalid_app_info.version, new_app_info.version, sizeof(new_app_info.version)) == 0) { - ESP_LOGW(TAG, "New version is the same as invalid version."); - ESP_LOGW(TAG, "Previously, there was an attempt to launch the firmware with %s version, but it failed.", + ESP_LOGW(TAG, "New version == invalid version"); + ESP_LOGW(TAG, "Previous attempt to launch %s failed", invalid_app_info.version); - ESP_LOGW(TAG, "The firmware has been rolled back to the previous version."); + ESP_LOGW(TAG, "Rolled back"); display.add_progress("Rolled back"); return true; } } if (memcmp(new_app_info.version, running_app_info.version, sizeof(new_app_info.version)) == 0) { - ESP_LOGW(TAG, "Current running version is the same as a new. We will not continue the update."); + ESP_LOGW(TAG, "Running == new. No update"); display.add_progress("No new version"); return true; } @@ -191,7 +195,7 @@ bool check_ota_update(class Display& display) esp_ota_abort(update_handle); return false; } - ESP_LOGI(TAG, "esp_ota_begin succeeded"); + //ESP_LOGI(TAG, "esp_ota_begin succeeded"); } else { @@ -207,7 +211,7 @@ bool check_ota_update(class Display& display) return false; } binary_file_length += data_read; - ESP_LOGD(TAG, "Written image length %d", binary_file_length); + //ESP_LOGD(TAG, "Written image length %d", binary_file_length); } else if (data_read == 0) { @@ -215,17 +219,17 @@ bool check_ota_update(class Display& display) // `errno` to check for underlying transport connectivity closure if any if (errno == ECONNRESET || errno == ENOTCONN) { - ESP_LOGE(TAG, "Connection closed, errno = %d", errno); + //ESP_LOGE(TAG, "Connection closed, errno = %d", errno); break; } if (esp_http_client_is_complete_data_received(client)) { - ESP_LOGI(TAG, "Connection closed"); + //ESP_LOGI(TAG, "Connection closed"); break; } } } - ESP_LOGI(TAG, "Total Write binary data length: %d", binary_file_length); + //ESP_LOGI(TAG, "Total Write binary data length: %d", binary_file_length); if (!esp_http_client_is_complete_data_received(client)) { ESP_LOGE(TAG, "Error in receiving complete file"); @@ -237,7 +241,7 @@ bool check_ota_update(class Display& display) if (err != ESP_OK) { if (err == ESP_ERR_OTA_VALIDATE_FAILED) - ESP_LOGE(TAG, "Image validation failed, image is corrupted"); + ESP_LOGE(TAG, "Image validation failed"); else ESP_LOGE(TAG, "esp_ota_end failed (%s)!", esp_err_to_name(err)); return false; @@ -250,7 +254,6 @@ bool check_ota_update(class Display& display) return false; } display.add_progress("Rebooting"); - ESP_LOGI(TAG, "Prepare to restart system!"); esp_restart(); return true; } diff --git a/frontend/esp32/main/slack.cpp b/frontend/esp32/main/slack.cpp index d3a74700..1c7d14c7 100644 --- a/frontend/esp32/main/slack.cpp +++ b/frontend/esp32/main/slack.cpp @@ -154,9 +154,7 @@ void Slack_writer::do_post(esp_http_client_handle_t client, const Item& item) esp_http_client_set_header(client, "Authorization", auth.c_str()); const esp_err_t err = esp_http_client_perform(client); - if (err == ESP_OK) - ESP_LOGI(TAG, "Slack: HTTP %d", esp_http_client_get_status_code(client)); - else + if (err != ESP_OK) ESP_LOGE(TAG, "Slack: error %s", esp_err_to_name(err)); } diff --git a/frontend/esp32/main/sntp.cpp b/frontend/esp32/main/sntp.cpp index 30b150d4..50af47f2 100644 --- a/frontend/esp32/main/sntp.cpp +++ b/frontend/esp32/main/sntp.cpp @@ -20,7 +20,7 @@ void initialize_sntp() const int retry_count = 10; while (sntp_get_sync_status() == SNTP_SYNC_STATUS_RESET && ++retry < retry_count) { - ESP_LOGI(TAG, "Waiting for system time to be set... (%d/%d)", retry, retry_count); + ESP_LOGI(TAG, "Waiting for SNTP (%d/%d)", retry, retry_count); vTaskDelay(2000 / portTICK_PERIOD_MS); } } diff --git a/frontend/esp32/sdkconfig b/frontend/esp32/sdkconfig index ccdede6e..6a72bf49 100644 --- a/frontend/esp32/sdkconfig +++ b/frontend/esp32/sdkconfig @@ -1,6 +1,6 @@ # # Automatically generated file. DO NOT EDIT. -# Espressif IoT Development Framework (ESP-IDF) 5.2.1 Project Configuration +# Espressif IoT Development Framework (ESP-IDF) 5.2.2 Project Configuration # CONFIG_SOC_BROWNOUT_RESET_SUPPORTED="Not determined" CONFIG_SOC_TWAI_BRP_DIV_SUPPORTED="Not determined" @@ -418,6 +418,7 @@ CONFIG_APPTRACE_LOCK_ENABLE=y # Bluetooth # # CONFIG_BT_ENABLED is not set +CONFIG_BT_ALARM_MAX_NUM=50 # end of Bluetooth # @@ -631,7 +632,10 @@ CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y # # GDB Stub # +CONFIG_ESP_GDBSTUB_ENABLED=y # CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set +CONFIG_ESP_GDBSTUB_SUPPORT_TASKS=y +CONFIG_ESP_GDBSTUB_MAX_TASKS=32 # end of GDB Stub # @@ -790,6 +794,7 @@ CONFIG_ESP_PHY_RF_CAL_PARTIAL=y # CONFIG_ESP_PHY_RF_CAL_NONE is not set # CONFIG_ESP_PHY_RF_CAL_FULL is not set CONFIG_ESP_PHY_CALIBRATION_MODE=0 +# CONFIG_ESP_PHY_PLL_TRACK_DEBUG is not set # end of PHY # @@ -1061,6 +1066,7 @@ CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=1 # CONFIG_FREERTOS_USE_TRACE_FACILITY is not set # CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +# CONFIG_FREERTOS_USE_APPLICATION_TASK_TAG is not set # end of Kernel # @@ -1346,7 +1352,9 @@ CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 # CONFIG_MBEDTLS_ECP_RESTARTABLE is not set CONFIG_MBEDTLS_CMAC_C=y CONFIG_MBEDTLS_HARDWARE_AES=y +# CONFIG_MBEDTLS_GCM_SUPPORT_NON_AES_CIPHER is not set CONFIG_MBEDTLS_HARDWARE_MPI=y +# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set CONFIG_MBEDTLS_HARDWARE_SHA=y CONFIG_MBEDTLS_ROM_MD5=y # CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set @@ -1430,7 +1438,7 @@ CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM=y # CONFIG_MBEDTLS_CHACHA20_C is not set # CONFIG_MBEDTLS_HKDF_C is not set # CONFIG_MBEDTLS_THREADING_C is not set -# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set +CONFIG_MBEDTLS_ERROR_STRINGS=y # end of mbedTLS # @@ -1810,6 +1818,8 @@ CONFIG_ADC2_DISABLE_DAC=y # CONFIG_EVENT_LOOP_PROFILING is not set CONFIG_POST_EVENTS_FROM_ISR=y CONFIG_POST_EVENTS_FROM_IRAM_ISR=y +CONFIG_GDBSTUB_SUPPORT_TASKS=y +CONFIG_GDBSTUB_MAX_TASKS=32 # CONFIG_OTA_ALLOW_HTTP is not set # CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y