From b6882cd635f537324dce489aa1a063502803b925 Mon Sep 17 00:00:00 2001 From: Dreaded_X Date: Fri, 20 May 2022 17:14:31 +0200 Subject: [PATCH] First commit --- .gitignore | 3 + .gitmodules | 3 + esp-idf | 1 + receiver/CMakeLists.txt | 8 + receiver/README.md | 32 + receiver/main/CMakeLists.txt | 3 + receiver/main/app.cpp | 537 +++++++++ receiver/main/app.h | 17 + receiver/main/common.h | 9 + receiver/main/connect.wav | Bin 0 -> 14744 bytes receiver/main/disconnect.wav | Bin 0 -> 14744 bytes receiver/main/helper.cpp | 126 +++ receiver/main/helper.h | 15 + receiver/main/main.cpp | 227 ++++ receiver/sdkconfig | 1988 ++++++++++++++++++++++++++++++++++ source.sh | 2 + 16 files changed, 2971 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 160000 esp-idf create mode 100644 receiver/CMakeLists.txt create mode 100644 receiver/README.md create mode 100644 receiver/main/CMakeLists.txt create mode 100644 receiver/main/app.cpp create mode 100644 receiver/main/app.h create mode 100644 receiver/main/common.h create mode 100644 receiver/main/connect.wav create mode 100644 receiver/main/disconnect.wav create mode 100644 receiver/main/helper.cpp create mode 100644 receiver/main/helper.h create mode 100644 receiver/main/main.cpp create mode 100644 receiver/sdkconfig create mode 100644 source.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2ceac01 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +tools +receiver/build +receiver/.cache diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..9d2b492 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "esp-idf"] + path = esp-idf + url = https://github.com/espressif/esp-idf.git diff --git a/esp-idf b/esp-idf new file mode 160000 index 0000000..31b7694 --- /dev/null +++ b/esp-idf @@ -0,0 +1 @@ +Subproject commit 31b7694551620522cc3fde0623321a38bfea762f diff --git a/receiver/CMakeLists.txt b/receiver/CMakeLists.txt new file mode 100644 index 0000000..f0aff97 --- /dev/null +++ b/receiver/CMakeLists.txt @@ -0,0 +1,8 @@ +# For more information about build system see +# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html +# The following five 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.5) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(main) diff --git a/receiver/README.md b/receiver/README.md new file mode 100644 index 0000000..455eb90 --- /dev/null +++ b/receiver/README.md @@ -0,0 +1,32 @@ +# _Sample project_ + +(See the README.md file in the upper level 'examples' directory for more information about examples.) + +This is the simplest buildable example. The example is used by command `idf.py create-project` +that copies the project to user specified path and set it's name. For more information follow the [docs page](https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html#start-a-new-project) + + + +## How to use example +We encourage the users to use the example as a template for the new projects. +A recommended way is to follow the instructions on a [docs page](https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html#start-a-new-project). + +## Example folder contents + +The project **sample_project** contains one source file in C language [main.c](main/main.c). The file is located in folder [main](main). + +ESP-IDF projects are built using CMake. The project build configuration is contained in `CMakeLists.txt` +files that provide set of directives and instructions describing the project's source files and targets +(executable, library, or both). + +Below is short explanation of remaining files in the project folder. + +``` +├── CMakeLists.txt +├── main +│   ├── CMakeLists.txt +│   └── main.c +└── README.md This is the file you are currently reading +``` +Additionally, the sample project contains Makefile and component.mk files, used for the legacy Make based build system. +They are not used or needed when building with CMake and idf.py. diff --git a/receiver/main/CMakeLists.txt b/receiver/main/CMakeLists.txt new file mode 100644 index 0000000..3197aed --- /dev/null +++ b/receiver/main/CMakeLists.txt @@ -0,0 +1,3 @@ +idf_component_register(SRCS "main.cpp" "app.cpp" "helper.cpp" + INCLUDE_DIRS "." + EMBED_FILES "connect.wav" "disconnect.wav") diff --git a/receiver/main/app.cpp b/receiver/main/app.cpp new file mode 100644 index 0000000..f96503b --- /dev/null +++ b/receiver/main/app.cpp @@ -0,0 +1,537 @@ +#include +#include +#include +#include + +#include "esp_log.h" +#include "esp_system.h" +#include "esp_bt.h" +#include "esp_bt_main.h" +#include "esp_bt_device.h" +#include "esp_gap_bt_api.h" +#include "esp_spp_api.h" +#include "esp_avrc_api.h" +#include "esp_a2dp_api.h" +#include "driver/i2s.h" +#include "nvs.h" +#include "nvs_flash.h" + +#include "common.h" +#include "helper.h" +#include "app.h" + +QueueHandle_t queue = nullptr; +TaskHandle_t handle = nullptr; +esp_avrc_rn_evt_cap_mask_t s_avrc_peer_rn_cap; +int sample_rate = 44100; + +uint32_t app::get_sample_rate() { + return sample_rate; +} + +void handler(void* args) { + app::Message msg; + for (;;) { + if (!queue) { + ESP_LOGE(BT_APP_TAG, "%s, app_task_queue is null", __func__); + vTaskDelay(100 / portTICK_PERIOD_MS); + } else if (xQueueReceive(queue, &msg, portMAX_DELAY)) { + if (msg.callback) { + msg.callback(msg.event, msg.param); + } + + if (msg.param) { + free(msg.param); + } + } else { + vTaskDelay(10 / portTICK_PERIOD_MS); + } + } +} + +// Not quite sure what this function is for, it seems to just add null termination to a string +/* // @TODO Pretty sure this also leaks memory, since we never free the original text before overwriting it */ +/* void create_metadata_buffer(esp_avrc_ct_cb_param_t *param) { */ +/* uint8_t* attr_text = (uint8_t*)malloc(param->meta_rsp.attr_length + 1); */ +/* memcpy(attr_text, param->meta_rsp.attr_text, param->meta_rsp.attr_length); */ +/* attr_text[param->meta_rsp.attr_length] = 0; */ + +/* param->meta_rsp.attr_text = attr_text; */ +/* } */ + +// @TODO Not quite sure why this is called new track +void av_new_track() { + esp_avrc_ct_send_metadata_cmd(0, ESP_AVRC_MD_ATTR_TITLE | ESP_AVRC_MD_ATTR_ARTIST | ESP_AVRC_MD_ATTR_PLAYING_TIME); + // @TODO Pretty sure we can listen for play/pause and pos here ESP_AVRC_RN_PLAY_STATUS_CHANGE and ESP_AVRC_RN_PLAY_POS_CHANGED + esp_avrc_ct_send_register_notification_cmd(1, ESP_AVRC_RN_TRACK_CHANGE, 0); +} + +// @TODO Here we can implement the notifications that we are registered for +void av_notify_evt_handler(uint8_t& id, esp_avrc_rn_param_t& param) { + switch (id) { + case ESP_AVRC_RN_TRACK_CHANGE: + ESP_LOGD(BT_AV_TAG, "%s ESP_AVRC_RN_TRACK_CHANGE %d", __func__, id); + // @TODO Do we need to reregister it every time we get the event? + av_new_track(); + break; + + default: + ESP_LOGE(BT_AV_TAG, "%s unhandled evt %d", __func__, id); + break; + } +} + +void av_hdl_avrc_evt(uint16_t event, void* param) { + ESP_LOGI(BT_AV_TAG, "%s evt %d", __func__, event); + + esp_avrc_ct_cb_param_t* rc = (esp_avrc_ct_cb_param_t*)(param); + + switch (event) { + case ESP_AVRC_CT_CONNECTION_STATE_EVT: + ESP_LOGI(BT_AV_TAG, "AVRC conn_state evt: state %d, [%s]", rc->conn_stat.connected, addr_to_str(rc->conn_stat.remote_bda)); + + if (rc->conn_stat.connected) { + av_new_track(); + // get remote supported event_ids of peer AVRCP Target + esp_avrc_ct_send_get_rn_capabilities_cmd(0); + } else { + // clear peer notification capability record + s_avrc_peer_rn_cap.bits = 0; + } + break; + + case ESP_AVRC_CT_PASSTHROUGH_RSP_EVT: + ESP_LOGI(BT_AV_TAG, "AVRC passthrough rsp: key_code 0x%x, key_state %d", rc->psth_rsp.key_code, rc->psth_rsp.key_state); + break; + + case ESP_AVRC_CT_METADATA_RSP_EVT: + ESP_LOGI(BT_AV_TAG, "AVRC metadata rsp: attribute id 0x%x, %s", rc->meta_rsp.attr_id, rc->meta_rsp.attr_text); + // @TODO Do something with the metadata + break; + + case ESP_AVRC_CT_CHANGE_NOTIFY_EVT: + //ESP_LOGI(BT_AV_TAG, "AVRC event notification: %d, param: %d", (int)rc->change_ntf.event_id, (int)rc->change_ntf.event_parameter); + av_notify_evt_handler(rc->change_ntf.event_id, rc->change_ntf.event_parameter); + break; + + case ESP_AVRC_CT_REMOTE_FEATURES_EVT: + ESP_LOGI(BT_AV_TAG, "AVRC remote features %x", rc->rmt_feats.feat_mask); + break; + + case ESP_AVRC_CT_GET_RN_CAPABILITIES_RSP_EVT: + ESP_LOGI(BT_AV_TAG, "remote rn_cap: count %d, bitmask 0x%x", rc->get_rn_caps_rsp.cap_count, + rc->get_rn_caps_rsp.evt_set.bits); + s_avrc_peer_rn_cap.bits = rc->get_rn_caps_rsp.evt_set.bits; + av_new_track(); + break; + + default: + ESP_LOGE(BT_AV_TAG, "%s unhandled evt %d", __func__, event); + break; + } +} + +void av_hdl_avrc_tg_evt(uint16_t event, void* p_param) +{ + ESP_LOGD(BT_AV_TAG, "%s evt %d", __func__, event); + esp_avrc_tg_cb_param_t *rc = (esp_avrc_tg_cb_param_t *)(p_param); + + switch (event) { + + case ESP_AVRC_TG_CONNECTION_STATE_EVT: { + ESP_LOGI(BT_AV_TAG, "AVRC conn_state evt: state %d, [%s]",rc->conn_stat.connected, addr_to_str(rc->conn_stat.remote_bda)); + break; + } + + case ESP_AVRC_TG_PASSTHROUGH_CMD_EVT: { + ESP_LOGI(BT_AV_TAG, "AVRC passthrough cmd: key_code 0x%x, key_state %d", rc->psth_cmd.key_code, rc->psth_cmd.key_state); + break; + } + + case ESP_AVRC_TG_SET_ABSOLUTE_VOLUME_CMD_EVT: { + ESP_LOGI(BT_AV_TAG, "AVRC set absolute volume: %d%%", (int)rc->set_abs_vol.volume * 100/ 0x7f); + /* volume_set_by_controller(rc->set_abs_vol.volume); */ + break; + } + + case ESP_AVRC_TG_REGISTER_NOTIFICATION_EVT: { + ESP_LOGI(BT_AV_TAG, "AVRC register event notification: %d, param: 0x%x", rc->reg_ntf.event_id, rc->reg_ntf.event_parameter); + if (rc->reg_ntf.event_id == ESP_AVRC_RN_VOLUME_CHANGE) { + ESP_LOGI(BT_AV_TAG, "AVRC Volume Changes Supported"); + /* s_volume_notify = true; */ + esp_avrc_rn_param_t rn_param; + rn_param.volume = 128/2; + esp_avrc_tg_send_rn_rsp(ESP_AVRC_RN_VOLUME_CHANGE, ESP_AVRC_RN_RSP_INTERIM, &rn_param); + } else { + ESP_LOGW(BT_AV_TAG, "AVRC Volume Changes NOT Supported"); + } + break; + } + + case ESP_AVRC_TG_REMOTE_FEATURES_EVT: { + ESP_LOGI(BT_AV_TAG, "AVRC remote features %x, CT features %x", rc->rmt_feats.feat_mask, rc->rmt_feats.ct_feat_flag); + break; + } + + default: + ESP_LOGE(BT_AV_TAG, "%s unhandled evt %d", __func__, event); + break; + } +} + + + +// @TODO This can be simplified a lot if we strip out the logging +void rc_ct_callback(esp_avrc_ct_cb_event_t event, esp_avrc_ct_cb_param_t* param) { + switch (event) { + case ESP_AVRC_CT_METADATA_RSP_EVT: + case ESP_AVRC_CT_CONNECTION_STATE_EVT: + case ESP_AVRC_CT_PASSTHROUGH_RSP_EVT: + case ESP_AVRC_CT_CHANGE_NOTIFY_EVT: + case ESP_AVRC_CT_REMOTE_FEATURES_EVT: + case ESP_AVRC_CT_GET_RN_CAPABILITIES_RSP_EVT: + app::dispatch(av_hdl_avrc_evt, event, param, sizeof(esp_avrc_ct_cb_param_t)); + break; + + default: + ESP_LOGE(BT_AV_TAG, "Invalid AVRC event: %d", event); + break; + } +} + +void rc_tg_callback(esp_avrc_tg_cb_event_t event, esp_avrc_tg_cb_param_t *param) +{ + ESP_LOGD(BT_AV_TAG, "%s", __func__); + switch (event) { + case ESP_AVRC_TG_CONNECTION_STATE_EVT: + case ESP_AVRC_TG_REMOTE_FEATURES_EVT: + case ESP_AVRC_TG_PASSTHROUGH_CMD_EVT: + case ESP_AVRC_TG_SET_ABSOLUTE_VOLUME_CMD_EVT: + case ESP_AVRC_TG_REGISTER_NOTIFICATION_EVT: + case ESP_AVRC_TG_SET_PLAYER_APP_VALUE_EVT: + app::dispatch(av_hdl_avrc_tg_evt, event, param, sizeof(esp_avrc_tg_cb_param_t)); + break; + default: + ESP_LOGE(BT_AV_TAG, "Unsupported AVRC event: %d", event); + break; + } +} + +void handle_connection_state(uint16_t event, esp_a2d_cb_param_t* a2d) { + static int retry_count = 0; + // determine remote BDA + esp_bd_addr_t peer_bd_addr = {0,0,0,0,0,0}; + memcpy(peer_bd_addr, a2d->conn_stat.remote_bda, ESP_BD_ADDR_LEN); + ESP_LOGI(BT_AV_TAG, "partner address: %s", addr_to_str(peer_bd_addr)); + + // @TODO Here we can handle on connection state change things + + ESP_LOGI(BT_AV_TAG, "A2DP connection state: %s, [%s]", connection_state_to_str(a2d->conn_stat.state), addr_to_str(a2d->conn_stat.remote_bda)); + + if (a2d->conn_stat.state == ESP_A2D_CONNECTION_STATE_DISCONNECTED) { + ESP_LOGI(BT_AV_TAG, "ESP_A2D_CONNECTION_STATE_DISCONNECTED"); + + /* ESP_LOGI(BT_AV_TAG, "i2s_stop"); */ + /* i2s_stop(i2s_port); */ + /* i2s_zero_dma_buffer(i2s_port); */ + + extern const uint8_t disconnect_wav_start[] asm("_binary_disconnect_wav_start"); + extern const uint8_t disconnect_wav_end[] asm("_binary_disconnect_wav_end"); + vTaskDelay(500 / portTICK_PERIOD_MS); + play_wav(disconnect_wav_start, disconnect_wav_end); + + // @TODO Hope this works correctly + if (a2d->conn_stat.disc_rsn == ESP_A2D_DISC_RSN_ABNORMAL && has_last_connection()) { + if (retry_count < 3 ){ + ESP_LOGI(BT_AV_TAG,"Connection try number: %d", retry_count); + + esp_bd_addr_t last_connection = {0,0,0,0,0,0}; + get_last_connection(last_connection); + if (esp_a2d_sink_connect(last_connection) == ESP_FAIL) { + ESP_LOGE(BT_AV_TAG, "Failed connecting to device!"); + } + } else { + clean_last_connection(); + set_scan_mode(true); + } + } else { + set_scan_mode(true); + } + } else if (a2d->conn_stat.state == ESP_A2D_CONNECTION_STATE_CONNECTED){ + ESP_LOGI(BT_AV_TAG, "ESP_A2D_CONNECTION_STATE_CONNECTED"); + + set_scan_mode(false); + retry_count = 0; + + /* ESP_LOGI(BT_AV_TAG,"i2s_start"); */ + /* if (i2s_start(i2s_port)!=ESP_OK){ */ + /* ESP_LOGE(BT_AV_TAG, "i2s_start"); */ + /* } */ + + extern const uint8_t connect_wav_start[] asm("_binary_connect_wav_start"); + extern const uint8_t connect_wav_end[] asm("_binary_connect_wav_end"); + play_wav(connect_wav_start, connect_wav_end); + vTaskDelay(500 / portTICK_PERIOD_MS); + + // record current connection + set_last_connection(a2d->conn_stat.remote_bda); + if (esp_bt_gap_read_remote_name(a2d->conn_stat.remote_bda) != ESP_OK) { + ESP_LOGE(BT_AV_TAG, "esp_bt_gap_read_remote_name failed"); + } + + + } else if (a2d->conn_stat.state == ESP_A2D_CONNECTION_STATE_CONNECTING){ + ESP_LOGI(BT_AV_TAG, "ESP_A2D_CONNECTION_STATE_CONNECTING"); + retry_count++; + } +} + +void handle_audio_state(uint16_t event, esp_a2d_cb_param_t* a2d) { + if (a2d->audio_stat.state == ESP_A2D_AUDIO_STATE_STARTED) { + /* if (i2s_start(I2S_PORT) != ESP_OK){ */ + /* ESP_LOGE(BT_AV_TAG, "i2s_start failed"); */ + /* } */ + } else { + /* i2s_stop(I2S_PORT); */ + /* i2s_zero_dma_buffer(I2S_PORT); */ + } +} + +void handle_audio_cfg(uint16_t event, esp_a2d_cb_param_t* a2d) { + sample_rate = 16000; + + ESP_LOGI(BT_AV_TAG, "a2dp audio_cfg_cb , codec type %d", a2d->audio_cfg.mcc.type); + + char oct0 = a2d->audio_cfg.mcc.cie.sbc[0]; + if (oct0 & (0x01 << 6)) { + sample_rate = 32000; + } else if (oct0 & (0x01 << 5)) { + sample_rate = 44100; + } else if (oct0 & (0x01 << 4)) { + sample_rate = 48000; + } + + ESP_LOGI(BT_AV_TAG, "a2dp audio_cfg_cb , sample_rate %d", sample_rate); + + if (i2s_set_clk(I2S_PORT, sample_rate, 16, I2S_CHANNEL_STEREO) != ESP_OK){ + ESP_LOGE(BT_AV_TAG, "i2s_set_clk failed with samplerate=%d", sample_rate); + } else { + ESP_LOGI(BT_AV_TAG, "audio player configured, samplerate=%d", sample_rate); + } +} + +void av_hdl_a2d_evt(uint16_t event, void* param) { + esp_a2d_cb_param_t* a2d = (esp_a2d_cb_param_t*)(param); + switch (event) { + case ESP_A2D_CONNECTION_STATE_EVT: + ESP_LOGD(BT_AV_TAG, "%s ESP_A2D_CONNECTION_STATE_EVT", __func__); + handle_connection_state(event, a2d); + break; + + case ESP_A2D_AUDIO_STATE_EVT: + ESP_LOGD(BT_AV_TAG, "%s ESP_A2D_AUDIO_STATE_EVT", __func__); + handle_audio_state(event, a2d); + break; + + case ESP_A2D_AUDIO_CFG_EVT: + ESP_LOGD(BT_AV_TAG, "%s ESP_A2D_AUDIO_CFG_EVT", __func__); + handle_audio_cfg(event, a2d); + break; + + case ESP_A2D_PROF_STATE_EVT: + if (ESP_A2D_INIT_SUCCESS == a2d->a2d_prof_stat.init_state) { + ESP_LOGI(BT_AV_TAG,"A2DP PROF STATE: Init Compl\n"); + } else { + ESP_LOGI(BT_AV_TAG,"A2DP PROF STATE: Deinit Compl\n"); + } + break; + + default: + ESP_LOGE(BT_AV_TAG, "%s unhandled evt %d", __func__, event); + break; + } +} + +void a2d_callback(esp_a2d_cb_event_t event, esp_a2d_cb_param_t* param) { + switch (event) { + case ESP_A2D_CONNECTION_STATE_EVT: + case ESP_A2D_AUDIO_STATE_EVT: + case ESP_A2D_AUDIO_CFG_EVT: + case ESP_A2D_PROF_STATE_EVT: + app::dispatch(av_hdl_a2d_evt, event, param, sizeof(esp_a2d_cb_param_t)); + break; + + default: + ESP_LOGE(BT_AV_TAG, "Invalid A2DP event: %d", event); + break; + } +} + +/** + * @brief Utility structure that can be used to split a int32_t up into 2 separate channels with int16_t data. + * @author Phil Schatzmann + * @copyright Apache License Version 2 + */ +struct __attribute__((packed)) Frame { + int16_t channel1; + int16_t channel2; + + Frame(int v=0){ + channel1 = channel2 = v; + } + + Frame(int ch1, int ch2){ + channel1 = ch1; + channel2 = ch2; + } + +}; + +void audio_data_callback(const uint8_t* data, uint32_t len) { + Frame* frame = (Frame*)data; + for (int i = 0; i < len/4; i++) { + int16_t temp = frame[i].channel1; + frame[i].channel1 = frame[i].channel2; + frame[i].channel2 = temp; + } + + size_t bytes_written; + if (i2s_write(I2S_PORT, data, len, &bytes_written, portMAX_DELAY) != ESP_OK) { + ESP_LOGE(BT_AV_TAG, "i2s_write has failed"); + } + + if (bytes_written < len) { + ESP_LOGE(BT_AV_TAG, "Timeout: not all bytes were written to I2S"); + } +} + +void setup_stack(uint16_t event, void* param) { + ESP_LOGI(BT_APP_TAG, "Setting up stack"); + + esp_bt_dev_set_device_name("Car Stereo"); + + // Initialize AVRCP controller + esp_err_t result = esp_avrc_ct_init(); + if (result == ESP_OK) { + result = esp_avrc_ct_register_callback(rc_ct_callback); + if (result == ESP_OK) { + ESP_LOGI(BT_AV_TAG, "AVRCP controller initialized"); + } else { + ESP_LOGE(BT_AV_TAG, "esp_avrc_ct_register_callback: %d", result); + } + } else { + ESP_LOGE(BT_AV_TAG, "esp_avrc_ct_init: %d", result); + } + + // Initialize AVRCP target + if (esp_avrc_tg_init() == ESP_OK) { + esp_avrc_tg_register_callback(rc_tg_callback); + esp_avrc_rn_evt_cap_mask_t evt_set = {0}; + esp_avrc_rn_evt_bit_mask_operation(ESP_AVRC_BIT_MASK_OP_SET, &evt_set, ESP_AVRC_RN_VOLUME_CHANGE); + if (esp_avrc_tg_set_rn_evt_cap(&evt_set) != ESP_OK) { + ESP_LOGE(BT_AV_TAG, "esp_avrc_tg_set_rn_evt_cap failed"); + } + } else { + ESP_LOGE(BT_AV_TAG, "esp_avrc_tg_init failed"); + } + + // Initialize A2DP sink + if (esp_a2d_register_callback(a2d_callback) != ESP_OK){ + ESP_LOGE(BT_AV_TAG,"esp_a2d_register_callback failed"); + } + if (esp_a2d_sink_register_data_callback(audio_data_callback) != ESP_OK){ + ESP_LOGE(BT_AV_TAG,"esp_a2d_sink_register_data_callback failed"); + } + if (esp_a2d_sink_init() != ESP_OK){ + ESP_LOGE(BT_AV_TAG,"esp_a2d_sink_init failed"); + } + + if (has_last_connection()) { + esp_bd_addr_t last_connection = {0,0,0,0,0,0}; + get_last_connection(last_connection); + if (esp_a2d_sink_connect(last_connection) == ESP_FAIL) { + ESP_LOGE(BT_AV_TAG, "Failed connecting to device!"); + } + } + + set_scan_mode(true); +} + +void app::start() { + ESP_LOGI(BT_AV_TAG, "Starting app task"); + + if (queue == nullptr) { + queue = xQueueCreate(10, sizeof(Message)); + ESP_LOGI(BT_AV_TAG, "Created queue"); + } + + if (handle == nullptr) { + if (xTaskCreate(handler, "BtAppT", 2048, nullptr, configMAX_PRIORITIES - 3, &handle) != pdPASS) { + ESP_LOGE(BT_APP_TAG, "Failed to create app task"); + } + ESP_LOGI(BT_AV_TAG, "Created task"); + } + + dispatch(setup_stack, 0, nullptr, 0); + + esp_bt_sp_param_t param_type = ESP_BT_SP_IOCAP_MODE; + esp_bt_io_cap_t iocap = ESP_BT_IO_CAP_NONE; + esp_bt_gap_set_security_param(param_type, &iocap, sizeof(uint8_t)); + + esp_bt_pin_code_t pin_code; + pin_code[0] = '6'; + pin_code[1] = '9'; + pin_code[2] = '4'; + pin_code[3] = '2'; + pin_code[4] = '0'; + esp_bt_gap_set_pin(ESP_BT_PIN_TYPE_FIXED, 5, pin_code); +} + +/* void app::stop() { */ +/* ESP_LOGI(BT_AV_TAG, "Destroying task app task"); */ + +/* if (handle != nullptr) { */ +/* vTaskDelete(handle); */ +/* handle = nullptr; */ +/* } */ + +/* if (queue != nullptr) { */ +/* vQueueDelete(queue); */ +/* queue = nullptr; */ +/* } */ +/* } */ + +void send_msg(app::Message* msg) { + ESP_LOGI(BT_APP_TAG, "Sending message"); + + if (msg == nullptr || queue == nullptr) { + ESP_LOGE(BT_APP_TAG, "send_msg failed"); + return; + } + + if (xQueueSend(queue, msg, 10 / portTICK_PERIOD_MS) != pdTRUE) { + ESP_LOGE(BT_APP_TAG, "xQueue send failed"); + } +} + +void app::dispatch(Callback callback, uint16_t event, void* param, int param_len) { + ESP_LOGI(BT_APP_TAG, "event 0x%x, param len %d", event, param_len); + + Message msg; + memset(&msg, 0, sizeof(msg)); + + msg.event = event; + msg.callback = callback; + + if (param_len == 0) { + send_msg(&msg); + } else if (param && param_len > 0) { + if ((msg.param = malloc(param_len)) != nullptr) { + memcpy(msg.param, param, param_len); + send_msg(&msg); + } + } else { + ESP_LOGE(BT_APP_TAG, "Failed to dispatch!"); + } +} + diff --git a/receiver/main/app.h b/receiver/main/app.h new file mode 100644 index 0000000..cf89d64 --- /dev/null +++ b/receiver/main/app.h @@ -0,0 +1,17 @@ +#pragma once +#include + +namespace app { + typedef void (*Callback) (uint16_t event, void *param); + struct Message { + uint16_t event; + Callback callback; + void* param; + }; + + void start(); + /* void stop(); */ + void dispatch(Callback callback, uint16_t event, void* param, int param_len); + + uint32_t get_sample_rate(); +} diff --git a/receiver/main/common.h b/receiver/main/common.h new file mode 100644 index 0000000..1e01809 --- /dev/null +++ b/receiver/main/common.h @@ -0,0 +1,9 @@ +#pragma once + +#define BT_AV_TAG "BT_AV" +#define BT_APP_TAG "BT_API" + +#define I2S_BUFFER_SIZE 512 +#define I2S_PORT I2S_NUM_0 +#define WAV_HEADER_SIZE 44 + diff --git a/receiver/main/connect.wav b/receiver/main/connect.wav new file mode 100644 index 0000000000000000000000000000000000000000..bfb8acedbc3f99738463f8aa283f65182f7c0e8f GIT binary patch literal 14744 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 literal 0 HcmV?d00001 diff --git a/receiver/main/disconnect.wav b/receiver/main/disconnect.wav new file mode 100644 index 0000000000000000000000000000000000000000..6b1daf6a404ceccb052a52655ff82ceab0a36bd2 GIT binary patch literal 14744 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 + +#include "helper.h" +#include "common.h" +#include "app.h" + +const char* addr_to_str(esp_bd_addr_t bda) { + static char bda_str[18]; + sprintf(bda_str, "%02x:%02x:%02x:%02x:%02x:%02x", bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]); + return (const char*)bda_str; +} + +const char* connection_state_to_str(esp_a2d_connection_state_t state) { + const char* states[4] = {"Disconnected", "Connecting", "Connected", "Disconnecting"}; + return states[state]; +} + +void set_scan_mode(bool connectable) { + if (esp_bt_gap_set_scan_mode(connectable ? ESP_BT_CONNECTABLE : ESP_BT_NON_CONNECTABLE, connectable ? ESP_BT_GENERAL_DISCOVERABLE : ESP_BT_NON_DISCOVERABLE)) { + ESP_LOGE(BT_AV_TAG,"esp_bt_gap_set_scan_mode"); + } +} + +void get_last_connection(esp_bd_addr_t last_connection) { + nvs_handle handle; + esp_err_t err = nvs_open("connected_dba", NVS_READWRITE, &handle); + if (err != ESP_OK) { + ESP_LOGE(BT_AV_TAG, "NVS OPEN ERRRO"); + } + + esp_bd_addr_t bda; + size_t size = sizeof(bda); + err = nvs_get_blob(handle, "last_bda", bda, &size); + if (err != ESP_OK) { + if (err == ESP_ERR_NVS_NOT_FOUND) { + ESP_LOGI(BT_AV_TAG, "nvs_blob does not exists"); + } else { + ESP_LOGE(BT_AV_TAG, "get_nvs_blob failed"); + } + } + + nvs_close(handle); + if (err == ESP_OK) { + memcpy(last_connection, bda, size); + } +} + +void set_last_connection(esp_bd_addr_t bda) { + esp_bd_addr_t last_connection = {0,0,0,0,0,0}; + get_last_connection(last_connection); + + if (memcmp(bda, last_connection, ESP_BD_ADDR_LEN) == 0) { + // Nothing has changed + return; + } + + nvs_handle handle; + esp_err_t err = nvs_open("connected_dba", NVS_READWRITE, &handle); + if (err != ESP_OK) { + ESP_LOGE(BT_AV_TAG, "NVS OPEN ERRRO"); + } + + err = nvs_set_blob(handle, "last_bda", bda, ESP_BD_ADDR_LEN); + if (err == ESP_OK) { + err = nvs_commit(handle); + } else { + ESP_LOGE(BT_AV_TAG, "NVS_WRITE_ERROR"); + } + + if (err != ESP_OK) { + ESP_LOGE(BT_AV_TAG, "NVS COMMIT ERROR"); + } + + nvs_close(handle); +} + +bool has_last_connection() { + esp_bd_addr_t empty = {0,0,0,0,0,0}; + esp_bd_addr_t last_connection = {0,0,0,0,0,0}; + get_last_connection(last_connection); + + int result = memcmp(last_connection, empty, ESP_BD_ADDR_LEN); + return result != 0; +} + +void clean_last_connection() { + esp_bd_addr_t empty = {0,0,0,0,0,0}; + set_last_connection(empty); +} + +void play_wav(const uint8_t start[], const uint8_t end[]) { + uint32_t len = (end - start - WAV_HEADER_SIZE); + ESP_LOGI(BT_AV_TAG, "Playing sample..."); + + // Switch to mono since the samples are all in mono to save space + i2s_zero_dma_buffer(I2S_PORT); + i2s_set_clk(I2S_PORT, 44100, 16, I2S_CHANNEL_MONO); + + for (uint32_t index = 0; index < len; index += I2S_BUFFER_SIZE) { + int rest = len - index; + + size_t byte_size = I2S_BUFFER_SIZE; + if (rest < I2S_BUFFER_SIZE) { + byte_size = rest; + } + + const unsigned char* current = start + WAV_HEADER_SIZE + index; + size_t bytes_written; + if (i2s_write(I2S_PORT, current, byte_size, &bytes_written, portMAX_DELAY) != ESP_OK) { + ESP_LOGE(BT_AV_TAG, "i2s_write has failed"); + } + } + + // Switch back to stereo + i2s_zero_dma_buffer(I2S_PORT); + i2s_set_clk(I2S_PORT, app::get_sample_rate(), 16, I2S_CHANNEL_STEREO); + + ESP_LOGI(BT_AV_TAG, "Done"); +} + diff --git a/receiver/main/helper.h b/receiver/main/helper.h new file mode 100644 index 0000000..af2bb62 --- /dev/null +++ b/receiver/main/helper.h @@ -0,0 +1,15 @@ +#pragma once +#include "esp_bt_device.h" +#include "esp_a2dp_api.h" + +const char* addr_to_str(esp_bd_addr_t bda); +const char* connection_state_to_str(esp_a2d_connection_state_t state); + +void set_scan_mode(bool connectable); + +void get_last_connection(esp_bd_addr_t last_connection); +void set_last_connection(esp_bd_addr_t last_connection); +bool has_last_connection(); +void clean_last_connection(); + +void play_wav(const uint8_t start[], const uint8_t end[]); diff --git a/receiver/main/main.cpp b/receiver/main/main.cpp new file mode 100644 index 0000000..1fbb40e --- /dev/null +++ b/receiver/main/main.cpp @@ -0,0 +1,227 @@ +#include +#include +#include +#include + +#include "esp_log.h" +#include "esp_system.h" +#include "esp_bt.h" +#include "esp_bt_main.h" +#include "esp_bt_device.h" +#include "esp_gap_bt_api.h" +#include "esp_spp_api.h" +#include "esp_avrc_api.h" +#include "esp_a2dp_api.h" +#include "driver/i2s.h" +#include "nvs.h" +#include "nvs_flash.h" + +#include "common.h" +#include "helper.h" +#include "app.h" + +void init_nvs() { + ESP_LOGI(BT_AV_TAG, "Initializing nvs"); + + esp_err_t err = nvs_flash_init(); + if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND){ + ESP_ERROR_CHECK(nvs_flash_erase()); + err = nvs_flash_init(); + } + ESP_ERROR_CHECK(err); +} + +void init_i2s() { + ESP_LOGI(BT_AV_TAG, "Initializing i2s"); + + i2s_port_t i2s_port = I2S_PORT; + + i2s_config_t i2s_config = { + .mode = (i2s_mode_t) (I2S_MODE_MASTER | I2S_MODE_TX), + .sample_rate = app::get_sample_rate(), + .bits_per_sample = (i2s_bits_per_sample_t)16, + .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, + .communication_format = (i2s_comm_format_t) (I2S_COMM_FORMAT_STAND_I2S), + .intr_alloc_flags = 0, // default interrupt priority + .dma_desc_num = 8, + .dma_frame_num = 64, + .use_apll = false, + .tx_desc_auto_clear = true // avoiding noise in case of data unavailability + }; + + if (i2s_driver_install(i2s_port, &i2s_config, 0, nullptr) != ESP_OK) { + ESP_LOGE(BT_AV_TAG, "i2s_driver_install failed"); + } + + ESP_LOGI(BT_AV_TAG, "SAMPLE_RATE: %i", i2s_config.sample_rate); + ESP_LOGI(BT_AV_TAG, "BITS_PER_SAMPLE: %i", i2s_config.bits_per_sample); + + i2s_pin_config_t pin_config = { + .bck_io_num = 26, + .ws_io_num = 25, + .data_out_num = 33, + .data_in_num = I2S_PIN_NO_CHANGE + }; + + if (i2s_set_pin(i2s_port, &pin_config) != ESP_OK) { + ESP_LOGE(BT_AV_TAG, "i2s_set_pin failed"); + } +} + +bool bluetooth_start() { + ESP_LOGI(BT_APP_TAG, "BT Start"); + if (esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_ENABLED) { + ESP_LOGI(BT_APP_TAG, "Already enabled"); + return true; + } + + esp_bt_controller_config_t cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT(); + + if (esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_IDLE) { + ESP_LOGI(BT_APP_TAG, "Idle"); + esp_bt_controller_init(&cfg); + while (esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_IDLE) {} + } + + if (esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_INITED) { + if (esp_bt_controller_enable(ESP_BT_MODE_CLASSIC_BT)) { + ESP_LOGE(BT_APP_TAG, "BT Enable failed"); + return false; + } + } + + if (esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_ENABLED) { + ESP_LOGI(BT_APP_TAG, "Enabled"); + return true; + } + + ESP_LOGE(BT_APP_TAG, "BT Start failed"); + return false; +} + +void app_gap_callback(esp_bt_gap_cb_event_t event, esp_bt_gap_cb_param_t *param) { + switch (event) { + case ESP_BT_GAP_AUTH_CMPL_EVT: { + if (param->auth_cmpl.stat == ESP_BT_STATUS_SUCCESS) { + ESP_LOGI(BT_AV_TAG, "authentication success: %s", param->auth_cmpl.device_name); + } else { + ESP_LOGE(BT_AV_TAG, "authentication failed, status:%d", param->auth_cmpl.stat); + } + break; + } + + case ESP_BT_GAP_PIN_REQ_EVT: { + esp_bd_addr_t peer_bd_addr = {0,0,0,0,0,0}; + memcpy(peer_bd_addr, param->pin_req.bda, ESP_BD_ADDR_LEN); + ESP_LOGI(BT_AV_TAG, "partner address: %s", addr_to_str(peer_bd_addr)); + break; + } + + case ESP_BT_GAP_CFM_REQ_EVT: { + esp_bd_addr_t peer_bd_addr = {0,0,0,0,0,0}; + memcpy(peer_bd_addr, param->cfm_req.bda, ESP_BD_ADDR_LEN); + ESP_LOGI(BT_AV_TAG, "partner address: %s", addr_to_str(peer_bd_addr)); + + ESP_LOGI(BT_AV_TAG, "ESP_BT_GAP_CFM_REQ_EVT Please confirm the passkey: %d", param->cfm_req.num_val); + break; + } + + case ESP_BT_GAP_KEY_NOTIF_EVT: { + ESP_LOGI(BT_AV_TAG, "ESP_BT_GAP_KEY_NOTIF_EVT passkey:%d", param->key_notif.passkey); + break; + } + + case ESP_BT_GAP_KEY_REQ_EVT: { + ESP_LOGI(BT_AV_TAG, "ESP_BT_GAP_KEY_REQ_EVT Please enter passkey!"); + break; + } + + case ESP_BT_GAP_READ_REMOTE_NAME_EVT: { + ESP_LOGI(BT_AV_TAG, "ESP_BT_GAP_READ_REMOTE_NAME_EVT stat:%d", param->read_rmt_name.stat); + if (param->read_rmt_name.stat == ESP_BT_STATUS_SUCCESS ) { + ESP_LOGI(BT_AV_TAG, "ESP_BT_GAP_READ_REMOTE_NAME_EVT remote name:%s", param->read_rmt_name.rmt_name); + char remote_name[ESP_BT_GAP_MAX_BDNAME_LEN + 1]; + memcpy(remote_name, param->read_rmt_name.rmt_name, ESP_BT_GAP_MAX_BDNAME_LEN ); + } + break; + } + + default: { + ESP_LOGI(BT_AV_TAG, "%s invalid event: %d", __func__, event); + break; + } + } + return; +} + +void init_bluetooth() { + ESP_LOGI(BT_AV_TAG, "Initializing bluetooth"); + + if (!bluetooth_start()) { + ESP_LOGE(BT_AV_TAG, "Failed to initialize controller"); + return; + } + + ESP_LOGI(BT_AV_TAG, "Controller initialized"); + + esp_bluedroid_status_t bt_stack_status = esp_bluedroid_get_status(); + if (bt_stack_status == ESP_BLUEDROID_STATUS_UNINITIALIZED) { + if (esp_bluedroid_init() != ESP_OK) { + ESP_LOGE(BT_AV_TAG, "Failed to initialize bluedroid"); + return; + } + ESP_LOGI(BT_AV_TAG, "Bluedroid initialized"); + } + + while (bt_stack_status != ESP_BLUEDROID_STATUS_ENABLED) { + if (esp_bluedroid_enable() != ESP_OK) { + ESP_LOGE(BT_AV_TAG, "Failed to enable bluedroid"); + vTaskDelay(100 / portTICK_PERIOD_MS); + } else { + ESP_LOGI(BT_AV_TAG, "Bluedroid enabled"); + } + bt_stack_status = esp_bluedroid_get_status(); + } + + if (esp_bt_gap_register_callback(app_gap_callback) != ESP_OK) { + ESP_LOGE(BT_AV_TAG,"gap register failed"); + return; + } + + // @TODO Do we need this? + // Check menuconfig + if ((esp_spp_init(ESP_SPP_MODE_CB)) != ESP_OK) { + ESP_LOGE(BT_AV_TAG,"esp_spp_init failed"); + return; + } +} + +extern "C" { + void app_main(); +} + +void app_main() { + ESP_LOGI(BT_AV_TAG, "Starting Car Stereo"); + ESP_LOGI(BT_AV_TAG, "Available Heap: %u", esp_get_free_heap_size()); + + init_nvs(); + init_i2s(); + init_bluetooth(); + + app::start(); + + esp_bd_addr_t last_connection = {0,0,0,0,0,0}; + get_last_connection(last_connection); + + ESP_LOGI(BT_AV_TAG, "Last connection: %s", addr_to_str(last_connection)); + + /* extern const uint8_t connect_wav_start[] asm("_binary_connect_wav_start"); */ + /* extern const uint8_t connect_wav_end[] asm("_binary_connect_wav_end"); */ + + /* extern const uint8_t disconnect_wav_start[] asm("_binary_disconnect_wav_start"); */ + /* extern const uint8_t disconnect_wav_end[] asm("_binary_disconnect_wav_end"); */ + + /* play_wav(connect_wav_start, connect_wav_end); */ + /* vTaskDelay(1000 / portTICK_PERIOD_MS); */ + /* play_wav(disconnect_wav_start, disconnect_wav_end); */ +} diff --git a/receiver/sdkconfig b/receiver/sdkconfig new file mode 100644 index 0000000..f6e36ec --- /dev/null +++ b/receiver/sdkconfig @@ -0,0 +1,1988 @@ +# +# Automatically generated file. DO NOT EDIT. +# Espressif IoT Development Framework (ESP-IDF) Project Configuration +# +CONFIG_SOC_BROWNOUT_RESET_SUPPORTED="Not determined" +CONFIG_SOC_TWAI_BRP_DIV_SUPPORTED="Not determined" +CONFIG_SOC_CAPS_ECO_VER_MAX=3 +CONFIG_SOC_ADC_SUPPORTED=y +CONFIG_SOC_DAC_SUPPORTED=y +CONFIG_SOC_MCPWM_SUPPORTED=y +CONFIG_SOC_SDMMC_HOST_SUPPORTED=y +CONFIG_SOC_BT_SUPPORTED=y +CONFIG_SOC_BLUEDROID_SUPPORTED=y +CONFIG_SOC_CLASSIC_BT_SUPPORTED=y +CONFIG_SOC_PCNT_SUPPORTED=y +CONFIG_SOC_WIFI_SUPPORTED=y +CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y +CONFIG_SOC_TWAI_SUPPORTED=y +CONFIG_SOC_EMAC_SUPPORTED=y +CONFIG_SOC_CPU_CORES_NUM=2 +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_I2S_SUPPORTED=y +CONFIG_SOC_RMT_SUPPORTED=y +CONFIG_SOC_SIGMADELTA_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_ADC_RTC_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DIG_CTRL_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_SAMPLE_FREQ_THRES_HIGH=2 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=2000 +CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +CONFIG_SOC_RTC_SLOW_CLOCK_SUPPORT_8MD256=y +CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y +CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINT_SIZE=64 +CONFIG_SOC_CPU_HAS_FPU=y +CONFIG_SOC_DAC_PERIPH_NUM=2 +CONFIG_SOC_DAC_RESOLUTION=8 +CONFIG_SOC_GPIO_PORT=1 +CONFIG_SOC_GPIO_PIN_COUNT=40 +CONFIG_SOC_GPIO_VALID_GPIO_MASK=0xFFFFFFFFFF +CONFIG_SOC_GPIO_SUPPORT_SLP_SWITCH=y +CONFIG_SOC_I2C_NUM=2 +CONFIG_SOC_I2C_FIFO_LEN=32 +CONFIG_SOC_I2C_SUPPORT_SLAVE=y +CONFIG_SOC_I2C_SUPPORT_APB=y +CONFIG_SOC_CLK_APLL_SUPPORTED=y +CONFIG_SOC_APLL_MULTIPLIER_OUT_MIN_HZ=350000000 +CONFIG_SOC_APLL_MULTIPLIER_OUT_MAX_HZ=500000000 +CONFIG_SOC_APLL_MIN_HZ=5303031 +CONFIG_SOC_APLL_MAX_HZ=125000000 +CONFIG_SOC_I2S_NUM=2 +CONFIG_SOC_I2S_HW_VERSION_1=y +CONFIG_SOC_I2S_SUPPORTS_APLL=y +CONFIG_SOC_I2S_SUPPORTS_PDM=y +CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y +CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +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_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_CHANNEL_NUM=8 +CONFIG_SOC_LEDC_TIMER_BIT_WIDE_NUM=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_MCPWM_BASE_CLK_HZ=160000000 +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_SIGMADELTA_NUM=1 +CONFIG_SOC_SIGMADELTA_CHANNEL_NUM=8 +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_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_TOUCH_VERSION_1=y +CONFIG_SOC_TOUCH_SENSOR_NUM=10 +CONFIG_SOC_TOUCH_PAD_MEASURE_WAIT_MAX=0xFF +CONFIG_SOC_TWAI_BRP_MIN=2 +CONFIG_SOC_TWAI_SUPPORT_MULTI_ADDRESS_LAYOUT=y +CONFIG_SOC_UART_NUM=3 +CONFIG_SOC_UART_SUPPORT_REF_TICK=y +CONFIG_SOC_UART_FIFO_LEN=128 +CONFIG_SOC_UART_BITRATE_MAX=5000000 +CONFIG_SOC_SPIRAM_SUPPORTED=y +CONFIG_SOC_SHA_SUPPORT_PARALLEL_ENG=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_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=y +CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32 +CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 +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_SDMMC_USE_IOMUX=y +CONFIG_SOC_SDMMC_NUM_SLOTS=2 +CONFIG_SOC_BLE_DONT_UPDATE_OWN_RPA=y +CONFIG_IDF_CMAKE=y +CONFIG_IDF_TARGET_ARCH_XTENSA=y +CONFIG_IDF_TARGET_ARCH="xtensa" +CONFIG_IDF_TARGET="esp32" +CONFIG_IDF_TARGET_ESP32=y +CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 + +# +# Build type +# +CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y +# CONFIG_APP_BUILD_TYPE_ELF_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 +# end of Build type + +# +# 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=16 +# end of Application manager + +# +# Bootloader config +# +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 +# 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 +# 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_APP_ROLLBACK_ENABLE is not set +# 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 +CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y +# 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 + +CONFIG_ESP_ROM_HAS_CRC_LE=y +CONFIG_ESP_ROM_HAS_CRC_BE=y +CONFIG_ESP_ROM_HAS_JPEG_DECODE=y +CONFIG_ESP_ROM_SUPPORT_MULTIPLE_UART=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_FLASHSIZE_DETECT=y +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 is not set +CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y +# CONFIG_PARTITION_TABLE_TWO_OTA is not set +# CONFIG_PARTITION_TABLE_CUSTOM is not set +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp_large.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y +# end of Partition Table + +# +# Compiler options +# +CONFIG_COMPILER_OPTIMIZATION_DEFAULT=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_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_WARN_WRITE_STRINGS is not set +# CONFIG_COMPILER_DISABLE_GCC8_WARNINGS is not set +# CONFIG_COMPILER_DUMP_RTL_FILES 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 + +# +# ESP-ASIO +# +# CONFIG_ASIO_SSL_SUPPORT is not set +# end of ESP-ASIO + +# +# Bluetooth +# +CONFIG_BT_ENABLED=y + +# +# Bluetooth controller +# +# CONFIG_BTDM_CTRL_MODE_BLE_ONLY is not set +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=y +# CONFIG_BTDM_CTRL_MODE_BTDM is not set +CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN=2 +CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN=0 +# CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_HCI is not set +CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_PCM=y +CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=1 +CONFIG_BTDM_CTRL_PCM_ROLE_EDGE_CONFIG=y +CONFIG_BTDM_CTRL_PCM_ROLE_MASTER=y +# CONFIG_BTDM_CTRL_PCM_ROLE_SLAVE is not set +CONFIG_BTDM_CTRL_PCM_POLAR_FALLING_EDGE=y +# CONFIG_BTDM_CTRL_PCM_POLAR_RISING_EDGE is not set +CONFIG_BTDM_CTRL_PCM_ROLE_EFF=0 +CONFIG_BTDM_CTRL_PCM_POLAR_EFF=0 +CONFIG_BTDM_CTRL_LEGACY_AUTH_VENDOR_EVT=y +CONFIG_BTDM_CTRL_LEGACY_AUTH_VENDOR_EVT_EFF=y +CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=2 +CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CTRL_PINNED_TO_CORE_0=y +# CONFIG_BTDM_CTRL_PINNED_TO_CORE_1 is not set +CONFIG_BTDM_CTRL_PINNED_TO_CORE=0 +CONFIG_BTDM_CTRL_HCI_MODE_VHCI=y +# CONFIG_BTDM_CTRL_HCI_MODE_UART_H4 is not set + +# +# MODEM SLEEP Options +# +CONFIG_BTDM_CTRL_MODEM_SLEEP=y +CONFIG_BTDM_CTRL_MODEM_SLEEP_MODE_ORIG=y +# CONFIG_BTDM_CTRL_MODEM_SLEEP_MODE_EVED is not set +CONFIG_BTDM_CTRL_LPCLK_SEL_MAIN_XTAL=y +# end of MODEM SLEEP Options + +CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF=1 +CONFIG_BTDM_RESERVE_DRAM=0xdb5c +CONFIG_BTDM_CTRL_HLI=y +# end of Bluetooth controller + +CONFIG_BT_BLUEDROID_ENABLED=y +# CONFIG_BT_NIMBLE_ENABLED is not set +# CONFIG_BT_CONTROLLER_ONLY is not set + +# +# Bluedroid Options +# +CONFIG_BT_BTC_TASK_STACK_SIZE=3072 +CONFIG_BT_BLUEDROID_PINNED_TO_CORE_0=y +# CONFIG_BT_BLUEDROID_PINNED_TO_CORE_1 is not set +CONFIG_BT_BLUEDROID_PINNED_TO_CORE=0 +CONFIG_BT_BTU_TASK_STACK_SIZE=4096 +# CONFIG_BT_BLUEDROID_MEM_DEBUG is not set +CONFIG_BT_CLASSIC_ENABLED=y +CONFIG_BT_A2DP_ENABLE=y +CONFIG_BT_SPP_ENABLED=y +# CONFIG_BT_HFP_ENABLE is not set +# CONFIG_BT_HID_ENABLED is not set +CONFIG_BT_SSP_ENABLED=y +# CONFIG_BT_BLE_ENABLED is not set +# CONFIG_BT_STACK_NO_LOG is not set + +# +# BT DEBUG LOG LEVEL +# +# CONFIG_BT_LOG_HCI_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_HCI_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_HCI_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_HCI_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_HCI_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_HCI_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_HCI_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_HCI_TRACE_LEVEL=2 +# CONFIG_BT_LOG_BTM_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_BTM_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_BTM_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_BTM_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_BTM_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_BTM_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_BTM_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_BTM_TRACE_LEVEL=2 +# CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_L2CAP_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_L2CAP_TRACE_LEVEL=2 +# CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_RFCOMM_TRACE_LEVEL=2 +# CONFIG_BT_LOG_SDP_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_SDP_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_SDP_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_SDP_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_SDP_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_SDP_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_SDP_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_SDP_TRACE_LEVEL=2 +# CONFIG_BT_LOG_GAP_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_GAP_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_GAP_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_GAP_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_GAP_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_GAP_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_GAP_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_GAP_TRACE_LEVEL=2 +# CONFIG_BT_LOG_BNEP_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_BNEP_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_BNEP_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_BNEP_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_BNEP_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_BNEP_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_BNEP_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_BNEP_TRACE_LEVEL=2 +# CONFIG_BT_LOG_PAN_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_PAN_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_PAN_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_PAN_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_PAN_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_PAN_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_PAN_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_PAN_TRACE_LEVEL=2 +# CONFIG_BT_LOG_A2D_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_A2D_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_A2D_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_A2D_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_A2D_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_A2D_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_A2D_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_A2D_TRACE_LEVEL=2 +# CONFIG_BT_LOG_AVDT_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_AVDT_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_AVDT_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_AVDT_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_AVDT_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_AVDT_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_AVDT_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_AVDT_TRACE_LEVEL=2 +# CONFIG_BT_LOG_AVCT_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_AVCT_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_AVCT_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_AVCT_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_AVCT_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_AVCT_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_AVCT_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_AVCT_TRACE_LEVEL=2 +# CONFIG_BT_LOG_AVRC_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_AVRC_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_AVRC_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_AVRC_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_AVRC_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_AVRC_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_AVRC_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_AVRC_TRACE_LEVEL=2 +# CONFIG_BT_LOG_MCA_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_MCA_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_MCA_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_MCA_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_MCA_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_MCA_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_MCA_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_MCA_TRACE_LEVEL=2 +# CONFIG_BT_LOG_HID_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_HID_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_HID_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_HID_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_HID_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_HID_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_HID_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_HID_TRACE_LEVEL=2 +# CONFIG_BT_LOG_APPL_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_APPL_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_APPL_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_APPL_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_APPL_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_APPL_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_APPL_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_APPL_TRACE_LEVEL=2 +# CONFIG_BT_LOG_GATT_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_GATT_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_GATT_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_GATT_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_GATT_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_GATT_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_GATT_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_GATT_TRACE_LEVEL=2 +# CONFIG_BT_LOG_SMP_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_SMP_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_SMP_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_SMP_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_SMP_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_SMP_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_SMP_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_SMP_TRACE_LEVEL=2 +# CONFIG_BT_LOG_BTIF_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_BTIF_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_BTIF_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_BTIF_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_BTIF_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_BTIF_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_BTIF_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_BTIF_TRACE_LEVEL=2 +# CONFIG_BT_LOG_BTC_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_BTC_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_BTC_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_BTC_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_BTC_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_BTC_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_BTC_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_BTC_TRACE_LEVEL=2 +# CONFIG_BT_LOG_OSI_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_OSI_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_OSI_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_OSI_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_OSI_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_OSI_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_OSI_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_OSI_TRACE_LEVEL=2 +# CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_NONE is not set +# CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_ERROR is not set +CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_WARNING=y +# CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_API is not set +# CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_EVENT is not set +# CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_DEBUG is not set +# CONFIG_BT_LOG_BLUFI_TRACE_LEVEL_VERBOSE is not set +CONFIG_BT_LOG_BLUFI_TRACE_LEVEL=2 +# end of BT DEBUG LOG LEVEL + +CONFIG_BT_ACL_CONNECTIONS=4 +CONFIG_BT_MULTI_CONNECTION_ENBALE=y +# CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST is not set +# CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY is not set +# CONFIG_BT_BLE_HOST_QUEUE_CONG_CHECK is not set +CONFIG_BT_SMP_ENABLE=y +CONFIG_BT_BLE_ESTAB_LINK_CONN_TOUT=30 +CONFIG_BT_MAX_DEVICE_NAME_LEN=32 +# CONFIG_BT_BLE_RPA_SUPPORTED is not set +# end of Bluedroid Options +# end of Bluetooth + +# CONFIG_BLE_MESH is not set + +# +# Driver configurations +# + +# +# ADC configuration +# +# CONFIG_ADC_FORCE_XPD_FSM is not set +CONFIG_ADC_DISABLE_DAC=y +# end of ADC configuration + +# +# MCPWM configuration +# +# CONFIG_MCPWM_ISR_IN_IRAM is not set +# end of MCPWM configuration + +# +# SPI configuration +# +# 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 SPI configuration + +# +# TWAI configuration +# +# CONFIG_TWAI_ISR_IN_IRAM 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 +# end of TWAI configuration + +# +# UART configuration +# +# CONFIG_UART_ISR_IN_IRAM is not set +# end of UART configuration + +# +# GPIO Configuration +# +# CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set +# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set +# end of GPIO Configuration + +# +# GPTimer Configuration +# +# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set +# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set +# end of GPTimer Configuration + +# +# PCNT Configuration +# +# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_PCNT_ISR_IRAM_SAFE is not set +# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set +# end of PCNT Configuration + +# +# RMT Configuration +# +# CONFIG_RMT_ISR_IRAM_SAFE is not set +# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# end of RMT Configuration +# 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 is not set +# CONFIG_ESP_TLS_PSK_VERIFICATION is not set +# CONFIG_ESP_TLS_INSECURE is not set +# end of ESP-TLS + +# +# ESP32-specific +# +CONFIG_ESP32_DPORT_WORKAROUND=y +# CONFIG_ESP32_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_TRAX is not set +CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +# CONFIG_ESP32_XTAL_FREQ_26 is not set +# CONFIG_ESP32_XTAL_FREQ_AUTO is not set +CONFIG_ESP32_XTAL_FREQ=40 +# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set +# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set +CONFIG_ESP32_DPORT_DIS_INTERRUPT_LVL=5 +# end of ESP32-specific + +# +# ADC-Calibration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y +# end of ADC-Calibration + +# +# Common ESP-related +# +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y +# end of Common ESP-related + +# +# 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_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 +# +# end of GDB Stub + +# +# 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 +# end of ESP HTTP client + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +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 +# 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 +# end of ESP HTTPS OTA + +# +# ESP HTTPS server +# +# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set +# end of ESP HTTPS server + +# +# Hardware Settings +# + +# +# 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_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 +# end of MAC Config + +# +# Sleep Config +# +CONFIG_ESP_SLEEP_POWER_DOWN_FLASH=y +CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y +# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set +# CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND is not set +# 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_PERIPH_CTRL_FUNC_IN_IRAM is not set +# end of Peripheral Control + +CONFIG_ESP32_REV_MIN_0=y +# CONFIG_ESP32_REV_MIN_1 is not set +# CONFIG_ESP32_REV_MIN_2 is not set +# CONFIG_ESP32_REV_MIN_3 is not set +CONFIG_ESP32_REV_MIN=0 +# end of Hardware Settings + +# +# LCD and Touch Panel +# + +# +# LCD Peripheral Configuration +# +CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE=32 +# CONFIG_LCD_ENABLE_DEBUG_LOG is not set +# end of LCD Peripheral Configuration +# end of LCD and Touch Panel + +# +# ESP NETIF Adapter +# +CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 +CONFIG_ESP_NETIF_TCPIP_LWIP=y +# CONFIG_ESP_NETIF_LOOPBACK is not set +# CONFIG_ESP_NETIF_L2_TAP is not set +# end of ESP NETIF Adapter + +# +# PHY +# +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=y +# end of PHY + +# +# Power Management +# +# CONFIG_PM_ENABLE is not set +# end of Power Management + +# +# 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 +# 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_GDBSTUB_RUNTIME is not set + +# +# 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_MULTIPLE_UART=y +CONFIG_ESP_CONSOLE_UART_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=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=y + +# +# 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 +# end of Brownout Detector +# end of ESP System Settings + +# +# IPC (Inter-Processor Call) +# +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) + +# +# High resolution timer (esp_timer) +# +# 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_SUPPORTS_ISR_DISPATCH_METHOD is not set +CONFIG_ESP_TIMER_IMPL_TG0_LAC=y +# end of High resolution timer (esp_timer) + +# +# Wi-Fi +# +CONFIG_ESP32_WIFI_ENABLED=y +CONFIG_ESP32_WIFI_SW_COEXIST_ENABLE=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_ESP_WIFI_SLP_IRAM_OPT is not set +# CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set +# CONFIG_ESP_WIFI_GMAC_SUPPORT is not set +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y +# 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_SECTOR_512 is not set +# CONFIG_FATFS_SECTOR_1024 is not set +# CONFIG_FATFS_SECTOR_2048 is not set +CONFIG_FATFS_SECTOR_4096=y +CONFIG_FATFS_SECTORS_PER_CLUSTER_1=y +# CONFIG_FATFS_SECTORS_PER_CLUSTER_2 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_4 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_8 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_16 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_32 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_64 is not set +# CONFIG_FATFS_SECTORS_PER_CLUSTER_128 is not set +# 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_AUTO_TYPE=y +# CONFIG_FATFS_FAT12 is not set +# CONFIG_FATFS_FAT16 is not set +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +# CONFIG_FATFS_LFN_HEAP is not set +# CONFIG_FATFS_LFN_STACK is not set +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y +# CONFIG_FATFS_USE_FASTSEEK is not set +# 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_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_USE_TRACE_FACILITY is not set +# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +# end of Kernel + +# +# Port +# +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y +# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK 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_PLACE_SNAPSHOT_FUNS_INTO_FLASH is not set +# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +# end of Port + +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y +CONFIG_FREERTOS_DEBUG_OCDAWARE=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_SILIENT 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_ABORT_WHEN_ALLOCATION_FAILS is not set +# end of Heap memory debugging + +# +# Log output +# +# 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 +CONFIG_LOG_COLORS=y +CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y +# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set +# end of Log output + +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="espressif" +# CONFIG_LWIP_NETIF_API is not set +# CONFIG_LWIP_TCPIP_CORE_LOCKING 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_TIMERS_ONDEMAND=y +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_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_FORWARD is not set +# CONFIG_LWIP_STATS is not set +CONFIG_LWIP_ESP_GRATUITOUS_ARP=y +CONFIG_LWIP_GARP_TMR_INTERVAL=60 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +# 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=68 + +# +# DHCP server +# +CONFIG_LWIP_DHCPS=y +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +# end of DHCP server + +# CONFIG_LWIP_AUTOIP is not set +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_SND_BUF_DEFAULT=5744 +CONFIG_LWIP_TCP_WND_DEFAULT=5744 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# 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_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# 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 +# end of SNTP + +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_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_IP6_INPUT_NONE=y +# CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT is not set +# 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 +# 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_MAX_CERTS=200 +# end of Certificate Bundle + +# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set +# CONFIG_MBEDTLS_CMAC_C is not set +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_HARDWARE_MPI=y +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_SHA512_C=y +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_RC4_DISABLED=y +# CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT is not set +# CONFIG_MBEDTLS_RC4_ENABLED 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_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_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_LARGE_KEY_SOFTWARE_MPI is not set +# CONFIG_MBEDTLS_SECURITY_RISKS is not set +# end of mbedTLS + +# +# mDNS +# +CONFIG_MDNS_MAX_INTERFACES=3 +CONFIG_MDNS_MAX_SERVICES=10 +CONFIG_MDNS_TASK_PRIORITY=1 +CONFIG_MDNS_TASK_STACK_SIZE=4096 +# CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_MDNS_TASK_AFFINITY_CPU0=y +# CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set +CONFIG_MDNS_TASK_AFFINITY=0x0 +CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000 +# CONFIG_MDNS_STRICT_MODE is not set +CONFIG_MDNS_TIMER_PERIOD_MS=100 +# CONFIG_MDNS_NETWORKING_SOCKET is not set +CONFIG_MDNS_MULTIPLE_INSTANCE=y + +# +# MDNS Predefined interfaces +# +CONFIG_MDNS_PREDEF_NETIF_STA=y +CONFIG_MDNS_PREDEF_NETIF_AP=y +CONFIG_MDNS_PREDEF_NETIF_ETH=y +# end of MDNS Predefined interfaces +# end of mDNS + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +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 + +# +# Newlib +# +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_NEWLIB_TIME_SYSCALL_USE_RTC is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set +# end of Newlib + +# +# NVS +# +# end of NVS + +# +# OpenThread +# +# CONFIG_OPENTHREAD_ENABLED is not set +# end of OpenThread + +# +# 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 + +# +# 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_USE_LEGACY_IMPL 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_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 +# end of Websocket +# end of TCP Transport + +# +# Ultra Low Power (ULP) Co-processor +# +# CONFIG_ULP_COPROC_ENABLED is not set +# 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 +# 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_SUPPORT_TERMIOS=y + +# +# Host File System I/O (Semihosting) +# +CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# end of Host File System I/O (Semihosting) +# 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_BLE_BONDING=y +# end of Wi-Fi Provisioning Manager + +# +# Supplicant +# +CONFIG_WPA_MBEDTLS_CRYPTO=y +CONFIG_WPA_MBEDTLS_TLS_CLIENT=y +# CONFIG_WPA_WAPI_PSK is not set +# CONFIG_WPA_SUITE_B_192 is not set +# CONFIG_WPA_DEBUG_PRINT is not set +# CONFIG_WPA_TESTING_OPTIONS is not set +# CONFIG_WPA_WPS_STRICT 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 +# end of Supplicant +# end of Component config + +# Deprecated options for backward compatibility +# CONFIG_NO_BLOBS is not set +# CONFIG_ESP32_NO_BLOBS 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_APP_ROLLBACK_ENABLE is not set +# 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_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_DISABLE_GCC8_WARNINGS is not set +# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +# CONFIG_BTDM_CONTROLLER_MODE_BLE_ONLY is not set +CONFIG_BTDM_CONTROLLER_MODE_BR_EDR_ONLY=y +# CONFIG_BTDM_CONTROLLER_MODE_BTDM is not set +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN=2 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN=0 +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=2 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_BTDM_CONTROLLER_HCI_MODE_VHCI=y +# CONFIG_BTDM_CONTROLLER_HCI_MODE_UART_H4 is not set +CONFIG_BTDM_CONTROLLER_MODEM_SLEEP=y +CONFIG_BLUEDROID_ENABLED=y +# CONFIG_NIMBLE_ENABLED is not set +CONFIG_BTC_TASK_STACK_SIZE=3072 +CONFIG_BLUEDROID_PINNED_TO_CORE_0=y +# CONFIG_BLUEDROID_PINNED_TO_CORE_1 is not set +CONFIG_BLUEDROID_PINNED_TO_CORE=0 +CONFIG_BTU_TASK_STACK_SIZE=4096 +# CONFIG_BLUEDROID_MEM_DEBUG is not set +CONFIG_CLASSIC_BT_ENABLED=y +CONFIG_A2DP_ENABLE=y +# CONFIG_HFP_ENABLE is not set +# CONFIG_HCI_TRACE_LEVEL_NONE is not set +# CONFIG_HCI_TRACE_LEVEL_ERROR is not set +CONFIG_HCI_TRACE_LEVEL_WARNING=y +# CONFIG_HCI_TRACE_LEVEL_API is not set +# CONFIG_HCI_TRACE_LEVEL_EVENT is not set +# CONFIG_HCI_TRACE_LEVEL_DEBUG is not set +# CONFIG_HCI_TRACE_LEVEL_VERBOSE is not set +CONFIG_HCI_INITIAL_TRACE_LEVEL=2 +# CONFIG_BTM_TRACE_LEVEL_NONE is not set +# CONFIG_BTM_TRACE_LEVEL_ERROR is not set +CONFIG_BTM_TRACE_LEVEL_WARNING=y +# CONFIG_BTM_TRACE_LEVEL_API is not set +# CONFIG_BTM_TRACE_LEVEL_EVENT is not set +# CONFIG_BTM_TRACE_LEVEL_DEBUG is not set +# CONFIG_BTM_TRACE_LEVEL_VERBOSE is not set +CONFIG_BTM_INITIAL_TRACE_LEVEL=2 +# CONFIG_L2CAP_TRACE_LEVEL_NONE is not set +# CONFIG_L2CAP_TRACE_LEVEL_ERROR is not set +CONFIG_L2CAP_TRACE_LEVEL_WARNING=y +# CONFIG_L2CAP_TRACE_LEVEL_API is not set +# CONFIG_L2CAP_TRACE_LEVEL_EVENT is not set +# CONFIG_L2CAP_TRACE_LEVEL_DEBUG is not set +# CONFIG_L2CAP_TRACE_LEVEL_VERBOSE is not set +CONFIG_L2CAP_INITIAL_TRACE_LEVEL=2 +# CONFIG_RFCOMM_TRACE_LEVEL_NONE is not set +# CONFIG_RFCOMM_TRACE_LEVEL_ERROR is not set +CONFIG_RFCOMM_TRACE_LEVEL_WARNING=y +# CONFIG_RFCOMM_TRACE_LEVEL_API is not set +# CONFIG_RFCOMM_TRACE_LEVEL_EVENT is not set +# CONFIG_RFCOMM_TRACE_LEVEL_DEBUG is not set +# CONFIG_RFCOMM_TRACE_LEVEL_VERBOSE is not set +CONFIG_RFCOMM_INITIAL_TRACE_LEVEL=2 +# CONFIG_SDP_TRACE_LEVEL_NONE is not set +# CONFIG_SDP_TRACE_LEVEL_ERROR is not set +CONFIG_SDP_TRACE_LEVEL_WARNING=y +# CONFIG_SDP_TRACE_LEVEL_API is not set +# CONFIG_SDP_TRACE_LEVEL_EVENT is not set +# CONFIG_SDP_TRACE_LEVEL_DEBUG is not set +# CONFIG_SDP_TRACE_LEVEL_VERBOSE is not set +CONFIG_BTH_LOG_SDP_INITIAL_TRACE_LEVEL=2 +# CONFIG_GAP_TRACE_LEVEL_NONE is not set +# CONFIG_GAP_TRACE_LEVEL_ERROR is not set +CONFIG_GAP_TRACE_LEVEL_WARNING=y +# CONFIG_GAP_TRACE_LEVEL_API is not set +# CONFIG_GAP_TRACE_LEVEL_EVENT is not set +# CONFIG_GAP_TRACE_LEVEL_DEBUG is not set +# CONFIG_GAP_TRACE_LEVEL_VERBOSE is not set +CONFIG_GAP_INITIAL_TRACE_LEVEL=2 +CONFIG_BNEP_INITIAL_TRACE_LEVEL=2 +# CONFIG_PAN_TRACE_LEVEL_NONE is not set +# CONFIG_PAN_TRACE_LEVEL_ERROR is not set +CONFIG_PAN_TRACE_LEVEL_WARNING=y +# CONFIG_PAN_TRACE_LEVEL_API is not set +# CONFIG_PAN_TRACE_LEVEL_EVENT is not set +# CONFIG_PAN_TRACE_LEVEL_DEBUG is not set +# CONFIG_PAN_TRACE_LEVEL_VERBOSE is not set +CONFIG_PAN_INITIAL_TRACE_LEVEL=2 +# CONFIG_A2D_TRACE_LEVEL_NONE is not set +# CONFIG_A2D_TRACE_LEVEL_ERROR is not set +CONFIG_A2D_TRACE_LEVEL_WARNING=y +# CONFIG_A2D_TRACE_LEVEL_API is not set +# CONFIG_A2D_TRACE_LEVEL_EVENT is not set +# CONFIG_A2D_TRACE_LEVEL_DEBUG is not set +# CONFIG_A2D_TRACE_LEVEL_VERBOSE is not set +CONFIG_A2D_INITIAL_TRACE_LEVEL=2 +# CONFIG_AVDT_TRACE_LEVEL_NONE is not set +# CONFIG_AVDT_TRACE_LEVEL_ERROR is not set +CONFIG_AVDT_TRACE_LEVEL_WARNING=y +# CONFIG_AVDT_TRACE_LEVEL_API is not set +# CONFIG_AVDT_TRACE_LEVEL_EVENT is not set +# CONFIG_AVDT_TRACE_LEVEL_DEBUG is not set +# CONFIG_AVDT_TRACE_LEVEL_VERBOSE is not set +CONFIG_AVDT_INITIAL_TRACE_LEVEL=2 +# CONFIG_AVCT_TRACE_LEVEL_NONE is not set +# CONFIG_AVCT_TRACE_LEVEL_ERROR is not set +CONFIG_AVCT_TRACE_LEVEL_WARNING=y +# CONFIG_AVCT_TRACE_LEVEL_API is not set +# CONFIG_AVCT_TRACE_LEVEL_EVENT is not set +# CONFIG_AVCT_TRACE_LEVEL_DEBUG is not set +# CONFIG_AVCT_TRACE_LEVEL_VERBOSE is not set +CONFIG_AVCT_INITIAL_TRACE_LEVEL=2 +# CONFIG_AVRC_TRACE_LEVEL_NONE is not set +# CONFIG_AVRC_TRACE_LEVEL_ERROR is not set +CONFIG_AVRC_TRACE_LEVEL_WARNING=y +# CONFIG_AVRC_TRACE_LEVEL_API is not set +# CONFIG_AVRC_TRACE_LEVEL_EVENT is not set +# CONFIG_AVRC_TRACE_LEVEL_DEBUG is not set +# CONFIG_AVRC_TRACE_LEVEL_VERBOSE is not set +CONFIG_AVRC_INITIAL_TRACE_LEVEL=2 +# CONFIG_MCA_TRACE_LEVEL_NONE is not set +# CONFIG_MCA_TRACE_LEVEL_ERROR is not set +CONFIG_MCA_TRACE_LEVEL_WARNING=y +# CONFIG_MCA_TRACE_LEVEL_API is not set +# CONFIG_MCA_TRACE_LEVEL_EVENT is not set +# CONFIG_MCA_TRACE_LEVEL_DEBUG is not set +# CONFIG_MCA_TRACE_LEVEL_VERBOSE is not set +CONFIG_MCA_INITIAL_TRACE_LEVEL=2 +# CONFIG_HID_TRACE_LEVEL_NONE is not set +# CONFIG_HID_TRACE_LEVEL_ERROR is not set +CONFIG_HID_TRACE_LEVEL_WARNING=y +# CONFIG_HID_TRACE_LEVEL_API is not set +# CONFIG_HID_TRACE_LEVEL_EVENT is not set +# CONFIG_HID_TRACE_LEVEL_DEBUG is not set +# CONFIG_HID_TRACE_LEVEL_VERBOSE is not set +CONFIG_HID_INITIAL_TRACE_LEVEL=2 +# CONFIG_APPL_TRACE_LEVEL_NONE is not set +# CONFIG_APPL_TRACE_LEVEL_ERROR is not set +CONFIG_APPL_TRACE_LEVEL_WARNING=y +# CONFIG_APPL_TRACE_LEVEL_API is not set +# CONFIG_APPL_TRACE_LEVEL_EVENT is not set +# CONFIG_APPL_TRACE_LEVEL_DEBUG is not set +# CONFIG_APPL_TRACE_LEVEL_VERBOSE is not set +CONFIG_APPL_INITIAL_TRACE_LEVEL=2 +# CONFIG_GATT_TRACE_LEVEL_NONE is not set +# CONFIG_GATT_TRACE_LEVEL_ERROR is not set +CONFIG_GATT_TRACE_LEVEL_WARNING=y +# CONFIG_GATT_TRACE_LEVEL_API is not set +# CONFIG_GATT_TRACE_LEVEL_EVENT is not set +# CONFIG_GATT_TRACE_LEVEL_DEBUG is not set +# CONFIG_GATT_TRACE_LEVEL_VERBOSE is not set +CONFIG_GATT_INITIAL_TRACE_LEVEL=2 +# CONFIG_SMP_TRACE_LEVEL_NONE is not set +# CONFIG_SMP_TRACE_LEVEL_ERROR is not set +CONFIG_SMP_TRACE_LEVEL_WARNING=y +# CONFIG_SMP_TRACE_LEVEL_API is not set +# CONFIG_SMP_TRACE_LEVEL_EVENT is not set +# CONFIG_SMP_TRACE_LEVEL_DEBUG is not set +# CONFIG_SMP_TRACE_LEVEL_VERBOSE is not set +CONFIG_SMP_INITIAL_TRACE_LEVEL=2 +# CONFIG_BTIF_TRACE_LEVEL_NONE is not set +# CONFIG_BTIF_TRACE_LEVEL_ERROR is not set +CONFIG_BTIF_TRACE_LEVEL_WARNING=y +# CONFIG_BTIF_TRACE_LEVEL_API is not set +# CONFIG_BTIF_TRACE_LEVEL_EVENT is not set +# CONFIG_BTIF_TRACE_LEVEL_DEBUG is not set +# CONFIG_BTIF_TRACE_LEVEL_VERBOSE is not set +CONFIG_BTIF_INITIAL_TRACE_LEVEL=2 +# CONFIG_BTC_TRACE_LEVEL_NONE is not set +# CONFIG_BTC_TRACE_LEVEL_ERROR is not set +CONFIG_BTC_TRACE_LEVEL_WARNING=y +# CONFIG_BTC_TRACE_LEVEL_API is not set +# CONFIG_BTC_TRACE_LEVEL_EVENT is not set +# CONFIG_BTC_TRACE_LEVEL_DEBUG is not set +# CONFIG_BTC_TRACE_LEVEL_VERBOSE is not set +CONFIG_BTC_INITIAL_TRACE_LEVEL=2 +# CONFIG_OSI_TRACE_LEVEL_NONE is not set +# CONFIG_OSI_TRACE_LEVEL_ERROR is not set +CONFIG_OSI_TRACE_LEVEL_WARNING=y +# CONFIG_OSI_TRACE_LEVEL_API is not set +# CONFIG_OSI_TRACE_LEVEL_EVENT is not set +# CONFIG_OSI_TRACE_LEVEL_DEBUG is not set +# CONFIG_OSI_TRACE_LEVEL_VERBOSE is not set +CONFIG_OSI_INITIAL_TRACE_LEVEL=2 +# CONFIG_BLUFI_TRACE_LEVEL_NONE is not set +# CONFIG_BLUFI_TRACE_LEVEL_ERROR is not set +CONFIG_BLUFI_TRACE_LEVEL_WARNING=y +# CONFIG_BLUFI_TRACE_LEVEL_API is not set +# CONFIG_BLUFI_TRACE_LEVEL_EVENT is not set +# CONFIG_BLUFI_TRACE_LEVEL_DEBUG is not set +# CONFIG_BLUFI_TRACE_LEVEL_VERBOSE is not set +CONFIG_BLUFI_INITIAL_TRACE_LEVEL=2 +# CONFIG_BLE_HOST_QUEUE_CONGESTION_CHECK is not set +CONFIG_SMP_ENABLE=y +CONFIG_BLE_ESTABLISH_LINK_CONNECTION_TIMEOUT=30 +CONFIG_ADC2_DISABLE_DAC=y +# CONFIG_SPIRAM_SUPPORT is not set +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 +# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set +# CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_EVENT_LOOP_PROFILING is not set +CONFIG_POST_EVENTS_FROM_ISR=y +CONFIG_POST_EVENTS_FROM_IRAM_ISR=y +# 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=y +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_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=y +CONFIG_ESP32_REDUCE_PHY_TX_POWER=y +# 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_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_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_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_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_SW_COEXIST_ENABLE=y +# 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_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=5744 +CONFIG_TCP_WND_DEFAULT=5744 +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_ESP32_TIME_SYSCALL_USE_RTC_HRT=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_HRT is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 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/source.sh b/source.sh new file mode 100644 index 0000000..5e9223b --- /dev/null +++ b/source.sh @@ -0,0 +1,2 @@ +export IDF_TOOLS_PATH=$(dirname $(readlink -f $0))/tools +