From 5bdd2a2b9442a4b2336b5007296511129cf68964 Mon Sep 17 00:00:00 2001 From: Vincent Winter Date: Wed, 29 Oct 2025 16:26:59 +0100 Subject: [PATCH 1/9] feat(esp32-IMU): Upload IMU program progress MQTT - functions TODO: - Fix Serial --- IMU/.clangd | 2 + IMU/.devcontainer/Dockerfile | 13 + IMU/.devcontainer/devcontainer.json | 21 + IMU/.editorconfig | 75 + IMU/CMakeLists.txt | 6 + IMU/main/CMakeLists.txt | 2 + IMU/main/Kconfig.projbuild | 67 + IMU/main/mpu6886.c | 318 ++++ IMU/main/mpu6886.h | 80 + IMU/sdkconfig | 2257 +++++++++++++++++++++++++++ IMU/sdkconfig.old | 2032 ++++++++++++++++++++++++ 11 files changed, 4873 insertions(+) create mode 100644 IMU/.clangd create mode 100644 IMU/.devcontainer/Dockerfile create mode 100644 IMU/.devcontainer/devcontainer.json create mode 100755 IMU/.editorconfig create mode 100755 IMU/CMakeLists.txt create mode 100755 IMU/main/CMakeLists.txt create mode 100755 IMU/main/Kconfig.projbuild create mode 100644 IMU/main/mpu6886.c create mode 100644 IMU/main/mpu6886.h create mode 100644 IMU/sdkconfig create mode 100644 IMU/sdkconfig.old diff --git a/IMU/.clangd b/IMU/.clangd new file mode 100644 index 0000000..437f255 --- /dev/null +++ b/IMU/.clangd @@ -0,0 +1,2 @@ +CompileFlags: + Remove: [-f*, -m*] diff --git a/IMU/.devcontainer/Dockerfile b/IMU/.devcontainer/Dockerfile new file mode 100644 index 0000000..dafb8ad --- /dev/null +++ b/IMU/.devcontainer/Dockerfile @@ -0,0 +1,13 @@ +ARG DOCKER_TAG=latest +FROM espressif/idf:${DOCKER_TAG} + +ENV LC_ALL=C.UTF-8 +ENV LANG=C.UTF-8 + +RUN apt-get update -y && apt-get install udev -y + +RUN echo "source /opt/esp/idf/export.sh > /dev/null 2>&1" >> ~/.bashrc + +ENTRYPOINT [ "/opt/esp/entrypoint.sh" ] + +CMD ["/bin/bash", "-c"] \ No newline at end of file diff --git a/IMU/.devcontainer/devcontainer.json b/IMU/.devcontainer/devcontainer.json new file mode 100644 index 0000000..b801786 --- /dev/null +++ b/IMU/.devcontainer/devcontainer.json @@ -0,0 +1,21 @@ +{ + "name": "ESP-IDF QEMU", + "build": { + "dockerfile": "Dockerfile" + }, + "customizations": { + "vscode": { + "settings": { + "terminal.integrated.defaultProfile.linux": "bash", + "idf.espIdfPath": "/opt/esp/idf", + "idf.toolsPath": "/opt/esp", + "idf.gitPath": "/usr/bin/git" + }, + "extensions": [ + "espressif.esp-idf-extension", + "espressif.esp-idf-web" + ] + } + }, + "runArgs": ["--privileged"] +} \ No newline at end of file diff --git a/IMU/.editorconfig b/IMU/.editorconfig new file mode 100755 index 0000000..48c782f --- /dev/null +++ b/IMU/.editorconfig @@ -0,0 +1,75 @@ +[*] +cpp_indent_braces=false +cpp_indent_multi_line_relative_to=innermost_parenthesis +cpp_indent_within_parentheses=indent +cpp_indent_preserve_within_parentheses=true +cpp_indent_case_labels=true +cpp_indent_case_contents=true +cpp_indent_case_contents_when_block=false +cpp_indent_lambda_braces_when_parameter=true +cpp_indent_goto_labels=one_left +cpp_indent_preprocessor=leftmost_column +cpp_indent_access_specifiers=false +cpp_indent_namespace_contents=false +cpp_indent_preserve_comments=false + +cpp_new_line_before_open_brace_namespace=false +cpp_new_line_before_open_brace_type=false +cpp_new_line_before_open_brace_function=ignore +cpp_new_line_before_open_brace_block=ignore +cpp_new_line_before_open_brace_lambda=ignore + +cpp_new_line_scope_braces_on_separate_lines=false +cpp_new_line_close_brace_same_line_empty_type=false +cpp_new_line_close_brace_same_line_empty_function=false +cpp_new_line_before_catch=false +cpp_new_line_before_else=false +cpp_new_line_before_while_in_do_while=false + +cpp_space_before_function_open_parenthesis=remove +cpp_space_within_parameter_list_parentheses=false +cpp_space_between_empty_parameter_list_parentheses=false +cpp_space_after_keywords_in_control_flow_statements=true +cpp_space_within_control_flow_statement_parentheses=false +cpp_space_before_lambda_open_parenthesis=false + +cpp_space_within_cast_parentheses=false +cpp_space_after_cast_close_parenthesis=false +cpp_space_within_expression_parentheses=false +cpp_space_before_block_open_brace=true +cpp_space_between_empty_braces=false +cpp_space_before_initializer_list_open_brace=true +cpp_space_within_initializer_list_braces=true +cpp_space_preserve_in_initializer_list=true + +cpp_space_before_open_square_bracket=false +cpp_space_within_square_brackets=false +cpp_space_before_empty_square_brackets=false +cpp_space_between_empty_square_brackets=false +cpp_space_group_square_brackets=true + +cpp_space_within_lambda_brackets=false +cpp_space_between_empty_lambda_brackets=false +cpp_space_before_comma=false +cpp_space_after_comma=true + +cpp_space_remove_around_member_operators=true + +cpp_space_before_inheritance_colon=true +cpp_space_before_constructor_colon=true + +cpp_space_remove_before_semicolon=true +cpp_space_after_semicolon=true + +cpp_space_remove_around_unary_operator=true + +cpp_space_around_binary_operator=insert +cpp_space_around_assignment_operator=insert +cpp_space_pointer_reference_alignment=left +cpp_space_around_ternary_operator=insert +cpp_wrap_preserve_blocks=one_liners +indent_style = space +indent_size = 4 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/IMU/CMakeLists.txt b/IMU/CMakeLists.txt new file mode 100755 index 0000000..d76819e --- /dev/null +++ b/IMU/CMakeLists.txt @@ -0,0 +1,6 @@ +# The following lines of boilerplate have to be in your project's CMakeLists +# in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(IMU) diff --git a/IMU/main/CMakeLists.txt b/IMU/main/CMakeLists.txt new file mode 100755 index 0000000..0acd273 --- /dev/null +++ b/IMU/main/CMakeLists.txt @@ -0,0 +1,2 @@ +idf_component_register(SRCS "mpu6886.c" + INCLUDE_DIRS ".") diff --git a/IMU/main/Kconfig.projbuild b/IMU/main/Kconfig.projbuild new file mode 100755 index 0000000..49e9426 --- /dev/null +++ b/IMU/main/Kconfig.projbuild @@ -0,0 +1,67 @@ +menu "Example Configuration" + + orsource "$IDF_PATH/examples/common_components/env_caps/$IDF_TARGET/Kconfig.env_caps" + + config I2C_MASTER_SCL + int "SCL GPIO Num" + range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX + default 4 + help + GPIO number for I2C Master clock line. + + config I2C_MASTER_SDA + int "SDA GPIO Num" + range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX + default 5 + help + GPIO number for I2C Master data line. + + config I2C_MASTER_FREQUENCY + int "Master Frequency" + default 400000 + help + I2C Speed of Master device. + + config WIFI_SSID + string "WiFi SSID" + default "YourNetworkName" + help + SSID of WiFi network to connect to. + + config WIFI_PASSWORD + string "WiFi Password" + default "YourPassword" + help + Password of WiFi network to connect to. + + config MQTT_BROKER_URI + string "MQTT Broker URI" + default "mqtt://192.168.178.26:1883" + help + URI of the MQTT broker to connect to. + + config MQTT_TOPIC + string "MQTT Topic" + default "esp32/imu" + help + MQTT topic to publish IMU data to. + + config WIFI_AP_MODE + bool "Enable WiFi AP Mode" + default n + help + Enable this option to start the device in Access Point mode. + If disabled, the device will start in Station mode. + + config WIFI_AP_SSID + string "WiFi AP SSID" + default "ESP32_IMU_AP" + help + SSID of the WiFi Access Point when in AP mode. + + config WIFI_AP_PASSWORD + string "WiFi AP Password" + default "esp32imuap" + help + Password of the WiFi Access Point when in AP mode. +endmenu diff --git a/IMU/main/mpu6886.c b/IMU/main/mpu6886.c new file mode 100644 index 0000000..d16bac3 --- /dev/null +++ b/IMU/main/mpu6886.c @@ -0,0 +1,318 @@ +#include "mpu6886.h" +#include + + +// New: initialise WiFi in either STA or AP mode. Pass ap_mode=true to start an Access Point. +static void wifi_init(bool ap_mode) +{ + ESP_ERROR_CHECK(nvs_flash_init()); + ESP_ERROR_CHECK(esp_netif_init()); + ESP_ERROR_CHECK(esp_event_loop_create_default()); + + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_wifi_init(&cfg)); + + if (ap_mode) { + esp_netif_create_default_wifi_ap(); + + wifi_config_t wifi_config = { 0 }; + strncpy((char *)wifi_config.ap.ssid, CONFIG_WIFI_AP_SSID, sizeof(wifi_config.ap.ssid)); + wifi_config.ap.ssid_len = strlen(CONFIG_WIFI_AP_SSID); + strncpy((char *)wifi_config.ap.password, CONFIG_WIFI_AP_PASSWORD, sizeof(wifi_config.ap.password)); + wifi_config.ap.max_connection = 4; + if (strlen(CONFIG_WIFI_AP_PASSWORD) == 0) { + wifi_config.ap.authmode = WIFI_AUTH_OPEN; + } else { + wifi_config.ap.authmode = WIFI_AUTH_WPA_WPA2_PSK; + } + + ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP)); + ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &wifi_config)); + ESP_ERROR_CHECK(esp_wifi_start()); + ESP_LOGI("WIFI", "AP started SSID:%s", CONFIG_WIFI_AP_SSID); + } else { + esp_netif_create_default_wifi_sta(); + + wifi_config_t wifi_config = { + .sta = { + .ssid = CONFIG_WIFI_SSID, + .password = CONFIG_WIFI_PASSWORD, + }, + }; + + ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); + ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config)); + ESP_ERROR_CHECK(esp_wifi_start()); + ESP_ERROR_CHECK(esp_wifi_connect()); + ESP_LOGI("WIFI", "STA started, connecting to: %s", CONFIG_WIFI_SSID); + } +} + + +static esp_err_t mpu6886_write_byte(mpu6886_t *dev, uint8_t reg, uint8_t data) { + uint8_t tx[2] = { reg, data }; + return i2c_master_write_to_device(dev->i2c_port, dev->address, tx, sizeof(tx), pdMS_TO_TICKS(100)); +} + +static esp_err_t mpu6886_read_bytes(mpu6886_t *dev, uint8_t reg, uint8_t *data, size_t len) { + return i2c_master_write_read_device(dev->i2c_port, dev->address, ®, 1, data, len, pdMS_TO_TICKS(100)); +} + +static int16_t bytes_to_int16(uint8_t high, uint8_t low) { + return (int16_t)((high << 8) | low); +} + +// Event handler uses esp_event handler signature; it receives mqtt event via event_data +static void mqtt_event_handler_cb(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data) +{ + esp_mqtt_event_handle_t event = event_data; + switch (event->event_id) { + case MQTT_EVENT_CONNECTED: + ESP_LOGI("MQTT", "connected"); + break; + case MQTT_EVENT_DISCONNECTED: + ESP_LOGW("MQTT", "disconnected"); + break; + case MQTT_EVENT_ERROR: + ESP_LOGE("MQTT", "error"); + break; + default: + break; + } +} + +static void mqtt_app_start(void) +{ + esp_mqtt_client_config_t mqtt_cfg = { 0 }; + + mqtt_cfg.broker.address.uri = CONFIG_MQTT_BROKER_URI; + + s_mqtt_client = esp_mqtt_client_init(&mqtt_cfg); + if (s_mqtt_client == NULL) { + ESP_LOGW("MQTT", "failed to init mqtt client"); + return; + } + esp_mqtt_client_start(s_mqtt_client); +} + +// new: detect accel/gyro full-scale selections and set divisors accordingly +static esp_err_t mpu6886_update_sensitivity(mpu6886_t *dev) +{ + uint8_t aconf = 0, gconf = 0; + esp_err_t err; + + err = mpu6886_read_bytes(dev, MPU6886_ACCEL_CONFIG, &aconf, 1); + if (err != ESP_OK) return err; + err = mpu6886_read_bytes(dev, MPU6886_GYRO_CONFIG, &gconf, 1); + if (err != ESP_OK) return err; + + uint8_t a_fs = (aconf >> 3) & 0x03; // AFS_SEL bits [4:3] + switch (a_fs) { + case 0: dev->accel_div = ACCEL_SO_2G; break; // ±2g + case 1: dev->accel_div = ACCEL_SO_4G; break; // ±4g + case 2: dev->accel_div = ACCEL_SO_8G; break; // ±8g + case 3: dev->accel_div = ACCEL_SO_16G; break; // ±16g + default: dev->accel_div = ACCEL_SO_2G; break; + } + + uint8_t g_fs = (gconf >> 3) & 0x03; // FS_SEL bits [4:3] + switch (g_fs) { + case 0: dev->gyro_div = GYRO_SO_250DPS; break; // ±250 dps + case 1: dev->gyro_div = GYRO_SO_500DPS; break; // ±500 dps + case 2: dev->gyro_div = GYRO_SO_1000DPS; break; // ±1000 dps + case 3: dev->gyro_div = GYRO_SO_2000DPS; break; // ±2000 dps + default: dev->gyro_div = GYRO_SO_250DPS; break; + } + + return ESP_OK; +} + +static esp_err_t i2c_master_init(i2c_port_t i2c_num, gpio_num_t sda_io, gpio_num_t scl_io, uint32_t clk_speed_hz) +{ + i2c_config_t conf = { + .mode = I2C_MODE_MASTER, + .sda_io_num = sda_io, + .sda_pullup_en = GPIO_PULLUP_ENABLE, + .scl_io_num = scl_io, + .scl_pullup_en = GPIO_PULLUP_ENABLE, + .master.clk_speed = clk_speed_hz, + }; + esp_err_t err = i2c_param_config(i2c_num, &conf); + if (err != ESP_OK) return err; + return i2c_driver_install(i2c_num, I2C_MODE_MASTER, 0, 0, 0); +} + +esp_err_t mpu6886_init(mpu6886_t *dev, i2c_port_t i2c_port) { + dev->i2c_port = i2c_port; + dev->address = MPU6886_ADDR; + + uint8_t who_am_i = 0; + if (mpu6886_read_bytes(dev, MPU6886_WHO_AM_I, &who_am_i, 1) != ESP_OK) { + return ESP_FAIL; + } + if (who_am_i != 0x19) { + return ESP_FAIL; + } + + // Reset + if (mpu6886_write_byte(dev, MPU6886_PWR_MGMT_1, 0x80) != ESP_OK) return ESP_FAIL; + vTaskDelay(pdMS_TO_TICKS(100)); + + // Auto select clock + if (mpu6886_write_byte(dev, MPU6886_PWR_MGMT_1, 0x01) != ESP_OK) return ESP_FAIL; + + // Default config: set to ±2G accel, ±250DPS gyro (device may have different settings; we'll detect them) + mpu6886_write_byte(dev, MPU6886_ACCEL_CONFIG, 0x00); + mpu6886_write_byte(dev, MPU6886_GYRO_CONFIG, 0x00); + + dev->gyro_offset = (vec3_t){0, 0, 0}; + dev->accel_offset = (vec3_t){0, 0, 0}; + + // detect actual sensitivities from device registers and set divisors + if (mpu6886_update_sensitivity(dev) != ESP_OK) { + // fallback to defaults if read fails + dev->accel_div = ACCEL_SO_2G; + dev->gyro_div = GYRO_SO_250DPS; + } + + return ESP_OK; +} + +esp_err_t mpu6886_read_accel(mpu6886_t *dev, vec3_t *accel) { + uint8_t buf[6]; + esp_err_t ret = mpu6886_read_bytes(dev, MPU6886_ACCEL_XOUT_H, buf, 6); + if (ret != ESP_OK) return ret; + + // convert raw -> m/s^2 and apply stored offsets + accel->x = (float)bytes_to_int16(buf[0], buf[1]) / dev->accel_div * SF_M_S2 - dev->accel_offset.x; + accel->y = (float)bytes_to_int16(buf[2], buf[3]) / dev->accel_div * SF_M_S2 - dev->accel_offset.y; + accel->z = (float)bytes_to_int16(buf[4], buf[5]) / dev->accel_div * SF_M_S2 - dev->accel_offset.z; + return ESP_OK; +} + +esp_err_t mpu6886_read_gyro(mpu6886_t *dev, vec3_t *gyro) { + uint8_t buf[6]; + esp_err_t ret = mpu6886_read_bytes(dev, MPU6886_GYRO_XOUT_H, buf, 6); + if (ret != ESP_OK) return ret; + + gyro->x = (float)bytes_to_int16(buf[0], buf[1]) / dev->gyro_div * SF_RAD_S - dev->gyro_offset.x; + gyro->y = (float)bytes_to_int16(buf[2], buf[3]) / dev->gyro_div * SF_RAD_S - dev->gyro_offset.y; + gyro->z = (float)bytes_to_int16(buf[4], buf[5]) / dev->gyro_div * SF_RAD_S - dev->gyro_offset.z; + return ESP_OK; +} + +esp_err_t mpu6886_read_temp(mpu6886_t *dev, float *temp) { + static uint8_t buf[2]; + esp_err_t ret = mpu6886_read_bytes(dev, MPU6886_TEMP_OUT_H, buf, 2); + if (ret != ESP_OK) return ret; + + int16_t raw = bytes_to_int16(buf[0], buf[1]); + *temp = ((float)raw / TEMP_SO) + TEMP_OFFSET; + return ESP_OK; +} + +esp_err_t mpu6886_calibrate_gyro(mpu6886_t *dev, int samples, int delay_ms) { + vec3_t sum = {0, 0, 0}, g; + for (int i = 0; i < samples; i++) { + if (mpu6886_read_gyro(dev, &g) != ESP_OK) return ESP_FAIL; + sum.x += g.x; + sum.y += g.y; + sum.z += g.z; + vTaskDelay(pdMS_TO_TICKS(delay_ms)); + } + dev->gyro_offset.x = sum.x / samples; + dev->gyro_offset.y = sum.y / samples; + dev->gyro_offset.z = sum.z / samples; + return ESP_OK; +} + +esp_err_t mpu6886_calibrate_accel(mpu6886_t *dev, int samples, int delay_ms) +{ + // Calibrate accelerometer offsets while the device is stationary. + // The function will detect the device full-scale and compute offsets in m/s^2. + vec3_t sum = {0, 0, 0}, a; + for (int i = 0; i < samples; i++) { + if (mpu6886_read_accel(dev, &a) != ESP_OK) { + return ESP_FAIL; + } + sum.x += a.x; + sum.y += a.y; + sum.z += a.z; + vTaskDelay(pdMS_TO_TICKS(delay_ms)); + } + vec3_t avg = { sum.x / samples, sum.y / samples, sum.z / samples }; + + // For X/Y expect ~0 m/s^2 when stationary; offset = measured average + dev->accel_offset.x = avg.x; + dev->accel_offset.y = avg.y; + + // For Z expect ~+1g (SF_M_S2) if +Z points up. If device is flipped you'll get -1g. + // Compute expected gravity sign from measured avg.z magnitude and sign. + float expected_g = (avg.z < 0) ? -SF_M_S2 : SF_M_S2; + dev->accel_offset.z = avg.z - expected_g; + + return ESP_OK; +} + +void app_main(void) +{ + esp_err_t err = i2c_master_init(I2C_NUM_0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL, CONFIG_I2C_MASTER_FREQUENCY); // adjust pins if needed + if (err != ESP_OK) { + ESP_LOGE("MPU6886", "I2C init failed: %d", err); + return; + } + + + // Start WiFi: set CONFIG_WIFI_AP_MODE in sdkconfig to build in AP mode, + // otherwise the default is STA mode. You can also call wifi_init(true) + // or wifi_init(false) directly to toggle at runtime. +#ifdef CONFIG_WIFI_AP_MODE + wifi_init(true); +#else + wifi_init(false); +#endif + + mpu6886_t mpu; + mpu.i2c_port = I2C_NUM_0; + mpu.address = MPU6886_ADDR; + + esp_err_t ret = mpu6886_init(&mpu, I2C_NUM_0); + if (ret != ESP_OK) { + // Handle initialization error + ESP_LOGE("MPU6886", "init failed"); + return; + } + + // Start MQTT client (will retry until network is available) + mqtt_app_start(); + + mpu6886_calibrate_gyro(&mpu, 100, 10); + mpu6886_calibrate_accel(&mpu, 100, 10); + vec3_t accel, gyro; + float temp; + + while (1) { + mpu6886_read_accel(&mpu, &accel); + mpu6886_read_gyro(&mpu, &gyro); + mpu6886_read_temp(&mpu, &temp); + ESP_LOGI("MPU6886", "Accel: X=%8.2f Y=%8.2f Z=%8.2f m/s² | Gyro: X=%8.2f Y=%8.2f Z=%8.2f rad/s | Temp: %8.2f °C", + accel.x, accel.y, accel.z, gyro.x, gyro.y, gyro.z, temp); + + // Publish readings as JSON over MQTT if client available + if (s_mqtt_client != NULL) { + char payload[256]; + int n = snprintf(payload, sizeof(payload), + "{\"accel\":{\"x\":%.3f,\"y\":%.3f,\"z\":%.3f},\"gyro\":{\"x\":%.3f,\"y\":%.3f,\"z\":%.3f},\"temp\":%.2f}", + accel.x, accel.y, accel.z, + gyro.x, gyro.y, gyro.z, + temp); + if (n > 0 && n < (int)sizeof(payload)) { + int msg_id = esp_mqtt_client_publish(s_mqtt_client, CONFIG_MQTT_TOPIC, payload, 0, 1, 0); + ESP_LOGD("MQTT", "published msg_id=%d payload_len=%d", msg_id, n); + } else { + ESP_LOGW("MQTT", "payload truncated or encoding error"); + } + } + vTaskDelay(pdMS_TO_TICKS(100)); + } +} diff --git a/IMU/main/mpu6886.h b/IMU/main/mpu6886.h new file mode 100644 index 0000000..74db6b5 --- /dev/null +++ b/IMU/main/mpu6886.h @@ -0,0 +1,80 @@ +#ifndef MPU6886_H +#define MPU6886_H + +#include "driver/i2c.h" +#include "esp_err.h" +#include "esp_wifi.h" +#include "esp_event.h" +#include "esp_log.h" +#include "nvs_flash.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include +#include "mqtt_client.h" +#include +#include + + +#define I2C_MASTER_SCL_IO CONFIG_I2C_MASTER_SCL /*!< GPIO number used for I2C master clock */ +#define I2C_MASTER_SDA_IO CONFIG_I2C_MASTER_SDA /*!< GPIO number used for I2C master data */ +#define I2C_MASTER_NUM I2C_NUM_0 /*!< I2C port number for master dev */ +#define I2C_MASTER_FREQ_HZ CONFIG_I2C_MASTER_FREQUENCY /*!< I2C master clock frequency */ +#define I2C_MASTER_TX_BUF_DISABLE 0 /*!< I2C master doesn't need buffer */ +#define I2C_MASTER_RX_BUF_DISABLE 0 /*!< I2C master doesn't need buffer */ +#define I2C_MASTER_TIMEOUT_MS 1000 + +#define MPU6886_ADDR 0x68 + +// MPU6886 Registers +#define MPU6886_PWR_MGMT_1 0x6B +#define MPU6886_WHO_AM_I 0x75 +#define MPU6886_ACCEL_XOUT_H 0x3B +#define MPU6886_GYRO_XOUT_H 0x43 +#define MPU6886_TEMP_OUT_H 0x41 +#define MPU6886_ACCEL_CONFIG 0x1C +#define MPU6886_GYRO_CONFIG 0x1B + +// Sensitivity scales +#define ACCEL_SO_2G 16384.0f +#define ACCEL_SO_4G 8192.0f +#define ACCEL_SO_8G 4096.0f +#define ACCEL_SO_16G 2048.0f + +#define GYRO_SO_250DPS 131.0f +#define GYRO_SO_500DPS 65.5f +#define GYRO_SO_1000DPS 32.8f +#define GYRO_SO_2000DPS 16.4f + +#define TEMP_SO 326.8f +#define TEMP_OFFSET 25.0f + +// Scale factors +#define SF_M_S2 9.80665f +#define SF_RAD_S 0.017453292519943f + +typedef struct { + float x; + float y; + float z; +} vec3_t; + +typedef struct { + i2c_port_t i2c_port; + uint8_t address; + float accel_div; + float gyro_div; + vec3_t gyro_offset; + vec3_t accel_offset; +} mpu6886_t; + +static esp_mqtt_client_handle_t s_mqtt_client = NULL; + +// Function declarations +esp_err_t mpu6886_init(mpu6886_t *dev, i2c_port_t i2c_port); +esp_err_t mpu6886_read_accel(mpu6886_t *dev, vec3_t *accel); +esp_err_t mpu6886_read_gyro(mpu6886_t *dev, vec3_t *gyro); +esp_err_t mpu6886_read_temp(mpu6886_t *dev, float *temp); +esp_err_t mpu6886_calibrate_gyro(mpu6886_t *dev, int samples, int delay_ms); +esp_err_t mpu6886_calibrate_accel(mpu6886_t *dev, int samples, int delay_ms); + +#endif diff --git a/IMU/sdkconfig b/IMU/sdkconfig new file mode 100644 index 0000000..ba2dde6 --- /dev/null +++ b/IMU/sdkconfig @@ -0,0 +1,2257 @@ +# +# Automatically generated file. DO NOT EDIT. +# Espressif IoT Development Framework (ESP-IDF) 5.5.1 Project Configuration +# +CONFIG_SOC_CAPS_ECO_VER_MAX=301 +CONFIG_SOC_ADC_SUPPORTED=y +CONFIG_SOC_DAC_SUPPORTED=y +CONFIG_SOC_UART_SUPPORTED=y +CONFIG_SOC_MCPWM_SUPPORTED=y +CONFIG_SOC_GPTIMER_SUPPORTED=y +CONFIG_SOC_SDMMC_HOST_SUPPORTED=y +CONFIG_SOC_BT_SUPPORTED=y +CONFIG_SOC_PCNT_SUPPORTED=y +CONFIG_SOC_PHY_SUPPORTED=y +CONFIG_SOC_WIFI_SUPPORTED=y +CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y +CONFIG_SOC_TWAI_SUPPORTED=y +CONFIG_SOC_EFUSE_SUPPORTED=y +CONFIG_SOC_EMAC_SUPPORTED=y +CONFIG_SOC_ULP_SUPPORTED=y +CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y +CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y +CONFIG_SOC_RTC_MEM_SUPPORTED=y +CONFIG_SOC_I2S_SUPPORTED=y +CONFIG_SOC_RMT_SUPPORTED=y +CONFIG_SOC_SDM_SUPPORTED=y +CONFIG_SOC_GPSPI_SUPPORTED=y +CONFIG_SOC_LEDC_SUPPORTED=y +CONFIG_SOC_I2C_SUPPORTED=y +CONFIG_SOC_SUPPORT_COEXISTENCE=y +CONFIG_SOC_AES_SUPPORTED=y +CONFIG_SOC_MPI_SUPPORTED=y +CONFIG_SOC_SHA_SUPPORTED=y +CONFIG_SOC_FLASH_ENC_SUPPORTED=y +CONFIG_SOC_SECURE_BOOT_SUPPORTED=y +CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y +CONFIG_SOC_BOD_SUPPORTED=y +CONFIG_SOC_ULP_FSM_SUPPORTED=y +CONFIG_SOC_CLK_TREE_SUPPORTED=y +CONFIG_SOC_MPU_SUPPORTED=y +CONFIG_SOC_WDT_SUPPORTED=y +CONFIG_SOC_SPI_FLASH_SUPPORTED=y +CONFIG_SOC_RNG_SUPPORTED=y +CONFIG_SOC_LIGHT_SLEEP_SUPPORTED=y +CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y +CONFIG_SOC_LP_PERIPH_SHARE_INTERRUPT=y +CONFIG_SOC_PM_SUPPORTED=y +CONFIG_SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL=5 +CONFIG_SOC_XTAL_SUPPORT_26M=y +CONFIG_SOC_XTAL_SUPPORT_40M=y +CONFIG_SOC_XTAL_SUPPORT_AUTO_DETECT=y +CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DMA_SUPPORTED=y +CONFIG_SOC_ADC_PERIPH_NUM=2 +CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10 +CONFIG_SOC_ADC_ATTEN_NUM=4 +CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2 +CONFIG_SOC_ADC_PATT_LEN_MAX=16 +CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_DIGI_RESULT_BYTES=2 +CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 +CONFIG_SOC_ADC_DIGI_MONITOR_NUM=0 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=2 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=20 +CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_SHARED_POWER=y +CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y +CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y +CONFIG_SOC_IDCACHE_PER_CORE=y +CONFIG_SOC_CPU_CORES_NUM=2 +CONFIG_SOC_CPU_INTR_NUM=32 +CONFIG_SOC_CPU_HAS_FPU=y +CONFIG_SOC_HP_CPU_HAS_MULTIPLE_CORES=y +CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=0x40 +CONFIG_SOC_DAC_CHAN_NUM=2 +CONFIG_SOC_DAC_RESOLUTION=8 +CONFIG_SOC_DAC_DMA_16BIT_ALIGN=y +CONFIG_SOC_GPIO_PORT=1 +CONFIG_SOC_GPIO_PIN_COUNT=40 +CONFIG_SOC_GPIO_VALID_GPIO_MASK=0xFFFFFFFFFF +CONFIG_SOC_GPIO_IN_RANGE_MAX=39 +CONFIG_SOC_GPIO_OUT_RANGE_MAX=33 +CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0xEF0FEA +CONFIG_SOC_GPIO_CLOCKOUT_BY_IO_MUX=y +CONFIG_SOC_GPIO_CLOCKOUT_CHANNEL_NUM=3 +CONFIG_SOC_GPIO_SUPPORT_HOLD_IO_IN_DSLP=y +CONFIG_SOC_I2C_NUM=2 +CONFIG_SOC_HP_I2C_NUM=2 +CONFIG_SOC_I2C_FIFO_LEN=32 +CONFIG_SOC_I2C_CMD_REG_NUM=16 +CONFIG_SOC_I2C_SUPPORT_SLAVE=y +CONFIG_SOC_I2C_SUPPORT_APB=y +CONFIG_SOC_I2C_SUPPORT_10BIT_ADDR=y +CONFIG_SOC_I2C_STOP_INDEPENDENT=y +CONFIG_SOC_I2S_NUM=2 +CONFIG_SOC_I2S_HW_VERSION_1=y +CONFIG_SOC_I2S_SUPPORTS_APLL=y +CONFIG_SOC_I2S_SUPPORTS_PLL_F160M=y +CONFIG_SOC_I2S_SUPPORTS_PDM=y +CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y +CONFIG_SOC_I2S_SUPPORTS_PCM2PDM=y +CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +CONFIG_SOC_I2S_SUPPORTS_PDM2PCM=y +CONFIG_SOC_I2S_PDM_MAX_TX_LINES=1 +CONFIG_SOC_I2S_PDM_MAX_RX_LINES=1 +CONFIG_SOC_I2S_SUPPORTS_ADC_DAC=y +CONFIG_SOC_I2S_SUPPORTS_ADC=y +CONFIG_SOC_I2S_SUPPORTS_DAC=y +CONFIG_SOC_I2S_SUPPORTS_LCD_CAMERA=y +CONFIG_SOC_I2S_MAX_DATA_WIDTH=24 +CONFIG_SOC_I2S_TRANS_SIZE_ALIGN_WORD=y +CONFIG_SOC_I2S_LCD_I80_VARIANT=y +CONFIG_SOC_LCD_I80_SUPPORTED=y +CONFIG_SOC_LCD_I80_BUSES=2 +CONFIG_SOC_LCD_I80_BUS_WIDTH=24 +CONFIG_SOC_LEDC_HAS_TIMER_SPECIFIC_MUX=y +CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y +CONFIG_SOC_LEDC_SUPPORT_REF_TICK=y +CONFIG_SOC_LEDC_SUPPORT_HS_MODE=y +CONFIG_SOC_LEDC_TIMER_NUM=4 +CONFIG_SOC_LEDC_CHANNEL_NUM=8 +CONFIG_SOC_LEDC_TIMER_BIT_WIDTH=20 +CONFIG_SOC_MCPWM_GROUPS=2 +CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 +CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 +CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 +CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y +CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 +CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 +CONFIG_SOC_MMU_PERIPH_NUM=2 +CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=3 +CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 +CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 +CONFIG_SOC_PCNT_GROUPS=1 +CONFIG_SOC_PCNT_UNITS_PER_GROUP=8 +CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 +CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 +CONFIG_SOC_RMT_GROUPS=1 +CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8 +CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=64 +CONFIG_SOC_RMT_SUPPORT_REF_TICK=y +CONFIG_SOC_RMT_SUPPORT_APB=y +CONFIG_SOC_RMT_CHANNEL_CLK_INDEPENDENT=y +CONFIG_SOC_RTCIO_PIN_COUNT=18 +CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y +CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y +CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y +CONFIG_SOC_SDM_GROUPS=1 +CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 +CONFIG_SOC_SDM_CLK_SUPPORT_APB=y +CONFIG_SOC_SPI_HD_BOTH_INOUT_SUPPORTED=y +CONFIG_SOC_SPI_AS_CS_SUPPORTED=y +CONFIG_SOC_SPI_PERIPH_NUM=3 +CONFIG_SOC_SPI_DMA_CHAN_NUM=2 +CONFIG_SOC_SPI_MAX_CS_NUM=3 +CONFIG_SOC_SPI_SUPPORT_CLK_APB=y +CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 +CONFIG_SOC_SPI_MAX_PRE_DIVIDER=8192 +CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_26M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y +CONFIG_SOC_TIMER_GROUPS=2 +CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2 +CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=64 +CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 +CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y +CONFIG_SOC_LP_TIMER_BIT_WIDTH_LO=32 +CONFIG_SOC_LP_TIMER_BIT_WIDTH_HI=16 +CONFIG_SOC_TOUCH_SENSOR_VERSION=1 +CONFIG_SOC_TOUCH_SENSOR_NUM=10 +CONFIG_SOC_TOUCH_MIN_CHAN_ID=0 +CONFIG_SOC_TOUCH_MAX_CHAN_ID=9 +CONFIG_SOC_TOUCH_SUPPORT_SLEEP_WAKEUP=y +CONFIG_SOC_TOUCH_SAMPLE_CFG_NUM=1 +CONFIG_SOC_TWAI_CONTROLLER_NUM=1 +CONFIG_SOC_TWAI_MASK_FILTER_NUM=1 +CONFIG_SOC_TWAI_BRP_MIN=2 +CONFIG_SOC_TWAI_CLK_SUPPORT_APB=y +CONFIG_SOC_TWAI_SUPPORT_MULTI_ADDRESS_LAYOUT=y +CONFIG_SOC_UART_NUM=3 +CONFIG_SOC_UART_HP_NUM=3 +CONFIG_SOC_UART_SUPPORT_APB_CLK=y +CONFIG_SOC_UART_SUPPORT_REF_TICK=y +CONFIG_SOC_UART_FIFO_LEN=128 +CONFIG_SOC_UART_BITRATE_MAX=5000000 +CONFIG_SOC_UART_WAKEUP_SUPPORT_ACTIVE_THRESH_MODE=y +CONFIG_SOC_SPIRAM_SUPPORTED=y +CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y +CONFIG_SOC_SHA_SUPPORT_PARALLEL_ENG=y +CONFIG_SOC_SHA_ENDIANNESS_BE=y +CONFIG_SOC_SHA_SUPPORT_SHA1=y +CONFIG_SOC_SHA_SUPPORT_SHA256=y +CONFIG_SOC_SHA_SUPPORT_SHA384=y +CONFIG_SOC_SHA_SUPPORT_SHA512=y +CONFIG_SOC_MPI_MEM_BLOCKS_NUM=4 +CONFIG_SOC_MPI_OPERATIONS_NUM=1 +CONFIG_SOC_RSA_MAX_BIT_LEN=4096 +CONFIG_SOC_AES_SUPPORT_AES_128=y +CONFIG_SOC_AES_SUPPORT_AES_192=y +CONFIG_SOC_AES_SUPPORT_AES_256=y +CONFIG_SOC_SECURE_BOOT_V1=y +CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=1 +CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32 +CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 +CONFIG_SOC_PM_SUPPORT_EXT0_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_FAST_MEM_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_SLOW_MEM_PD=y +CONFIG_SOC_PM_SUPPORT_RC_FAST_PD=y +CONFIG_SOC_PM_SUPPORT_VDDSDIO_PD=y +CONFIG_SOC_PM_SUPPORT_MODEM_PD=y +CONFIG_SOC_CONFIGURABLE_VDDSDIO_SUPPORTED=y +CONFIG_SOC_PM_MODEM_PD_BY_SW=y +CONFIG_SOC_CLK_APLL_SUPPORTED=y +CONFIG_SOC_CLK_RC_FAST_D256_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_CLK_SUPPORT_RC_FAST_D256=y +CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y +CONFIG_SOC_CLK_XTAL32K_SUPPORTED=y +CONFIG_SOC_CLK_LP_FAST_SUPPORT_XTAL_D4=y +CONFIG_SOC_SDMMC_USE_IOMUX=y +CONFIG_SOC_SDMMC_NUM_SLOTS=2 +CONFIG_SOC_WIFI_WAPI_SUPPORT=y +CONFIG_SOC_WIFI_CSI_SUPPORT=y +CONFIG_SOC_WIFI_MESH_SUPPORT=y +CONFIG_SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW=y +CONFIG_SOC_WIFI_NAN_SUPPORT=y +CONFIG_SOC_BLE_SUPPORTED=y +CONFIG_SOC_BLE_MESH_SUPPORTED=y +CONFIG_SOC_BT_CLASSIC_SUPPORTED=y +CONFIG_SOC_BLUFI_SUPPORTED=y +CONFIG_SOC_BT_H2C_ENC_KEY_CTRL_ENH_VSC_SUPPORTED=y +CONFIG_SOC_BLE_MULTI_CONN_OPTIMIZATION=y +CONFIG_SOC_ULP_HAS_ADC=y +CONFIG_SOC_PHY_COMBO_MODULE=y +CONFIG_SOC_EMAC_RMII_CLK_OUT_INTERNAL_LOOPBACK=y +CONFIG_IDF_CMAKE=y +CONFIG_IDF_TOOLCHAIN="gcc" +CONFIG_IDF_TOOLCHAIN_GCC=y +CONFIG_IDF_TARGET_ARCH_XTENSA=y +CONFIG_IDF_TARGET_ARCH="xtensa" +CONFIG_IDF_TARGET="esp32" +CONFIG_IDF_INIT_VERSION="5.5.1" +CONFIG_IDF_TARGET_ESP32=y +CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 + +# +# Build type +# +CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y +# CONFIG_APP_BUILD_TYPE_RAM is not set +CONFIG_APP_BUILD_GENERATE_BINARIES=y +CONFIG_APP_BUILD_BOOTLOADER=y +CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y +# CONFIG_APP_REPRODUCIBLE_BUILD is not set +# CONFIG_APP_NO_BLOBS is not set +# CONFIG_APP_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set +# end of Build type + +# +# Bootloader config +# + +# +# Bootloader manager +# +CONFIG_BOOTLOADER_COMPILE_TIME_DATE=y +CONFIG_BOOTLOADER_PROJECT_VER=1 +# end of Bootloader manager + +# +# Application Rollback +# +# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set +# end of Application Rollback + +# +# Recovery Bootloader and Rollback +# +# end of Recovery Bootloader and Rollback + +CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000 +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set + +# +# Log +# +CONFIG_BOOTLOADER_LOG_VERSION_1=y +CONFIG_BOOTLOADER_LOG_VERSION=1 +# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set +CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y +# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set +CONFIG_BOOTLOADER_LOG_LEVEL=3 + +# +# Format +# +# CONFIG_BOOTLOADER_LOG_COLORS is not set +CONFIG_BOOTLOADER_LOG_TIMESTAMP_SOURCE_CPU_TICKS=y +# end of Format + +# +# Settings +# +CONFIG_BOOTLOADER_LOG_MODE_TEXT_EN=y +CONFIG_BOOTLOADER_LOG_MODE_TEXT=y +# end of Settings +# end of Log + +# +# Serial Flash Configurations +# +# CONFIG_BOOTLOADER_FLASH_DC_AWARE is not set +CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y +# end of Serial Flash Configurations + +# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +# CONFIG_BOOTLOADER_FACTORY_RESET is not set +# CONFIG_BOOTLOADER_APP_TEST is not set +CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y +CONFIG_BOOTLOADER_WDT_ENABLE=y +# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 +# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set +CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 +# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set +# end of Bootloader config + +# +# Security features +# +CONFIG_SECURE_BOOT_V1_SUPPORTED=y +# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set +# CONFIG_SECURE_BOOT is not set +# CONFIG_SECURE_FLASH_ENC_ENABLED is not set +# end of Security features + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y +# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set +# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set +# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set +CONFIG_APP_RETRIEVE_LEN_ELF_SHA=9 +# end of Application manager + +CONFIG_ESP_ROM_HAS_CRC_LE=y +CONFIG_ESP_ROM_HAS_CRC_BE=y +CONFIG_ESP_ROM_HAS_MZ_CRC32=y +CONFIG_ESP_ROM_HAS_JPEG_DECODE=y +CONFIG_ESP_ROM_HAS_UART_BUF_SWITCH=y +CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y +CONFIG_ESP_ROM_HAS_NEWLIB=y +CONFIG_ESP_ROM_HAS_NEWLIB_NANO_FORMAT=y +CONFIG_ESP_ROM_HAS_NEWLIB_32BIT_TIME=y +CONFIG_ESP_ROM_HAS_SW_FLOAT=y +CONFIG_ESP_ROM_USB_OTG_NUM=-1 +CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=-1 +CONFIG_ESP_ROM_SUPPORT_DEEP_SLEEP_WAKEUP_STUB=y +CONFIG_ESP_ROM_HAS_OUTPUT_PUTC_FUNC=y + +# +# Serial flasher config +# +# CONFIG_ESPTOOLPY_NO_STUB is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set +CONFIG_ESPTOOLPY_FLASHMODE_DIO=y +# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set +CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y +CONFIG_ESPTOOLPY_FLASHMODE="dio" +# CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +# CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +# CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set +CONFIG_ESPTOOLPY_BEFORE_RESET=y +# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +# CONFIG_ESPTOOLPY_AFTER_NORESET is not set +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 +# end of Serial flasher config + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set +# CONFIG_PARTITION_TABLE_TWO_OTA is not set +# CONFIG_PARTITION_TABLE_TWO_OTA_LARGE is not set +# CONFIG_PARTITION_TABLE_CUSTOM is not set +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y +# end of Partition Table + +# +# Example Configuration +# +CONFIG_ENV_GPIO_RANGE_MIN=0 +CONFIG_ENV_GPIO_RANGE_MAX=39 +CONFIG_ENV_GPIO_IN_RANGE_MAX=39 +CONFIG_ENV_GPIO_OUT_RANGE_MAX=33 +CONFIG_I2C_MASTER_SCL=22 +CONFIG_I2C_MASTER_SDA=21 +CONFIG_I2C_MASTER_FREQUENCY=100000 +CONFIG_MQTT_BROKER_URI="mqtt://192.168.4.2:1883" +CONFIG_MQTT_TOPIC="esp32/imu" +CONFIG_WIFI_AP_MODE=y +CONFIG_WIFI_AP_SSID="ESP32_IMU_AP" +CONFIG_WIFI_AP_PASSWORD="esp32imuap" +# end of Example Configuration + +# +# Compiler options +# +CONFIG_COMPILER_OPTIMIZATION_DEBUG=y +# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set +# CONFIG_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_COMPILER_OPTIMIZATION_NONE is not set +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set +CONFIG_COMPILER_ASSERT_NDEBUG_EVALUATE=y +CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y +CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set +CONFIG_COMPILER_HIDE_PATHS_MACROS=y +# CONFIG_COMPILER_CXX_EXCEPTIONS is not set +# CONFIG_COMPILER_CXX_RTTI is not set +CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y +# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set +# CONFIG_COMPILER_NO_MERGE_CONSTANTS is not set +# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set +CONFIG_COMPILER_DISABLE_DEFAULT_ERRORS=y +# CONFIG_COMPILER_DISABLE_GCC12_WARNINGS is not set +# CONFIG_COMPILER_DISABLE_GCC13_WARNINGS is not set +# CONFIG_COMPILER_DISABLE_GCC14_WARNINGS is not set +# CONFIG_COMPILER_DUMP_RTL_FILES is not set +CONFIG_COMPILER_RT_LIB_GCCLIB=y +CONFIG_COMPILER_RT_LIB_NAME="gcc" +CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING=y +# CONFIG_COMPILER_ORPHAN_SECTIONS_PLACE is not set +# CONFIG_COMPILER_STATIC_ANALYZER is not set +# end of Compiler options + +# +# Component config +# + +# +# Application Level Tracing +# +# CONFIG_APPTRACE_DEST_JTAG is not set +CONFIG_APPTRACE_DEST_NONE=y +# CONFIG_APPTRACE_DEST_UART1 is not set +# CONFIG_APPTRACE_DEST_UART2 is not set +CONFIG_APPTRACE_DEST_UART_NONE=y +CONFIG_APPTRACE_UART_TASK_PRIO=1 +CONFIG_APPTRACE_LOCK_ENABLE=y +# end of Application Level Tracing + +# +# Bluetooth +# +# CONFIG_BT_ENABLED is not set + +# +# Common Options +# +# CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED is not set +# CONFIG_BT_BLE_LOG_UHCI_OUT_ENABLED is not set +# end of Common Options +# end of Bluetooth + +# +# Console Library +# +# CONFIG_CONSOLE_SORTED_HELP is not set +# end of Console Library + +# +# Driver Configurations +# + +# +# Legacy TWAI Driver Configurations +# +# CONFIG_TWAI_SKIP_LEGACY_CONFLICT_CHECK is not set +CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC=y +CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST=y +CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID=y +CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT=y +CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y +# end of Legacy TWAI Driver Configurations + +# +# Legacy ADC Driver Configuration +# +CONFIG_ADC_DISABLE_DAC=y +# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_ADC_SKIP_LEGACY_CONFLICT_CHECK is not set + +# +# Legacy ADC Calibration Configuration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y +# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy ADC Calibration Configuration +# end of Legacy ADC Driver Configuration + +# +# Legacy DAC Driver Configurations +# +# CONFIG_DAC_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_DAC_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy DAC Driver Configurations + +# +# Legacy MCPWM Driver Configurations +# +# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_MCPWM_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy MCPWM Driver Configurations + +# +# Legacy Timer Group Driver Configurations +# +# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_GPTIMER_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy Timer Group Driver Configurations + +# +# Legacy RMT Driver Configurations +# +# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_RMT_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy RMT Driver Configurations + +# +# Legacy I2S Driver Configurations +# +# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_I2S_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy I2S Driver Configurations + +# +# Legacy I2C Driver Configurations +# +# CONFIG_I2C_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy I2C Driver Configurations + +# +# Legacy PCNT Driver Configurations +# +# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_PCNT_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy PCNT Driver Configurations + +# +# Legacy SDM Driver Configurations +# +# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_SDM_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy SDM Driver Configurations + +# +# Legacy Touch Sensor Driver Configurations +# +# CONFIG_TOUCH_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_TOUCH_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy Touch Sensor Driver Configurations +# end of Driver Configurations + +# +# eFuse Bit Manager +# +# CONFIG_EFUSE_CUSTOM_TABLE is not set +# CONFIG_EFUSE_VIRTUAL is not set +# CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE is not set +CONFIG_EFUSE_CODE_SCHEME_COMPAT_3_4=y +# CONFIG_EFUSE_CODE_SCHEME_COMPAT_REPEAT is not set +CONFIG_EFUSE_MAX_BLK_LEN=192 +# end of eFuse Bit Manager + +# +# ESP-TLS +# +CONFIG_ESP_TLS_USING_MBEDTLS=y +# CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set +# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set +# CONFIG_ESP_TLS_SERVER_SESSION_TICKETS is not set +# CONFIG_ESP_TLS_SERVER_CERT_SELECT_HOOK is not set +# CONFIG_ESP_TLS_SERVER_MIN_AUTH_MODE_OPTIONAL is not set +# CONFIG_ESP_TLS_PSK_VERIFICATION is not set +# CONFIG_ESP_TLS_INSECURE is not set +CONFIG_ESP_TLS_DYN_BUF_STRATEGY_SUPPORTED=y +# end of ESP-TLS + +# +# ADC and ADC Calibration +# +# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set + +# +# ADC Calibration Configurations +# +CONFIG_ADC_CALI_EFUSE_TP_ENABLE=y +CONFIG_ADC_CALI_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CALI_LUT_ENABLE=y +# end of ADC Calibration Configurations + +CONFIG_ADC_DISABLE_DAC_OUTPUT=y +# CONFIG_ADC_ENABLE_DEBUG_LOG is not set +# end of ADC and ADC Calibration + +# +# Wireless Coexistence +# +CONFIG_ESP_COEX_ENABLED=y +# CONFIG_ESP_COEX_GPIO_DEBUG is not set +# end of Wireless Coexistence + +# +# Common ESP-related +# +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y +# end of Common ESP-related + +# +# ESP-Driver:DAC Configurations +# +# CONFIG_DAC_CTRL_FUNC_IN_IRAM is not set +# CONFIG_DAC_ISR_IRAM_SAFE is not set +# CONFIG_DAC_ENABLE_DEBUG_LOG is not set +CONFIG_DAC_DMA_AUTO_16BIT_ALIGN=y +# end of ESP-Driver:DAC Configurations + +# +# ESP-Driver:GPIO Configurations +# +# CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set +# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set +# end of ESP-Driver:GPIO Configurations + +# +# ESP-Driver:GPTimer Configurations +# +CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y +# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GPTIMER_ISR_CACHE_SAFE is not set +CONFIG_GPTIMER_OBJ_CACHE_SAFE=y +# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:GPTimer Configurations + +# +# ESP-Driver:I2C Configurations +# +# CONFIG_I2C_ISR_IRAM_SAFE is not set +# CONFIG_I2C_ENABLE_DEBUG_LOG is not set +# CONFIG_I2C_ENABLE_SLAVE_DRIVER_VERSION_2 is not set +CONFIG_I2C_MASTER_ISR_HANDLER_IN_IRAM=y +# end of ESP-Driver:I2C Configurations + +# +# ESP-Driver:I2S Configurations +# +# CONFIG_I2S_ISR_IRAM_SAFE is not set +# CONFIG_I2S_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:I2S Configurations + +# +# ESP-Driver:LEDC Configurations +# +# CONFIG_LEDC_CTRL_FUNC_IN_IRAM is not set +# end of ESP-Driver:LEDC Configurations + +# +# ESP-Driver:MCPWM Configurations +# +CONFIG_MCPWM_ISR_HANDLER_IN_IRAM=y +# CONFIG_MCPWM_ISR_CACHE_SAFE is not set +# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set +CONFIG_MCPWM_OBJ_CACHE_SAFE=y +# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:MCPWM Configurations + +# +# ESP-Driver:PCNT Configurations +# +# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_PCNT_ISR_IRAM_SAFE is not set +# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:PCNT Configurations + +# +# ESP-Driver:RMT Configurations +# +CONFIG_RMT_ENCODER_FUNC_IN_IRAM=y +CONFIG_RMT_TX_ISR_HANDLER_IN_IRAM=y +CONFIG_RMT_RX_ISR_HANDLER_IN_IRAM=y +# CONFIG_RMT_RECV_FUNC_IN_IRAM is not set +# CONFIG_RMT_TX_ISR_CACHE_SAFE is not set +# CONFIG_RMT_RX_ISR_CACHE_SAFE is not set +CONFIG_RMT_OBJ_CACHE_SAFE=y +# CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# CONFIG_RMT_ISR_IRAM_SAFE is not set +# end of ESP-Driver:RMT Configurations + +# +# ESP-Driver:Sigma Delta Modulator Configurations +# +# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_SDM_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:Sigma Delta Modulator Configurations + +# +# ESP-Driver:SPI Configurations +# +# CONFIG_SPI_MASTER_IN_IRAM is not set +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +# CONFIG_SPI_SLAVE_IN_IRAM is not set +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y +# end of ESP-Driver:SPI Configurations + +# +# ESP-Driver:Touch Sensor Configurations +# +# CONFIG_TOUCH_CTRL_FUNC_IN_IRAM is not set +# CONFIG_TOUCH_ISR_IRAM_SAFE is not set +# CONFIG_TOUCH_ENABLE_DEBUG_LOG is not set +# CONFIG_TOUCH_SKIP_FSM_CHECK is not set +# end of ESP-Driver:Touch Sensor Configurations + +# +# ESP-Driver:TWAI Configurations +# +# CONFIG_TWAI_ISR_IN_IRAM is not set +# CONFIG_TWAI_ISR_CACHE_SAFE is not set +# CONFIG_TWAI_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:TWAI Configurations + +# +# ESP-Driver:UART Configurations +# +# CONFIG_UART_ISR_IN_IRAM is not set +# end of ESP-Driver:UART Configurations + +# +# ESP-Driver:UHCI Configurations +# +# CONFIG_UHCI_ISR_HANDLER_IN_IRAM is not set +# CONFIG_UHCI_ISR_CACHE_SAFE is not set +# CONFIG_UHCI_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:UHCI Configurations + +# +# Ethernet +# +CONFIG_ETH_ENABLED=y +CONFIG_ETH_USE_ESP32_EMAC=y +CONFIG_ETH_PHY_INTERFACE_RMII=y +CONFIG_ETH_RMII_CLK_INPUT=y +# CONFIG_ETH_RMII_CLK_OUTPUT is not set +CONFIG_ETH_RMII_CLK_IN_GPIO=0 +CONFIG_ETH_DMA_BUFFER_SIZE=512 +CONFIG_ETH_DMA_RX_BUFFER_NUM=10 +CONFIG_ETH_DMA_TX_BUFFER_NUM=10 +# CONFIG_ETH_IRAM_OPTIMIZATION is not set +CONFIG_ETH_USE_SPI_ETHERNET=y +# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set +# CONFIG_ETH_SPI_ETHERNET_W5500 is not set +# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set +# CONFIG_ETH_USE_OPENETH is not set +# CONFIG_ETH_TRANSMIT_MUTEX is not set +# end of Ethernet + +# +# Event Loop Library +# +# CONFIG_ESP_EVENT_LOOP_PROFILING is not set +CONFIG_ESP_EVENT_POST_FROM_ISR=y +CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y +# end of Event Loop Library + +# +# 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 + +# +# ESP HID +# +CONFIG_ESPHID_TASK_SIZE_BT=2048 +CONFIG_ESPHID_TASK_SIZE_BLE=4096 +# end of ESP HID + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y +# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_CUSTOM_TRANSPORT is not set +CONFIG_ESP_HTTP_CLIENT_EVENT_POST_TIMEOUT=2000 +# end of ESP HTTP client + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=1024 +CONFIG_HTTPD_MAX_URI_LEN=512 +CONFIG_HTTPD_ERR_RESP_NO_DELAY=y +CONFIG_HTTPD_PURGE_BUF_LEN=32 +# CONFIG_HTTPD_LOG_PURGE_DATA is not set +# CONFIG_HTTPD_WS_SUPPORT is not set +# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set +CONFIG_HTTPD_SERVER_EVENT_POST_TIMEOUT=2000 +# end of HTTP Server + +# +# ESP HTTPS OTA +# +# CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set +# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set +CONFIG_ESP_HTTPS_OTA_EVENT_POST_TIMEOUT=2000 +# end of ESP HTTPS OTA + +# +# ESP HTTPS server +# +# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set +CONFIG_ESP_HTTPS_SERVER_EVENT_POST_TIMEOUT=2000 +# CONFIG_ESP_HTTPS_SERVER_CERT_SELECT_HOOK is not set +# end of ESP HTTPS server + +# +# Hardware Settings +# + +# +# Chip revision +# +CONFIG_ESP32_REV_MIN_0=y +# CONFIG_ESP32_REV_MIN_1 is not set +# CONFIG_ESP32_REV_MIN_1_1 is not set +# CONFIG_ESP32_REV_MIN_2 is not set +# CONFIG_ESP32_REV_MIN_3 is not set +# CONFIG_ESP32_REV_MIN_3_1 is not set +CONFIG_ESP32_REV_MIN=0 +CONFIG_ESP32_REV_MIN_FULL=0 +CONFIG_ESP_REV_MIN_FULL=0 + +# +# Maximum Supported ESP32 Revision (Rev v3.99) +# +CONFIG_ESP32_REV_MAX_FULL=399 +CONFIG_ESP_REV_MAX_FULL=399 +CONFIG_ESP_EFUSE_BLOCK_REV_MIN_FULL=0 +CONFIG_ESP_EFUSE_BLOCK_REV_MAX_FULL=99 + +# +# Maximum Supported ESP32 eFuse Block Revision (eFuse Block Rev v0.99) +# +# end of Chip revision + +# +# MAC Config +# +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y +CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES=4 +# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 +# CONFIG_ESP_MAC_IGNORE_MAC_CRC_ERROR is not set +# CONFIG_ESP_MAC_USE_CUSTOM_MAC_AS_BASE_MAC is not set +# end of MAC Config + +# +# Sleep Config +# +# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set +CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y +# CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set +CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y +# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set +CONFIG_ESP_SLEEP_WAIT_FLASH_READY_EXTRA_DELAY=2000 +# CONFIG_ESP_SLEEP_CACHE_SAFE_ASSERTION is not set +# CONFIG_ESP_SLEEP_DEBUG is not set +CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y +# end of Sleep Config + +# +# RTC Clock Config +# +CONFIG_RTC_CLK_SRC_INT_RC=y +# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_RTC_CLK_SRC_INT_8MD256 is not set +CONFIG_RTC_CLK_CAL_CYCLES=1024 +# end of RTC Clock Config + +# +# Peripheral Control +# +CONFIG_ESP_PERIPH_CTRL_FUNC_IN_IRAM=y +CONFIG_ESP_REGI2C_CTRL_FUNC_IN_IRAM=y +# end of Peripheral Control + +# +# Main XTAL Config +# +# CONFIG_XTAL_FREQ_26 is not set +# CONFIG_XTAL_FREQ_32 is not set +CONFIG_XTAL_FREQ_40=y +# CONFIG_XTAL_FREQ_AUTO is not set +CONFIG_XTAL_FREQ=40 +# end of Main XTAL Config + +# +# Power Supplier +# + +# +# Brownout Detector +# +CONFIG_ESP_BROWNOUT_DET=y +CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_ESP_BROWNOUT_DET_LVL=0 +CONFIG_ESP_BROWNOUT_USE_INTR=y +# end of Brownout Detector +# end of Power Supplier + +CONFIG_ESP_SPI_BUS_LOCK_ISR_FUNCS_IN_IRAM=y +CONFIG_ESP_INTR_IN_IRAM=y +# end of Hardware Settings + +# +# ESP-Driver:LCD Controller Configurations +# +# CONFIG_LCD_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:LCD Controller Configurations + +# +# ESP-MM: Memory Management Configurations +# +# end of ESP-MM: Memory Management Configurations + +# +# ESP NETIF Adapter +# +CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 +# CONFIG_ESP_NETIF_PROVIDE_CUSTOM_IMPLEMENTATION is not set +CONFIG_ESP_NETIF_TCPIP_LWIP=y +# CONFIG_ESP_NETIF_LOOPBACK is not set +CONFIG_ESP_NETIF_USES_TCPIP_WITH_BSD_API=y +CONFIG_ESP_NETIF_REPORT_DATA_TRAFFIC=y +# CONFIG_ESP_NETIF_RECEIVE_REPORT_ERRORS is not set +# CONFIG_ESP_NETIF_L2_TAP is not set +# CONFIG_ESP_NETIF_BRIDGE_EN is not set +# CONFIG_ESP_NETIF_SET_DNS_PER_DEFAULT_NETIF is not set +# end of ESP NETIF Adapter + +# +# Partition API Configuration +# +# end of Partition API Configuration + +# +# PHY +# +CONFIG_ESP_PHY_ENABLED=y +CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP_PHY_MAX_TX_POWER=20 +# CONFIG_ESP_PHY_REDUCE_TX_POWER is not set +# CONFIG_ESP_PHY_ENABLE_CERT_TEST is not set +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_PERIOD_MS=1000 +# CONFIG_ESP_PHY_PLL_TRACK_DEBUG is not set +# CONFIG_ESP_PHY_RECORD_USED_TIME is not set +CONFIG_ESP_PHY_IRAM_OPT=y +# CONFIG_ESP_PHY_DEBUG is not set +# end of PHY + +# +# Power Management +# +CONFIG_PM_SLEEP_FUNC_IN_IRAM=y +# CONFIG_PM_ENABLE is not set +CONFIG_PM_SLP_IRAM_OPT=y +# end of Power Management + +# +# ESP PSRAM +# +# CONFIG_SPIRAM is not set +# end of ESP PSRAM + +# +# ESP Ringbuf +# +# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set +# end of ESP Ringbuf + +# +# ESP-ROM +# +CONFIG_ESP_ROM_PRINT_IN_IRAM=y +# end of ESP-ROM + +# +# ESP Security Specific +# +# end of ESP Security Specific + +# +# ESP System Settings +# +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 + +# +# Memory +# +# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set + +# +# Non-backward compatible options +# +# CONFIG_ESP_SYSTEM_ESP32_SRAM1_REGION_AS_IRAM is not set +# end of Non-backward compatible options +# end of Memory + +# +# Trace memory +# +# CONFIG_ESP32_TRAX is not set +CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 +# end of Trace memory + +CONFIG_ESP_SYSTEM_IN_IRAM=y +# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set +CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y +# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set +CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0 + +# +# Memory protection +# +# end of Memory protection + +CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 +CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y +# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set +# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 +CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set +# CONFIG_ESP_CONSOLE_NONE is not set +CONFIG_ESP_CONSOLE_UART=y +CONFIG_ESP_CONSOLE_UART_NUM=0 +CONFIG_ESP_CONSOLE_ROM_SERIAL_PORT_NUM=0 +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ESP_INT_WDT=y +CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 +CONFIG_ESP_INT_WDT_CHECK_CPU1=y +CONFIG_ESP_TASK_WDT_EN=y +CONFIG_ESP_TASK_WDT_INIT=y +# CONFIG_ESP_TASK_WDT_PANIC is not set +CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP_PANIC_HANDLER_IRAM is not set +# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP_DEBUG_OCDAWARE=y +# CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5 is not set +CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y +# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set +# end of ESP System Settings + +# +# IPC (Inter-Processor Call) +# +CONFIG_ESP_IPC_ENABLE=y +CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 +CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y +CONFIG_ESP_IPC_ISR_ENABLE=y +# end of IPC (Inter-Processor Call) + +# +# ESP Timer (High Resolution Timer) +# +CONFIG_ESP_TIMER_IN_IRAM=y +# CONFIG_ESP_TIMER_PROFILING is not set +CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y +CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y +CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 +CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 +# CONFIG_ESP_TIMER_SHOW_EXPERIMENTAL is not set +CONFIG_ESP_TIMER_TASK_AFFINITY=0x0 +CONFIG_ESP_TIMER_TASK_AFFINITY_CPU0=y +CONFIG_ESP_TIMER_ISR_AFFINITY_CPU0=y +# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set +CONFIG_ESP_TIMER_IMPL_TG0_LAC=y +# end of ESP Timer (High Resolution Timer) + +# +# Wi-Fi +# +CONFIG_ESP_WIFI_ENABLED=y +CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +# CONFIG_ESP_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y +# CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set +CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0 +CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5 +# CONFIG_ESP_WIFI_CSI_ENABLED is not set +CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP_WIFI_TX_BA_WIN=6 +CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP_WIFI_RX_BA_WIN=6 +CONFIG_ESP_WIFI_NVS_ENABLED=y +CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_0=y +# CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_1 is not set +CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP_WIFI_IRAM_OPT=y +# CONFIG_ESP_WIFI_EXTRA_IRAM_OPT is not set +CONFIG_ESP_WIFI_RX_IRAM_OPT=y +CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP_WIFI_ENABLE_SAE_PK=y +CONFIG_ESP_WIFI_ENABLE_SAE_H2E=y +CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y +CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y +# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set +CONFIG_ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME=50 +# CONFIG_ESP_WIFI_BSS_MAX_IDLE_SUPPORT is not set +CONFIG_ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME=10 +CONFIG_ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15 +CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE=y +CONFIG_ESP_WIFI_GMAC_SUPPORT=y +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y +# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set +CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7 +# CONFIG_ESP_WIFI_NAN_ENABLE is not set +CONFIG_ESP_WIFI_MBEDTLS_CRYPTO=y +CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y +# CONFIG_ESP_WIFI_WAPI_PSK is not set +# CONFIG_ESP_WIFI_11KV_SUPPORT is not set +# CONFIG_ESP_WIFI_MBO_SUPPORT is not set +# CONFIG_ESP_WIFI_DPP_SUPPORT is not set +# CONFIG_ESP_WIFI_11R_SUPPORT is not set +# CONFIG_ESP_WIFI_WPS_SOFTAP_REGISTRAR is not set + +# +# WPS Configuration Options +# +# CONFIG_ESP_WIFI_WPS_STRICT is not set +# CONFIG_ESP_WIFI_WPS_PASSPHRASE is not set +# end of WPS Configuration Options + +# CONFIG_ESP_WIFI_DEBUG_PRINT is not set +# CONFIG_ESP_WIFI_TESTING_OPTIONS is not set +CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y +# CONFIG_ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER is not set +# end of Wi-Fi + +# +# Core dump +# +# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set +# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set +CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y +# end of Core dump + +# +# FAT Filesystem support +# +CONFIG_FATFS_VOLUME_COUNT=2 +CONFIG_FATFS_LFN_NONE=y +# CONFIG_FATFS_LFN_HEAP is not set +# CONFIG_FATFS_LFN_STACK is not set +# CONFIG_FATFS_SECTOR_512 is not set +CONFIG_FATFS_SECTOR_4096=y +# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set +CONFIG_FATFS_CODEPAGE_437=y +# CONFIG_FATFS_CODEPAGE_720 is not set +# CONFIG_FATFS_CODEPAGE_737 is not set +# CONFIG_FATFS_CODEPAGE_771 is not set +# CONFIG_FATFS_CODEPAGE_775 is not set +# CONFIG_FATFS_CODEPAGE_850 is not set +# CONFIG_FATFS_CODEPAGE_852 is not set +# CONFIG_FATFS_CODEPAGE_855 is not set +# CONFIG_FATFS_CODEPAGE_857 is not set +# CONFIG_FATFS_CODEPAGE_860 is not set +# CONFIG_FATFS_CODEPAGE_861 is not set +# CONFIG_FATFS_CODEPAGE_862 is not set +# CONFIG_FATFS_CODEPAGE_863 is not set +# CONFIG_FATFS_CODEPAGE_864 is not set +# CONFIG_FATFS_CODEPAGE_865 is not set +# CONFIG_FATFS_CODEPAGE_866 is not set +# CONFIG_FATFS_CODEPAGE_869 is not set +# CONFIG_FATFS_CODEPAGE_932 is not set +# CONFIG_FATFS_CODEPAGE_936 is not set +# CONFIG_FATFS_CODEPAGE_949 is not set +# CONFIG_FATFS_CODEPAGE_950 is not set +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y +# CONFIG_FATFS_USE_FASTSEEK is not set +CONFIG_FATFS_USE_STRFUNC_NONE=y +# CONFIG_FATFS_USE_STRFUNC_WITHOUT_CRLF_CONV is not set +# CONFIG_FATFS_USE_STRFUNC_WITH_CRLF_CONV is not set +CONFIG_FATFS_VFS_FSTAT_BLKSIZE=0 +# CONFIG_FATFS_IMMEDIATE_FSYNC is not set +# CONFIG_FATFS_USE_LABEL is not set +CONFIG_FATFS_LINK_LOCK=y +# CONFIG_FATFS_USE_DYN_BUFFERS is not set + +# +# File system free space calculation behavior +# +CONFIG_FATFS_DONT_TRUST_FREE_CLUSTER_CNT=0 +CONFIG_FATFS_DONT_TRUST_LAST_ALLOC=0 +# end of File system free space calculation behavior +# end of FAT Filesystem support + +# +# FreeRTOS +# + +# +# Kernel +# +# CONFIG_FREERTOS_SMP is not set +# CONFIG_FREERTOS_UNICORE is not set +CONFIG_FREERTOS_HZ=100 +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +# CONFIG_FREERTOS_USE_IDLE_HOOK is not set +# CONFIG_FREERTOS_USE_TICK_HOOK is not set +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +# CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY is not set +CONFIG_FREERTOS_USE_TIMERS=y +CONFIG_FREERTOS_TIMER_SERVICE_TASK_NAME="Tmr Svc" +# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU0 is not set +# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU1 is not set +CONFIG_FREERTOS_TIMER_TASK_NO_AFFINITY=y +CONFIG_FREERTOS_TIMER_SERVICE_TASK_CORE_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=1 +# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set +# CONFIG_FREERTOS_USE_LIST_DATA_INTEGRITY_CHECK_BYTES is not set +# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +# CONFIG_FREERTOS_USE_APPLICATION_TASK_TAG is not set +# end of Kernel + +# +# Port +# +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y +# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set +CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y +# CONFIG_FREERTOS_TASK_PRE_DELETION_HOOK is not set +# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set +CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +# CONFIG_FREERTOS_FPU_IN_ISR is not set +CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER=y +CONFIG_FREERTOS_CORETIMER_0=y +# CONFIG_FREERTOS_CORETIMER_1 is not set +CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y +# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +# end of Port + +# +# Extra +# +# end of Extra + +CONFIG_FREERTOS_PORT=y +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y +CONFIG_FREERTOS_DEBUG_OCDAWARE=y +CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y +CONFIG_FREERTOS_NUMBER_OF_CORES=2 +CONFIG_FREERTOS_IN_IRAM=y +# end of FreeRTOS + +# +# Hardware Abstraction Layer (HAL) and Low Level (LL) +# +CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y +# CONFIG_HAL_ASSERTION_DISABLE is not set +# CONFIG_HAL_ASSERTION_SILENT is not set +# CONFIG_HAL_ASSERTION_ENABLE is not set +CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 +# end of Hardware Abstraction Layer (HAL) and Low Level (LL) + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +# CONFIG_HEAP_POISONING_LIGHT is not set +# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set +CONFIG_HEAP_TRACING_OFF=y +# CONFIG_HEAP_TRACING_STANDALONE is not set +# CONFIG_HEAP_TRACING_TOHOST is not set +# CONFIG_HEAP_USE_HOOKS is not set +# CONFIG_HEAP_TASK_TRACKING is not set +# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set +# CONFIG_HEAP_PLACE_FUNCTION_INTO_FLASH is not set +# end of Heap memory debugging + +# +# Log +# +CONFIG_LOG_VERSION_1=y +# CONFIG_LOG_VERSION_2 is not set +CONFIG_LOG_VERSION=1 + +# +# Log Level +# +# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set +# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set +# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set +# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y +# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set +# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set +CONFIG_LOG_MAXIMUM_LEVEL=3 + +# +# Level Settings +# +# CONFIG_LOG_MASTER_LEVEL is not set +CONFIG_LOG_DYNAMIC_LEVEL_CONTROL=y +# CONFIG_LOG_TAG_LEVEL_IMPL_NONE is not set +# CONFIG_LOG_TAG_LEVEL_IMPL_LINKED_LIST is not set +CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_AND_LINKED_LIST=y +# CONFIG_LOG_TAG_LEVEL_CACHE_ARRAY is not set +CONFIG_LOG_TAG_LEVEL_CACHE_BINARY_MIN_HEAP=y +CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_SIZE=31 +# end of Level Settings +# end of Log Level + +# +# Format +# +# CONFIG_LOG_COLORS is not set +CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y +# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set +# end of Format + +# +# Settings +# +CONFIG_LOG_MODE_TEXT_EN=y +CONFIG_LOG_MODE_TEXT=y +# end of Settings + +CONFIG_LOG_IN_IRAM=y +# end of Log + +# +# LWIP +# +CONFIG_LWIP_ENABLE=y +CONFIG_LWIP_LOCAL_HOSTNAME="espressif" +CONFIG_LWIP_TCPIP_TASK_PRIO=18 +# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set +# CONFIG_LWIP_CHECK_THREAD_SAFETY is not set +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# CONFIG_LWIP_L2_TO_L3_COPY is not set +# CONFIG_LWIP_IRAM_OPTIMIZATION is not set +# CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION is not set +CONFIG_LWIP_TIMERS_ONDEMAND=y +CONFIG_LWIP_ND6=y +# CONFIG_LWIP_FORCE_ROUTER_FORWARDING is not set +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# CONFIG_LWIP_SO_RCVBUF is not set +# CONFIG_LWIP_NETBUF_RECVINFO is not set +CONFIG_LWIP_IP_DEFAULT_TTL=64 +CONFIG_LWIP_IP4_FRAG=y +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP4_REASSEMBLY is not set +# CONFIG_LWIP_IP6_REASSEMBLY is not set +CONFIG_LWIP_IP_REASS_MAX_PBUFS=10 +# CONFIG_LWIP_IP_FORWARD is not set +# CONFIG_LWIP_STATS is not set +CONFIG_LWIP_ESP_GRATUITOUS_ARP=y +CONFIG_LWIP_GARP_TMR_INTERVAL=60 +CONFIG_LWIP_ESP_MLDV6_REPORT=y +CONFIG_LWIP_MLDV6_TMR_INTERVAL=40 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +# CONFIG_LWIP_DHCP_DOES_ACD_CHECK is not set +# CONFIG_LWIP_DHCP_DOES_NOT_CHECK_OFFERED_IP is not set +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=69 +CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 +CONFIG_LWIP_DHCP_COARSE_TIMER_SECS=1 + +# +# DHCP server +# +CONFIG_LWIP_DHCPS=y +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_DHCPS_STATIC_ENTRIES=y +CONFIG_LWIP_DHCPS_ADD_DNS=y +# end of DHCP server + +# CONFIG_LWIP_AUTOIP is not set +CONFIG_LWIP_IPV4=y +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_MSS=1440 +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5760 +CONFIG_LWIP_TCP_WND_DEFAULT=5760 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +CONFIG_LWIP_TCP_ACCEPTMBOX_SIZE=6 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +CONFIG_LWIP_TCP_OOSEQ_TIMEOUT=6 +CONFIG_LWIP_TCP_OOSEQ_MAX_PBUFS=4 +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +# end of TCP + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# end of UDP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +CONFIG_LWIP_IPV6_ND6_NUM_PREFIXES=5 +CONFIG_LWIP_IPV6_ND6_NUM_ROUTERS=3 +CONFIG_LWIP_IPV6_ND6_NUM_DESTINATIONS=10 +# CONFIG_LWIP_PPP_SUPPORT is not set +# CONFIG_LWIP_SLIP_SUPPORT is not set + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +# CONFIG_LWIP_MULTICAST_PING is not set +# CONFIG_LWIP_BROADCAST_PING is not set +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 +# end of LWIP RAW API + +# +# SNTP +# +CONFIG_LWIP_SNTP_MAX_SERVERS=1 +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 +CONFIG_LWIP_SNTP_STARTUP_DELAY=y +CONFIG_LWIP_SNTP_MAXIMUM_STARTUP_DELAY=5000 +# end of SNTP + +# +# DNS +# +CONFIG_LWIP_DNS_MAX_HOST_IP=1 +CONFIG_LWIP_DNS_MAX_SERVERS=3 +# CONFIG_LWIP_FALLBACK_DNS_SERVER_SUPPORT is not set +# CONFIG_LWIP_DNS_SETSERVER_WITH_NETIF is not set +# CONFIG_LWIP_USE_ESP_GETADDRINFO is not set +# end of DNS + +CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 +CONFIG_LWIP_ESP_LWIP_ASSERT=y + +# +# Hooks +# +# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set +CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y +# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y +# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set +CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y +# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set +# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_NONE=y +# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_CUSTOM is not set +CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_NONE=y +# CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_DEFAULT is not set +# CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_CUSTOM is not set +CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set +CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_CUSTOM is not set +# CONFIG_LWIP_HOOK_IP6_INPUT_NONE is not set +CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT=y +# CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set +# end of Hooks + +# CONFIG_LWIP_DEBUG is not set +# end of LWIP + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set +# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y +CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 +CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 +# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set +# CONFIG_MBEDTLS_DEBUG is not set + +# +# mbedTLS v3.x related +# +# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set +# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set +# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set +# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set +CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y +# CONFIG_MBEDTLS_SSL_KEYING_MATERIAL_EXPORT is not set +CONFIG_MBEDTLS_PKCS7_C=y +# end of mbedTLS v3.x related + +# +# Certificate Bundle +# +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set +# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEPRECATED_LIST is not set +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 +# end of Certificate Bundle + +# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set +CONFIG_MBEDTLS_CMAC_C=y +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_GCM_SUPPORT_NON_AES_CIPHER=y +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 +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set +CONFIG_MBEDTLS_HAVE_TIME=y +# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set +# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set +CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y +CONFIG_MBEDTLS_SHA1_C=y +CONFIG_MBEDTLS_SHA512_C=y +# CONFIG_MBEDTLS_SHA3_C is not set +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set +# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set +# CONFIG_MBEDTLS_TLS_DISABLED is not set +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +# CONFIG_MBEDTLS_PSK_MODES is not set +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +# end of TLS Key Exchange Methods + +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set +# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y +CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +# CONFIG_MBEDTLS_CAMELLIA_C is not set +# CONFIG_MBEDTLS_DES_C is not set +# CONFIG_MBEDTLS_BLOWFISH_C is not set +# CONFIG_MBEDTLS_XTEA_C is not set +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +# CONFIG_MBEDTLS_NIST_KW_C is not set +# end of Symmetric Ciphers + +# CONFIG_MBEDTLS_RIPEMD160_C is not set + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +# end of Certificates + +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_PK_PARSE_EC_EXTENDED=y +CONFIG_MBEDTLS_PK_PARSE_EC_COMPRESSED=y +# CONFIG_MBEDTLS_DHM_C is not set +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +# CONFIG_MBEDTLS_ECJPAKE_C is not set +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y +# CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM is not set +# CONFIG_MBEDTLS_POLY1305_C is not set +# CONFIG_MBEDTLS_CHACHA20_C is not set +# CONFIG_MBEDTLS_HKDF_C is not set +# CONFIG_MBEDTLS_THREADING_C is not set +CONFIG_MBEDTLS_ERROR_STRINGS=y +CONFIG_MBEDTLS_FS_IO=y +# CONFIG_MBEDTLS_ALLOW_WEAK_CERTIFICATE_VERIFICATION is not set +# end of mbedTLS + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +# CONFIG_MQTT_PROTOCOL_5 is not set +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set +# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set +# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set +# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set +# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set +# CONFIG_MQTT_CUSTOM_OUTBOX is not set +# end of ESP-MQTT Configurations + +# +# LibC +# +CONFIG_LIBC_NEWLIB=y +CONFIG_LIBC_MISC_IN_IRAM=y +CONFIG_LIBC_LOCKS_PLACE_IN_IRAM=y +CONFIG_LIBC_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_LIBC_STDOUT_LINE_ENDING_LF is not set +# CONFIG_LIBC_STDOUT_LINE_ENDING_CR is not set +# CONFIG_LIBC_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_LIBC_STDIN_LINE_ENDING_LF is not set +CONFIG_LIBC_STDIN_LINE_ENDING_CR=y +# CONFIG_LIBC_NEWLIB_NANO_FORMAT is not set +CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT=y +# CONFIG_LIBC_TIME_SYSCALL_USE_RTC is not set +# CONFIG_LIBC_TIME_SYSCALL_USE_HRT is not set +# CONFIG_LIBC_TIME_SYSCALL_USE_NONE is not set +# end of LibC + +# +# NVS +# +# CONFIG_NVS_ASSERT_ERROR_CHECK is not set +# CONFIG_NVS_LEGACY_DUP_KEYS_COMPATIBILITY is not set +# end of NVS + +# +# OpenThread +# +# CONFIG_OPENTHREAD_ENABLED is not set + +# +# OpenThread Spinel +# +# CONFIG_OPENTHREAD_SPINEL_ONLY is not set +# end of OpenThread Spinel +# end of OpenThread + +# +# Protocomm +# +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_PATCH_VERSION=y +# end of Protocomm + +# +# PThreads +# +CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y +# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set +# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set +CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" +# end of PThreads + +# +# MMU Config +# +CONFIG_MMU_PAGE_SIZE_64KB=y +CONFIG_MMU_PAGE_MODE="64KB" +CONFIG_MMU_PAGE_SIZE=0x10000 +# end of MMU Config + +# +# Main Flash configuration +# + +# +# SPI Flash behavior when brownout +# +CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y +CONFIG_SPI_FLASH_BROWNOUT_RESET=y +# end of SPI Flash behavior when brownout + +# +# Optional and Experimental Features (READ DOCS FIRST) +# + +# +# Features here require specific hardware (READ DOCS FIRST!) +# +CONFIG_SPI_FLASH_SUSPEND_TSUS_VAL_US=50 +# CONFIG_SPI_FLASH_FORCE_ENABLE_XMC_C_SUSPEND is not set +# CONFIG_SPI_FLASH_FORCE_ENABLE_C6_H2_SUSPEND is not set +CONFIG_SPI_FLASH_PLACE_FUNCTIONS_IN_IRAM=y +# end of Optional and Experimental Features (READ DOCS FIRST) +# end of Main Flash configuration + +# +# SPI Flash driver +# +# CONFIG_SPI_FLASH_VERIFY_WRITE is not set +# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set +# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set +# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set +CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y +CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 +CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 +CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 +# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set +# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set +# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set + +# +# Auto-detect flash chips +# +CONFIG_SPI_FLASH_VENDOR_XMC_SUPPORT_ENABLED=y +CONFIG_SPI_FLASH_VENDOR_GD_SUPPORT_ENABLED=y +CONFIG_SPI_FLASH_VENDOR_ISSI_SUPPORT_ENABLED=y +CONFIG_SPI_FLASH_VENDOR_MXIC_SUPPORT_ENABLED=y +CONFIG_SPI_FLASH_VENDOR_WINBOND_SUPPORT_ENABLED=y +CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y +# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set +# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set +# end of Auto-detect flash chips + +CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y +# end of SPI Flash driver + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +# CONFIG_SPIFFS_CACHE_STATS is not set +# end of SPIFFS Cache Configuration + +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +# CONFIG_SPIFFS_GC_STATS is not set +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +# CONFIG_SPIFFS_DBG is not set +# CONFIG_SPIFFS_API_DBG is not set +# CONFIG_SPIFFS_GC_DBG is not set +# CONFIG_SPIFFS_CACHE_DBG is not set +# CONFIG_SPIFFS_CHECK_DBG is not set +# CONFIG_SPIFFS_TEST_VISUALISATION is not set +# end of Debug Configuration +# end of SPIFFS Configuration + +# +# TCP Transport +# + +# +# Websocket +# +CONFIG_WS_TRANSPORT=y +CONFIG_WS_BUFFER_SIZE=1024 +# CONFIG_WS_DYNAMIC_BUFFER is not set +# end of Websocket +# end of TCP Transport + +# +# Ultra Low Power (ULP) Co-processor +# +# CONFIG_ULP_COPROC_ENABLED is not set + +# +# ULP Debugging Options +# +# end of ULP Debugging Options +# end of Ultra Low Power (ULP) Co-processor + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +# CONFIG_UNITY_ENABLE_64BIT is not set +# CONFIG_UNITY_ENABLE_COLOR is not set +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +# CONFIG_UNITY_ENABLE_FIXTURE is not set +# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set +# CONFIG_UNITY_TEST_ORDER_BY_FILE_PATH_AND_LINE is not set +# end of Unity unit testing library + +# +# Virtual file system +# +CONFIG_VFS_SUPPORT_IO=y +CONFIG_VFS_SUPPORT_DIR=y +CONFIG_VFS_SUPPORT_SELECT=y +CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y +# CONFIG_VFS_SELECT_IN_RAM is not set +CONFIG_VFS_SUPPORT_TERMIOS=y +CONFIG_VFS_MAX_COUNT=8 + +# +# Host File System I/O (Semihosting) +# +CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# end of Host File System I/O (Semihosting) + +CONFIG_VFS_INITIALIZE_DEV_NULL=y +# end of Virtual file system + +# +# Wear Levelling +# +# CONFIG_WL_SECTOR_SIZE_512 is not set +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 +# end of Wear Levelling + +# +# Wi-Fi Provisioning Manager +# +CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 +CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 +CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y +# CONFIG_WIFI_PROV_STA_FAST_SCAN is not set +# end of Wi-Fi Provisioning Manager +# end of Component config + +# CONFIG_IDF_EXPERIMENTAL_FEATURES is not set + +# Deprecated options for backward compatibility +# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set +# CONFIG_NO_BLOBS is not set +# CONFIG_ESP32_NO_BLOBS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set +# CONFIG_APP_ROLLBACK_ENABLE is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set +CONFIG_LOG_BOOTLOADER_LEVEL=3 +# CONFIG_FLASH_ENCRYPTION_ENABLED is not set +# CONFIG_FLASHMODE_QIO is not set +# CONFIG_FLASHMODE_QOUT is not set +CONFIG_FLASHMODE_DIO=y +# CONFIG_FLASHMODE_DOUT is not set +CONFIG_MONITOR_BAUD=115200 +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y +# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set +# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set +CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_CXX_EXCEPTIONS is not set +CONFIG_STACK_CHECK_NONE=y +# CONFIG_STACK_CHECK_NORM is not set +# CONFIG_STACK_CHECK_STRONG is not set +# CONFIG_STACK_CHECK_ALL is not set +# CONFIG_WARN_WRITE_STRINGS is not set +# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_ADC2_DISABLE_DAC=y +# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set +# CONFIG_MCPWM_ISR_IRAM_SAFE is not set +# 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 +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +# CONFIG_ESP_SYSTEM_PD_FLASH is not set +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +# CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set +# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set +# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y +# CONFIG_ESP32_XTAL_FREQ_26 is not set +CONFIG_ESP32_XTAL_FREQ_40=y +# CONFIG_ESP32_XTAL_FREQ_AUTO is not set +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_BROWNOUT_DET=y +CONFIG_ESP32_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_ESP32_BROWNOUT_DET_LVL=0 +CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 +# CONFIG_REDUCE_PHY_TX_POWER is not set +# CONFIG_ESP32_REDUCE_PHY_TX_POWER is not set +# CONFIG_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 +# CONFIG_ESP32_PANIC_PRINT_HALT is not set +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +# CONFIG_ESP32_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP32_PANIC_GDBSTUB is not set +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_CONSOLE_UART_DEFAULT=y +# CONFIG_CONSOLE_UART_CUSTOM is not set +# CONFIG_CONSOLE_UART_NONE is not set +# CONFIG_ESP_CONSOLE_UART_NONE is not set +CONFIG_CONSOLE_UART=y +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_ESP_TASK_WDT=y +# CONFIG_TASK_WDT_PANIC is not set +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP32_DEBUG_OCDAWARE=y +# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_ESP32_WIFI_ENABLED=y +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_CSI_ENABLED is not set +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP32_WIFI_IRAM_OPT=y +CONFIG_ESP32_WIFI_RX_IRAM_OPT=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y +CONFIG_WPA_MBEDTLS_CRYPTO=y +CONFIG_WPA_MBEDTLS_TLS_CLIENT=y +# CONFIG_WPA_WAPI_PSK is not set +# CONFIG_WPA_11KV_SUPPORT is not set +# CONFIG_WPA_MBO_SUPPORT is not set +# CONFIG_WPA_DPP_SUPPORT is not set +# CONFIG_WPA_11R_SUPPORT is not set +# CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set +# CONFIG_WPA_WPS_STRICT is not set +# CONFIG_WPA_DEBUG_PRINT is not set +# CONFIG_WPA_TESTING_OPTIONS is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set +# CONFIG_HAL_ASSERTION_SILIENT is not set +# CONFIG_L2_TO_L3_COPY is not set +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=12 +CONFIG_TCP_MSS=1440 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5760 +CONFIG_TCP_WND_DEFAULT=5760 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_TCP_OVERSIZE_MSS=y +# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_TCP_OVERSIZE_DISABLE is not set +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_PPP_SUPPORT is not set +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +# CONFIG_NEWLIB_NANO_FORMAT is not set +CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_HRT=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_HRT is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_ESP32_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set +# CONFIG_ESP32_ULP_COPROC_ENABLED is not set +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y +CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# End of deprecated options diff --git a/IMU/sdkconfig.old b/IMU/sdkconfig.old new file mode 100644 index 0000000..ae4b2c3 --- /dev/null +++ b/IMU/sdkconfig.old @@ -0,0 +1,2032 @@ +# +# Automatically generated file. DO NOT EDIT. +# Espressif IoT Development Framework (ESP-IDF) 5.5.1 Project Configuration +# +CONFIG_SOC_CAPS_ECO_VER_MAX=301 +CONFIG_SOC_ADC_SUPPORTED=y +CONFIG_SOC_DAC_SUPPORTED=y +CONFIG_SOC_UART_SUPPORTED=y +CONFIG_SOC_MCPWM_SUPPORTED=y +CONFIG_SOC_GPTIMER_SUPPORTED=y +CONFIG_SOC_SDMMC_HOST_SUPPORTED=y +CONFIG_SOC_BT_SUPPORTED=y +CONFIG_SOC_PCNT_SUPPORTED=y +CONFIG_SOC_PHY_SUPPORTED=y +CONFIG_SOC_WIFI_SUPPORTED=y +CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y +CONFIG_SOC_TWAI_SUPPORTED=y +CONFIG_SOC_EFUSE_SUPPORTED=y +CONFIG_SOC_EMAC_SUPPORTED=y +CONFIG_SOC_ULP_SUPPORTED=y +CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y +CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y +CONFIG_SOC_RTC_MEM_SUPPORTED=y +CONFIG_SOC_I2S_SUPPORTED=y +CONFIG_SOC_RMT_SUPPORTED=y +CONFIG_SOC_SDM_SUPPORTED=y +CONFIG_SOC_GPSPI_SUPPORTED=y +CONFIG_SOC_LEDC_SUPPORTED=y +CONFIG_SOC_I2C_SUPPORTED=y +CONFIG_SOC_SUPPORT_COEXISTENCE=y +CONFIG_SOC_AES_SUPPORTED=y +CONFIG_SOC_MPI_SUPPORTED=y +CONFIG_SOC_SHA_SUPPORTED=y +CONFIG_SOC_FLASH_ENC_SUPPORTED=y +CONFIG_SOC_SECURE_BOOT_SUPPORTED=y +CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y +CONFIG_SOC_BOD_SUPPORTED=y +CONFIG_SOC_ULP_FSM_SUPPORTED=y +CONFIG_SOC_CLK_TREE_SUPPORTED=y +CONFIG_SOC_MPU_SUPPORTED=y +CONFIG_SOC_WDT_SUPPORTED=y +CONFIG_SOC_SPI_FLASH_SUPPORTED=y +CONFIG_SOC_RNG_SUPPORTED=y +CONFIG_SOC_LIGHT_SLEEP_SUPPORTED=y +CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y +CONFIG_SOC_LP_PERIPH_SHARE_INTERRUPT=y +CONFIG_SOC_PM_SUPPORTED=y +CONFIG_SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL=5 +CONFIG_SOC_XTAL_SUPPORT_26M=y +CONFIG_SOC_XTAL_SUPPORT_40M=y +CONFIG_SOC_XTAL_SUPPORT_AUTO_DETECT=y +CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DMA_SUPPORTED=y +CONFIG_SOC_ADC_PERIPH_NUM=2 +CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10 +CONFIG_SOC_ADC_ATTEN_NUM=4 +CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2 +CONFIG_SOC_ADC_PATT_LEN_MAX=16 +CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_DIGI_RESULT_BYTES=2 +CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 +CONFIG_SOC_ADC_DIGI_MONITOR_NUM=0 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=2 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=20 +CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_SHARED_POWER=y +CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y +CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y +CONFIG_SOC_IDCACHE_PER_CORE=y +CONFIG_SOC_CPU_CORES_NUM=2 +CONFIG_SOC_CPU_INTR_NUM=32 +CONFIG_SOC_CPU_HAS_FPU=y +CONFIG_SOC_HP_CPU_HAS_MULTIPLE_CORES=y +CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=0x40 +CONFIG_SOC_DAC_CHAN_NUM=2 +CONFIG_SOC_DAC_RESOLUTION=8 +CONFIG_SOC_DAC_DMA_16BIT_ALIGN=y +CONFIG_SOC_GPIO_PORT=1 +CONFIG_SOC_GPIO_PIN_COUNT=40 +CONFIG_SOC_GPIO_VALID_GPIO_MASK=0xFFFFFFFFFF +CONFIG_SOC_GPIO_IN_RANGE_MAX=39 +CONFIG_SOC_GPIO_OUT_RANGE_MAX=33 +CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0xEF0FEA +CONFIG_SOC_GPIO_CLOCKOUT_BY_IO_MUX=y +CONFIG_SOC_GPIO_CLOCKOUT_CHANNEL_NUM=3 +CONFIG_SOC_GPIO_SUPPORT_HOLD_IO_IN_DSLP=y +CONFIG_SOC_I2C_NUM=2 +CONFIG_SOC_HP_I2C_NUM=2 +CONFIG_SOC_I2C_FIFO_LEN=32 +CONFIG_SOC_I2C_CMD_REG_NUM=16 +CONFIG_SOC_I2C_SUPPORT_SLAVE=y +CONFIG_SOC_I2C_SUPPORT_APB=y +CONFIG_SOC_I2C_SUPPORT_10BIT_ADDR=y +CONFIG_SOC_I2C_STOP_INDEPENDENT=y +CONFIG_SOC_I2S_NUM=2 +CONFIG_SOC_I2S_HW_VERSION_1=y +CONFIG_SOC_I2S_SUPPORTS_APLL=y +CONFIG_SOC_I2S_SUPPORTS_PLL_F160M=y +CONFIG_SOC_I2S_SUPPORTS_PDM=y +CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y +CONFIG_SOC_I2S_SUPPORTS_PCM2PDM=y +CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +CONFIG_SOC_I2S_SUPPORTS_PDM2PCM=y +CONFIG_SOC_I2S_PDM_MAX_TX_LINES=1 +CONFIG_SOC_I2S_PDM_MAX_RX_LINES=1 +CONFIG_SOC_I2S_SUPPORTS_ADC_DAC=y +CONFIG_SOC_I2S_SUPPORTS_ADC=y +CONFIG_SOC_I2S_SUPPORTS_DAC=y +CONFIG_SOC_I2S_SUPPORTS_LCD_CAMERA=y +CONFIG_SOC_I2S_MAX_DATA_WIDTH=24 +CONFIG_SOC_I2S_TRANS_SIZE_ALIGN_WORD=y +CONFIG_SOC_I2S_LCD_I80_VARIANT=y +CONFIG_SOC_LCD_I80_SUPPORTED=y +CONFIG_SOC_LCD_I80_BUSES=2 +CONFIG_SOC_LCD_I80_BUS_WIDTH=24 +CONFIG_SOC_LEDC_HAS_TIMER_SPECIFIC_MUX=y +CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y +CONFIG_SOC_LEDC_SUPPORT_REF_TICK=y +CONFIG_SOC_LEDC_SUPPORT_HS_MODE=y +CONFIG_SOC_LEDC_TIMER_NUM=4 +CONFIG_SOC_LEDC_CHANNEL_NUM=8 +CONFIG_SOC_LEDC_TIMER_BIT_WIDTH=20 +CONFIG_SOC_MCPWM_GROUPS=2 +CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 +CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 +CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 +CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y +CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 +CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 +CONFIG_SOC_MMU_PERIPH_NUM=2 +CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=3 +CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 +CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 +CONFIG_SOC_PCNT_GROUPS=1 +CONFIG_SOC_PCNT_UNITS_PER_GROUP=8 +CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 +CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 +CONFIG_SOC_RMT_GROUPS=1 +CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8 +CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=64 +CONFIG_SOC_RMT_SUPPORT_REF_TICK=y +CONFIG_SOC_RMT_SUPPORT_APB=y +CONFIG_SOC_RMT_CHANNEL_CLK_INDEPENDENT=y +CONFIG_SOC_RTCIO_PIN_COUNT=18 +CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y +CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y +CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y +CONFIG_SOC_SDM_GROUPS=1 +CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 +CONFIG_SOC_SDM_CLK_SUPPORT_APB=y +CONFIG_SOC_SPI_HD_BOTH_INOUT_SUPPORTED=y +CONFIG_SOC_SPI_AS_CS_SUPPORTED=y +CONFIG_SOC_SPI_PERIPH_NUM=3 +CONFIG_SOC_SPI_DMA_CHAN_NUM=2 +CONFIG_SOC_SPI_MAX_CS_NUM=3 +CONFIG_SOC_SPI_SUPPORT_CLK_APB=y +CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 +CONFIG_SOC_SPI_MAX_PRE_DIVIDER=8192 +CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_26M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y +CONFIG_SOC_TIMER_GROUPS=2 +CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2 +CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=64 +CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 +CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y +CONFIG_SOC_LP_TIMER_BIT_WIDTH_LO=32 +CONFIG_SOC_LP_TIMER_BIT_WIDTH_HI=16 +CONFIG_SOC_TOUCH_SENSOR_VERSION=1 +CONFIG_SOC_TOUCH_SENSOR_NUM=10 +CONFIG_SOC_TOUCH_MIN_CHAN_ID=0 +CONFIG_SOC_TOUCH_MAX_CHAN_ID=9 +CONFIG_SOC_TOUCH_SUPPORT_SLEEP_WAKEUP=y +CONFIG_SOC_TOUCH_SAMPLE_CFG_NUM=1 +CONFIG_SOC_TWAI_CONTROLLER_NUM=1 +CONFIG_SOC_TWAI_MASK_FILTER_NUM=1 +CONFIG_SOC_TWAI_BRP_MIN=2 +CONFIG_SOC_TWAI_CLK_SUPPORT_APB=y +CONFIG_SOC_TWAI_SUPPORT_MULTI_ADDRESS_LAYOUT=y +CONFIG_SOC_UART_NUM=3 +CONFIG_SOC_UART_HP_NUM=3 +CONFIG_SOC_UART_SUPPORT_APB_CLK=y +CONFIG_SOC_UART_SUPPORT_REF_TICK=y +CONFIG_SOC_UART_FIFO_LEN=128 +CONFIG_SOC_UART_BITRATE_MAX=5000000 +CONFIG_SOC_UART_WAKEUP_SUPPORT_ACTIVE_THRESH_MODE=y +CONFIG_SOC_SPIRAM_SUPPORTED=y +CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y +CONFIG_SOC_SHA_SUPPORT_PARALLEL_ENG=y +CONFIG_SOC_SHA_ENDIANNESS_BE=y +CONFIG_SOC_SHA_SUPPORT_SHA1=y +CONFIG_SOC_SHA_SUPPORT_SHA256=y +CONFIG_SOC_SHA_SUPPORT_SHA384=y +CONFIG_SOC_SHA_SUPPORT_SHA512=y +CONFIG_SOC_MPI_MEM_BLOCKS_NUM=4 +CONFIG_SOC_MPI_OPERATIONS_NUM=1 +CONFIG_SOC_RSA_MAX_BIT_LEN=4096 +CONFIG_SOC_AES_SUPPORT_AES_128=y +CONFIG_SOC_AES_SUPPORT_AES_192=y +CONFIG_SOC_AES_SUPPORT_AES_256=y +CONFIG_SOC_SECURE_BOOT_V1=y +CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=1 +CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32 +CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 +CONFIG_SOC_PM_SUPPORT_EXT0_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_FAST_MEM_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_SLOW_MEM_PD=y +CONFIG_SOC_PM_SUPPORT_RC_FAST_PD=y +CONFIG_SOC_PM_SUPPORT_VDDSDIO_PD=y +CONFIG_SOC_PM_SUPPORT_MODEM_PD=y +CONFIG_SOC_CONFIGURABLE_VDDSDIO_SUPPORTED=y +CONFIG_SOC_PM_MODEM_PD_BY_SW=y +CONFIG_SOC_CLK_APLL_SUPPORTED=y +CONFIG_SOC_CLK_RC_FAST_D256_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_CLK_SUPPORT_RC_FAST_D256=y +CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y +CONFIG_SOC_CLK_XTAL32K_SUPPORTED=y +CONFIG_SOC_CLK_LP_FAST_SUPPORT_XTAL_D4=y +CONFIG_SOC_SDMMC_USE_IOMUX=y +CONFIG_SOC_SDMMC_NUM_SLOTS=2 +CONFIG_SOC_WIFI_WAPI_SUPPORT=y +CONFIG_SOC_WIFI_CSI_SUPPORT=y +CONFIG_SOC_WIFI_MESH_SUPPORT=y +CONFIG_SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW=y +CONFIG_SOC_WIFI_NAN_SUPPORT=y +CONFIG_SOC_BLE_SUPPORTED=y +CONFIG_SOC_BLE_MESH_SUPPORTED=y +CONFIG_SOC_BT_CLASSIC_SUPPORTED=y +CONFIG_SOC_BLUFI_SUPPORTED=y +CONFIG_SOC_BT_H2C_ENC_KEY_CTRL_ENH_VSC_SUPPORTED=y +CONFIG_SOC_BLE_MULTI_CONN_OPTIMIZATION=y +CONFIG_SOC_ULP_HAS_ADC=y +CONFIG_SOC_PHY_COMBO_MODULE=y +CONFIG_SOC_EMAC_RMII_CLK_OUT_INTERNAL_LOOPBACK=y +CONFIG_IDF_CMAKE=y +CONFIG_IDF_TOOLCHAIN="gcc" +CONFIG_IDF_TOOLCHAIN_GCC=y +CONFIG_IDF_TARGET_ARCH_XTENSA=y +CONFIG_IDF_TARGET_ARCH="xtensa" +CONFIG_IDF_TARGET="esp32" +CONFIG_IDF_INIT_VERSION="5.5.1" +CONFIG_IDF_TARGET_ESP32=y +CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 + +# +# Build type +# +CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y +# CONFIG_APP_BUILD_TYPE_RAM is not set +CONFIG_APP_BUILD_GENERATE_BINARIES=y +CONFIG_APP_BUILD_BOOTLOADER=y +CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y +# CONFIG_APP_REPRODUCIBLE_BUILD is not set +# CONFIG_APP_NO_BLOBS is not set +# CONFIG_APP_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set +# end of Build type + +# +# Bootloader config +# + +# +# Bootloader manager +# +CONFIG_BOOTLOADER_COMPILE_TIME_DATE=y +CONFIG_BOOTLOADER_PROJECT_VER=1 +# end of Bootloader manager + +# +# Application Rollback +# +# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set +# end of Application Rollback + +# +# Recovery Bootloader and Rollback +# +# end of Recovery Bootloader and Rollback + +CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000 +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set + +# +# Log +# +CONFIG_BOOTLOADER_LOG_VERSION_1=y +CONFIG_BOOTLOADER_LOG_VERSION=1 +# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set +CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y +# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set +CONFIG_BOOTLOADER_LOG_LEVEL=3 + +# +# Format +# +# CONFIG_BOOTLOADER_LOG_COLORS is not set +CONFIG_BOOTLOADER_LOG_TIMESTAMP_SOURCE_CPU_TICKS=y +# end of Format + +# +# Settings +# +CONFIG_BOOTLOADER_LOG_MODE_TEXT_EN=y +CONFIG_BOOTLOADER_LOG_MODE_TEXT=y +# end of Settings +# end of Log + +# +# Serial Flash Configurations +# +# CONFIG_BOOTLOADER_FLASH_DC_AWARE is not set +CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y +# end of Serial Flash Configurations + +# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +# CONFIG_BOOTLOADER_FACTORY_RESET is not set +# CONFIG_BOOTLOADER_APP_TEST is not set +CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y +CONFIG_BOOTLOADER_WDT_ENABLE=y +# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 +# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set +CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 +# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set +# end of Bootloader config + +# +# Security features +# +CONFIG_SECURE_BOOT_V1_SUPPORTED=y +# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set +# CONFIG_SECURE_BOOT is not set +# CONFIG_SECURE_FLASH_ENC_ENABLED is not set +# end of Security features + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y +# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set +# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set +# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set +CONFIG_APP_RETRIEVE_LEN_ELF_SHA=9 +# end of Application manager + +CONFIG_ESP_ROM_HAS_CRC_LE=y +CONFIG_ESP_ROM_HAS_CRC_BE=y +CONFIG_ESP_ROM_HAS_MZ_CRC32=y +CONFIG_ESP_ROM_HAS_JPEG_DECODE=y +CONFIG_ESP_ROM_HAS_UART_BUF_SWITCH=y +CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y +CONFIG_ESP_ROM_HAS_NEWLIB=y +CONFIG_ESP_ROM_HAS_NEWLIB_NANO_FORMAT=y +CONFIG_ESP_ROM_HAS_NEWLIB_32BIT_TIME=y +CONFIG_ESP_ROM_HAS_SW_FLOAT=y +CONFIG_ESP_ROM_USB_OTG_NUM=-1 +CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=-1 +CONFIG_ESP_ROM_SUPPORT_DEEP_SLEEP_WAKEUP_STUB=y +CONFIG_ESP_ROM_HAS_OUTPUT_PUTC_FUNC=y + +# +# Serial flasher config +# +# CONFIG_ESPTOOLPY_NO_STUB is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set +CONFIG_ESPTOOLPY_FLASHMODE_DIO=y +# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set +CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y +CONFIG_ESPTOOLPY_FLASHMODE="dio" +# CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +# CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +# CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set +CONFIG_ESPTOOLPY_BEFORE_RESET=y +# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +# CONFIG_ESPTOOLPY_AFTER_NORESET is not set +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 +# end of Serial flasher config + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set +# CONFIG_PARTITION_TABLE_TWO_OTA is not set +# CONFIG_PARTITION_TABLE_TWO_OTA_LARGE is not set +# CONFIG_PARTITION_TABLE_CUSTOM is not set +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y +# end of Partition Table + +# +# Example Configuration +# +CONFIG_ENV_GPIO_RANGE_MIN=0 +CONFIG_ENV_GPIO_RANGE_MAX=39 +CONFIG_ENV_GPIO_IN_RANGE_MAX=39 +CONFIG_ENV_GPIO_OUT_RANGE_MAX=33 +CONFIG_I2C_MASTER_SCL=22 +CONFIG_I2C_MASTER_SDA=21 +CONFIG_I2C_MASTER_FREQUENCY=100000 +CONFIG_MQTT_BROKER_URI="mqtt://192.168.178.200:1883" +CONFIG_MQTT_TOPIC="esp32/imu" +CONFIG_WIFI_AP_MODE=y +CONFIG_WIFI_AP_SSID="ESP32_IMU_AP" +CONFIG_WIFI_AP_PASSWORD="esp32imuap" +# end of Example Configuration + +# +# Compiler options +# +CONFIG_COMPILER_OPTIMIZATION_DEBUG=y +# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set +# CONFIG_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_COMPILER_OPTIMIZATION_NONE is not set +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set +CONFIG_COMPILER_ASSERT_NDEBUG_EVALUATE=y +CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y +CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set +CONFIG_COMPILER_HIDE_PATHS_MACROS=y +# CONFIG_COMPILER_CXX_EXCEPTIONS is not set +# CONFIG_COMPILER_CXX_RTTI is not set +CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y +# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set +# CONFIG_COMPILER_NO_MERGE_CONSTANTS is not set +# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set +CONFIG_COMPILER_DISABLE_DEFAULT_ERRORS=y +# CONFIG_COMPILER_DISABLE_GCC12_WARNINGS is not set +# CONFIG_COMPILER_DISABLE_GCC13_WARNINGS is not set +# CONFIG_COMPILER_DISABLE_GCC14_WARNINGS is not set +# CONFIG_COMPILER_DUMP_RTL_FILES is not set +CONFIG_COMPILER_RT_LIB_GCCLIB=y +CONFIG_COMPILER_RT_LIB_NAME="gcc" +CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING=y +# CONFIG_COMPILER_ORPHAN_SECTIONS_PLACE is not set +# CONFIG_COMPILER_STATIC_ANALYZER is not set +# end of Compiler options + +# +# Component config +# + +# +# Application Level Tracing +# +# CONFIG_APPTRACE_DEST_JTAG is not set +CONFIG_APPTRACE_DEST_NONE=y +# CONFIG_APPTRACE_DEST_UART1 is not set +# CONFIG_APPTRACE_DEST_UART2 is not set +CONFIG_APPTRACE_DEST_UART_NONE=y +CONFIG_APPTRACE_UART_TASK_PRIO=1 +CONFIG_APPTRACE_LOCK_ENABLE=y +# end of Application Level Tracing + +# +# Bluetooth +# +# CONFIG_BT_ENABLED is not set + +# +# Common Options +# +# CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED is not set +# CONFIG_BT_BLE_LOG_UHCI_OUT_ENABLED is not set +# end of Common Options +# end of Bluetooth + +# +# Console Library +# +# CONFIG_CONSOLE_SORTED_HELP is not set +# end of Console Library + +# +# Driver Configurations +# + +# +# Legacy TWAI Driver Configurations +# +# CONFIG_TWAI_SKIP_LEGACY_CONFLICT_CHECK is not set +CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC=y +CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST=y +CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID=y +CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT=y +CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y +# end of Legacy TWAI Driver Configurations + +# +# Legacy ADC Driver Configuration +# +CONFIG_ADC_DISABLE_DAC=y +# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_ADC_SKIP_LEGACY_CONFLICT_CHECK is not set + +# +# Legacy ADC Calibration Configuration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y +# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy ADC Calibration Configuration +# end of Legacy ADC Driver Configuration + +# +# Legacy DAC Driver Configurations +# +# CONFIG_DAC_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_DAC_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy DAC Driver Configurations + +# +# Legacy MCPWM Driver Configurations +# +# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_MCPWM_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy MCPWM Driver Configurations + +# +# Legacy Timer Group Driver Configurations +# +# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_GPTIMER_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy Timer Group Driver Configurations + +# +# Legacy RMT Driver Configurations +# +# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_RMT_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy RMT Driver Configurations + +# +# Legacy I2S Driver Configurations +# +# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_I2S_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy I2S Driver Configurations + +# +# Legacy I2C Driver Configurations +# +# CONFIG_I2C_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy I2C Driver Configurations + +# +# Legacy PCNT Driver Configurations +# +# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_PCNT_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy PCNT Driver Configurations + +# +# Legacy SDM Driver Configurations +# +# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_SDM_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy SDM Driver Configurations + +# +# Legacy Touch Sensor Driver Configurations +# +# CONFIG_TOUCH_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_TOUCH_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy Touch Sensor Driver Configurations +# end of Driver Configurations + +# +# eFuse Bit Manager +# +# CONFIG_EFUSE_CUSTOM_TABLE is not set +# CONFIG_EFUSE_VIRTUAL is not set +# CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE is not set +CONFIG_EFUSE_CODE_SCHEME_COMPAT_3_4=y +# CONFIG_EFUSE_CODE_SCHEME_COMPAT_REPEAT is not set +CONFIG_EFUSE_MAX_BLK_LEN=192 +# end of eFuse Bit Manager + +# +# ESP-TLS +# +CONFIG_ESP_TLS_USING_MBEDTLS=y +# CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set +# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set +# CONFIG_ESP_TLS_SERVER_SESSION_TICKETS is not set +# CONFIG_ESP_TLS_SERVER_CERT_SELECT_HOOK is not set +# CONFIG_ESP_TLS_SERVER_MIN_AUTH_MODE_OPTIONAL is not set +# CONFIG_ESP_TLS_PSK_VERIFICATION is not set +# CONFIG_ESP_TLS_INSECURE is not set +CONFIG_ESP_TLS_DYN_BUF_STRATEGY_SUPPORTED=y +# end of ESP-TLS + +# +# ADC and ADC Calibration +# +# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set + +# +# ADC Calibration Configurations +# +CONFIG_ADC_CALI_EFUSE_TP_ENABLE=y +CONFIG_ADC_CALI_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CALI_LUT_ENABLE=y +# end of ADC Calibration Configurations + +CONFIG_ADC_DISABLE_DAC_OUTPUT=y +# CONFIG_ADC_ENABLE_DEBUG_LOG is not set +# end of ADC and ADC Calibration + +# +# Wireless Coexistence +# +CONFIG_ESP_COEX_ENABLED=y +# CONFIG_ESP_COEX_GPIO_DEBUG is not set +# end of Wireless Coexistence + +# +# Common ESP-related +# +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y +# end of Common ESP-related + +# +# ESP-Driver:DAC Configurations +# +# CONFIG_DAC_CTRL_FUNC_IN_IRAM is not set +# CONFIG_DAC_ISR_IRAM_SAFE is not set +# CONFIG_DAC_ENABLE_DEBUG_LOG is not set +CONFIG_DAC_DMA_AUTO_16BIT_ALIGN=y +# end of ESP-Driver:DAC Configurations + +# +# ESP-Driver:GPIO Configurations +# +# CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set +# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set +# end of ESP-Driver:GPIO Configurations + +# +# ESP-Driver:GPTimer Configurations +# +CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y +# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GPTIMER_ISR_CACHE_SAFE is not set +CONFIG_GPTIMER_OBJ_CACHE_SAFE=y +# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:GPTimer Configurations + +# +# ESP-Driver:I2C Configurations +# +# CONFIG_I2C_ISR_IRAM_SAFE is not set +# CONFIG_I2C_ENABLE_DEBUG_LOG is not set +# CONFIG_I2C_ENABLE_SLAVE_DRIVER_VERSION_2 is not set +CONFIG_I2C_MASTER_ISR_HANDLER_IN_IRAM=y +# end of ESP-Driver:I2C Configurations + +# +# ESP-Driver:I2S Configurations +# +# CONFIG_I2S_ISR_IRAM_SAFE is not set +# CONFIG_I2S_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:I2S Configurations + +# +# ESP-Driver:LEDC Configurations +# +# CONFIG_LEDC_CTRL_FUNC_IN_IRAM is not set +# end of ESP-Driver:LEDC Configurations + +# +# ESP-Driver:MCPWM Configurations +# +CONFIG_MCPWM_ISR_HANDLER_IN_IRAM=y +# CONFIG_MCPWM_ISR_CACHE_SAFE is not set +# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set +CONFIG_MCPWM_OBJ_CACHE_SAFE=y +# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:MCPWM Configurations + +# +# ESP-Driver:PCNT Configurations +# +# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_PCNT_ISR_IRAM_SAFE is not set +# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:PCNT Configurations + +# +# ESP-Driver:RMT Configurations +# +CONFIG_RMT_ENCODER_FUNC_IN_IRAM=y +CONFIG_RMT_TX_ISR_HANDLER_IN_IRAM=y +CONFIG_RMT_RX_ISR_HANDLER_IN_IRAM=y +# CONFIG_RMT_RECV_FUNC_IN_IRAM is not set +# CONFIG_RMT_TX_ISR_CACHE_SAFE is not set +# CONFIG_RMT_RX_ISR_CACHE_SAFE is not set +CONFIG_RMT_OBJ_CACHE_SAFE=y +# CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# CONFIG_RMT_ISR_IRAM_SAFE is not set +# end of ESP-Driver:RMT Configurations + +# +# ESP-Driver:Sigma Delta Modulator Configurations +# +# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_SDM_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:Sigma Delta Modulator Configurations + +# +# ESP-Driver:SPI Configurations +# +# CONFIG_SPI_MASTER_IN_IRAM is not set +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +# CONFIG_SPI_SLAVE_IN_IRAM is not set +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y +# end of ESP-Driver:SPI Configurations + +# +# ESP-Driver:Touch Sensor Configurations +# +# CONFIG_TOUCH_CTRL_FUNC_IN_IRAM is not set +# CONFIG_TOUCH_ISR_IRAM_SAFE is not set +# CONFIG_TOUCH_ENABLE_DEBUG_LOG is not set +# CONFIG_TOUCH_SKIP_FSM_CHECK is not set +# end of ESP-Driver:Touch Sensor Configurations + +# +# ESP-Driver:TWAI Configurations +# +# CONFIG_TWAI_ISR_IN_IRAM is not set +# CONFIG_TWAI_ISR_CACHE_SAFE is not set +# CONFIG_TWAI_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:TWAI Configurations + +# +# ESP-Driver:UART Configurations +# +# CONFIG_UART_ISR_IN_IRAM is not set +# end of ESP-Driver:UART Configurations + +# +# ESP-Driver:UHCI Configurations +# +# CONFIG_UHCI_ISR_HANDLER_IN_IRAM is not set +# CONFIG_UHCI_ISR_CACHE_SAFE is not set +# CONFIG_UHCI_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:UHCI Configurations + +# +# Ethernet +# +CONFIG_ETH_ENABLED=y +CONFIG_ETH_USE_ESP32_EMAC=y +CONFIG_ETH_PHY_INTERFACE_RMII=y +CONFIG_ETH_RMII_CLK_INPUT=y +# CONFIG_ETH_RMII_CLK_OUTPUT is not set +CONFIG_ETH_RMII_CLK_IN_GPIO=0 +CONFIG_ETH_DMA_BUFFER_SIZE=512 +CONFIG_ETH_DMA_RX_BUFFER_NUM=10 +CONFIG_ETH_DMA_TX_BUFFER_NUM=10 +# CONFIG_ETH_IRAM_OPTIMIZATION is not set +CONFIG_ETH_USE_SPI_ETHERNET=y +# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set +# CONFIG_ETH_SPI_ETHERNET_W5500 is not set +# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set +# CONFIG_ETH_USE_OPENETH is not set +# CONFIG_ETH_TRANSMIT_MUTEX is not set +# end of Ethernet + +# +# Event Loop Library +# +# CONFIG_ESP_EVENT_LOOP_PROFILING is not set +CONFIG_ESP_EVENT_POST_FROM_ISR=y +CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y +# end of Event Loop Library + +# +# 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 + +# +# ESP HID +# +CONFIG_ESPHID_TASK_SIZE_BT=2048 +CONFIG_ESPHID_TASK_SIZE_BLE=4096 +# end of ESP HID + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y +# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_CUSTOM_TRANSPORT is not set +CONFIG_ESP_HTTP_CLIENT_EVENT_POST_TIMEOUT=2000 +# end of ESP HTTP client + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=1024 +CONFIG_HTTPD_MAX_URI_LEN=512 +CONFIG_HTTPD_ERR_RESP_NO_DELAY=y +CONFIG_HTTPD_PURGE_BUF_LEN=32 +# CONFIG_HTTPD_LOG_PURGE_DATA is not set +# CONFIG_HTTPD_WS_SUPPORT is not set +# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set +CONFIG_HTTPD_SERVER_EVENT_POST_TIMEOUT=2000 +# end of HTTP Server + +# +# ESP HTTPS OTA +# +# CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set +# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set +CONFIG_ESP_HTTPS_OTA_EVENT_POST_TIMEOUT=2000 +# end of ESP HTTPS OTA + +# +# ESP HTTPS server +# +# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set +CONFIG_ESP_HTTPS_SERVER_EVENT_POST_TIMEOUT=2000 +# CONFIG_ESP_HTTPS_SERVER_CERT_SELECT_HOOK is not set +# end of ESP HTTPS server + +# +# Hardware Settings +# + +# +# Chip revision +# +CONFIG_ESP32_REV_MIN_0=y +# CONFIG_ESP32_REV_MIN_1 is not set +# CONFIG_ESP32_REV_MIN_1_1 is not set +# CONFIG_ESP32_REV_MIN_2 is not set +# CONFIG_ESP32_REV_MIN_3 is not set +# CONFIG_ESP32_REV_MIN_3_1 is not set +CONFIG_ESP32_REV_MIN=0 +CONFIG_ESP32_REV_MIN_FULL=0 +CONFIG_ESP_REV_MIN_FULL=0 + +# +# Maximum Supported ESP32 Revision (Rev v3.99) +# +CONFIG_ESP32_REV_MAX_FULL=399 +CONFIG_ESP_REV_MAX_FULL=399 +CONFIG_ESP_EFUSE_BLOCK_REV_MIN_FULL=0 +CONFIG_ESP_EFUSE_BLOCK_REV_MAX_FULL=99 + +# +# Maximum Supported ESP32 eFuse Block Revision (eFuse Block Rev v0.99) +# +# end of Chip revision + +# +# MAC Config +# +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y +CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES=4 +# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 +# CONFIG_ESP_MAC_IGNORE_MAC_CRC_ERROR is not set +# CONFIG_ESP_MAC_USE_CUSTOM_MAC_AS_BASE_MAC is not set +# end of MAC Config + +# +# Sleep Config +# +# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set +CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y +# CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set +CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y +# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set +CONFIG_ESP_SLEEP_WAIT_FLASH_READY_EXTRA_DELAY=2000 +# CONFIG_ESP_SLEEP_CACHE_SAFE_ASSERTION is not set +# CONFIG_ESP_SLEEP_DEBUG is not set +CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y +# end of Sleep Config + +# +# RTC Clock Config +# +CONFIG_RTC_CLK_SRC_INT_RC=y +# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_RTC_CLK_SRC_INT_8MD256 is not set +CONFIG_RTC_CLK_CAL_CYCLES=1024 +# end of RTC Clock Config + +# +# Peripheral Control +# +CONFIG_ESP_PERIPH_CTRL_FUNC_IN_IRAM=y +CONFIG_ESP_REGI2C_CTRL_FUNC_IN_IRAM=y +# end of Peripheral Control + +# +# Main XTAL Config +# +# CONFIG_XTAL_FREQ_26 is not set +# CONFIG_XTAL_FREQ_32 is not set +CONFIG_XTAL_FREQ_40=y +# CONFIG_XTAL_FREQ_AUTO is not set +CONFIG_XTAL_FREQ=40 +# end of Main XTAL Config + +# +# Power Supplier +# + +# +# Brownout Detector +# +CONFIG_ESP_BROWNOUT_DET=y +CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_ESP_BROWNOUT_DET_LVL=0 +CONFIG_ESP_BROWNOUT_USE_INTR=y +# end of Brownout Detector +# end of Power Supplier + +CONFIG_ESP_SPI_BUS_LOCK_ISR_FUNCS_IN_IRAM=y +CONFIG_ESP_INTR_IN_IRAM=y +# end of Hardware Settings + +# +# ESP-Driver:LCD Controller Configurations +# +# CONFIG_LCD_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:LCD Controller Configurations + +# +# ESP-MM: Memory Management Configurations +# +# end of ESP-MM: Memory Management Configurations + +# +# ESP NETIF Adapter +# +CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 +# CONFIG_ESP_NETIF_PROVIDE_CUSTOM_IMPLEMENTATION is not set +CONFIG_ESP_NETIF_TCPIP_LWIP=y +# CONFIG_ESP_NETIF_LOOPBACK is not set +CONFIG_ESP_NETIF_USES_TCPIP_WITH_BSD_API=y +CONFIG_ESP_NETIF_REPORT_DATA_TRAFFIC=y +# CONFIG_ESP_NETIF_RECEIVE_REPORT_ERRORS is not set +# CONFIG_ESP_NETIF_L2_TAP is not set +# CONFIG_ESP_NETIF_BRIDGE_EN is not set +# CONFIG_ESP_NETIF_SET_DNS_PER_DEFAULT_NETIF is not set +# end of ESP NETIF Adapter + +# +# Partition API Configuration +# +# end of Partition API Configuration + +# +# PHY +# +CONFIG_ESP_PHY_ENABLED=y +CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP_PHY_MAX_TX_POWER=20 +# CONFIG_ESP_PHY_REDUCE_TX_POWER is not set +# CONFIG_ESP_PHY_ENABLE_CERT_TEST is not set +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_PERIOD_MS=1000 +# CONFIG_ESP_PHY_PLL_TRACK_DEBUG is not set +# CONFIG_ESP_PHY_RECORD_USED_TIME is not set +CONFIG_ESP_PHY_IRAM_OPT=y +# CONFIG_ESP_PHY_DEBUG is not set +# end of PHY + +# +# Power Management +# +CONFIG_PM_SLEEP_FUNC_IN_IRAM=y +# CONFIG_PM_ENABLE is not set +CONFIG_PM_SLP_IRAM_OPT=y +# end of Power Management + +# +# ESP PSRAM +# +# CONFIG_SPIRAM is not set +# end of ESP PSRAM + +# +# ESP Ringbuf +# +# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set +# end of ESP Ringbuf + +# +# ESP-ROM +# +CONFIG_ESP_ROM_PRINT_IN_IRAM=y +# end of ESP-ROM + +# +# ESP Security Specific +# +# end of ESP Security Specific + +# +# ESP System Settings +# +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 + +# +# Memory +# +# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set + +# +# Non-backward compatible options +# +# CONFIG_ESP_SYSTEM_ESP32_SRAM1_REGION_AS_IRAM is not set +# end of Non-backward compatible options +# end of Memory + +# +# Trace memory +# +# CONFIG_ESP32_TRAX is not set +CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 +# end of Trace memory + +CONFIG_ESP_SYSTEM_IN_IRAM=y +# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set +CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y +# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set +CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0 + +# +# Memory protection +# +# end of Memory protection + +CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 +CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y +# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set +# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 +CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set +# CONFIG_ESP_CONSOLE_NONE is not set +CONFIG_ESP_CONSOLE_UART=y +CONFIG_ESP_CONSOLE_UART_NUM=0 +CONFIG_ESP_CONSOLE_ROM_SERIAL_PORT_NUM=0 +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ESP_INT_WDT=y +CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 +CONFIG_ESP_INT_WDT_CHECK_CPU1=y +CONFIG_ESP_TASK_WDT_EN=y +CONFIG_ESP_TASK_WDT_INIT=y +# CONFIG_ESP_TASK_WDT_PANIC is not set +CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP_PANIC_HANDLER_IRAM is not set +# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP_DEBUG_OCDAWARE=y +# CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5 is not set +CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y +# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set +# end of ESP System Settings + +# +# IPC (Inter-Processor Call) +# +CONFIG_ESP_IPC_ENABLE=y +CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 +CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y +CONFIG_ESP_IPC_ISR_ENABLE=y +# end of IPC (Inter-Processor Call) + +# +# ESP Timer (High Resolution Timer) +# +CONFIG_ESP_TIMER_IN_IRAM=y +# CONFIG_ESP_TIMER_PROFILING is not set +CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y +CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y +CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 +CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 +# CONFIG_ESP_TIMER_SHOW_EXPERIMENTAL is not set +CONFIG_ESP_TIMER_TASK_AFFINITY=0x0 +CONFIG_ESP_TIMER_TASK_AFFINITY_CPU0=y +CONFIG_ESP_TIMER_ISR_AFFINITY_CPU0=y +# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set +CONFIG_ESP_TIMER_IMPL_TG0_LAC=y +# end of ESP Timer (High Resolution Timer) + +# +# Wi-Fi +# +CONFIG_ESP_WIFI_ENABLED=y +CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +# CONFIG_ESP_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y +# CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set +CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0 +CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5 +# CONFIG_ESP_WIFI_CSI_ENABLED is not set +CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP_WIFI_TX_BA_WIN=6 +CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP_WIFI_RX_BA_WIN=6 +CONFIG_ESP_WIFI_NVS_ENABLED=y +CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_0=y +# CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_1 is not set +CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP_WIFI_IRAM_OPT=y +# CONFIG_ESP_WIFI_EXTRA_IRAM_OPT is not set +CONFIG_ESP_WIFI_RX_IRAM_OPT=y +CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP_WIFI_ENABLE_SAE_PK=y +CONFIG_ESP_WIFI_ENABLE_SAE_H2E=y +CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y +CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y +# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set +CONFIG_ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME=50 +# CONFIG_ESP_WIFI_BSS_MAX_IDLE_SUPPORT is not set +CONFIG_ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME=10 +CONFIG_ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15 +CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE=y +CONFIG_ESP_WIFI_GMAC_SUPPORT=y +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y +# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set +CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7 +# CONFIG_ESP_WIFI_NAN_ENABLE is not set +CONFIG_ESP_WIFI_MBEDTLS_CRYPTO=y +CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y +# CONFIG_ESP_WIFI_WAPI_PSK is not set +# CONFIG_ESP_WIFI_11KV_SUPPORT is not set +# CONFIG_ESP_WIFI_MBO_SUPPORT is not set +# CONFIG_ESP_WIFI_DPP_SUPPORT is not set +# CONFIG_ESP_WIFI_11R_SUPPORT is not set +# CONFIG_ESP_WIFI_WPS_SOFTAP_REGISTRAR is not set + +# +# WPS Configuration Options +# +# CONFIG_ESP_WIFI_WPS_STRICT is not set +# CONFIG_ESP_WIFI_WPS_PASSPHRASE is not set +# end of WPS Configuration Options + +# CONFIG_ESP_WIFI_DEBUG_PRINT is not set +# CONFIG_ESP_WIFI_TESTING_OPTIONS is not set +CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y +# CONFIG_ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER is not set +# end of Wi-Fi + +# +# Core dump +# +# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set +# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set +CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y +# end of Core dump + +# +# FAT Filesystem support +# +CONFIG_FATFS_VOLUME_COUNT=2 +CONFIG_FATFS_LFN_NONE=y +# CONFIG_FATFS_LFN_HEAP is not set +# CONFIG_FATFS_LFN_STACK is not set +# CONFIG_FATFS_SECTOR_512 is not set +CONFIG_FATFS_SECTOR_4096=y +# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set +CONFIG_FATFS_CODEPAGE_437=y +# CONFIG_FATFS_CODEPAGE_720 is not set +# CONFIG_FATFS_CODEPAGE_737 is not set +# CONFIG_FATFS_CODEPAGE_771 is not set +# CONFIG_FATFS_CODEPAGE_775 is not set +# CONFIG_FATFS_CODEPAGE_850 is not set +# CONFIG_FATFS_CODEPAGE_852 is not set +# CONFIG_FATFS_CODEPAGE_855 is not set +# CONFIG_FATFS_CODEPAGE_857 is not set +# CONFIG_FATFS_CODEPAGE_860 is not set +# CONFIG_FATFS_CODEPAGE_861 is not set +# CONFIG_FATFS_CODEPAGE_862 is not set +# CONFIG_FATFS_CODEPAGE_863 is not set +# CONFIG_FATFS_CODEPAGE_864 is not set +# CONFIG_FATFS_CODEPAGE_865 is not set +# CONFIG_FATFS_CODEPAGE_866 is not set +# CONFIG_FATFS_CODEPAGE_869 is not set +# CONFIG_FATFS_CODEPAGE_932 is not set +# CONFIG_FATFS_CODEPAGE_936 is not set +# CONFIG_FATFS_CODEPAGE_949 is not set +# CONFIG_FATFS_CODEPAGE_950 is not set +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y +# CONFIG_FATFS_USE_FASTSEEK is not set +CONFIG_FATFS_USE_STRFUNC_NONE=y +# CONFIG_FATFS_USE_STRFUNC_WITHOUT_CRLF_CONV is not set +# CONFIG_FATFS_USE_STRFUNC_WITH_CRLF_CONV is not set +CONFIG_FATFS_VFS_FSTAT_BLKSIZE=0 +# CONFIG_FATFS_IMMEDIATE_FSYNC is not set +# CONFIG_FATFS_USE_LABEL is not set +CONFIG_FATFS_LINK_LOCK=y +# CONFIG_FATFS_USE_DYN_BUFFERS is not set + +# +# File system free space calculation behavior +# +CONFIG_FATFS_DONT_TRUST_FREE_CLUSTER_CNT=0 +CONFIG_FATFS_DONT_TRUST_LAST_ALLOC=0 +# end of File system free space calculation behavior +# end of FAT Filesystem support + +# +# FreeRTOS +# + +# +# Kernel +# +# CONFIG_FREERTOS_SMP is not set +# CONFIG_FREERTOS_UNICORE is not set +CONFIG_FREERTOS_HZ=100 +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +# CONFIG_FREERTOS_USE_IDLE_HOOK is not set +# CONFIG_FREERTOS_USE_TICK_HOOK is not set +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +# CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY is not set +CONFIG_FREERTOS_USE_TIMERS=y +CONFIG_FREERTOS_TIMER_SERVICE_TASK_NAME="Tmr Svc" +# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU0 is not set +# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU1 is not set +CONFIG_FREERTOS_TIMER_TASK_NO_AFFINITY=y +CONFIG_FREERTOS_TIMER_SERVICE_TASK_CORE_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=1 +# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set +# CONFIG_FREERTOS_USE_LIST_DATA_INTEGRITY_CHECK_BYTES is not set +# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +# CONFIG_FREERTOS_USE_APPLICATION_TASK_TAG is not set +# end of Kernel + +# +# Port +# +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y +# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set +CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y +# CONFIG_FREERTOS_TASK_PRE_DELETION_HOOK is not set +# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set +CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +# CONFIG_FREERTOS_FPU_IN_ISR is not set +CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER=y +CONFIG_FREERTOS_CORETIMER_0=y +# CONFIG_FREERTOS_CORETIMER_1 is not set +CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y +# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +# end of Port + +# +# Extra +# +# end of Extra + +CONFIG_FREERTOS_PORT=y +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y +CONFIG_FREERTOS_DEBUG_OCDAWARE=y +CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y +CONFIG_FREERTOS_NUMBER_OF_CORES=2 +CONFIG_FREERTOS_IN_IRAM=y +# end of FreeRTOS + +# +# Hardware Abstraction Layer (HAL) and Low Level (LL) +# +CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y +# CONFIG_HAL_ASSERTION_DISABLE is not set +# CONFIG_HAL_ASSERTION_SILENT is not set +# CONFIG_HAL_ASSERTION_ENABLE is not set +CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 +# end of Hardware Abstraction Layer (HAL) and Low Level (LL) + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +# CONFIG_HEAP_POISONING_LIGHT is not set +# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set +CONFIG_HEAP_TRACING_OFF=y +# CONFIG_HEAP_TRACING_STANDALONE is not set +# CONFIG_HEAP_TRACING_TOHOST is not set +# CONFIG_HEAP_USE_HOOKS is not set +# CONFIG_HEAP_TASK_TRACKING is not set +# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set +# CONFIG_HEAP_PLACE_FUNCTION_INTO_FLASH is not set +# end of Heap memory debugging + +# +# Log +# +CONFIG_LOG_VERSION_1=y +# CONFIG_LOG_VERSION_2 is not set +CONFIG_LOG_VERSION=1 + +# +# Log Level +# +# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set +# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set +# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set +# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y +# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set +# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set +CONFIG_LOG_MAXIMUM_LEVEL=3 + +# +# Level Settings +# +# CONFIG_LOG_MASTER_LEVEL is not set +CONFIG_LOG_DYNAMIC_LEVEL_CONTROL=y +# CONFIG_LOG_TAG_LEVEL_IMPL_NONE is not set +# CONFIG_LOG_TAG_LEVEL_IMPL_LINKED_LIST is not set +CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_AND_LINKED_LIST=y +# CONFIG_LOG_TAG_LEVEL_CACHE_ARRAY is not set +CONFIG_LOG_TAG_LEVEL_CACHE_BINARY_MIN_HEAP=y +CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_SIZE=31 +# end of Level Settings +# end of Log Level + +# +# Format +# +# CONFIG_LOG_COLORS is not set +CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y +# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set +# end of Format + +# +# Settings +# +CONFIG_LOG_MODE_TEXT_EN=y +CONFIG_LOG_MODE_TEXT=y +# end of Settings + +CONFIG_LOG_IN_IRAM=y +# end of Log + +# +# LWIP +# +CONFIG_LWIP_ENABLE=y +CONFIG_LWIP_LOCAL_HOSTNAME="espressif" +CONFIG_LWIP_TCPIP_TASK_PRIO=18 +# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set +# CONFIG_LWIP_CHECK_THREAD_SAFETY is not set +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# CONFIG_LWIP_L2_TO_L3_COPY is not set +# CONFIG_LWIP_IRAM_OPTIMIZATION is not set +# CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION is not set +CONFIG_LWIP_TIMERS_ONDEMAND=y +CONFIG_LWIP_ND6=y +# CONFIG_LWIP_FORCE_ROUTER_FORWARDING is not set +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# CONFIG_LWIP_SO_RCVBUF is not set +# CONFIG_LWIP_NETBUF_RECVINFO is not set +CONFIG_LWIP_IP_DEFAULT_TTL=64 +CONFIG_LWIP_IP4_FRAG=y +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP4_REASSEMBLY is not set +# CONFIG_LWIP_IP6_REASSEMBLY is not set +CONFIG_LWIP_IP_REASS_MAX_PBUFS=10 +# CONFIG_LWIP_IP_FORWARD is not set +# CONFIG_LWIP_STATS is not set +CONFIG_LWIP_ESP_GRATUITOUS_ARP=y +CONFIG_LWIP_GARP_TMR_INTERVAL=60 +CONFIG_LWIP_ESP_MLDV6_REPORT=y +CONFIG_LWIP_MLDV6_TMR_INTERVAL=40 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +# CONFIG_LWIP_DHCP_DOES_ACD_CHECK is not set +# CONFIG_LWIP_DHCP_DOES_NOT_CHECK_OFFERED_IP is not set +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=69 +CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 +CONFIG_LWIP_DHCP_COARSE_TIMER_SECS=1 + +# +# DHCP server +# +CONFIG_LWIP_DHCPS=y +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_DHCPS_STATIC_ENTRIES=y +CONFIG_LWIP_DHCPS_ADD_DNS=y +# end of DHCP server + +# CONFIG_LWIP_AUTOIP is not set +CONFIG_LWIP_IPV4=y +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_MSS=1440 +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5760 +CONFIG_LWIP_TCP_WND_DEFAULT=5760 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +CONFIG_LWIP_TCP_ACCEPTMBOX_SIZE=6 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +CONFIG_LWIP_TCP_OOSEQ_TIMEOUT=6 +CONFIG_LWIP_TCP_OOSEQ_MAX_PBUFS=4 +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +# end of TCP + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# end of UDP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +CONFIG_LWIP_IPV6_ND6_NUM_PREFIXES=5 +CONFIG_LWIP_IPV6_ND6_NUM_ROUTERS=3 +CONFIG_LWIP_IPV6_ND6_NUM_DESTINATIONS=10 +# CONFIG_LWIP_PPP_SUPPORT is not set +# CONFIG_LWIP_SLIP_SUPPORT is not set + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +# CONFIG_LWIP_MULTICAST_PING is not set +# CONFIG_LWIP_BROADCAST_PING is not set +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 +# end of LWIP RAW API + +# +# SNTP +# +CONFIG_LWIP_SNTP_MAX_SERVERS=1 +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 +CONFIG_LWIP_SNTP_STARTUP_DELAY=y +CONFIG_LWIP_SNTP_MAXIMUM_STARTUP_DELAY=5000 +# end of SNTP + +# +# DNS +# +CONFIG_LWIP_DNS_MAX_HOST_IP=1 +CONFIG_LWIP_DNS_MAX_SERVERS=3 +# CONFIG_LWIP_FALLBACK_DNS_SERVER_SUPPORT is not set +# CONFIG_LWIP_DNS_SETSERVER_WITH_NETIF is not set +# CONFIG_LWIP_USE_ESP_GETADDRINFO is not set +# end of DNS + +CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 +CONFIG_LWIP_ESP_LWIP_ASSERT=y + +# +# Hooks +# +# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set +CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y +# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y +# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set +CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y +# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set +# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_NONE=y +# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_CUSTOM is not set +CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_NONE=y +# CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_DEFAULT is not set +# CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_CUSTOM is not set +CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set +CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_CUSTOM is not set +# CONFIG_LWIP_HOOK_IP6_INPUT_NONE is not set +CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT=y +# CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set +# end of Hooks + +# CONFIG_LWIP_DEBUG is not set +# end of LWIP + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set +# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y +CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 +CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 +# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set +# CONFIG_MBEDTLS_DEBUG is not set + +# +# mbedTLS v3.x related +# +# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set +# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set +# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set +# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set +CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y +# CONFIG_MBEDTLS_SSL_KEYING_MATERIAL_EXPORT is not set +CONFIG_MBEDTLS_PKCS7_C=y +# end of mbedTLS v3.x related + +# +# Certificate Bundle +# +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set +# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEPRECATED_LIST is not set +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 +# end of Certificate Bundle + +# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set +CONFIG_MBEDTLS_CMAC_C=y +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_GCM_SUPPORT_NON_AES_CIPHER=y +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 +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set +CONFIG_MBEDTLS_HAVE_TIME=y +# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set +# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set +CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y +CONFIG_MBEDTLS_SHA1_C=y +CONFIG_MBEDTLS_SHA512_C=y +# CONFIG_MBEDTLS_SHA3_C is not set +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set +# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set +# CONFIG_MBEDTLS_TLS_DISABLED is not set +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +# CONFIG_MBEDTLS_PSK_MODES is not set +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +# end of TLS Key Exchange Methods + +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set +# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y +CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +# CONFIG_MBEDTLS_CAMELLIA_C is not set +# CONFIG_MBEDTLS_DES_C is not set +# CONFIG_MBEDTLS_BLOWFISH_C is not set +# CONFIG_MBEDTLS_XTEA_C is not set +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +# CONFIG_MBEDTLS_NIST_KW_C is not set +# end of Symmetric Ciphers + +# CONFIG_MBEDTLS_RIPEMD160_C is not set + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +# end of Certificates + +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_PK_PARSE_EC_EXTENDED=y +CONFIG_MBEDTLS_PK_PARSE_EC_COMPRESSED=y +# CONFIG_MBEDTLS_DHM_C is not set +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +# CONFIG_MBEDTLS_ECJPAKE_C is not set +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y +# CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM is not set +# CONFIG_MBEDTLS_POLY1305_C is not set +# CONFIG_MBEDTLS_CHACHA20_C is not set +# CONFIG_MBEDTLS_HKDF_C is not set +# CONFIG_MBEDTLS_THREADING_C is not set +CONFIG_MBEDTLS_ERROR_STRINGS=y +CONFIG_MBEDTLS_FS_IO=y +# CONFIG_MBEDTLS_ALLOW_WEAK_CERTIFICATE_VERIFICATION is not set +# end of mbedTLS + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +# CONFIG_MQTT_PROTOCOL_5 is not set +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set +# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set +# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set +# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set +# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set +# CONFIG_MQTT_CUSTOM_OUTBOX is not set +# end of ESP-MQTT Configurations + +# +# LibC +# +CONFIG_LIBC_NEWLIB=y +CONFIG_LIBC_MISC_IN_IRAM=y +CONFIG_LIBC_LOCKS_PLACE_IN_IRAM=y +CONFIG_LIBC_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_LIBC_STDOUT_LINE_ENDING_LF is not set +# CONFIG_LIBC_STDOUT_LINE_ENDING_CR is not set +# CONFIG_LIBC_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_LIBC_STDIN_LINE_ENDING_LF is not set +CONFIG_LIBC_STDIN_LINE_ENDING_CR=y +# CONFIG_LIBC_NEWLIB_NANO_FORMAT is not set +CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT=y +# CONFIG_LIBC_TIME_SYSCALL_USE_RTC is not set +# CONFIG_LIBC_TIME_SYSCALL_USE_HRT is not set +# CONFIG_LIBC_TIME_SYSCALL_USE_NONE is not set +# end of LibC + +# +# NVS +# +# CONFIG_NVS_ASSERT_ERROR_CHECK is not set +# CONFIG_NVS_LEGACY_DUP_KEYS_COMPATIBILITY is not set +# end of NVS + +# +# OpenThread +# +# CONFIG_OPENTHREAD_ENABLED is not set + +# +# OpenThread Spinel +# +# CONFIG_OPENTHREAD_SPINEL_ONLY is not set +# end of OpenThread Spinel +# end of OpenThread + +# +# Protocomm +# +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_PATCH_VERSION=y +# end of Protocomm + +# +# PThreads +# +CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y +# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set +# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set +CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" +# end of PThreads + +# +# MMU Config +# +CONFIG_MMU_PAGE_SIZE_64KB=y +CONFIG_MMU_PAGE_MODE="64KB" +CONFIG_MMU_PAGE_SIZE=0x10000 +# end of MMU Config + +# +# Main Flash configuration +# + +# +# SPI Flash behavior when brownout +# +CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y +CONFIG_SPI_FLASH_BROWNOUT_RESET=y +# end of SPI Flash behavior when brownout + +# +# Optional and Experimental Features (READ DOCS FIRST) +# + +# +# Features here require specific hardware (READ DOCS FIRST!) +# +CONFIG_SPI_FLASH_SUSPEND_TSUS_VAL_US=50 +# CONFIG_SPI_FLASH_FORCE_ENABLE_XMC_C_SUSPEND is not set +# CONFIG_SPI_FLASH_FORCE_ENABLE_C6_H2_SUSPEND is not set +CONFIG_SPI_FLASH_PLACE_FUNCTIONS_IN_IRAM=y +# end of Optional and Experimental Features (READ DOCS FIRST) +# end of Main Flash configuration + +# +# SPI Flash driver +# +# CONFIG_SPI_FLASH_VERIFY_WRITE is not set +# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set +# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set +# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set +CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y +CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 +CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 +CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 +# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set +# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set +# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set + +# +# Auto-detect flash chips +# +CONFIG_SPI_FLASH_VENDOR_XMC_SUPPORT_ENABLED=y +CONFIG_SPI_FLASH_VENDOR_GD_SUPPORT_ENABLED=y +CONFIG_SPI_FLASH_VENDOR_ISSI_SUPPORT_ENABLED=y +CONFIG_SPI_FLASH_VENDOR_MXIC_SUPPORT_ENABLED=y +CONFIG_SPI_FLASH_VENDOR_WINBOND_SUPPORT_ENABLED=y +CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y +# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set +# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set +# end of Auto-detect flash chips + +CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y +# end of SPI Flash driver + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +# CONFIG_SPIFFS_CACHE_STATS is not set +# end of SPIFFS Cache Configuration + +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +# CONFIG_SPIFFS_GC_STATS is not set +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +# CONFIG_SPIFFS_DBG is not set +# CONFIG_SPIFFS_API_DBG is not set +# CONFIG_SPIFFS_GC_DBG is not set +# CONFIG_SPIFFS_CACHE_DBG is not set +# CONFIG_SPIFFS_CHECK_DBG is not set +# CONFIG_SPIFFS_TEST_VISUALISATION is not set +# end of Debug Configuration +# end of SPIFFS Configuration + +# +# TCP Transport +# + +# +# Websocket +# +CONFIG_WS_TRANSPORT=y +CONFIG_WS_BUFFER_SIZE=1024 +# CONFIG_WS_DYNAMIC_BUFFER is not set +# end of Websocket +# end of TCP Transport + +# +# Ultra Low Power (ULP) Co-processor +# +# CONFIG_ULP_COPROC_ENABLED is not set + +# +# ULP Debugging Options +# +# end of ULP Debugging Options +# end of Ultra Low Power (ULP) Co-processor + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +# CONFIG_UNITY_ENABLE_64BIT is not set +# CONFIG_UNITY_ENABLE_COLOR is not set +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +# CONFIG_UNITY_ENABLE_FIXTURE is not set +# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set +# CONFIG_UNITY_TEST_ORDER_BY_FILE_PATH_AND_LINE is not set +# end of Unity unit testing library + +# +# Virtual file system +# +CONFIG_VFS_SUPPORT_IO=y +CONFIG_VFS_SUPPORT_DIR=y +CONFIG_VFS_SUPPORT_SELECT=y +CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y +# CONFIG_VFS_SELECT_IN_RAM is not set +CONFIG_VFS_SUPPORT_TERMIOS=y +CONFIG_VFS_MAX_COUNT=8 + +# +# Host File System I/O (Semihosting) +# +CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# end of Host File System I/O (Semihosting) + +CONFIG_VFS_INITIALIZE_DEV_NULL=y +# end of Virtual file system + +# +# Wear Levelling +# +# CONFIG_WL_SECTOR_SIZE_512 is not set +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 +# end of Wear Levelling + +# +# Wi-Fi Provisioning Manager +# +CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 +CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 +CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y +# CONFIG_WIFI_PROV_STA_FAST_SCAN is not set +# end of Wi-Fi Provisioning Manager +# end of Component config + +# CONFIG_IDF_EXPERIMENTAL_FEATURES is not set From 81991154227c1f42bc9fde14bed4ec9930377344 Mon Sep 17 00:00:00 2001 From: Vincent Winter Date: Wed, 29 Oct 2025 20:31:39 +0100 Subject: [PATCH 2/9] fix(clean): Remove unused function --- IMU/main/mpu6886.c | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/IMU/main/mpu6886.c b/IMU/main/mpu6886.c index d16bac3..9ead173 100644 --- a/IMU/main/mpu6886.c +++ b/IMU/main/mpu6886.c @@ -62,25 +62,6 @@ static int16_t bytes_to_int16(uint8_t high, uint8_t low) { return (int16_t)((high << 8) | low); } -// Event handler uses esp_event handler signature; it receives mqtt event via event_data -static void mqtt_event_handler_cb(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data) -{ - esp_mqtt_event_handle_t event = event_data; - switch (event->event_id) { - case MQTT_EVENT_CONNECTED: - ESP_LOGI("MQTT", "connected"); - break; - case MQTT_EVENT_DISCONNECTED: - ESP_LOGW("MQTT", "disconnected"); - break; - case MQTT_EVENT_ERROR: - ESP_LOGE("MQTT", "error"); - break; - default: - break; - } -} - static void mqtt_app_start(void) { esp_mqtt_client_config_t mqtt_cfg = { 0 }; From fe5e37c231f67cc75be11458a7a7ac712ae79ec1 Mon Sep 17 00:00:00 2001 From: Vincent Winter Date: Wed, 29 Oct 2025 20:32:28 +0100 Subject: [PATCH 3/9] fix(serial): Exchange ESP_LOGI for printf, up cycletime to 500ms --- IMU/main/mpu6886.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/IMU/main/mpu6886.c b/IMU/main/mpu6886.c index 9ead173..ab89bc7 100644 --- a/IMU/main/mpu6886.c +++ b/IMU/main/mpu6886.c @@ -276,14 +276,21 @@ void app_main(void) mpu6886_read_accel(&mpu, &accel); mpu6886_read_gyro(&mpu, &gyro); mpu6886_read_temp(&mpu, &temp); - ESP_LOGI("MPU6886", "Accel: X=%8.2f Y=%8.2f Z=%8.2f m/s² | Gyro: X=%8.2f Y=%8.2f Z=%8.2f rad/s | Temp: %8.2f °C", - accel.x, accel.y, accel.z, gyro.x, gyro.y, gyro.z, temp); + // ESP_LOGI("MPU6886", "Accel: X=%8.2f Y=%8.2f Z=%8.2f m/s² | Gyro: X=%8.2f Y=%8.2f Z=%8.2f rad/s | Temp: %8.2f °C", + // accel.x, accel.y, accel.z, gyro.x, gyro.y, gyro.z, temp); + // printf("aX=%8.2f aY=%8.2f aZ=%8.2f m/s² | gX=%8.2f gY=%8.2f gZ=%8.2f rad/s | Temp: %8.2f °C\n", + // accel.x, accel.y, accel.z, gyro.x, gyro.y, gyro.z, temp); + + printf("{\"accel\":{\"aX\":%8.3f,\"aY\":%8.3f,\"aZ\":%8.3f},\"gyro\":{\"gX\":%8.3f,\"gY\":%8.3f,\"gZ\":%8.3f},\"Temp\":%8.2f}", + accel.x, accel.y, accel.z, + gyro.x, gyro.y, gyro.z, + temp); // Publish readings as JSON over MQTT if client available if (s_mqtt_client != NULL) { char payload[256]; int n = snprintf(payload, sizeof(payload), - "{\"accel\":{\"x\":%.3f,\"y\":%.3f,\"z\":%.3f},\"gyro\":{\"x\":%.3f,\"y\":%.3f,\"z\":%.3f},\"temp\":%.2f}", + "{\"accel\":{\"aX\":%8.3f,\"aY\":%8.3f,\"aZ\":%8.3f},\"gyro\":{\"gX\":%8.3f,\"gY\":%8.3f,\"gZ\":%8.3f},\"Temp\":%8.2f}", accel.x, accel.y, accel.z, gyro.x, gyro.y, gyro.z, temp); @@ -294,6 +301,6 @@ void app_main(void) ESP_LOGW("MQTT", "payload truncated or encoding error"); } } - vTaskDelay(pdMS_TO_TICKS(100)); + vTaskDelay(pdMS_TO_TICKS(500)); } } From 57a1dc4b7f8780ae0090d2c6a96ab340b9c8d4a5 Mon Sep 17 00:00:00 2001 From: Vincent Winter Date: Fri, 31 Oct 2025 17:27:45 +0100 Subject: [PATCH 4/9] fix(message): Remove unecessary identifier --- IMU/main/mpu6886.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IMU/main/mpu6886.c b/IMU/main/mpu6886.c index ab89bc7..39db089 100644 --- a/IMU/main/mpu6886.c +++ b/IMU/main/mpu6886.c @@ -281,7 +281,7 @@ void app_main(void) // printf("aX=%8.2f aY=%8.2f aZ=%8.2f m/s² | gX=%8.2f gY=%8.2f gZ=%8.2f rad/s | Temp: %8.2f °C\n", // accel.x, accel.y, accel.z, gyro.x, gyro.y, gyro.z, temp); - printf("{\"accel\":{\"aX\":%8.3f,\"aY\":%8.3f,\"aZ\":%8.3f},\"gyro\":{\"gX\":%8.3f,\"gY\":%8.3f,\"gZ\":%8.3f},\"Temp\":%8.2f}", + printf("{\"accel\":{\"x\":%8.3f,\"y\":%8.3f,\"z\":%8.3f},\"gyro\":{\"x\":%8.3f,\"y\":%8.3f,\"z\":%8.3f},\"Temp\":%8.2f}\n", accel.x, accel.y, accel.z, gyro.x, gyro.y, gyro.z, temp); @@ -290,7 +290,7 @@ void app_main(void) if (s_mqtt_client != NULL) { char payload[256]; int n = snprintf(payload, sizeof(payload), - "{\"accel\":{\"aX\":%8.3f,\"aY\":%8.3f,\"aZ\":%8.3f},\"gyro\":{\"gX\":%8.3f,\"gY\":%8.3f,\"gZ\":%8.3f},\"Temp\":%8.2f}", + "{\"accel\":{\"x\":%8.3f,\"y\":%8.3f,\"z\":%8.3f},\"gyro\":{\"x\":%8.3f,\"y\":%8.3f,\"z\":%8.3f},\"Temp\":%8.2f}", accel.x, accel.y, accel.z, gyro.x, gyro.y, gyro.z, temp); From d26e428f995f0b4a64ad45af67a7ceb4a10f4c1d Mon Sep 17 00:00:00 2001 From: Vincent Winter Date: Fri, 31 Oct 2025 21:07:52 +0100 Subject: [PATCH 5/9] fix(esp32-IMU): Add MQTT/Serial toggle --- IMU/main/Kconfig.projbuild | 45 ++++++++---- IMU/main/mpu6886.c | 141 ++++++++++++++++++------------------- IMU/sdkconfig | 21 +++++- IMU/sdkconfig.old | 23 +++++- 4 files changed, 138 insertions(+), 92 deletions(-) diff --git a/IMU/main/Kconfig.projbuild b/IMU/main/Kconfig.projbuild index 49e9426..e7812d6 100755 --- a/IMU/main/Kconfig.projbuild +++ b/IMU/main/Kconfig.projbuild @@ -1,7 +1,8 @@ -menu "Example Configuration" +menu "ESP32 IMU Project Configuration" orsource "$IDF_PATH/examples/common_components/env_caps/$IDF_TARGET/Kconfig.env_caps" + menu "I2C Master Configuration" config I2C_MASTER_SCL int "SCL GPIO Num" range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX @@ -21,22 +22,20 @@ menu "Example Configuration" default 400000 help I2C Speed of Master device. + endmenu - config WIFI_SSID - string "WiFi SSID" - default "YourNetworkName" + config ENV_MQTT_ENABLED + bool "Enable MQTT Communication" + default y help - SSID of WiFi network to connect to. - - config WIFI_PASSWORD - string "WiFi Password" - default "YourPassword" - help - Password of WiFi network to connect to. + Enable this option to use MQTT for communication. + If disabled, communication will use usb uart connection. + menu "MQTT Configuration" + depends on ENV_MQTT_ENABLED config MQTT_BROKER_URI string "MQTT Broker URI" - default "mqtt://192.168.178.26:1883" + default "mqtt://192.168.4.2:1883" help URI of the MQTT broker to connect to. @@ -45,23 +44,43 @@ menu "Example Configuration" default "esp32/imu" help MQTT topic to publish IMU data to. + endmenu + menu "WiFi Access Point Configuration" + depends on ENV_MQTT_ENABLED config WIFI_AP_MODE bool "Enable WiFi AP Mode" - default n + default y help Enable this option to start the device in Access Point mode. If disabled, the device will start in Station mode. + config WIFI_SSID + string "WiFi SSID" + default "YourNetworkName" + depends on !WIFI_AP_MODE + help + SSID of WiFi network to connect to. + + config WIFI_PASSWORD + string "WiFi Password" + default "YourPassword" + depends on !WIFI_AP_MODE + help + Password of WiFi network to connect to. + config WIFI_AP_SSID string "WiFi AP SSID" default "ESP32_IMU_AP" + depends on WIFI_AP_MODE help SSID of the WiFi Access Point when in AP mode. config WIFI_AP_PASSWORD string "WiFi AP Password" default "esp32imuap" + depends on WIFI_AP_MODE help Password of the WiFi Access Point when in AP mode. + endmenu endmenu diff --git a/IMU/main/mpu6886.c b/IMU/main/mpu6886.c index 39db089..c9853b2 100644 --- a/IMU/main/mpu6886.c +++ b/IMU/main/mpu6886.c @@ -2,8 +2,8 @@ #include -// New: initialise WiFi in either STA or AP mode. Pass ap_mode=true to start an Access Point. -static void wifi_init(bool ap_mode) +#ifdef CONFIG_ENV_MQTT_ENABLED +static void wifi_init() { ESP_ERROR_CHECK(nvs_flash_init()); ESP_ERROR_CHECK(esp_netif_init()); @@ -12,54 +12,41 @@ static void wifi_init(bool ap_mode) wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK(esp_wifi_init(&cfg)); - if (ap_mode) { - esp_netif_create_default_wifi_ap(); +#ifdef CONFIG_WIFI_AP_MODE + esp_netif_create_default_wifi_ap(); - wifi_config_t wifi_config = { 0 }; - strncpy((char *)wifi_config.ap.ssid, CONFIG_WIFI_AP_SSID, sizeof(wifi_config.ap.ssid)); - wifi_config.ap.ssid_len = strlen(CONFIG_WIFI_AP_SSID); - strncpy((char *)wifi_config.ap.password, CONFIG_WIFI_AP_PASSWORD, sizeof(wifi_config.ap.password)); - wifi_config.ap.max_connection = 4; - if (strlen(CONFIG_WIFI_AP_PASSWORD) == 0) { - wifi_config.ap.authmode = WIFI_AUTH_OPEN; - } else { - wifi_config.ap.authmode = WIFI_AUTH_WPA_WPA2_PSK; - } - - ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP)); - ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &wifi_config)); - ESP_ERROR_CHECK(esp_wifi_start()); - ESP_LOGI("WIFI", "AP started SSID:%s", CONFIG_WIFI_AP_SSID); + wifi_config_t wifi_config = { 0 }; + strncpy((char*)wifi_config.ap.ssid, CONFIG_WIFI_AP_SSID, sizeof(wifi_config.ap.ssid)); + wifi_config.ap.ssid_len = strlen(CONFIG_WIFI_AP_SSID); + strncpy((char*)wifi_config.ap.password, CONFIG_WIFI_AP_PASSWORD, sizeof(wifi_config.ap.password)); + wifi_config.ap.max_connection = 4; + if (strlen(CONFIG_WIFI_AP_PASSWORD) == 0) { + wifi_config.ap.authmode = WIFI_AUTH_OPEN; } else { - esp_netif_create_default_wifi_sta(); - - wifi_config_t wifi_config = { - .sta = { - .ssid = CONFIG_WIFI_SSID, - .password = CONFIG_WIFI_PASSWORD, - }, - }; - - ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); - ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config)); - ESP_ERROR_CHECK(esp_wifi_start()); - ESP_ERROR_CHECK(esp_wifi_connect()); - ESP_LOGI("WIFI", "STA started, connecting to: %s", CONFIG_WIFI_SSID); + wifi_config.ap.authmode = WIFI_AUTH_WPA_WPA2_PSK; } -} + ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP)); + ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &wifi_config)); + ESP_ERROR_CHECK(esp_wifi_start()); + ESP_LOGI("WIFI", "AP started SSID:%s", CONFIG_WIFI_AP_SSID); +#else + esp_netif_create_default_wifi_sta(); -static esp_err_t mpu6886_write_byte(mpu6886_t *dev, uint8_t reg, uint8_t data) { - uint8_t tx[2] = { reg, data }; - return i2c_master_write_to_device(dev->i2c_port, dev->address, tx, sizeof(tx), pdMS_TO_TICKS(100)); -} + wifi_config_t wifi_config = { + .sta = { + .ssid = CONFIG_WIFI_SSID, + .password = CONFIG_WIFI_PASSWORD, + }, + }; -static esp_err_t mpu6886_read_bytes(mpu6886_t *dev, uint8_t reg, uint8_t *data, size_t len) { - return i2c_master_write_read_device(dev->i2c_port, dev->address, ®, 1, data, len, pdMS_TO_TICKS(100)); -} + ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); + ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config)); + ESP_ERROR_CHECK(esp_wifi_start()); + ESP_ERROR_CHECK(esp_wifi_connect()); + ESP_LOGI("WIFI", "STA started, connecting to: %s", CONFIG_WIFI_SSID); -static int16_t bytes_to_int16(uint8_t high, uint8_t low) { - return (int16_t)((high << 8) | low); +#endif } static void mqtt_app_start(void) @@ -75,9 +62,22 @@ static void mqtt_app_start(void) } esp_mqtt_client_start(s_mqtt_client); } +#endif // CONFIG_ENV_MQTT_ENABLED -// new: detect accel/gyro full-scale selections and set divisors accordingly -static esp_err_t mpu6886_update_sensitivity(mpu6886_t *dev) +static esp_err_t mpu6886_write_byte(mpu6886_t* dev, uint8_t reg, uint8_t data) { + uint8_t tx[2] = { reg, data }; + return i2c_master_write_to_device(dev->i2c_port, dev->address, tx, sizeof(tx), pdMS_TO_TICKS(100)); +} + +static esp_err_t mpu6886_read_bytes(mpu6886_t* dev, uint8_t reg, uint8_t* data, size_t len) { + return i2c_master_write_read_device(dev->i2c_port, dev->address, ®, 1, data, len, pdMS_TO_TICKS(100)); +} + +static int16_t bytes_to_int16(uint8_t high, uint8_t low) { + return (int16_t)((high << 8) | low); +} + +static esp_err_t mpu6886_update_sensitivity(mpu6886_t* dev) { uint8_t aconf = 0, gconf = 0; esp_err_t err; @@ -123,7 +123,7 @@ static esp_err_t i2c_master_init(i2c_port_t i2c_num, gpio_num_t sda_io, gpio_num return i2c_driver_install(i2c_num, I2C_MODE_MASTER, 0, 0, 0); } -esp_err_t mpu6886_init(mpu6886_t *dev, i2c_port_t i2c_port) { +esp_err_t mpu6886_init(mpu6886_t* dev, i2c_port_t i2c_port) { dev->i2c_port = i2c_port; dev->address = MPU6886_ADDR; @@ -146,8 +146,8 @@ esp_err_t mpu6886_init(mpu6886_t *dev, i2c_port_t i2c_port) { mpu6886_write_byte(dev, MPU6886_ACCEL_CONFIG, 0x00); mpu6886_write_byte(dev, MPU6886_GYRO_CONFIG, 0x00); - dev->gyro_offset = (vec3_t){0, 0, 0}; - dev->accel_offset = (vec3_t){0, 0, 0}; + dev->gyro_offset = (vec3_t) { 0, 0, 0 }; + dev->accel_offset = (vec3_t) { 0, 0, 0 }; // detect actual sensitivities from device registers and set divisors if (mpu6886_update_sensitivity(dev) != ESP_OK) { @@ -159,7 +159,7 @@ esp_err_t mpu6886_init(mpu6886_t *dev, i2c_port_t i2c_port) { return ESP_OK; } -esp_err_t mpu6886_read_accel(mpu6886_t *dev, vec3_t *accel) { +esp_err_t mpu6886_read_accel(mpu6886_t* dev, vec3_t* accel) { uint8_t buf[6]; esp_err_t ret = mpu6886_read_bytes(dev, MPU6886_ACCEL_XOUT_H, buf, 6); if (ret != ESP_OK) return ret; @@ -171,7 +171,7 @@ esp_err_t mpu6886_read_accel(mpu6886_t *dev, vec3_t *accel) { return ESP_OK; } -esp_err_t mpu6886_read_gyro(mpu6886_t *dev, vec3_t *gyro) { +esp_err_t mpu6886_read_gyro(mpu6886_t* dev, vec3_t* gyro) { uint8_t buf[6]; esp_err_t ret = mpu6886_read_bytes(dev, MPU6886_GYRO_XOUT_H, buf, 6); if (ret != ESP_OK) return ret; @@ -182,7 +182,7 @@ esp_err_t mpu6886_read_gyro(mpu6886_t *dev, vec3_t *gyro) { return ESP_OK; } -esp_err_t mpu6886_read_temp(mpu6886_t *dev, float *temp) { +esp_err_t mpu6886_read_temp(mpu6886_t* dev, float* temp) { static uint8_t buf[2]; esp_err_t ret = mpu6886_read_bytes(dev, MPU6886_TEMP_OUT_H, buf, 2); if (ret != ESP_OK) return ret; @@ -192,8 +192,8 @@ esp_err_t mpu6886_read_temp(mpu6886_t *dev, float *temp) { return ESP_OK; } -esp_err_t mpu6886_calibrate_gyro(mpu6886_t *dev, int samples, int delay_ms) { - vec3_t sum = {0, 0, 0}, g; +esp_err_t mpu6886_calibrate_gyro(mpu6886_t* dev, int samples, int delay_ms) { + vec3_t sum = { 0, 0, 0 }, g; for (int i = 0; i < samples; i++) { if (mpu6886_read_gyro(dev, &g) != ESP_OK) return ESP_FAIL; sum.x += g.x; @@ -207,11 +207,11 @@ esp_err_t mpu6886_calibrate_gyro(mpu6886_t *dev, int samples, int delay_ms) { return ESP_OK; } -esp_err_t mpu6886_calibrate_accel(mpu6886_t *dev, int samples, int delay_ms) +esp_err_t mpu6886_calibrate_accel(mpu6886_t* dev, int samples, int delay_ms) { // Calibrate accelerometer offsets while the device is stationary. // The function will detect the device full-scale and compute offsets in m/s^2. - vec3_t sum = {0, 0, 0}, a; + vec3_t sum = { 0, 0, 0 }, a; for (int i = 0; i < samples; i++) { if (mpu6886_read_accel(dev, &a) != ESP_OK) { return ESP_FAIL; @@ -244,28 +244,24 @@ void app_main(void) } - // Start WiFi: set CONFIG_WIFI_AP_MODE in sdkconfig to build in AP mode, - // otherwise the default is STA mode. You can also call wifi_init(true) - // or wifi_init(false) directly to toggle at runtime. -#ifdef CONFIG_WIFI_AP_MODE - wifi_init(true); -#else - wifi_init(false); +#ifdef CONFIG_ENV_MQTT_ENABLED + wifi_init(); + // Start MQTT client (will retry until network is available) + mqtt_app_start(); #endif + mpu6886_t mpu; mpu.i2c_port = I2C_NUM_0; mpu.address = MPU6886_ADDR; esp_err_t ret = mpu6886_init(&mpu, I2C_NUM_0); if (ret != ESP_OK) { - // Handle initialization error ESP_LOGE("MPU6886", "init failed"); return; } - // Start MQTT client (will retry until network is available) - mqtt_app_start(); + mpu6886_calibrate_gyro(&mpu, 100, 10); mpu6886_calibrate_accel(&mpu, 100, 10); @@ -276,17 +272,13 @@ void app_main(void) mpu6886_read_accel(&mpu, &accel); mpu6886_read_gyro(&mpu, &gyro); mpu6886_read_temp(&mpu, &temp); - // ESP_LOGI("MPU6886", "Accel: X=%8.2f Y=%8.2f Z=%8.2f m/s² | Gyro: X=%8.2f Y=%8.2f Z=%8.2f rad/s | Temp: %8.2f °C", - // accel.x, accel.y, accel.z, gyro.x, gyro.y, gyro.z, temp); - // printf("aX=%8.2f aY=%8.2f aZ=%8.2f m/s² | gX=%8.2f gY=%8.2f gZ=%8.2f rad/s | Temp: %8.2f °C\n", - // accel.x, accel.y, accel.z, gyro.x, gyro.y, gyro.z, temp); +#ifndef CONFIG_ENV_MQTT_ENABLED printf("{\"accel\":{\"x\":%8.3f,\"y\":%8.3f,\"z\":%8.3f},\"gyro\":{\"x\":%8.3f,\"y\":%8.3f,\"z\":%8.3f},\"Temp\":%8.2f}\n", - accel.x, accel.y, accel.z, - gyro.x, gyro.y, gyro.z, - temp); - - // Publish readings as JSON over MQTT if client available + accel.x, accel.y, accel.z, + gyro.x, gyro.y, gyro.z, + temp); +#else if (s_mqtt_client != NULL) { char payload[256]; int n = snprintf(payload, sizeof(payload), @@ -301,6 +293,7 @@ void app_main(void) ESP_LOGW("MQTT", "payload truncated or encoding error"); } } +#endif vTaskDelay(pdMS_TO_TICKS(500)); } } diff --git a/IMU/sdkconfig b/IMU/sdkconfig index ba2dde6..129d42a 100644 --- a/IMU/sdkconfig +++ b/IMU/sdkconfig @@ -433,21 +433,38 @@ CONFIG_PARTITION_TABLE_MD5=y # end of Partition Table # -# Example Configuration +# ESP32 IMU Project Configuration # CONFIG_ENV_GPIO_RANGE_MIN=0 CONFIG_ENV_GPIO_RANGE_MAX=39 CONFIG_ENV_GPIO_IN_RANGE_MAX=39 CONFIG_ENV_GPIO_OUT_RANGE_MAX=33 + +# +# I2C Master Configuration +# CONFIG_I2C_MASTER_SCL=22 CONFIG_I2C_MASTER_SDA=21 CONFIG_I2C_MASTER_FREQUENCY=100000 +# end of I2C Master Configuration + +CONFIG_ENV_MQTT_ENABLED=y + +# +# MQTT Configuration +# CONFIG_MQTT_BROKER_URI="mqtt://192.168.4.2:1883" CONFIG_MQTT_TOPIC="esp32/imu" +# end of MQTT Configuration + +# +# WiFi Access Point Configuration +# CONFIG_WIFI_AP_MODE=y CONFIG_WIFI_AP_SSID="ESP32_IMU_AP" CONFIG_WIFI_AP_PASSWORD="esp32imuap" -# end of Example Configuration +# end of WiFi Access Point Configuration +# end of ESP32 IMU Project Configuration # # Compiler options diff --git a/IMU/sdkconfig.old b/IMU/sdkconfig.old index ae4b2c3..7c78ed8 100644 --- a/IMU/sdkconfig.old +++ b/IMU/sdkconfig.old @@ -433,21 +433,38 @@ CONFIG_PARTITION_TABLE_MD5=y # end of Partition Table # -# Example Configuration +# ESP32 IMU Project Configuration # CONFIG_ENV_GPIO_RANGE_MIN=0 CONFIG_ENV_GPIO_RANGE_MAX=39 CONFIG_ENV_GPIO_IN_RANGE_MAX=39 CONFIG_ENV_GPIO_OUT_RANGE_MAX=33 + +# +# I2C Master Configuration +# CONFIG_I2C_MASTER_SCL=22 CONFIG_I2C_MASTER_SDA=21 CONFIG_I2C_MASTER_FREQUENCY=100000 -CONFIG_MQTT_BROKER_URI="mqtt://192.168.178.200:1883" +# end of I2C Master Configuration + +CONFIG_ENV_MQTT_ENABLED=y + +# +# MQTT Configuration +# +CONFIG_MQTT_BROKER_URI="mqtt://192.168.4.2:1883" CONFIG_MQTT_TOPIC="esp32/imu" +# end of MQTT Configuration + +# +# WiFi Access Point Configuration +# CONFIG_WIFI_AP_MODE=y CONFIG_WIFI_AP_SSID="ESP32_IMU_AP" CONFIG_WIFI_AP_PASSWORD="esp32imuap" -# end of Example Configuration +# end of WiFi Access Point Configuration +# end of ESP32 IMU Project Configuration # # Compiler options From 5c52b9487601febb6fadeaa4558800c1f1031038 Mon Sep 17 00:00:00 2001 From: Vincent Winter Date: Mon, 3 Nov 2025 12:50:06 +0100 Subject: [PATCH 6/9] fix(styling): Remove whitespace, unnecesary header and add comment --- IMU/main/mpu6886.c | 2 -- IMU/main/mpu6886.h | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/IMU/main/mpu6886.c b/IMU/main/mpu6886.c index c9853b2..7b052bb 100644 --- a/IMU/main/mpu6886.c +++ b/IMU/main/mpu6886.c @@ -1,6 +1,4 @@ #include "mpu6886.h" -#include - #ifdef CONFIG_ENV_MQTT_ENABLED static void wifi_init() diff --git a/IMU/main/mpu6886.h b/IMU/main/mpu6886.h index 74db6b5..c8d5963 100644 --- a/IMU/main/mpu6886.h +++ b/IMU/main/mpu6886.h @@ -14,7 +14,6 @@ #include #include - #define I2C_MASTER_SCL_IO CONFIG_I2C_MASTER_SCL /*!< GPIO number used for I2C master clock */ #define I2C_MASTER_SDA_IO CONFIG_I2C_MASTER_SDA /*!< GPIO number used for I2C master data */ #define I2C_MASTER_NUM I2C_NUM_0 /*!< I2C port number for master dev */ @@ -50,7 +49,7 @@ // Scale factors #define SF_M_S2 9.80665f -#define SF_RAD_S 0.017453292519943f +#define SF_RAD_S 0.017453292519943f // pi/180 typedef struct { float x; From 5c625e60abb9efab8ebf11ffaa32e638b5cdb1fd Mon Sep 17 00:00:00 2001 From: Vincent Winter Date: Mon, 3 Nov 2025 12:51:10 +0100 Subject: [PATCH 7/9] feat(clarity): Add wiring diagram --- IMU/img/wiringdiagram.png | Bin 0 -> 56084 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 IMU/img/wiringdiagram.png diff --git a/IMU/img/wiringdiagram.png b/IMU/img/wiringdiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..8d40876c3acc2a1a7d1374c5c7e8ac15f606b1f3 GIT binary patch literal 56084 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 literal 0 HcmV?d00001 From 6697bd21296ecefd39f9165a32424f670cc6c0b5 Mon Sep 17 00:00:00 2001 From: Vincent Winter Date: Mon, 3 Nov 2025 12:55:23 +0100 Subject: [PATCH 8/9] fix(formatting): Fixed formatting --- IMU/main/mpu6886.c | 103 +++++++++++++++++++++++---------------------- 1 file changed, 52 insertions(+), 51 deletions(-) diff --git a/IMU/main/mpu6886.c b/IMU/main/mpu6886.c index 7b052bb..93a8fa9 100644 --- a/IMU/main/mpu6886.c +++ b/IMU/main/mpu6886.c @@ -1,65 +1,66 @@ #include "mpu6886.h" #ifdef CONFIG_ENV_MQTT_ENABLED -static void wifi_init() -{ - ESP_ERROR_CHECK(nvs_flash_init()); - ESP_ERROR_CHECK(esp_netif_init()); - ESP_ERROR_CHECK(esp_event_loop_create_default()); - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); - ESP_ERROR_CHECK(esp_wifi_init(&cfg)); + static void wifi_init() + { + ESP_ERROR_CHECK(nvs_flash_init()); + ESP_ERROR_CHECK(esp_netif_init()); + ESP_ERROR_CHECK(esp_event_loop_create_default()); -#ifdef CONFIG_WIFI_AP_MODE - esp_netif_create_default_wifi_ap(); + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_wifi_init(&cfg)); - wifi_config_t wifi_config = { 0 }; - strncpy((char*)wifi_config.ap.ssid, CONFIG_WIFI_AP_SSID, sizeof(wifi_config.ap.ssid)); - wifi_config.ap.ssid_len = strlen(CONFIG_WIFI_AP_SSID); - strncpy((char*)wifi_config.ap.password, CONFIG_WIFI_AP_PASSWORD, sizeof(wifi_config.ap.password)); - wifi_config.ap.max_connection = 4; - if (strlen(CONFIG_WIFI_AP_PASSWORD) == 0) { - wifi_config.ap.authmode = WIFI_AUTH_OPEN; - } else { - wifi_config.ap.authmode = WIFI_AUTH_WPA_WPA2_PSK; + #ifdef CONFIG_WIFI_AP_MODE + esp_netif_create_default_wifi_ap(); + + wifi_config_t wifi_config = { 0 }; + strncpy((char*)wifi_config.ap.ssid, CONFIG_WIFI_AP_SSID, sizeof(wifi_config.ap.ssid)); + wifi_config.ap.ssid_len = strlen(CONFIG_WIFI_AP_SSID); + strncpy((char*)wifi_config.ap.password, CONFIG_WIFI_AP_PASSWORD, sizeof(wifi_config.ap.password)); + wifi_config.ap.max_connection = 4; + if (strlen(CONFIG_WIFI_AP_PASSWORD) == 0) { + wifi_config.ap.authmode = WIFI_AUTH_OPEN; + } else { + wifi_config.ap.authmode = WIFI_AUTH_WPA_WPA2_PSK; + } + + ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP)); + ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &wifi_config)); + ESP_ERROR_CHECK(esp_wifi_start()); + ESP_LOGI("WIFI", "AP started SSID:%s", CONFIG_WIFI_AP_SSID); + #else + esp_netif_create_default_wifi_sta(); + + wifi_config_t wifi_config = { + .sta = { + .ssid = CONFIG_WIFI_SSID, + .password = CONFIG_WIFI_PASSWORD, + }, + }; + + ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); + ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config)); + ESP_ERROR_CHECK(esp_wifi_start()); + ESP_ERROR_CHECK(esp_wifi_connect()); + ESP_LOGI("WIFI", "STA started, connecting to: %s", CONFIG_WIFI_SSID); + #endif } - ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP)); - ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &wifi_config)); - ESP_ERROR_CHECK(esp_wifi_start()); - ESP_LOGI("WIFI", "AP started SSID:%s", CONFIG_WIFI_AP_SSID); -#else - esp_netif_create_default_wifi_sta(); + static void mqtt_app_start(void) + { + esp_mqtt_client_config_t mqtt_cfg = { 0 }; - wifi_config_t wifi_config = { - .sta = { - .ssid = CONFIG_WIFI_SSID, - .password = CONFIG_WIFI_PASSWORD, - }, - }; + mqtt_cfg.broker.address.uri = CONFIG_MQTT_BROKER_URI; - ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); - ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config)); - ESP_ERROR_CHECK(esp_wifi_start()); - ESP_ERROR_CHECK(esp_wifi_connect()); - ESP_LOGI("WIFI", "STA started, connecting to: %s", CONFIG_WIFI_SSID); - -#endif -} - -static void mqtt_app_start(void) -{ - esp_mqtt_client_config_t mqtt_cfg = { 0 }; - - mqtt_cfg.broker.address.uri = CONFIG_MQTT_BROKER_URI; - - s_mqtt_client = esp_mqtt_client_init(&mqtt_cfg); - if (s_mqtt_client == NULL) { - ESP_LOGW("MQTT", "failed to init mqtt client"); - return; + s_mqtt_client = esp_mqtt_client_init(&mqtt_cfg); + if (s_mqtt_client == NULL) { + ESP_LOGW("MQTT", "failed to init mqtt client"); + return; + } + esp_mqtt_client_start(s_mqtt_client); } - esp_mqtt_client_start(s_mqtt_client); -} + #endif // CONFIG_ENV_MQTT_ENABLED static esp_err_t mpu6886_write_byte(mpu6886_t* dev, uint8_t reg, uint8_t data) { From 13c88ee70389e8ce22dfcf984cda71fa4f740c28 Mon Sep 17 00:00:00 2001 From: Vincent Winter Date: Mon, 3 Nov 2025 12:57:04 +0100 Subject: [PATCH 9/9] fix(unused file): Remove unnecessary file --- IMU/.editorconfig | 75 ----------------------------------------------- 1 file changed, 75 deletions(-) delete mode 100755 IMU/.editorconfig diff --git a/IMU/.editorconfig b/IMU/.editorconfig deleted file mode 100755 index 48c782f..0000000 --- a/IMU/.editorconfig +++ /dev/null @@ -1,75 +0,0 @@ -[*] -cpp_indent_braces=false -cpp_indent_multi_line_relative_to=innermost_parenthesis -cpp_indent_within_parentheses=indent -cpp_indent_preserve_within_parentheses=true -cpp_indent_case_labels=true -cpp_indent_case_contents=true -cpp_indent_case_contents_when_block=false -cpp_indent_lambda_braces_when_parameter=true -cpp_indent_goto_labels=one_left -cpp_indent_preprocessor=leftmost_column -cpp_indent_access_specifiers=false -cpp_indent_namespace_contents=false -cpp_indent_preserve_comments=false - -cpp_new_line_before_open_brace_namespace=false -cpp_new_line_before_open_brace_type=false -cpp_new_line_before_open_brace_function=ignore -cpp_new_line_before_open_brace_block=ignore -cpp_new_line_before_open_brace_lambda=ignore - -cpp_new_line_scope_braces_on_separate_lines=false -cpp_new_line_close_brace_same_line_empty_type=false -cpp_new_line_close_brace_same_line_empty_function=false -cpp_new_line_before_catch=false -cpp_new_line_before_else=false -cpp_new_line_before_while_in_do_while=false - -cpp_space_before_function_open_parenthesis=remove -cpp_space_within_parameter_list_parentheses=false -cpp_space_between_empty_parameter_list_parentheses=false -cpp_space_after_keywords_in_control_flow_statements=true -cpp_space_within_control_flow_statement_parentheses=false -cpp_space_before_lambda_open_parenthesis=false - -cpp_space_within_cast_parentheses=false -cpp_space_after_cast_close_parenthesis=false -cpp_space_within_expression_parentheses=false -cpp_space_before_block_open_brace=true -cpp_space_between_empty_braces=false -cpp_space_before_initializer_list_open_brace=true -cpp_space_within_initializer_list_braces=true -cpp_space_preserve_in_initializer_list=true - -cpp_space_before_open_square_bracket=false -cpp_space_within_square_brackets=false -cpp_space_before_empty_square_brackets=false -cpp_space_between_empty_square_brackets=false -cpp_space_group_square_brackets=true - -cpp_space_within_lambda_brackets=false -cpp_space_between_empty_lambda_brackets=false -cpp_space_before_comma=false -cpp_space_after_comma=true - -cpp_space_remove_around_member_operators=true - -cpp_space_before_inheritance_colon=true -cpp_space_before_constructor_colon=true - -cpp_space_remove_before_semicolon=true -cpp_space_after_semicolon=true - -cpp_space_remove_around_unary_operator=true - -cpp_space_around_binary_operator=insert -cpp_space_around_assignment_operator=insert -cpp_space_pointer_reference_alignment=left -cpp_space_around_ternary_operator=insert -cpp_wrap_preserve_blocks=one_liners -indent_style = space -indent_size = 4 -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true