From c247b38f7ba9d5a1952834aa2c90e08b9a897783 Mon Sep 17 00:00:00 2001 From: Jakob Gegeniger Date: Sun, 18 Oct 2026 16:26:44 +0200 Subject: [PATCH] changing app --- .vscode/c_cpp_properties.json | 8 +- .vscode/launch.json | 5 - .vscode/settings.json | 38 +- CMakeLists.txt | 1 + components/spit/src/spit_processor.cpp | 2 +- core | 2 +- dependencies.lock | 6 +- main/CMakeLists.txt | 2 +- main/config.hpp | 26 +- main/{watchMain.hpp => lighsMain.hpp} | 6 +- main/lightsMain.cpp | 651 +++++++++++++++ main/watchMain.cpp | 1027 ------------------------ sdkconfig | 1017 +++++++++++------------ sdkconfig.defaults | 38 +- 14 files changed, 1183 insertions(+), 1646 deletions(-) rename main/{watchMain.hpp => lighsMain.hpp} (89%) create mode 100644 main/lightsMain.cpp delete mode 100644 main/watchMain.cpp diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 4396ca2..d1be0d7 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -2,17 +2,15 @@ "configurations": [ { "name": "ESP-IDF", - "compileCommands": "/home/gustice/jobs/projects/Proj_Zwickau_waitingRoom/FW_X_WatchController/build/compile_commands.json", + "compilerPath": "C:\\Espressif\\tools\\xtensa-esp-elf\\esp-14.2.0_20250730\\xtensa-esp-elf\\bin\\xtensa-esp32-elf-gcc.exe", + "compileCommands": "${config:idf.buildPath}/compile_commands.json", + "intelliSenseMode": "gcc-x86", "includePath": [ - "${config:idf.espIdfPath}/components/**", - "${config:idf.espIdfPathWin}/components/**", "${workspaceFolder}/**", "${workspaceFolder}/core/**" ], "browse": { "path": [ - "${config:idf.espIdfPath}/components", - "${config:idf.espIdfPathWin}/components", "${workspaceFolder}", "${workspaceFolder}/core" ], diff --git a/.vscode/launch.json b/.vscode/launch.json index 2511a38..3694ae4 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -5,11 +5,6 @@ "type": "gdbtarget", "request": "attach", "name": "Eclipse CDT GDB Adapter" - }, - { - "type": "espidf", - "name": "Launch", - "request": "launch" } ] } \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 47cdca6..01c91b0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,16 +4,19 @@ "idf.customExtraVars": { "OPENOCD_SCRIPTS": "/home/gustice/tools/.espressif/tools/openocd-esp32/v0.12.0-esp32-20241016/openocd-esp32/share/openocd/scripts/", "IDF_CCACHE_ENABLE": "1", - "ESP_ROM_ELF_DIR": "/home/gustice/tools/.espressif/tools/esp-rom-elfs/20241011/" + "ESP_ROM_ELF_DIR": "/home/gustice/tools/.espressif/tools/esp-rom-elfs/20241011/", + "IDF_TARGET": "esp32" }, "idf.openOcdConfigs": [ - "board/esp32c6-builtin.cfg" + "interface/ftdi/esp_ftdi.cfg", + "target/esp32.cfg" + // "board/esp32-wrover-kit-3.3v.cfg" ], "idf.flashType": "UART", "C_Cpp.autoAddFileAssociations": false, "project.deviceIp": "172.16.17.56", "sonarlint.pathToCompileCommands": "${workspaceFolder}\\build\\compile_commands.json", - "idf.port": "/dev/ttyACM0", + "idf.portWin": "COM4", "cmake.showSystemKits": false, "cmake.defaultVariants": { "buildType": { @@ -33,12 +36,16 @@ } } }, - "clangd.path": "/home/gustice/.espressif/tools/esp-clang/esp-18.1.2_20240912/esp-clang/bin/clangd", + "clangd.path": "C:\\Espressif\\tools\\esp-clang\\esp-18.1.2_20240912\\esp-clang\\bin\\clangd.exe", "clangd.arguments": [ "--background-index", - "--query-driver=/home/gustice/.espressif/tools/riscv32-esp-elf/esp-14.2.0_20241119/riscv32-esp-elf/bin/riscv32-esp-elf-gcc", - "--compile-commands-dir=/home/gustice/jobs/projects/Proj_Zwickau_waitingRoom/FW_X_WatchController/build" + "--query-driver=**", + "--compile-commands-dir=c:\\Users\\Jakob\\hello_world\\build" ], + "cmake.configureOnOpen": false, + "cmake.configureOnEdit": false, + "cmake.automaticReconfigure": false, + "cmake.autoSelectActiveFolder": false, "cmake.debugConfig": { "setupCommands": [ { @@ -54,5 +61,22 @@ "text": "skip namespace std" } ] - } + }, + "cmake.options.advanced": { + "build": { + "statusBarVisibility": "inherit", + "inheritDefault": "hidden" + }, + "launch": { + "statusBarVisibility": "inherit", + "inheritDefault": "hidden" + }, + "debug": { + "statusBarVisibility": "inherit", + "inheritDefault": "hidden" + } + }, + + "idf.currentSetup": "C:\\esp\\v5.4.3\\esp-idf", + "idf.port": "COM4" } diff --git a/CMakeLists.txt b/CMakeLists.txt index 37be508..2270884 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,7 @@ else() else() set(EXTRA_COMPONENT_DIRS "core/components" + "core/components_extern" "core/managed_components" ) include($ENV{IDF_PATH}/tools/cmake/project.cmake) diff --git a/components/spit/src/spit_processor.cpp b/components/spit/src/spit_processor.cpp index 4a84537..c2ea248 100644 --- a/components/spit/src/spit_processor.cpp +++ b/components/spit/src/spit_processor.cpp @@ -159,7 +159,7 @@ int SProcessor::sendOvertakingMessage(int msgNumRec) { if (msgNum == msgNumNext) { msgNumRec = msgNum; - mInternCallbacks.parseMessage(*overtakingMessage); + parseMessage(*overtakingMessage); mOvertakingMessages.erase(it); it = mOvertakingMessages.begin(); } else { diff --git a/core b/core index 37e288c..e584259 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit 37e288c012fbe3e210201cb6cfe3503fc259f299 +Subproject commit e584259b318da9775d54d511bbf151e570324247 diff --git a/dependencies.lock b/dependencies.lock index 0bbff7d..545989d 100644 --- a/dependencies.lock +++ b/dependencies.lock @@ -12,10 +12,10 @@ dependencies: idf: source: type: idf - version: 5.4.1 + version: 5.4.3 direct_dependencies: - frozen-eye/esp_telnet - idf -manifest_hash: 8e2a908d16408b9cafcd4c4b109b841acfca6e660d2500fc6d1362f0f143376c -target: esp32c6 +manifest_hash: f3dbb2beffe19f6e4fa3818b79ea2bfac679eaaf47effee78f152007a2be54f5 +target: esp32 version: 2.0.0 diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 4e794bc..286959e 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -1,2 +1,2 @@ -idf_component_register(SRCS "watchMain.cpp" +idf_component_register(SRCS "lightsMain.cpp" INCLUDE_DIRS ".") diff --git a/main/config.hpp b/main/config.hpp index 3758f38..a2f3ce7 100644 --- a/main/config.hpp +++ b/main/config.hpp @@ -13,36 +13,18 @@ struct { // MQTT Topics struct { // Subscriptions: - const char *moveTo = /* / */ "watch/moveTo"; - const char *startShuffle = /* / */ "watch/startShuffle"; + const char *startShow = /* / */ "elixirLights/startShow"; // Publishes: - const char *inPosition = /* / */ "watch/inPosition"; - const char *changingPosition = /* / */ "watch/changingPosition"; + const char *showDone = /* / */ "elixirLights/showDone"; } MqttTopics; struct { const char *expectedServer = ""; struct { const char *group = "CatasWatchMovement"; - const char *startShuffle = "ActionStartShuffle"; - const char *moveToX[6] = { - "ActionMoveTo1", - "ActionMoveTo2", - "ActionMoveTo3", - "ActionMoveTo4", - "ActionMoveTo5", - "ActionMoveTo6", - }; + const char *startShow = "StartShow"; } Provided; struct { - const char *changingPos = "ChangingPositionScene"; - const char *inPosX[6] = { - "InPosition1Scene", - "InPosition2Scene", - "InPosition3Scene", - "InPosition4Scene", - "InPosition5Scene", - "InPosition6Scene", - }; + const char *showDone = "ShowDone"; } Expected; } SpitTypes; \ No newline at end of file diff --git a/main/watchMain.hpp b/main/lighsMain.hpp similarity index 89% rename from main/watchMain.hpp rename to main/lighsMain.hpp index 3d905ae..2d7f4ce 100644 --- a/main/watchMain.hpp +++ b/main/lighsMain.hpp @@ -17,15 +17,12 @@ #include "esp_wifi.h" #include "nvs_flash.h" #include "esp_private/wifi.h" -#include "ethernet_init.h" +#include "ethernet.hpp" #include "esp_netif.h" #include "esp_eth.h" // Component header #include "Task.hpp" -#include "pwmExpanderPca9685.hpp" -#include "stepperDrv.hpp" -#include "stepperMotor.hpp" #include "cliWrapper.hpp" #include "udpSockets.hpp" #include "tcpSockets.hpp" @@ -49,3 +46,4 @@ #include #include #include +#include diff --git a/main/lightsMain.cpp b/main/lightsMain.cpp new file mode 100644 index 0000000..6195887 --- /dev/null +++ b/main/lightsMain.cpp @@ -0,0 +1,651 @@ +/** + * @author Gustice + * @brief ChaosWatch Application + */ + +// using Elite2D-EXMU +// Gledopto Series With Ethernet +// { // 13 +// 1, // eth_address, +// 5, // eth_power, +// 23, // eth_mdc, +// 33, // eth_mdio, +// ETH_PHY_LAN8720, // eth_type, +// ETH_CLOCK_GPIO0_IN // eth_clk_mode as input +// }, + +#include "config.hpp" +#include "lighsMain.hpp" + +using namespace spit; +using namespace std; + +string ClientName = "LeoLightsDev"; +string ProjectName = "LeoLightsProj"; + +extern "C" { // This switch allows the ROS C-implementation to find this main +void app_main(void); +} + +struct DeviceState { + Color color{0x80, 0x80, 0x80}; + vector counts; + vector times; +}; +struct StartCommand { + uint8_t pos; // 0 for none / Valid indexes 1 .. 6 +}; +static fos::Queue commandQ(2); + +DeviceState State; +static const char* TAG = "Light"; + +unique_ptr pShell; + +void onCommand(string name, Cli::CArgs args) { + ESP_LOGI(TAG, "Invoking: %s", name.c_str()); +} + +void startUpdate(Cli::CArgs args) { + ESP_LOGI(TAG, "Invoking Update"); + if (args.size() != 1) { + pShell->writeLine("Need URL to application"); + return; + } + // @ToDo: Start Update here +} + +void getConfig(Cli::CArgs args) { + if (args.size() != 1) { + pShell->writeLine("Needs string key for query"); + return; + } + auto key = args[0]; + auto& store = NvsApi::getInstance(); + auto val = store.getValue(key); + pShell->writeLine(key + ": " + val + ""); +} + +void setConfig(Cli::CArgs args) { + if (args.size() != 2) { + pShell->writeLine("Needs string key and value"); + return; + } + auto key = args[0]; + auto val = args[1]; + + auto& store = NvsApi::getInstance(); + pShell->writeLine(string{"Storing value = '"} + val + "'"); + store.setValue(key, val); +} + +void setLogServerConfig(Cli::CArgs args) { + ESP_LOGI(TAG, "on showLogServerConfig:"); + auto& store = NvsApi::getInstance(); + if (args.size() != 1) { + auto logger = store.getValue("syslogDst"); + pShell->writeLine(string{"syslog destination = '"} + logger + "'"); + pShell->writeLine("provide argument to change syslog server"); + return; + } + pShell->writeLine(string{"setting syslog destination to = '"} + args[0] + "'"); + store.setValue("syslogDst", args[0]); +} + +void testLights(Cli::CArgs args) { + ESP_LOGI(TAG, "on testLights:"); + commandQ.enqueue(make_unique()); +} + +void showProcessValues(Cli::CArgs args) { + pShell->writeLine("Process values:"); + char buff[256]; + + sprintf(buff, "%02x,%02x,%02x", State.color.getRed(), State.color.getGreen(), State.color.getBlue()); + std::stringstream ssC; + for (auto& c : State.counts) { + ssC << string{c} << ","; + } + std::stringstream ssT; + for (auto& t : State.times) { + ssT << string{t} << ","; + } + pShell->writeLine(string{" Color RGB: "} + buff); + pShell->writeLine(string{" LED-Counts: "} + ssC.str()); + pShell->writeLine(string{" Switch-Times: "} + ssT.str()); +} + +void setSyslogLevel(Cli::CArgs args) { + if (args.size() != 1) { + pShell->writeLine("Needs SyslogLevel Warning = 4, Notice = 5, Informational = 6, Debug = 7"); + return; + } + + try { + auto lvl = stoi(args[0]); + if (lvl >= (int)Syslog::Severity::Warning && lvl <= (int)Syslog::Severity::Debug) { + Syslog::setSeverity((Syslog::Severity)lvl); + } else { + pShell->writeLine("New level was not accepted"); + } + } catch (const exception& e) { + ESP_LOGI(TAG, "Failed to parse %s", args[0].c_str()); + } +} + +/** + * @brief Telnet socket via TCP/IP + * + * @details The ini-file for TeraTerm only changes CRReceive and CRSend values both to "=CR" + * @param arg ignored task argument + */ +static void telnetSocketTask(int addrFamily) { + ESP_LOGI(TAG, "Starting Telnet task"); + try { + TelnetServer telnet(addrFamily); + telnet.run( + [](TcpSession& session) { + pShell = make_unique(session, [](string n, Cli::CArgs a) { onCommand(n, a); }); + pShell->addBinding( + {"update", "Start OTA-Update-Process", + [](Cli::CArgs a) { startUpdate(a); }}); + pShell->addBinding( + {"setLogserver", "Set log server config ip", + [](Cli::CArgs a) { setLogServerConfig(a); }}); + pShell->addBinding( + {"setLogLevel", "Set severity log server", + [](Cli::CArgs a) { setSyslogLevel(a); }}); + + pShell->addBinding( + {"getcfg", "Get configuration value for key", + [](Cli::CArgs a) { getConfig(a); }}); + pShell->addBinding( + {"setcfg", "Set configuration value by key and value", + [](Cli::CArgs a) { setConfig(a); }}); + + pShell->addBinding( + {"setDyn", "set dynamics of movement (velocity,accelerations) as floats", + [](Cli::CArgs a) { testLights(a); }}); + pShell->addBinding( + {"showData", "Show process values that are input by DMX, MQTT and SPIT", + [](Cli::CArgs a) { showProcessValues(a); }}); + }, + [](TcpSession& session) { + pShell->process(); + Syslog::setupTask(session.getOther()); + }); + } catch (const exception& e) { + ESP_LOGE("TCP", "%s", e.what()); + } + vTaskDelete(NULL); +} + +void startShow(string data) { + ESP_LOGI(TAG, "StartShuffle command %s", data.c_str()); + try { + Syslog::logv(Syslog::Severity::Informational, "got Shuffle-Command"); + commandQ.enqueue(make_unique()); + } catch (const exception& e) { + ESP_LOGE(TAG, "Error to process data %s, with ex: %s", data.c_str(), e.what()); + } +} + +/** + * @brief DMX-Socket for ArtNet TCP/IP + * + * @details Tested with [Q Light Controller+](https://www.qlcplus.org/) + * @param args ignored task argument + */ +static void dmxSocketSenderTask(UdpSocket& socket) { + try { + ArtnetSender artnet(socket); + array data; + while (socket.isActive()) { + data[0]++; + artnet.send("", 0, data.data(), data.size()); + fos::Task::delayMs(500); + } + + } catch (const exception& e) { + ESP_LOGE("UDP", "%s", e.what()); + } +} + +fos::Semaphore etherActive; +fos::Semaphore spitProjectFinish; + +/** Event handler for IP_EVENT_ETH_GOT_IP */ +void got_ip_event_handler(void* arg, esp_event_base_t event_base, + int32_t event_id, void* event_data) { + ip_event_got_ip_t* event = (ip_event_got_ip_t*)event_data; + const esp_netif_ip_info_t* ip_info = &event->ip_info; + + ESP_LOGI(TAG, "Ethernet Got IP Address"); + ESP_LOGI(TAG, "~~~~~~~~~~~"); + ESP_LOGI(TAG, "ETHIP:" IPSTR, IP2STR(&ip_info->ip)); + ESP_LOGI(TAG, "ETHMASK:" IPSTR, IP2STR(&ip_info->netmask)); + ESP_LOGI(TAG, "ETHGW:" IPSTR, IP2STR(&ip_info->gw)); + ESP_LOGI(TAG, "~~~~~~~~~~~"); + etherActive.give(); +} + +static void initialize_ethernet(void) { + uint8_t eth_port_cnt = 0; + esp_eth_handle_t* eth_handles; + ESP_ERROR_CHECK(eth_init(ð_handles, ð_port_cnt)); + if (eth_port_cnt > 1) { + ESP_LOGW(TAG, "multiple Ethernet devices detected, the first initialized is to be used!"); + } + + static esp_eth_handle_t s_eth_handle = NULL; + s_eth_handle = eth_handles[0]; + free(eth_handles); + + // Initialize TCP/IP network interface aka the esp-netif (should be called only once in application) + ESP_ERROR_CHECK(esp_netif_init()); + // Create default event loop that running in background + ESP_ERROR_CHECK(esp_event_loop_create_default()); + + // Use ESP_NETIF_DEFAULT_ETH when just one Ethernet interface is used and you don't need to modify + // default esp-netif configuration parameters. + esp_netif_config_t cfg = ESP_NETIF_DEFAULT_ETH(); + esp_netif_t* eth_netif = esp_netif_new(&cfg); + // Attach Ethernet driver to TCP/IP stack + ESP_ERROR_CHECK(esp_netif_attach(eth_netif, esp_eth_new_netif_glue(s_eth_handle))); + + ESP_ERROR_CHECK(esp_event_handler_register(ETH_EVENT, ESP_EVENT_ANY_ID, eth_event_handler, NULL)); + ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_ETH_GOT_IP, &got_ip_event_handler, NULL)); + ESP_ERROR_CHECK(esp_eth_start(s_eth_handle)); +} + +namespace Effect { +extern const WaveForm_t OffsetPulseWave{gau8_offsetPulse, cu16_TemplateLength}; +extern const WaveForm_t InitSlopeWave{gau8_initSlope, cu16_TemplateLength}; +extern const WaveForm_t OffsetSlopeWave{gau8_offsetSlope, cu16_TemplateLength}; +extern const WaveForm_t FullSlopeWave{gau8_fullSlope, cu16_TemplateLength}; +extern const WaveForm_t FullPulseWave{gau8_fullPulse, cu16_TemplateLength}; + +const Macro macDemoStart = { + {64, 1, &InitSlopeWave, StateMachine::UpdateWave, 0xFF}, + {32, 1, StateMachine::UpdateIdle, 0xFF}, +}; + +const Macro macDemoPulse = { + {64, 1, &InitSlopeWave, StateMachine::UpdateWave, 0xFF}, + {32, 2, StateMachine::UpdateIdle, 0xFF}, + {64, 1, &OffsetPulseWave, StateMachine::UpdateWave, 0xFF}, +}; + +const Macro macDemoFlicker = { + {16, 1, &InitSlopeWave, StateMachine::UpdateWave, 0xFF}, + {32, 1, StateMachine::UpdateFlicker, 0xFF}, +}; +} // namespace Effect + +void LightingTask() { + ESP_LOGI(TAG, "Start Lighting"); + auto const& colorSource = State.color; + array processors{ + Effect::EffectProcessor(8), + Effect::EffectProcessor(8)}; + processors[0].setEffect(Effect::macDark, &colorSource, 0); + processors[1].setEffect(Effect::macDark, &colorSource, 0); + + const array PictoEffects{ + Effect::macDemoPulse, + Effect::macDemoPulse}; + + while (true) { + // ESP_LOGI(TAG, "Current color set r%i g%i b%i ", + // State.color.getRed(), State.color.getGreen(), State.color.getBlue()); + // processors[0].setEffect(Effect::macDark, &colorSource, 0); + // auto idx = 0; + // Syslog::logv(Syslog::Severity::Informational, "Running show"); + // processors[idx].setEffect(PictoEffects[idx], &colorSource, 0); + + // for (size_t i = 0; i < processors.size(); i++) { + // auto col = processors[i].tick(); + // } + // fos::Task::delayMs(40); + static int cnt{}; + fos::Task::delayMs(1000); + printf("running %d\n", cnt++); + } +} + +struct LocalSpitObj { + string iD; + string groupName; + string name; +}; +map ProvidedSpitActions; +map ExpectedObjects; + +void onServerEvent(SClient::ServerEvent event, const SadDetectedServer& p_DetectedServer) { + switch (event) { + case SClient::ServerEvent::Detect: + ESP_LOGI(TAG, "SERVER DETECTED"); + ESP_LOGI(TAG, " Name: %s", p_DetectedServer.getName().data()); + ESP_LOGI(TAG, " ID: %s", p_DetectedServer.getID().data()); + ESP_LOGI(TAG, " Computer: %s", p_DetectedServer.getComputerName().data()); + ESP_LOGI(TAG, " IP: %s", p_DetectedServer.getIP().data()); + ESP_LOGI(TAG, " Port: %s", p_DetectedServer.getPort().data()); + ESP_LOGI(TAG, " Addition: %s", p_DetectedServer.getAdditions().data()); + ESP_LOGI(TAG, " ClientIP: %s", p_DetectedServer.getClientIP().data()); + break; + case SClient::ServerEvent::Lost: + ESP_LOGW(TAG, "Server lost Name: %s IP: %s", p_DetectedServer.getName().data(), p_DetectedServer.getIP().data()); + + break; + case SClient::ServerEvent::Changed: + ESP_LOGW(TAG, "Server lost Name: %s IP: %s", p_DetectedServer.getName().data(), p_DetectedServer.getIP().data()); + break; + + default: + break; + } +} + +void onConnectionStatus(string p_ServerID, string p_ServerComputerName, string p_ServerName, int p_ServerStepTime, + SClient::Connection p_ConnectionStatus, SClient::Connection p_OldConnectionStatus) { + ESP_LOGI(TAG, "MySPITApp: eventConnectionStatus %d->%d ", (int)p_OldConnectionStatus, (int)p_ConnectionStatus); +} + +// The transfer of the server's SPITTypes and SPITObjects is finished. +void onProjectUpdate(SClient::ProjUpdate state, string projectId) { + switch (state) { + case SClient::ProjUpdate::ServerLoaded: + ESP_LOGI(TAG, "eventProjectReport ID: %s ", projectId.data()); + break; + case SClient::ProjUpdate::StartTransfer: + ESP_LOGI(TAG, "eventStartProjectTransfer"); + break; + case SClient::ProjUpdate::EndTransfer: + ESP_LOGI(TAG, "eventEndProjectTransfer"); + spitProjectFinish.give(); + break; + case SClient::ProjUpdate::ServerClosed: + ESP_LOGI(TAG, "eventProjectClosed ID: %s", projectId.data()); + // If we don't save SPITServer's project specific information + // perhaps close all SPITObjects and RemoteSPITObjects to avoid conflicts, when the SPITServer loads a new project + // SPITObject::clearSPITObjects(); + // SPITObject::clearSPITObjectsRemote(); + break; + + default: + break; + } +} + +bool onCheckSpitTypeVeto(bool knownType, bool createdByClient) { + return true; // Bypass veto + if (!knownType || !createdByClient) { // Don't allow foreign SPITTypes + return false; + } + return true; +} + +bool onCheckSpitObjectVeto(bool knownType) { + return true; // Bypass veto + if (!knownType) { // Don't allow objects of unregistered SPITTypes + return false; + } + + return true; +} + +// Called when the server has created, loaded, changed or deleted a (Remote) SPITType. +// Remote SPITType are used in Remote SPITObjects. A Remote SPITObject is used to remote control the SPITServer. +// May also occur when the server confirms a SPITType created or changed by the client. +void onSpitType(SClient::ObjectEvent event, bool isRemote, const SType& sType) { + if (isRemote) { + if (event == SClient::ObjectEvent::Created) { + ESP_LOGI(TAG, "NEW SPIT-REMOTE-Type ID: %s GroupName: %s Name: %s confirmed: %d", sType.getID().data(), sType.GroupName.get().data(), sType.Name.get().data(), sType.getConfirmed()); + auto typeName = sType.Name.get(); + if (ExpectedObjects.contains(typeName)) { + ExpectedObjects[typeName] = sType.getID(); + } + } else if (event == SClient::ObjectEvent::Changed) { + // we had to inform all Remote SPITObjects using the p_SPITType + // perhaps the SPITObject uses information from the SPITType + // SPITObject *ptrSPITObject; + // int intSPITObjectCount; + // intSPITObjectCount = SPITObject::getSPITObjectRemoteCount(); + // for (int intObject = 0; intObject < intSPITObjectCount; intObject++) { + // ptrSPITObject = SPITObject::getSPITObjectRemote(intObject); + // if (ptrSPITObject == nullptr) + // continue; + // if (ptrSPITObject->getSPITTypeID() == p_SPITType.getID()) { + // // call ecentSPITObjectRemote + // // onSpitObjectRemote(SClient::ObjectEvent::Changed, p_SPITType, *ptrSPITObject); + // } + // } + // ESP_LOGI(TAG, "SPIT-REMOTE-Type CHANGED ID: %s GroupName: %s Name: %s confirmed: %d", sType.getID().data(), sType.GroupName.get().data(), sType.Name.get().data(), sType.getConfirmed()); + } else if (event == SClient::ObjectEvent::Deleted) { + ESP_LOGD(TAG, "SPIT-REMOTE-Type Removed ID: %s GroupName: %s Name: %s\n", sType.getID().data(), sType.GroupName.get().data(), sType.Name.get().data()); + } + } else { + if (event == SClient::ObjectEvent::Created) { + // Whenever you provide an action for this SPITType take this over in your code. + // call _SpitClient.setActionSPITType(sType.getID(), true); + // ESP_LOGI(TAG, "NEW SPIT-Type ID: %s GroupName: %s Name: %s confirmed: %d", sType.getID().data(), sType.GroupName.get().data(), sType.Name.get().data(), sType.getConfirmed()); + } else if (event == SClient::ObjectEvent::Changed) { + // ESP_LOGI(TAG, "SPIT-Type CHANGED ID: %s GroupName: %s Name: %s confirmed: %d", sType.getID().data(), sType.GroupName.get().data(), sType.Name.get().data(), sType.getConfirmed()); + } else if (event == SClient::ObjectEvent::Deleted) { + // ESP_LOGI(TAG, "SPIT-Type Removed ID: %s GroupName: %s Name: %s\n", sType.getID().data(), sType.GroupName.get().data(), sType.Name.get().data()); + } + } +} + +// Called when the server has created, loaded or changed a SPITObject. +// A Remote SPITObject is used to remote control the SPITServer. +// May also occur when the server confirms a SPITObject created by the client, what the client should never do!!. +// false = server changed a existing SPITObject +// @param p_SPITType a reference to a copy of the associated SPITType instance. +// @param p_SPITObject a reference to a copy of the SPITObject instance. +void onSpitObject(SClient::ObjectEvent event, bool isRemote, const SType& sType, const SObject& sObject) { + if (isRemote) { + if (event == SClient::ObjectEvent::Created) { + // ESP_LOGI(TAG, "NEW SPIT-REMOTE-Object ID: %s Name: %s -> SPITType: %s", sObject.getID().data(), sObject.Name.get().data(), sType.Name.get().data()); + // This is a remote SPITObject which can be used to remote control the server. + // If you want you can list this for later use + } else if (event == SClient::ObjectEvent::Changed) { + // ESP_LOGI(TAG, "SPIT-REMOTE-Object CHANGED ID: %s Name: %s -> SPITType: %s", sObject.getID().data(), sObject.Name.get().data(), sType.Name.get().data()); + } else if (event == SClient::ObjectEvent::Deleted) { + ESP_LOGD(TAG, "SPIT-REMOTE-Object Removed ID: %s Name: %s\n", sObject.getID().data(), sObject.Name.get().data()); + // This is a remote SPITObject + // If you have listet this prior you should remove it from the list + } + } else { + if (event == SClient::ObjectEvent::Created) { + // ESP_LOGI(TAG, "NEW SPIT-Object ID: %s Name: %s -> SPITType: %s", sObject.getID().data(), sObject.Name.get().data(), sType.Name.get().data()); + // check your actions + // Whenever you provide an action for this SPITObject take this over in your code. + // call _SpitClient.setActionSPITObject(sObject.getID(), true); + + // for our little excample as described in loadClientProject: + // We have only actions for SPITTypes - means every SPITObject with the associated "Actionx"-SPITTypes will trigger the action when it is played + //-> no need to do something here, because setActionSPITType has been set prior and the SPITObject will automatically inherits this + // SPITObjects with other SPITTypes asscciated will trigger no actions + + } else if (event == SClient::ObjectEvent::Changed) { + // ESP_LOGI(TAG, "SPIT-Object CHANGED ID: %s Name: %s -> SPITType: %s", sObject.getID().data(), sObject.Name.get().data(), sType.Name.get().data()); + } else if (event == SClient::ObjectEvent::Deleted) { + ESP_LOGD(TAG, "SPIT-Object Removed ID: %s Name: %s\n", sObject.getID().data(), sObject.Name.get().data()); + // Check your actions + // take the removal of the SPITObject over in your code + + // CAUTION: Deleted SPITObjects can be added later again (perhaps per UNDO on the SPITServer) + //-> don't remove your assigned action immediately - keep it to reassign it later + } + } +} + +// SPITServer may use several methods for playing SPITObjects. +// e.g. liveSHOWsoftware has the timeline and jingles which plays objects, where the timeline the main player is. +// SPIT distinguishes between the different players. All eventPlay... functions contain the information which player plays the SPIT object. +void onPlay(string p_PlayerID, string p_PlayerName, char p_PlayerType, bool p_PlayerIsRunning, uint64_t p_TimeFrames) { + ESP_LOGD(TAG, "eventPlay Player: %s Runs: %d Time: %lld", p_PlayerName.data(), p_PlayerIsRunning, p_TimeFrames); + + switch (p_PlayerType) { + case SClient::PlayerType::PTYPE_MAIN: + // p_FrameTimes contains the position inside the server's project, we can use it like a timecode + // int intMilliseconds = (int)(((double)p_TimeFrames / (double)m_ServerFramesPerSecond) * 1000); + break; + case SClient::PlayerType::PTYPE_CONTINOUS: + // The olayer is playing only single Object sequences sometime during the project + break; + case SClient::PlayerType::PTYPE_DISCRETE: + // Only discrete values where submitted, e.g the fader position of remote faders. + break; + } +} + +void onPlaySpitType(string p_PlayerID, string spitTypeId, bool p_PlayerIsRunning, bool p_Started, bool p_Ended, double p_Value) { + // double doubleValue = ((double)p_PlayObject.getValue() / 1000000) * ((double)p_PlayObject.getValueFactor() / 1000000); + ESP_LOGD(TAG, "eventPlayObject Player: %s is running: %d Object Started: %d Stopped: %d", p_PlayerID.data(), p_PlayerIsRunning, p_Started, p_Ended); + // ESP_LOGD(TAG, " SPITType: %s SPITObject: %s Position: %lld Value: %f\n", spitTypeId.data(), p_SPITObject.getName().data(), p_PlayObject.getFrameInside(), doubleValue); + ESP_LOGD(TAG, " SPITType: %s Value: %f\n", spitTypeId.data(), p_Value); + + if (!ProvidedSpitActions.contains(spitTypeId)) { + ESP_LOGE(TAG, "SPIT ID %s is not accepted", spitTypeId.c_str()); + return; + } + if (p_Started == true) { + auto command = ProvidedSpitActions[spitTypeId]; + // ESP_LOGI(TAG, "Player: %s is running: %s Object", p_PlayerID.data(), spitTypeId.c_str()); + commandQ.enqueue(make_unique()); + Syslog::logv(Syslog::Severity::Informational, "Got SPIT command for move ot : r%d", command.pos); + } +} + +/** + * Called when a remote SpitObject which value function is changed by the server. + * This allows the Client to adjust its display for the remote command. + * @param p_SPITType the assigned remote SPITType of p_SPITObject + * @param p_SPITObject the remote SPITObject which is changed + * @param p_FrameInsideObject can be discarded + * @param p_Value the new value + */ +void onPlayRemoteObjectStatus(const SType& sType, const SObject& sObject, uint64_t frameInsideObject, int value) { + ESP_EARLY_LOGD(TAG, "eventPlayRemoteObjectStatus RemoteSPITType: %s RemoteSPITObject: %s Position: %lld Value: %d", sType.Name.get().data(), sObject.Name.get().data(), frameInsideObject, value); +} + +// void SpitClientApp() { +// ESP_LOGI(TAG, "Starting SPIT task"); + +// auto& provided = SpitTypes.Provided; +// auto& expected = SpitTypes.Expected; +// vector ProvidedObj; +// ProvidedSpitActions[provided.startShuffle] = MoveCommand{.type = MoveType::Shuffle, .pos = 0}; +// ProvidedObj.push_back(LocalSpitObj{.iD = provided.startShuffle, .groupName = provided.group, .name = provided.startShuffle}); +// ExpectedObjects[expected.changingPos] = ""; +// for (size_t i = 0; i < 6; i++) { +// ProvidedSpitActions[provided.moveToX[i]] = MoveCommand{.type = MoveType::StepTo, .pos = (uint8_t)(i + 1)}; +// ProvidedObj.push_back(LocalSpitObj{.iD = provided.moveToX[i], .groupName = provided.group, .name = provided.moveToX[i]}); +// ExpectedObjects[expected.inPosX[i]] = ""; +// } + +// auto ip = spit::Socket::getAdaptersInfo(); +// spit::Socket socket(ip); +// SClient spitClient(ClientName, ProjectName, socket, +// { +// .onServerEvent = onServerEvent, +// .onConnectionStatus = onConnectionStatus, +// .onProjectUpdate = onProjectUpdate, +// .onSpitType = onSpitType, +// .onSpitObject = onSpitObject, +// .onPlay = onPlay, +// .onPlaySpitType = onPlaySpitType, +// .onPlayRemoteObjectStatus = onPlayRemoteObjectStatus, +// .onCheckSpitTypeVeto = onCheckSpitTypeVeto, +// .onCheckSpitObjectVeto = onCheckSpitObjectVeto, +// }); + +// for (auto& obj : ProvidedObj) { +// SType* ptrSPITType1Fix = spitClient.createTypeFixed(obj.iD, obj.groupName, obj.name, 0, 0); +// spitClient.setActionType(ptrSPITType1Fix->getID(), true); // should be executed whenever a SPITObject with this SPITType is played +// } +// spitClient.clientProjectLoaded(); +// spitClient.startServerAutoDetect(); + +// spitProjectFinish.take(); +// string serverProjectID = spitClient.getServerProjectID(); +// string serverProjectName = spitClient.getClientProjectName(); +// int serverFramesPerSecond = spitClient.getServerFramesPerSecond(); // set when the server reports his project, see eventProjectReport +// ESP_LOGI(TAG, "eventProjectReport ID: %s Name: %s FramesPerSecond: %d", serverProjectID.data(), serverProjectName.data(), serverFramesPerSecond); + +// for (auto&& obj : ExpectedObjects) { +// if (obj.second == "") { +// ESP_LOGE(TAG, "No matching Remote ID for %s", obj.first.c_str()); +// } +// } + +// while (true) { +// auto res = responseQueue.dequeue(); +// if (res->type == ResponseType::StartMoving) { +// spitClient.sendRemoteObject(ExpectedObjects[expected.changingPos]); +// } else if (res->type == ResponseType::StepAt) { +// spitClient.sendRemoteObject(ExpectedObjects[expected.inPosX[res->pos - 1]]); +// } +// } +// } + +// void MqttThread() { +// ESP_LOGI(TAG, "Starting MQTT task"); + +// auto& store = NvsApi::getInstance(); +// auto broker = store.getValue(ConfigKeys.mqttBroker); +// if (broker != "") { +// ESP_LOGI(TAG, "Initializing MQTT"); +// auto prefix = store.getValue(ConfigKeys.mqttPrefix); +// auto& client = MqttClient::init(broker, prefix); +// if (!client.isRunning()) { +// client.addSubscription(MqttTopics.moveTo, [](string d) { startShuffle(d); }); +// client.start(); +// } + +// while (true) { +// auto res = responseQueue.dequeue(); +// if (res->type == ResponseType::StartMoving) { +// client.publish(MqttTopics.showDone, ""); +// } else if (res->type == ResponseType::StepAt) { +// client.publish(MqttTopics.inPosition, to_string(res->pos)); +// } +// } +// } +// } + +void app_main(void) { + initialize_ethernet(); + NvsApi::init(); + static fos::Task lightingTask(LightingTask, "Lights", 0x8000uL); + + etherActive.take(); + ESP_LOGI(TAG, "Start net services"); + + // static int ipVersion = AF_INET; + // static fos::TaskT telnetSocket(telnetSocketTask, ipVersion, "tcpServer", 4096); + // static fos::Task spit(SpitClientApp, "SpitClient"); + // // static fos::Task mqtt(MqttThread, "MqttEndpoint"); + // // static Task otaUpdate(SystemFunctions::OtaTaskEntry, "otaTask", 8192); + + auto& store = NvsApi::getInstance(); + auto logger = store.getValue(ConfigKeys.syslogDest); + if (logger != "") { + Syslog::setupTask(IpAdr{logger, 0}); + } + + ESP_LOGI(TAG, "Configuration"); + ESP_LOGI(TAG, "%s: %s", ConfigKeys.syslogDest, store.getValue(ConfigKeys.syslogDest).c_str()); + ESP_LOGI(TAG, "%s: %s", ConfigKeys.mqttBroker, store.getValue(ConfigKeys.mqttBroker).c_str()); + ESP_LOGI(TAG, "%s: %s", ConfigKeys.mqttPrefix, store.getValue(ConfigKeys.mqttPrefix).c_str()); + ESP_LOGI(TAG, "%s: %s", ConfigKeys.spitServer, store.getValue(ConfigKeys.spitServer).c_str()); + + while (true) { + fos::Task::delayMs(5000); + Syslog::logv(Syslog::Severity::Notice, "Min heap size: %u / FreeHeap %lu", + heap_caps_get_minimum_free_size(MALLOC_CAP_DEFAULT), + esp_get_free_heap_size()); + } +} diff --git a/main/watchMain.cpp b/main/watchMain.cpp deleted file mode 100644 index ac7099b..0000000 --- a/main/watchMain.cpp +++ /dev/null @@ -1,1027 +0,0 @@ -/** - * @file watchMain.cpp - * @author Gustice - * @brief ChaosWatch Application - */ - -/* Watchface - 6/ - 5 / 1 - 4 2 - 3 -*/ -// Profiles = 5 (0..4) -// DynRange = -// MinSteps (6..20), MaxSteps (10..40) -// activeState.accel = (min .5 / max 3) -// activeState.speed = (min .5 / max 3) - -#include "watchMain.hpp" -#include "config.hpp" - -using namespace spit; - -string ClientName = "CatasWatchDev"; -string ProjectName = "CatastrphicProj"; - -extern "C" { // This switch allows the ROS C-implementation to find this main -void app_main(void); -} - -struct DeviceState { - uint8_t minJumps{6}; - uint8_t maxJumps{32}; - uint8_t profile{}; - uint8_t shuffleRate{}; - float speed = 1.0; // Rad/sec - float accel = 1.0; // Rad/sec^2 - Color color{0x80, 0x80, 0x80}; -}; - -enum class MoveType { - StepTo, - Demo, - Shuffle, -}; -enum class ResponseType { - StepAt, - StartMoving, -}; -struct MoveCommand { - MoveType type; - // 1..6 - uint8_t pos; -}; -struct WatchIndex { - ResponseType type; - // 1..6 - uint8_t pos; -}; -struct PictoIllumCommand { - uint8_t pos; // 0 for none / Valid indexes 1 .. 6 -}; - -static fos::Queue commandQueue(8); -static fos::Queue responseQueue(8); -static fos::Queue pictoIllumQue(2); - -DeviceState activeState; -static const char *TAG = "Watch"; -bool EthernetIsConnected = false; - -std::unique_ptr pShell; - -void onCommand(std::string name, Cli::CArgs args) { - ESP_LOGI(TAG, "Invoking: %s", name.c_str()); -} - -void startUpdate(Cli::CArgs args) { - ESP_LOGI(TAG, "Invoking Update"); - if (args.size() != 1) { - pShell->writeLine("Need URL to application"); - return; - } - // @ToDo: Start Update here -} - -void getConfig(Cli::CArgs args) { - if (args.size() != 1) { - pShell->writeLine("Needs string key for query"); - return; - } - auto key = args[0]; - auto &store = NvsApi::getInstance(); - auto val = store.getValue(key); - pShell->writeLine(key + ": " + val + ""); -} - -void testPictoIllum(Cli::CArgs args) { - if (args.size() != 1) { - pShell->writeLine("Needs position argument for illuminated position 0 for off, 1..6 for pictograms"); - return; - } - try { - int p = std::stoi(args[0]); - pictoIllumQue.enqueue(std::make_unique(p)); - } catch (const std::exception &e) { - ESP_LOGI(TAG, "Failed to parse %s", args[0].c_str()); - } -} - -void testMovement(Cli::CArgs args) { - ESP_LOGI(TAG, "on triggerMovement:"); - if (args.size() < 1) { - pShell->writeLine("need target position (1..6)"); - pShell->writeLine("additional optional arguments: Profile (0..4), MinSteps (6..20), MaxSteps (10..40)"); - return; - } - try { - int p = std::stoi(args[0]); - if (args.size() >= 2) { - activeState.profile = std::min(4, std::stoi(args[1])); - } - if (args.size() >= 3) { - activeState.minJumps = std::min(20, std::stoi(args[2])); - } - if (args.size() >= 4) { - activeState.minJumps = std::min(40, std::stoi(args[3])); - } - commandQueue.enqueue(std::make_unique(MoveType::StepTo, p)); - } catch (const std::exception &e) { - ESP_LOGI(TAG, "Failed to parse %s", args[0].c_str()); - } -} - -void testFeedback(Cli::CArgs args) { - ESP_LOGI(TAG, "on triggerMovement:"); - if (args.size() != 1) { - pShell->writeLine("need target position (1..6) or 0 for moving"); - return; - } - try { - int p = std::stoi(args[0]); - if (p == 0) { - responseQueue.enqueue(std::make_unique(ResponseType::StartMoving, 0)); - } else { - responseQueue.enqueue(std::make_unique(ResponseType::StepAt, p)); - } - - } catch (const std::exception &e) { - ESP_LOGI(TAG, "Failed to parse %s", args[0].c_str()); - } -} - -void setConfig(Cli::CArgs args) { - if (args.size() != 2) { - pShell->writeLine("Needs string key and value"); - return; - } - auto key = args[0]; - auto val = args[1]; - - auto &store = NvsApi::getInstance(); - pShell->writeLine(std::string{"Storing value = '"} + val + "'"); - store.setValue(key, val); -} - -void setLogServerConfig(Cli::CArgs args) { - ESP_LOGI(TAG, "on showLogServerConfig:"); - auto &store = NvsApi::getInstance(); - if (args.size() != 1) { - auto logger = store.getValue("syslogDst"); - pShell->writeLine(std::string{"syslog destination = '"} + logger + "'"); - pShell->writeLine("provide argument to change syslog server"); - return; - } - pShell->writeLine(std::string{"setting syslog destination to = '"} + args[0] + "'"); - store.setValue("syslogDst", args[0]); -} - -void setDynamics(Cli::CArgs args) { - ESP_LOGI(TAG, "on setDynamics:"); - if (args.size() != 2) { - pShell->writeLine("need float values for velocity and acceleration"); - return; - } - - try { - float v = std::stof(args[0]); - float a = std::stof(args[1]); - activeState.accel = a; - activeState.speed = v; - } catch (const std::exception &e) { - ESP_LOGI(TAG, "Failed to parse %s and %s", args[0].c_str(), args[1].c_str()); - } -} - -void showProcessValues(Cli::CArgs args) { - pShell->writeLine("Process values:"); - char buff[256]; - - sprintf(buff, "%02x,%02x,%02x", activeState.color.getRed(), activeState.color.getGreen(), activeState.color.getBlue()); - pShell->writeLine(std::string{" Color RGB: "} + buff); - sprintf(buff, "%.2f / %.2f", activeState.accel, activeState.speed); - pShell->writeLine(std::string{" Accel/Speed: "} + buff); - pShell->writeLine(std::string{" JumpRange: "} + std::to_string((int)activeState.minJumps) + " .. " + std::to_string((int)activeState.maxJumps)); - pShell->writeLine(std::string{" Provile: "} + std::to_string((int)activeState.profile)); -} - -void setSyslogLevel(Cli::CArgs args) { - if (args.size() != 1) { - pShell->writeLine("Needs SyslogLevel Warning = 4, Notice = 5, Informational = 6, Debug = 7"); - return; - } - - try { - auto lvl = std::stoi(args[0]); - if (lvl >= (int)Syslog::Severity::Warning && lvl <= (int)Syslog::Severity::Debug) { - Syslog::setSeverity((Syslog::Severity)lvl); - } else { - pShell->writeLine("New level was not accepted"); - } - } catch (const std::exception &e) { - ESP_LOGI(TAG, "Failed to parse %s", args[0].c_str()); - } -} - -/** - * @brief Telnet socket via TCP/IP - * - * @details The ini-file for TeraTerm only changes CRReceive and CRSend values both to "=CR" - * @param arg ignored task argument - */ -static void telnetSocketTask(int addrFamily) { - ESP_LOGI(TAG, "Starting Telnet task"); - try { - TelnetServer telnet(addrFamily); - telnet.run( - [](TcpSession &session) { - pShell = std::make_unique(session, [](std::string n, Cli::CArgs a) { onCommand(n, a); }); - pShell->addBinding( - {"update", "Start OTA-Update-Process", - [](Cli::CArgs a) { startUpdate(a); }}); - pShell->addBinding( - {"setLogserver", "Set log server config ip", - [](Cli::CArgs a) { setLogServerConfig(a); }}); - pShell->addBinding( - {"setLogLevel", "Set severity log server", - [](Cli::CArgs a) { setSyslogLevel(a); }}); - - pShell->addBinding( - {"getcfg", "Get configuration value for key", - [](Cli::CArgs a) { getConfig(a); }}); - pShell->addBinding( - {"setcfg", "Set configuration value by key and value", - [](Cli::CArgs a) { setConfig(a); }}); - - pShell->addBinding( - {"setDyn", "set dynamics of movement (velocity,accelerations) as floats", - [](Cli::CArgs a) { setDynamics(a); }}); - pShell->addBinding( - {"tstMove", "start movement (profile-idx,steps) as integers ", - [](Cli::CArgs a) { testMovement(a); }}); - pShell->addBinding( - {"tstIllum", "test illumination command 0=off /1..6", - [](Cli::CArgs a) { testPictoIllum(a); }}); - pShell->addBinding( - {"tstFb", "test feedback-channel to control 0=Move /1..6=FinalPos", - [](Cli::CArgs a) { testFeedback(a); }}); - pShell->addBinding( - {"showData", "Show process values that are input by DMX, MQTT and SPIT", - [](Cli::CArgs a) { showProcessValues(a); }}); - }, - [](TcpSession &session) { - pShell->process(); - Syslog::setupTask(session.getOther()); - }); - } catch (const std::exception &e) { - ESP_LOGE("TCP", "%s", e.what()); - } - vTaskDelete(NULL); -} - -constexpr uint32_t DmxUniverse = 0; -constexpr int DmxChannelCount = 9; - -uint8_t scaledRgbChannel(uint8_t value, float scale) { - return static_cast(value * scale); -} - -/** - * @brief Callback for ArtNet DMX-socket. Does not send data only updates the image - * - * @param data Pointer to dmx-values - * @param size length of dmx-values - */ -static void UniverseCallback(const uint8_t *data, const uint16_t size) { - int len = std::min(static_cast(size), DmxChannelCount); - ESP_LOGD(TAG, "Got DMX"); - ESP_LOG_BUFFER_HEXDUMP("DMX", data, len, ESP_LOG_DEBUG); - Syslog::logv(Syslog::Severity::Debug, "Got DMX: r%0x g%0x b%0x i%0x m%i M%i p%i a%i w%i r%i", - /* RGB*/ data[0], data[1], data[2], /*Intens*/ data[3], - /* MinMaxJumps */ data[4], data[5], /*profile*/ data[6], /*accel/speed*/ data[7], data[8], - /*shuffleRate*/ data[9]); - - float intens = (float)data[3] / UINT8_MAX; - activeState.color = Color{ - scaledRgbChannel(data[0], intens), - scaledRgbChannel(data[1], intens), - scaledRgbChannel(data[2], intens), - 0}; - - activeState.minJumps = data[4]; - activeState.maxJumps = data[5]; - activeState.profile = data[6]; - - uint8_t accel = data[7]; - uint8_t velo = data[8]; - activeState.accel = (float)accel / 100 + 0.5; // min .5 / max 3 - activeState.speed = (float)velo / 100 + 0.5; // min .5 / max 3 - - activeState.shuffleRate = data[9]; -} - -void moveToSubs(std::string data) { - ESP_LOGI(TAG, "MoveTo command '%s'", data.c_str()); - try { - int p = std::stoi(data); - Syslog::logv(Syslog::Severity::Informational, "got MoveTo-Cmd->%i", p); - commandQueue.enqueue(std::make_unique(MoveType::StepTo, p)); - } catch (const std::exception &e) { - ESP_LOGE(TAG, "Error to process data %s, with ex: %s", data.c_str(), e.what()); - } -} - -void startShuffle(std::string data) { - ESP_LOGI(TAG, "StartShuffle command %s", data.c_str()); - try { - Syslog::logv(Syslog::Severity::Informational, "got Shuffle-Command"); - commandQueue.enqueue(std::make_unique(MoveType::Shuffle, 0)); - } catch (const std::exception &e) { - ESP_LOGE(TAG, "Error to process data %s, with ex: %s", data.c_str(), e.what()); - } -} - -/** - * @brief DMX-Socket for ArtNet TCP/IP - * - * @details Tested with [Q Light Controller+](https://www.qlcplus.org/) - * @param args ignored task argument - */ -static void dmxSocketSenderTask(UdpSocket &socket) { - try { - ArtnetSender artnet(socket); - std::array data; - while (socket.isActive()) { - data[0]++; - artnet.send("", 0, data.data(), data.size()); - fos::Task::delayMs(500); - } - - } catch (const std::exception &e) { - ESP_LOGE("UDP", "%s", e.what()); - } -} - -/** - * @brief DMX-Socket for ArtNet TCP/IP - * - * @details Tested with [Q Light Controller+](https://www.qlcplus.org/) - * @param args ignored task argument - */ -static void dmxSocketTask(int addrFamily) { - ESP_LOGI(TAG, "Starting ArtNet task"); - constexpr uint16_t ArtNetPort = arx::artnet::DEFAULT_PORT; - IpAdr address = addrFamily == AF_INET ? IpAdr(INADDR_ANY, ArtNetPort) : IpAdr(ArtNetPort); - - try { - while (true) { - UdpSocket socket(address); - socket.bindTo(); - - ArtnetReceiver artnet(socket); - artnet.subscribe(DmxUniverse, UniverseCallback); - artnet.parse(); - // parse artnet as long socket is active, then restart socket - while (socket.isActive()) { - ESP_LOGD(TAG, "Waiting for data"); - artnet.parse(); - } - } - - } catch (const std::exception &e) { - ESP_LOGE("UDP", "%s", e.what()); - } -} - -fos::Semaphore etherActive; -fos::Semaphore spitProjectFinish; - -/** Event handler for IP_EVENT_ETH_GOT_IP */ -void got_ip_event_handler(void *arg, esp_event_base_t event_base, - int32_t event_id, void *event_data) { - ip_event_got_ip_t *event = (ip_event_got_ip_t *)event_data; - const esp_netif_ip_info_t *ip_info = &event->ip_info; - - ESP_LOGI(TAG, "Ethernet Got IP Address"); - ESP_LOGI(TAG, "~~~~~~~~~~~"); - ESP_LOGI(TAG, "ETHIP:" IPSTR, IP2STR(&ip_info->ip)); - ESP_LOGI(TAG, "ETHMASK:" IPSTR, IP2STR(&ip_info->netmask)); - ESP_LOGI(TAG, "ETHGW:" IPSTR, IP2STR(&ip_info->gw)); - ESP_LOGI(TAG, "~~~~~~~~~~~"); - etherActive.give(); -} - -static void initialize_ethernet(void) { - uint8_t eth_port_cnt = 0; - esp_eth_handle_t *eth_handles; - ESP_ERROR_CHECK(eth_init(ð_handles, ð_port_cnt)); - if (eth_port_cnt > 1) { - ESP_LOGW(TAG, "multiple Ethernet devices detected, the first initialized is to be used!"); - } - - static esp_eth_handle_t s_eth_handle = NULL; - s_eth_handle = eth_handles[0]; - free(eth_handles); - - // Initialize TCP/IP network interface aka the esp-netif (should be called only once in application) - ESP_ERROR_CHECK(esp_netif_init()); - // Create default event loop that running in background - ESP_ERROR_CHECK(esp_event_loop_create_default()); - - // Use ESP_NETIF_DEFAULT_ETH when just one Ethernet interface is used and you don't need to modify - // default esp-netif configuration parameters. - esp_netif_config_t cfg = ESP_NETIF_DEFAULT_ETH(); - esp_netif_t *eth_netif = esp_netif_new(&cfg); - // Attach Ethernet driver to TCP/IP stack - ESP_ERROR_CHECK(esp_netif_attach(eth_netif, esp_eth_new_netif_glue(s_eth_handle))); - - ESP_ERROR_CHECK(esp_event_handler_register(ETH_EVENT, ESP_EVENT_ANY_ID, eth_event_handler, NULL)); - ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_ETH_GOT_IP, &got_ip_event_handler, NULL)); - ESP_ERROR_CHECK(esp_eth_start(s_eth_handle)); -} - -namespace Effect { -extern const WaveForm_t OffsetPulseWave{gau8_offsetPulse, cu16_TemplateLength}; -extern const WaveForm_t InitSlopeWave{gau8_initSlope, cu16_TemplateLength}; -extern const WaveForm_t OffsetSlopeWave{gau8_offsetSlope, cu16_TemplateLength}; -extern const WaveForm_t FullSlopeWave{gau8_fullSlope, cu16_TemplateLength}; -extern const WaveForm_t FullPulseWave{gau8_fullPulse, cu16_TemplateLength}; - -const Macro macDemoStart = { - {64, 1, &InitSlopeWave, StateMachine::UpdateWave, 0xFF}, - {32, 1, StateMachine::UpdateIdle, 0xFF}, -}; - -const Macro macDemoPulse = { - {64, 1, &InitSlopeWave, StateMachine::UpdateWave, 0xFF}, - {32, 2, StateMachine::UpdateIdle, 0xFF}, - {64, 1, &OffsetPulseWave, StateMachine::UpdateWave, 0xFF}, -}; - -const Macro macDemoFlicker = { - {16, 1, &InitSlopeWave, StateMachine::UpdateWave, 0xFF}, - {32, 1, StateMachine::UpdateFlicker, 0xFF}, -}; -} // namespace Effect - -void LightingTask() { - ESP_LOGI(TAG, "Start Lighting"); - - static I2cMaster master(I2C_NUM_0, - {/*sda=*/GPIO_NUM_10, /*scl=*/GPIO_NUM_11}); - // static PmwExpanderPca9685 pca9685(master); - static PmwExpanderPca9685 ledDriver1(master, /*iverted=*/false); - static PmwExpanderPca9685 ledDriver2(master, /*iverted=*/false, 0x41); - PmwExpanderPca9685::GrayValues values[2]{}; - - OutputPort pwmEnable(GPIO_NUM_1, GpioPort::Logic::Inverted); - pwmEnable.write(true); - - auto const &colorSource = activeState.color; - std::array processors{ - Effect::EffectProcessor(8), - Effect::EffectProcessor(8), - Effect::EffectProcessor(8), - Effect::EffectProcessor(8), - Effect::EffectProcessor(8), - Effect::EffectProcessor(8)}; - processors[0].setEffect(Effect::macDark, &colorSource, 0); - processors[1].setEffect(Effect::macDark, &colorSource, 0); - processors[2].setEffect(Effect::macDark, &colorSource, 0); - processors[3].setEffect(Effect::macDark, &colorSource, 0); - processors[4].setEffect(Effect::macDark, &colorSource, 0); - processors[5].setEffect(Effect::macDark, &colorSource, 0); - - const std::array PictoEffects{ - Effect::macDemoPulse, // 1 - Effect::macDemoPulse, - Effect::macDemoPulse, - Effect::macDemoPulse, - Effect::macStartFlicker, - Effect::macDemoPulse}; // 6 - - uint8_t lastPicto = 1; - - std::array startPoints{ - &(values[0][4]), // 1 - &(values[1][12]), - &(values[1][8]), - &(values[1][4]), - &(values[0][12]), - &(values[0][8]), // 6 - }; - - while (true) { - auto onPos = pictoIllumQue.tryDequeue(); - if (onPos) { - ESP_LOGI(TAG, "Changing picto-Illum to pos = %i", onPos->pos); - ESP_LOGI(TAG, "Current color set r%i g%i b%i ", - activeState.color.getRed(), activeState.color.getGreen(), activeState.color.getBlue()); - auto pos = onPos->pos; - if (pos == 0) { - Syslog::logv(Syslog::Severity::Informational, - "Dimming picto-illum pos:%i ", lastPicto); - processors[lastPicto - 1].setEffect(Effect::macDark, &colorSource, 0); - } else if ((pos >= 1) && (pos <= 6)) { - auto idx = pos - 1; - Syslog::logv(Syslog::Severity::Informational, - "Firing picto-illum pos:%i ", pos); - processors[idx].setEffect(PictoEffects[idx], &colorSource, 0); - lastPicto = pos; - } else { - Syslog::logv(Syslog::Severity::Error, - "Got invalid index for illuminated pictogram =%i ", pos); - } - } - - for (size_t i = 0; i < processors.size(); i++) { - auto col = processors[i].tick(); - auto sp = startPoints[i]; - sp[0] = (uint16_t)(col.getWhite()) << 7; - sp[1] = (uint16_t)(col.getBlue()) << 7; - sp[2] = (uint16_t)(col.getGreen()) << 7; - sp[3] = (uint16_t)(col.getRed()) << 7; - } - - ledDriver1.send(values[0]); - ledDriver2.send(values[1]); - fos::Task::delayMs(40); - } -} - -void MovementTask() { - ESP_LOGI(TAG, "Start Stepper"); - constexpr int MicroSteps = 32; - StepperDriverDrv8833::Pins stepperPins{ - LEDC_TIMER_0, - {LEDC_CHANNEL_0, LEDC_CHANNEL_1, LEDC_CHANNEL_2, LEDC_CHANNEL_3}, - {GPIO_NUM_21, GPIO_NUM_20, GPIO_NUM_23, GPIO_NUM_22}, - }; - - float power = 0.25F; - // try - // { - // auto pwr = store.getValue(ConfigKeys.motorPower); - // power = std::stof(pwr); - // } - // catch(...) - // { - // std::cerr << e.what() << '\n'; - // ESP_LOGI("Stepper", "Applying default"); - // } - - StepperDriverDrv8833 stepperDriver(stepperPins, MicroSteps, power); - stepperDriver.setPos(0); - - StepperConfig stepperCfg{1.8F, MicroSteps}; - InputPort initSens(GPIO_NUM_18); - - InputPort motorFault(GPIO_NUM_8); - motorFault.setLogic(GpioPort::Logic::Inverted); - - OutputPort motorSleep(GPIO_NUM_15, GpioPort::Logic::Inverted); - motorSleep.write(false); - - StepperMotor stepper(stepperCfg, stepperDriver, initSens); - - SyslogInst logger; - WatchMotor watch(stepper, [](uint8_t newPos) { - pictoIllumQue.enqueue(std::make_unique(newPos)); - responseQueue.enqueue(std::make_unique(ResponseType::StepAt, newPos)); - }, logger); - - ESP_LOGI("Stepper", "Find Home"); - stepper.findRef(); - // Todo Set by User-Interface - for (size_t i = 0; i < 7; i++) { - stepper.fullStep(1); - fos::Task::delayMs(40); - } - (void)stepper.zeroPosition(); - while (!stepper.isIdle()) { - fos::Task::delayMs(40); - } - // watch.moveTo(1, ProfileGenerator::Unitform); - ESP_LOGI("Stepper", "Got to 1"); - // Illum 6 - pictoIllumQue.enqueue(std::make_unique(0)); - - ESP_LOGI(TAG, "Fist Position is %.2f", watch.getScaled()); - fos::Task::delayMs(1000); - - while (true) { - ESP_LOGD(TAG, "Waiting for command"); - auto cmd = commandQueue.dequeue(); - if (cmd->type == MoveType::StepTo) { - if (stepper.isIdle()) { - int newPos = cmd->pos; - if ((newPos >= 1) && (newPos <= 6)) { - Syslog::logv(Syslog::Severity::Informational, - "Triggered movement to picto pos:%i ", newPos); - } else { - Syslog::logv(Syslog::Severity::Error, - "Got invalid index for illuminated pictogram =%i ", newPos); - continue; - } - - Syslog::logv(Syslog::Severity::Notice, - "Running Stepper by min%i steps with prof=%i a=%.2f w=%.2f", - activeState.minJumps, activeState.profile, activeState.accel, activeState.speed); - pictoIllumQue.enqueue(std::make_unique(0)); - responseQueue.enqueue(std::make_unique(ResponseType::StartMoving, 0)); - auto &as = activeState; - watch.moveTo(newPos, as.profile, as.minJumps, as.accel, as.speed); - // pictoIllumQue.enqueue(std::make_unique(newPos)); - // responseQueue.enqueue(std::make_unique(ResponseType::StepAt, newPos)); - } - } else if (cmd->type == MoveType::Shuffle) { - Syslog::logv(Syslog::Severity::Informational, - "Starting Shuffle mode"); - while (true) { - int pos = Random::randomWithIn(1,6); - int profile = Random::randomWithIn(0,3); - if (stepper.isIdle()) { - Syslog::logv(Syslog::Severity::Notice, - "Running Stepper to %i by min%i steps with prof=%i a=%.2f w=%.2f", - pos, activeState.minJumps, activeState.profile, activeState.accel, activeState.speed); - pictoIllumQue.enqueue(std::make_unique(0)); - responseQueue.enqueue(std::make_unique(ResponseType::StartMoving, 0)); - auto &as = activeState; - watch.moveTo(pos, profile, as.minJumps, as.accel, as.speed); - } - // int delay = Random::randomWithIn(20000,100000)/portTICK_PERIOD_MS; - int delay = Random::randomWithIn(2000,3000)/portTICK_PERIOD_MS; - Syslog::logv(Syslog::Severity::Informational, - "ShuffleMode Wait for %i", delay); - auto cmd = commandQueue.tryDequeueFor(delay); - if (cmd) { - if (cmd->type != MoveType::Shuffle) { - commandQueue.enqueue(std::move(cmd)); - break; - } - } - } - } else if (cmd->type == MoveType::Demo) { - ESP_LOGI(TAG, "Running Demo"); - for (size_t i = ProfileGenerator::Smooth; i < ProfileGenerator::NumProfiles; i++) { - ESP_LOGI(TAG, "Running Profile %d ", i); - fos::Task::delayMs(1000); - int steps[3]{4, 2, 0}; - for (size_t j = 0; j < 3; j++) { - watch.moveTo(steps[j], i, 1, 1, 1); - fos::Task::delayMs(1000); - } - } - } else { - fos::Task::delayMs(100); - } - } -} - -struct LocalSpitObj { - string iD; - string groupName; - string name; -}; -std::map ProvidedSpitActions; -std::map ExpectedObjects; - -void onServerEvent(SClient::ServerEvent event, const SadDetectedServer &p_DetectedServer) { - switch (event) { - case SClient::ServerEvent::Detect: - ESP_LOGI(TAG, "SERVER DETECTED"); - ESP_LOGI(TAG, " Name: %s", p_DetectedServer.getName().data()); - ESP_LOGI(TAG, " ID: %s", p_DetectedServer.getID().data()); - ESP_LOGI(TAG, " Computer: %s", p_DetectedServer.getComputerName().data()); - ESP_LOGI(TAG, " IP: %s", p_DetectedServer.getIP().data()); - ESP_LOGI(TAG, " Port: %s", p_DetectedServer.getPort().data()); - ESP_LOGI(TAG, " Addition: %s", p_DetectedServer.getAdditions().data()); - ESP_LOGI(TAG, " ClientIP: %s", p_DetectedServer.getClientIP().data()); - break; - case SClient::ServerEvent::Lost: - ESP_LOGW(TAG, "Server lost Name: %s IP: %s", p_DetectedServer.getName().data(), p_DetectedServer.getIP().data()); - - break; - case SClient::ServerEvent::Changed: - ESP_LOGW(TAG, "Server lost Name: %s IP: %s", p_DetectedServer.getName().data(), p_DetectedServer.getIP().data()); - break; - - default: - break; - } -} - -void onConnectionStatus(string p_ServerID, string p_ServerComputerName, string p_ServerName, int p_ServerStepTime, - SClient::Connection p_ConnectionStatus, SClient::Connection p_OldConnectionStatus) { - ESP_LOGI(TAG, "MySPITApp: eventConnectionStatus %d->%d ", (int)p_OldConnectionStatus, (int)p_ConnectionStatus); -} - -// The transfer of the server's SPITTypes and SPITObjects is finished. -void onProjectUpdate(SClient::ProjUpdate state, string projectId) { - - switch (state) { - case SClient::ProjUpdate::ServerLoaded: - ESP_LOGI(TAG, "eventProjectReport ID: %s ", projectId.data()); - break; - case SClient::ProjUpdate::StartTransfer: - ESP_LOGI(TAG, "eventStartProjectTransfer"); - break; - case SClient::ProjUpdate::EndTransfer: - ESP_LOGI(TAG, "eventEndProjectTransfer"); - spitProjectFinish.give(); - break; - case SClient::ProjUpdate::ServerClosed: - ESP_LOGI(TAG, "eventProjectClosed ID: %s", projectId.data()); - // If we don't save SPITServer's project specific information - // perhaps close all SPITObjects and RemoteSPITObjects to avoid conflicts, when the SPITServer loads a new project - // SPITObject::clearSPITObjects(); - // SPITObject::clearSPITObjectsRemote(); - break; - - default: - break; - } -} - -bool onCheckSpitTypeVeto(bool knownType, bool createdByClient) { - return true; // Bypass veto - if (!knownType || !createdByClient) { // Don't allow foreign SPITTypes - return false; - } - return true; -} - -bool onCheckSpitObjectVeto(bool knownType) { - return true; // Bypass veto - if (!knownType) { // Don't allow objects of unregistered SPITTypes - return false; - } - - return true; -} - -// Called when the server has created, loaded, changed or deleted a (Remote) SPITType. -// Remote SPITType are used in Remote SPITObjects. A Remote SPITObject is used to remote control the SPITServer. -// May also occur when the server confirms a SPITType created or changed by the client. -void onSpitType(SClient::ObjectEvent event, bool isRemote, const SType &sType) { - if (isRemote) { - if (event == SClient::ObjectEvent::Created) { - ESP_LOGI(TAG, "NEW SPIT-REMOTE-Type ID: %s GroupName: %s Name: %s confirmed: %d", sType.getID().data(), sType.GroupName.get().data(), sType.Name.get().data(), sType.getConfirmed()); - auto typeName = sType.Name.get(); - if (ExpectedObjects.contains(typeName)) { - ExpectedObjects[typeName] = sType.getID(); - } - } else if (event == SClient::ObjectEvent::Changed) { - // we had to inform all Remote SPITObjects using the p_SPITType - // perhaps the SPITObject uses information from the SPITType - // SPITObject *ptrSPITObject; - // int intSPITObjectCount; - // intSPITObjectCount = SPITObject::getSPITObjectRemoteCount(); - // for (int intObject = 0; intObject < intSPITObjectCount; intObject++) { - // ptrSPITObject = SPITObject::getSPITObjectRemote(intObject); - // if (ptrSPITObject == nullptr) - // continue; - // if (ptrSPITObject->getSPITTypeID() == p_SPITType.getID()) { - // // call ecentSPITObjectRemote - // // onSpitObjectRemote(SClient::ObjectEvent::Changed, p_SPITType, *ptrSPITObject); - // } - // } - // ESP_LOGI(TAG, "SPIT-REMOTE-Type CHANGED ID: %s GroupName: %s Name: %s confirmed: %d", sType.getID().data(), sType.GroupName.get().data(), sType.Name.get().data(), sType.getConfirmed()); - } else if (event == SClient::ObjectEvent::Deleted) { - ESP_LOGD(TAG, "SPIT-REMOTE-Type Removed ID: %s GroupName: %s Name: %s\n", sType.getID().data(), sType.GroupName.get().data(), sType.Name.get().data()); - } - } else { - if (event == SClient::ObjectEvent::Created) { - // Whenever you provide an action for this SPITType take this over in your code. - // call _SpitClient.setActionSPITType(sType.getID(), true); - // ESP_LOGI(TAG, "NEW SPIT-Type ID: %s GroupName: %s Name: %s confirmed: %d", sType.getID().data(), sType.GroupName.get().data(), sType.Name.get().data(), sType.getConfirmed()); - } else if (event == SClient::ObjectEvent::Changed) { - // ESP_LOGI(TAG, "SPIT-Type CHANGED ID: %s GroupName: %s Name: %s confirmed: %d", sType.getID().data(), sType.GroupName.get().data(), sType.Name.get().data(), sType.getConfirmed()); - } else if (event == SClient::ObjectEvent::Deleted) { - // ESP_LOGI(TAG, "SPIT-Type Removed ID: %s GroupName: %s Name: %s\n", sType.getID().data(), sType.GroupName.get().data(), sType.Name.get().data()); - } - } -} - -// Called when the server has created, loaded or changed a SPITObject. -// A Remote SPITObject is used to remote control the SPITServer. -// May also occur when the server confirms a SPITObject created by the client, what the client should never do!!. -// false = server changed a existing SPITObject -// @param p_SPITType a reference to a copy of the associated SPITType instance. -// @param p_SPITObject a reference to a copy of the SPITObject instance. -void onSpitObject(SClient::ObjectEvent event, bool isRemote, const SType &sType, const SObject &sObject) { - if (isRemote) { - if (event == SClient::ObjectEvent::Created) { - // ESP_LOGI(TAG, "NEW SPIT-REMOTE-Object ID: %s Name: %s -> SPITType: %s", sObject.getID().data(), sObject.Name.get().data(), sType.Name.get().data()); - // This is a remote SPITObject which can be used to remote control the server. - // If you want you can list this for later use - } else if (event == SClient::ObjectEvent::Changed) { - // ESP_LOGI(TAG, "SPIT-REMOTE-Object CHANGED ID: %s Name: %s -> SPITType: %s", sObject.getID().data(), sObject.Name.get().data(), sType.Name.get().data()); - } else if (event == SClient::ObjectEvent::Deleted) { - ESP_LOGD(TAG, "SPIT-REMOTE-Object Removed ID: %s Name: %s\n", sObject.getID().data(), sObject.Name.get().data()); - // This is a remote SPITObject - // If you have listet this prior you should remove it from the list - } - } else { - if (event == SClient::ObjectEvent::Created) { - // ESP_LOGI(TAG, "NEW SPIT-Object ID: %s Name: %s -> SPITType: %s", sObject.getID().data(), sObject.Name.get().data(), sType.Name.get().data()); - // check your actions - // Whenever you provide an action for this SPITObject take this over in your code. - // call _SpitClient.setActionSPITObject(sObject.getID(), true); - - // for our little excample as described in loadClientProject: - // We have only actions for SPITTypes - means every SPITObject with the associated "Actionx"-SPITTypes will trigger the action when it is played - //-> no need to do something here, because setActionSPITType has been set prior and the SPITObject will automatically inherits this - // SPITObjects with other SPITTypes asscciated will trigger no actions - - } else if (event == SClient::ObjectEvent::Changed) { - // ESP_LOGI(TAG, "SPIT-Object CHANGED ID: %s Name: %s -> SPITType: %s", sObject.getID().data(), sObject.Name.get().data(), sType.Name.get().data()); - } else if (event == SClient::ObjectEvent::Deleted) { - ESP_LOGD(TAG, "SPIT-Object Removed ID: %s Name: %s\n", sObject.getID().data(), sObject.Name.get().data()); - // Check your actions - // take the removal of the SPITObject over in your code - - // CAUTION: Deleted SPITObjects can be added later again (perhaps per UNDO on the SPITServer) - //-> don't remove your assigned action immediately - keep it to reassign it later - } - } -} - -// SPITServer may use several methods for playing SPITObjects. -// e.g. liveSHOWsoftware has the timeline and jingles which plays objects, where the timeline the main player is. -// SPIT distinguishes between the different players. All eventPlay... functions contain the information which player plays the SPIT object. -void onPlay(string p_PlayerID, string p_PlayerName, char p_PlayerType, bool p_PlayerIsRunning, uint64_t p_TimeFrames) { - ESP_LOGD(TAG, "eventPlay Player: %s Runs: %d Time: %lld", p_PlayerName.data(), p_PlayerIsRunning, p_TimeFrames); - - switch (p_PlayerType) { - case SClient::PlayerType::PTYPE_MAIN: - // p_FrameTimes contains the position inside the server's project, we can use it like a timecode - // int intMilliseconds = (int)(((double)p_TimeFrames / (double)m_ServerFramesPerSecond) * 1000); - break; - case SClient::PlayerType::PTYPE_CONTINOUS: - // The olayer is playing only single Object sequences sometime during the project - break; - case SClient::PlayerType::PTYPE_DISCRETE: - // Only discrete values where submitted, e.g the fader position of remote faders. - break; - } -} - -/** - * Called when the SPITServer plays a SPITObject. For every played SPITObject one eventPlayObject is called. - * You can decide here which action should be done or not. - */ -void onPlaySpitType(string p_PlayerID, string spitTypeId, bool p_PlayerIsRunning, bool p_Started, bool p_Ended, double p_Value) { - // double doubleValue = ((double)p_PlayObject.getValue() / 1000000) * ((double)p_PlayObject.getValueFactor() / 1000000); - ESP_LOGD(TAG, "eventPlayObject Player: %s is running: %d Object Started: %d Stopped: %d", p_PlayerID.data(), p_PlayerIsRunning, p_Started, p_Ended); - // ESP_LOGD(TAG, " SPITType: %s SPITObject: %s Position: %lld Value: %f\n", spitTypeId.data(), p_SPITObject.getName().data(), p_PlayObject.getFrameInside(), doubleValue); - ESP_LOGD(TAG, " SPITType: %s Value: %f\n", spitTypeId.data(), p_Value); - - if (!ProvidedSpitActions.contains(spitTypeId)) { - ESP_LOGE(TAG, "SPIT ID %s is not accepted", spitTypeId.c_str()); - return; - } - if (p_Started == true) { - auto command = ProvidedSpitActions[spitTypeId]; - // ESP_LOGI(TAG, "Player: %s is running: %s Object", p_PlayerID.data(), spitTypeId.c_str()); - commandQueue.enqueue(std::make_unique(command)); - Syslog::logv(Syslog::Severity::Informational, "Got SPIT command for move ot : r%d", command.pos); - } -} - -/** - * Called when a remote SpitObject which value function is changed by the server. - * This allows the Client to adjust its display for the remote command. - * @param p_SPITType the assigned remote SPITType of p_SPITObject - * @param p_SPITObject the remote SPITObject which is changed - * @param p_FrameInsideObject can be discarded - * @param p_Value the new value - */ -void onPlayRemoteObjectStatus(const SType &sType, const SObject &sObject, uint64_t frameInsideObject, int value) { - ESP_EARLY_LOGD(TAG, "eventPlayRemoteObjectStatus RemoteSPITType: %s RemoteSPITObject: %s Position: %lld Value: %d", sType.Name.get().data(), sObject.Name.get().data(), frameInsideObject, value); -} - -void SpitClientApp() { - ESP_LOGI(TAG, "Starting SPIT task"); - - auto &provided = SpitTypes.Provided; - auto &expected = SpitTypes.Expected; - std::vector ProvidedObj; - ProvidedSpitActions[provided.startShuffle] = MoveCommand{.type = MoveType::Shuffle, .pos = 0}; - ProvidedObj.push_back(LocalSpitObj{.iD = provided.startShuffle, .groupName = provided.group, .name = provided.startShuffle}); - ExpectedObjects[expected.changingPos] = ""; - for (size_t i = 0; i < 6; i++) { - ProvidedSpitActions[provided.moveToX[i]] = MoveCommand{.type = MoveType::StepTo, .pos = (uint8_t)(i + 1)}; - ProvidedObj.push_back(LocalSpitObj{.iD = provided.moveToX[i], .groupName = provided.group, .name = provided.moveToX[i]}); - ExpectedObjects[expected.inPosX[i]] = ""; - } - - auto ip = spit::Socket::getAdaptersInfo(); - spit::Socket socket(ip); - SClient spitClient(ClientName, ProjectName, socket, - { - .onServerEvent = onServerEvent, - .onConnectionStatus = onConnectionStatus, - .onProjectUpdate = onProjectUpdate, - .onSpitType = onSpitType, - .onSpitObject = onSpitObject, - .onPlay = onPlay, - .onPlaySpitType = onPlaySpitType, - .onPlayRemoteObjectStatus = onPlayRemoteObjectStatus, - .onCheckSpitTypeVeto = onCheckSpitTypeVeto, - .onCheckSpitObjectVeto = onCheckSpitObjectVeto, - }); - - for (auto &obj : ProvidedObj) { - SType *ptrSPITType1Fix = spitClient.createTypeFixed(obj.iD, obj.groupName, obj.name, 0, 0); - spitClient.setActionType(ptrSPITType1Fix->getID(), true); // should be executed whenever a SPITObject with this SPITType is played - } - spitClient.clientProjectLoaded(); - spitClient.startServerAutoDetect(); - - spitProjectFinish.take(); - string serverProjectID = spitClient.getServerProjectID(); - string serverProjectName = spitClient.getClientProjectName(); - int serverFramesPerSecond = spitClient.getServerFramesPerSecond(); // set when the server reports his project, see eventProjectReport - ESP_LOGI(TAG, "eventProjectReport ID: %s Name: %s FramesPerSecond: %d", serverProjectID.data(), serverProjectName.data(), serverFramesPerSecond); - - for (auto &&obj : ExpectedObjects) { - if (obj.second == "") { - ESP_LOGE(TAG, "No matching Remote ID for %s", obj.first.c_str()); - } - } - - while (true) { - auto res = responseQueue.dequeue(); - if (res->type == ResponseType::StartMoving) { - spitClient.sendRemoteObject(ExpectedObjects[expected.changingPos]); - } else if (res->type == ResponseType::StepAt) { - spitClient.sendRemoteObject(ExpectedObjects[expected.inPosX[res->pos - 1]]); - } - } -} - -void MqttThread() { - ESP_LOGI(TAG, "Starting MQTT task"); - - auto &store = NvsApi::getInstance(); - auto broker = store.getValue(ConfigKeys.mqttBroker); - if (broker != "") { - ESP_LOGI(TAG, "Initializing MQTT"); - auto prefix = store.getValue(ConfigKeys.mqttPrefix); - auto &client = MqttClient::init(broker, prefix); - if (!client.isRunning()) { - client.addSubscription(MqttTopics.moveTo, [](std::string d) { moveToSubs(d); }); - client.addSubscription(MqttTopics.startShuffle, [](std::string d) { startShuffle(d); }); - client.start(); - } - - while (true) { - auto res = responseQueue.dequeue(); - if (res->type == ResponseType::StartMoving) { - client.publish(MqttTopics.changingPosition, ""); - } else if (res->type == ResponseType::StepAt) { - client.publish(MqttTopics.inPosition, std::to_string(res->pos)); - } - } - } -} - -void app_main(void) { - initialize_ethernet(); - NvsApi::init(); - static fos::Task lightingTask(LightingTask, "Lights", 0x8000uL); - static fos::Task movementTask(MovementTask, "Motor", 0x8000uL, fos::Task::MAX_PRIORITY-4 ); - - etherActive.take(); - fos::Task::delayMs(10000); - ESP_LOGI(TAG, "Start net services"); - - static int ipVersion = AF_INET; - static fos::TaskT telnetSocket(telnetSocketTask, ipVersion, "tcpServer", 4096); - static fos::TaskT dmxNode(dmxSocketTask, ipVersion, "dmxNode", 4096); - static fos::Task spit(SpitClientApp, "SpitClient"); - // static fos::Task mqtt(MqttThread, "MqttEndpoint"); - // static Task otaUpdate(SystemFunctions::OtaTaskEntry, "otaTask", 8192); - - auto &store = NvsApi::getInstance(); - auto logger = store.getValue(ConfigKeys.syslogDest); - if (logger != "") { - Syslog::setupTask(IpAdr{logger, 0}); - } - - ESP_LOGI(TAG, "Configuration"); - ESP_LOGI(TAG, "%s: %s", ConfigKeys.syslogDest, store.getValue(ConfigKeys.syslogDest).c_str()); - ESP_LOGI(TAG, "%s: %s", ConfigKeys.mqttBroker, store.getValue(ConfigKeys.mqttBroker).c_str()); - ESP_LOGI(TAG, "%s: %s", ConfigKeys.mqttPrefix, store.getValue(ConfigKeys.mqttPrefix).c_str()); - ESP_LOGI(TAG, "%s: %s", ConfigKeys.spitServer, store.getValue(ConfigKeys.spitServer).c_str()); - - while (true) { - fos::Task::delayMs(5000); - // ToDo send - Syslog::logv(Syslog::Severity::Notice, "Min heap size: %u / FreeHeap %lu", - heap_caps_get_minimum_free_size(MALLOC_CAP_DEFAULT), - esp_get_free_heap_size()); - } -} diff --git a/sdkconfig b/sdkconfig index 1089526..2677bb0 100644 --- a/sdkconfig +++ b/sdkconfig @@ -1,31 +1,26 @@ # # Automatically generated file. DO NOT EDIT. -# Espressif IoT Development Framework (ESP-IDF) 5.4.1 Project Configuration +# Espressif IoT Development Framework (ESP-IDF) 5.4.3 Project Configuration # +CONFIG_SOC_CAPS_ECO_VER_MAX=301 CONFIG_SOC_ADC_SUPPORTED=y -CONFIG_SOC_DEDICATED_GPIO_SUPPORTED=y +CONFIG_SOC_DAC_SUPPORTED=y CONFIG_SOC_UART_SUPPORTED=y -CONFIG_SOC_GDMA_SUPPORTED=y -CONFIG_SOC_AHB_GDMA_SUPPORTED=y -CONFIG_SOC_GPTIMER_SUPPORTED=y -CONFIG_SOC_PCNT_SUPPORTED=y CONFIG_SOC_MCPWM_SUPPORTED=y -CONFIG_SOC_TWAI_SUPPORTED=y -CONFIG_SOC_ETM_SUPPORTED=y -CONFIG_SOC_PARLIO_SUPPORTED=y +CONFIG_SOC_GPTIMER_SUPPORTED=y +CONFIG_SOC_SDMMC_HOST_SUPPORTED=y CONFIG_SOC_BT_SUPPORTED=y -CONFIG_SOC_IEEE802154_SUPPORTED=y -CONFIG_SOC_ASYNC_MEMCPY_SUPPORTED=y -CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=y -CONFIG_SOC_TEMP_SENSOR_SUPPORTED=y +CONFIG_SOC_PCNT_SUPPORTED=y CONFIG_SOC_PHY_SUPPORTED=y CONFIG_SOC_WIFI_SUPPORTED=y -CONFIG_SOC_SUPPORTS_SECURE_DL_MODE=y -CONFIG_SOC_ULP_SUPPORTED=y -CONFIG_SOC_LP_CORE_SUPPORTED=y -CONFIG_SOC_EFUSE_KEY_PURPOSE_FIELD=y +CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y +CONFIG_SOC_TWAI_SUPPORTED=y CONFIG_SOC_EFUSE_SUPPORTED=y +CONFIG_SOC_EMAC_SUPPORTED=y +CONFIG_SOC_ULP_SUPPORTED=y +CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y CONFIG_SOC_RTC_MEM_SUPPORTED=y CONFIG_SOC_I2S_SUPPORTED=y CONFIG_SOC_RMT_SUPPORTED=y @@ -33,182 +28,103 @@ CONFIG_SOC_SDM_SUPPORTED=y CONFIG_SOC_GPSPI_SUPPORTED=y CONFIG_SOC_LEDC_SUPPORTED=y CONFIG_SOC_I2C_SUPPORTED=y -CONFIG_SOC_SYSTIMER_SUPPORTED=y CONFIG_SOC_SUPPORT_COEXISTENCE=y CONFIG_SOC_AES_SUPPORTED=y CONFIG_SOC_MPI_SUPPORTED=y CONFIG_SOC_SHA_SUPPORTED=y -CONFIG_SOC_HMAC_SUPPORTED=y -CONFIG_SOC_DIG_SIGN_SUPPORTED=y -CONFIG_SOC_ECC_SUPPORTED=y CONFIG_SOC_FLASH_ENC_SUPPORTED=y CONFIG_SOC_SECURE_BOOT_SUPPORTED=y -CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y +CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y CONFIG_SOC_BOD_SUPPORTED=y -CONFIG_SOC_APM_SUPPORTED=y -CONFIG_SOC_PMU_SUPPORTED=y -CONFIG_SOC_PAU_SUPPORTED=y -CONFIG_SOC_LP_TIMER_SUPPORTED=y -CONFIG_SOC_LP_AON_SUPPORTED=y -CONFIG_SOC_LP_PERIPHERALS_SUPPORTED=y -CONFIG_SOC_LP_I2C_SUPPORTED=y -CONFIG_SOC_ULP_LP_UART_SUPPORTED=y +CONFIG_SOC_ULP_FSM_SUPPORTED=y CONFIG_SOC_CLK_TREE_SUPPORTED=y -CONFIG_SOC_ASSIST_DEBUG_SUPPORTED=y +CONFIG_SOC_MPU_SUPPORTED=y CONFIG_SOC_WDT_SUPPORTED=y CONFIG_SOC_SPI_FLASH_SUPPORTED=y CONFIG_SOC_RNG_SUPPORTED=y CONFIG_SOC_LIGHT_SLEEP_SUPPORTED=y CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y -CONFIG_SOC_MODEM_CLOCK_SUPPORTED=y +CONFIG_SOC_LP_PERIPH_SHARE_INTERRUPT=y CONFIG_SOC_PM_SUPPORTED=y +CONFIG_SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL=5 +CONFIG_SOC_XTAL_SUPPORT_26M=y CONFIG_SOC_XTAL_SUPPORT_40M=y -CONFIG_SOC_AES_SUPPORT_DMA=y -CONFIG_SOC_AES_GDMA=y -CONFIG_SOC_AES_SUPPORT_AES_128=y -CONFIG_SOC_AES_SUPPORT_AES_256=y +CONFIG_SOC_XTAL_SUPPORT_AUTO_DETECT=y +CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y -CONFIG_SOC_ADC_DIG_IIR_FILTER_SUPPORTED=y -CONFIG_SOC_ADC_MONITOR_SUPPORTED=y CONFIG_SOC_ADC_DMA_SUPPORTED=y -CONFIG_SOC_ADC_PERIPH_NUM=1 -CONFIG_SOC_ADC_MAX_CHANNEL_NUM=7 +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=1 -CONFIG_SOC_ADC_PATT_LEN_MAX=8 +CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2 +CONFIG_SOC_ADC_PATT_LEN_MAX=16 +CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=9 CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 -CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=12 -CONFIG_SOC_ADC_DIGI_IIR_FILTER_NUM=2 -CONFIG_SOC_ADC_DIGI_MONITOR_NUM=2 -CONFIG_SOC_ADC_DIGI_RESULT_BYTES=4 +CONFIG_SOC_ADC_DIGI_RESULT_BYTES=2 CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 -CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=83333 -CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=611 -CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=12 +CONFIG_SOC_ADC_DIGI_MONITOR_NUM=0 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=2 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=20 +CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=9 CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 -CONFIG_SOC_ADC_CALIBRATION_V1_SUPPORTED=y -CONFIG_SOC_ADC_SELF_HW_CALI_SUPPORTED=y -CONFIG_SOC_ADC_CALIB_CHAN_COMPENS_SUPPORTED=y -CONFIG_SOC_ADC_TEMPERATURE_SHARE_INTR=y CONFIG_SOC_ADC_SHARED_POWER=y CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y -CONFIG_SOC_CACHE_FREEZE_SUPPORTED=y -CONFIG_SOC_CPU_CORES_NUM=1 +CONFIG_SOC_IDCACHE_PER_CORE=y +CONFIG_SOC_CPU_CORES_NUM=2 CONFIG_SOC_CPU_INTR_NUM=32 -CONFIG_SOC_CPU_HAS_FLEXIBLE_INTC=y -CONFIG_SOC_INT_PLIC_SUPPORTED=y -CONFIG_SOC_CPU_HAS_CSR_PC=y -CONFIG_SOC_CPU_BREAKPOINTS_NUM=4 -CONFIG_SOC_CPU_WATCHPOINTS_NUM=4 -CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=0x80000000 -CONFIG_SOC_CPU_HAS_PMA=y -CONFIG_SOC_CPU_IDRAM_SPLIT_USING_PMP=y -CONFIG_SOC_CPU_PMP_REGION_GRANULARITY=4 -CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=3072 -CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16 -CONFIG_SOC_DS_KEY_CHECK_MAX_WAIT_US=1100 -CONFIG_SOC_AHB_GDMA_VERSION=1 -CONFIG_SOC_GDMA_NUM_GROUPS_MAX=1 -CONFIG_SOC_GDMA_PAIRS_PER_GROUP_MAX=3 -CONFIG_SOC_GDMA_SUPPORT_ETM=y -CONFIG_SOC_GDMA_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_ETM_GROUPS=1 -CONFIG_SOC_ETM_CHANNELS_PER_GROUP=50 -CONFIG_SOC_ETM_SUPPORT_SLEEP_RETENTION=y +CONFIG_SOC_CPU_HAS_FPU=y +CONFIG_SOC_HP_CPU_HAS_MULTIPLE_CORES=y +CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=0x40 +CONFIG_SOC_DAC_CHAN_NUM=2 +CONFIG_SOC_DAC_RESOLUTION=8 +CONFIG_SOC_DAC_DMA_16BIT_ALIGN=y CONFIG_SOC_GPIO_PORT=1 -CONFIG_SOC_GPIO_PIN_COUNT=31 -CONFIG_SOC_GPIO_SUPPORT_PIN_GLITCH_FILTER=y -CONFIG_SOC_GPIO_FLEX_GLITCH_FILTER_NUM=8 -CONFIG_SOC_GPIO_SUPPORT_ETM=y -CONFIG_SOC_GPIO_SUPPORT_RTC_INDEPENDENT=y -CONFIG_SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP=y -CONFIG_SOC_LP_IO_CLOCK_IS_INDEPENDENT=y -CONFIG_SOC_GPIO_IN_RANGE_MAX=30 -CONFIG_SOC_GPIO_OUT_RANGE_MAX=30 -CONFIG_SOC_GPIO_DEEP_SLEEP_WAKE_VALID_GPIO_MASK=0 -CONFIG_SOC_GPIO_DEEP_SLEEP_WAKE_SUPPORTED_PIN_CNT=8 -CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0x000000007FFFFF00 -CONFIG_SOC_GPIO_SUPPORT_FORCE_HOLD=y -CONFIG_SOC_GPIO_SUPPORT_HOLD_IO_IN_DSLP=y -CONFIG_SOC_GPIO_SUPPORT_HOLD_SINGLE_IO_IN_DSLP=y -CONFIG_SOC_GPIO_CLOCKOUT_BY_GPIO_MATRIX=y -CONFIG_SOC_CLOCKOUT_HAS_SOURCE_GATE=y +CONFIG_SOC_GPIO_PIN_COUNT=40 +CONFIG_SOC_GPIO_VALID_GPIO_MASK=0xFFFFFFFFFF +CONFIG_SOC_GPIO_IN_RANGE_MAX=39 +CONFIG_SOC_GPIO_OUT_RANGE_MAX=33 +CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0xEF0FEA +CONFIG_SOC_GPIO_CLOCKOUT_BY_IO_MUX=y CONFIG_SOC_GPIO_CLOCKOUT_CHANNEL_NUM=3 -CONFIG_SOC_RTCIO_PIN_COUNT=8 -CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y -CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y -CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y -CONFIG_SOC_DEDIC_GPIO_OUT_CHANNELS_NUM=8 -CONFIG_SOC_DEDIC_GPIO_IN_CHANNELS_NUM=8 -CONFIG_SOC_DEDIC_PERIPH_ALWAYS_ENABLE=y +CONFIG_SOC_GPIO_SUPPORT_HOLD_IO_IN_DSLP=y CONFIG_SOC_I2C_NUM=2 -CONFIG_SOC_HP_I2C_NUM=1 +CONFIG_SOC_HP_I2C_NUM=2 CONFIG_SOC_I2C_FIFO_LEN=32 -CONFIG_SOC_I2C_CMD_REG_NUM=8 +CONFIG_SOC_I2C_CMD_REG_NUM=16 CONFIG_SOC_I2C_SUPPORT_SLAVE=y -CONFIG_SOC_I2C_SUPPORT_HW_FSM_RST=y -CONFIG_SOC_I2C_SUPPORT_HW_CLR_BUS=y -CONFIG_SOC_I2C_SUPPORT_XTAL=y -CONFIG_SOC_I2C_SUPPORT_RTC=y +CONFIG_SOC_I2C_SUPPORT_APB=y CONFIG_SOC_I2C_SUPPORT_10BIT_ADDR=y -CONFIG_SOC_I2C_SLAVE_SUPPORT_BROADCAST=y -CONFIG_SOC_I2C_SLAVE_CAN_GET_STRETCH_CAUSE=y -CONFIG_SOC_I2C_SLAVE_SUPPORT_I2CRAM_ACCESS=y -CONFIG_SOC_I2C_SLAVE_SUPPORT_SLAVE_UNMATCH=y -CONFIG_SOC_I2C_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_LP_I2C_NUM=1 -CONFIG_SOC_LP_I2C_FIFO_LEN=16 -CONFIG_SOC_I2S_NUM=1 -CONFIG_SOC_I2S_HW_VERSION_2=y -CONFIG_SOC_I2S_SUPPORTS_ETM=y -CONFIG_SOC_I2S_SUPPORTS_XTAL=y +CONFIG_SOC_I2C_STOP_INDEPENDENT=y +CONFIG_SOC_I2S_NUM=2 +CONFIG_SOC_I2S_HW_VERSION_1=y +CONFIG_SOC_I2S_SUPPORTS_APLL=y CONFIG_SOC_I2S_SUPPORTS_PLL_F160M=y -CONFIG_SOC_I2S_SUPPORTS_PCM=y CONFIG_SOC_I2S_SUPPORTS_PDM=y CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y -CONFIG_SOC_I2S_PDM_MAX_TX_LINES=2 -CONFIG_SOC_I2S_SUPPORTS_TDM=y -CONFIG_SOC_I2S_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_LEDC_SUPPORT_PLL_DIV_CLOCK=y -CONFIG_SOC_LEDC_SUPPORT_XTAL_CLOCK=y +CONFIG_SOC_I2S_PDM_MAX_TX_LINES=1 +CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +CONFIG_SOC_I2S_PDM_MAX_RX_LINES=1 +CONFIG_SOC_I2S_SUPPORTS_ADC_DAC=y +CONFIG_SOC_I2S_SUPPORTS_ADC=y +CONFIG_SOC_I2S_SUPPORTS_DAC=y +CONFIG_SOC_I2S_SUPPORTS_LCD_CAMERA=y +CONFIG_SOC_I2S_MAX_DATA_WIDTH=24 +CONFIG_SOC_I2S_TRANS_SIZE_ALIGN_WORD=y +CONFIG_SOC_I2S_LCD_I80_VARIANT=y +CONFIG_SOC_LCD_I80_SUPPORTED=y +CONFIG_SOC_LCD_I80_BUSES=2 +CONFIG_SOC_LCD_I80_BUS_WIDTH=24 +CONFIG_SOC_LEDC_HAS_TIMER_SPECIFIC_MUX=y +CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y +CONFIG_SOC_LEDC_SUPPORT_REF_TICK=y +CONFIG_SOC_LEDC_SUPPORT_HS_MODE=y CONFIG_SOC_LEDC_TIMER_NUM=4 -CONFIG_SOC_LEDC_CHANNEL_NUM=6 +CONFIG_SOC_LEDC_CHANNEL_NUM=8 CONFIG_SOC_LEDC_TIMER_BIT_WIDTH=20 -CONFIG_SOC_LEDC_SUPPORT_FADE_STOP=y -CONFIG_SOC_LEDC_GAMMA_CURVE_FADE_SUPPORTED=y -CONFIG_SOC_LEDC_GAMMA_CURVE_FADE_RANGE_MAX=16 -CONFIG_SOC_LEDC_FADE_PARAMS_BIT_WIDTH=10 -CONFIG_SOC_LEDC_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_MMU_PAGE_SIZE_CONFIGURABLE=y -CONFIG_SOC_MMU_PAGE_SIZE_8KB_SUPPORTED=y -CONFIG_SOC_MMU_PERIPH_NUM=1 -CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=1 -CONFIG_SOC_MMU_DI_VADDR_SHARED=y -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=4 -CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 -CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 -CONFIG_SOC_PCNT_SUPPORT_RUNTIME_THRES_UPDATE=y -CONFIG_SOC_PCNT_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_RMT_GROUPS=1 -CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=2 -CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=2 -CONFIG_SOC_RMT_CHANNELS_PER_GROUP=4 -CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=48 -CONFIG_SOC_RMT_SUPPORT_RX_PINGPONG=y -CONFIG_SOC_RMT_SUPPORT_RX_DEMODULATION=y -CONFIG_SOC_RMT_SUPPORT_TX_ASYNC_STOP=y -CONFIG_SOC_RMT_SUPPORT_TX_LOOP_COUNT=y -CONFIG_SOC_RMT_SUPPORT_TX_LOOP_AUTO_STOP=y -CONFIG_SOC_RMT_SUPPORT_TX_SYNCHRO=y -CONFIG_SOC_RMT_SUPPORT_TX_CARRIER_DATA_ONLY=y -CONFIG_SOC_RMT_SUPPORT_XTAL=y -CONFIG_SOC_RMT_SUPPORT_RC_FAST=y -CONFIG_SOC_RMT_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_MCPWM_GROUPS=1 +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 @@ -218,192 +134,121 @@ 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_SWSYNC_CAN_PROPAGATE=y -CONFIG_SOC_MCPWM_SUPPORT_ETM=y -CONFIG_SOC_MCPWM_CAPTURE_CLK_FROM_GROUP=y -CONFIG_SOC_MCPWM_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_PARLIO_GROUPS=1 -CONFIG_SOC_PARLIO_TX_UNITS_PER_GROUP=1 -CONFIG_SOC_PARLIO_RX_UNITS_PER_GROUP=1 -CONFIG_SOC_PARLIO_TX_UNIT_MAX_DATA_WIDTH=16 -CONFIG_SOC_PARLIO_RX_UNIT_MAX_DATA_WIDTH=16 -CONFIG_SOC_PARLIO_TX_RX_SHARE_INTERRUPT=y -CONFIG_SOC_PARLIO_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_MPI_MEM_BLOCKS_NUM=4 -CONFIG_SOC_MPI_OPERATIONS_NUM=3 -CONFIG_SOC_RSA_MAX_BIT_LEN=3072 -CONFIG_SOC_SHA_DMA_MAX_BUFFER_SIZE=3968 -CONFIG_SOC_SHA_SUPPORT_DMA=y -CONFIG_SOC_SHA_SUPPORT_RESUME=y -CONFIG_SOC_SHA_GDMA=y -CONFIG_SOC_SHA_SUPPORT_SHA1=y -CONFIG_SOC_SHA_SUPPORT_SHA224=y -CONFIG_SOC_SHA_SUPPORT_SHA256=y +CONFIG_SOC_MMU_PERIPH_NUM=2 +CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=3 +CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 +CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 +CONFIG_SOC_PCNT_GROUPS=1 +CONFIG_SOC_PCNT_UNITS_PER_GROUP=8 +CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 +CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 +CONFIG_SOC_RMT_GROUPS=1 +CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8 +CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=64 +CONFIG_SOC_RMT_SUPPORT_REF_TICK=y +CONFIG_SOC_RMT_SUPPORT_APB=y +CONFIG_SOC_RMT_CHANNEL_CLK_INDEPENDENT=y +CONFIG_SOC_RTCIO_PIN_COUNT=18 +CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y +CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y +CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y CONFIG_SOC_SDM_GROUPS=1 -CONFIG_SOC_SDM_CHANNELS_PER_GROUP=4 -CONFIG_SOC_SDM_CLK_SUPPORT_PLL_F80M=y -CONFIG_SOC_SDM_CLK_SUPPORT_XTAL=y -CONFIG_SOC_SPI_PERIPH_NUM=2 -CONFIG_SOC_SPI_MAX_CS_NUM=6 +CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 +CONFIG_SOC_SDM_CLK_SUPPORT_APB=y +CONFIG_SOC_SPI_HD_BOTH_INOUT_SUPPORTED=y +CONFIG_SOC_SPI_AS_CS_SUPPORTED=y +CONFIG_SOC_SPI_PERIPH_NUM=3 +CONFIG_SOC_SPI_DMA_CHAN_NUM=2 +CONFIG_SOC_SPI_MAX_CS_NUM=3 +CONFIG_SOC_SPI_SUPPORT_CLK_APB=y CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 -CONFIG_SOC_SPI_SUPPORT_DDRCLK=y -CONFIG_SOC_SPI_SLAVE_SUPPORT_SEG_TRANS=y -CONFIG_SOC_SPI_SUPPORT_CD_SIG=y -CONFIG_SOC_SPI_SUPPORT_CONTINUOUS_TRANS=y -CONFIG_SOC_SPI_SUPPORT_SLAVE_HD_VER2=y -CONFIG_SOC_SPI_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_SPI_SUPPORT_CLK_XTAL=y -CONFIG_SOC_SPI_SUPPORT_CLK_PLL_F80M=y -CONFIG_SOC_SPI_SUPPORT_CLK_RC_FAST=y -CONFIG_SOC_SPI_SCT_SUPPORTED=y -CONFIG_SOC_SPI_SCT_REG_NUM=14 -CONFIG_SOC_SPI_SCT_BUFFER_NUM_MAX=y -CONFIG_SOC_SPI_SCT_CONF_BITLEN_MAX=0x3FFFA -CONFIG_SOC_MEMSPI_IS_INDEPENDENT=y -CONFIG_SOC_SPI_MAX_PRE_DIVIDER=16 -CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE=y -CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND=y -CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_RESUME=y -CONFIG_SOC_SPI_MEM_SUPPORT_IDLE_INTR=y -CONFIG_SOC_SPI_MEM_SUPPORT_SW_SUSPEND=y -CONFIG_SOC_SPI_MEM_SUPPORT_CHECK_SUS=y -CONFIG_SOC_SPI_MEM_SUPPORT_WRAP=y +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_SYSTIMER_COUNTER_NUM=2 -CONFIG_SOC_SYSTIMER_ALARM_NUM=3 -CONFIG_SOC_SYSTIMER_BIT_WIDTH_LO=32 -CONFIG_SOC_SYSTIMER_BIT_WIDTH_HI=20 -CONFIG_SOC_SYSTIMER_FIXED_DIVIDER=y -CONFIG_SOC_SYSTIMER_SUPPORT_RC_FAST=y -CONFIG_SOC_SYSTIMER_INT_LEVEL=y -CONFIG_SOC_SYSTIMER_ALARM_MISS_COMPENSATE=y -CONFIG_SOC_SYSTIMER_SUPPORT_ETM=y +CONFIG_SOC_TIMER_GROUPS=2 +CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2 +CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=64 +CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 +CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y CONFIG_SOC_LP_TIMER_BIT_WIDTH_LO=32 CONFIG_SOC_LP_TIMER_BIT_WIDTH_HI=16 -CONFIG_SOC_TIMER_GROUPS=2 -CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=1 -CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=54 -CONFIG_SOC_TIMER_GROUP_SUPPORT_XTAL=y -CONFIG_SOC_TIMER_GROUP_SUPPORT_RC_FAST=y -CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=2 -CONFIG_SOC_TIMER_SUPPORT_ETM=y -CONFIG_SOC_TIMER_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_MWDT_SUPPORT_XTAL=y -CONFIG_SOC_MWDT_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_TWAI_CONTROLLER_NUM=2 -CONFIG_SOC_TWAI_CLK_SUPPORT_XTAL=y +CONFIG_SOC_TOUCH_SENSOR_VERSION=1 +CONFIG_SOC_TOUCH_SENSOR_NUM=10 +CONFIG_SOC_TOUCH_SAMPLE_CFG_NUM=1 +CONFIG_SOC_TWAI_CONTROLLER_NUM=1 CONFIG_SOC_TWAI_BRP_MIN=2 -CONFIG_SOC_TWAI_BRP_MAX=32768 -CONFIG_SOC_TWAI_SUPPORTS_RX_STATUS=y -CONFIG_SOC_TWAI_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_EFUSE_DIS_DOWNLOAD_ICACHE=y -CONFIG_SOC_EFUSE_DIS_PAD_JTAG=y -CONFIG_SOC_EFUSE_DIS_USB_JTAG=y -CONFIG_SOC_EFUSE_DIS_DIRECT_BOOT=y -CONFIG_SOC_EFUSE_SOFT_DIS_JTAG=y -CONFIG_SOC_EFUSE_DIS_ICACHE=y -CONFIG_SOC_EFUSE_BLOCK9_KEY_PURPOSE_QUIRK=y -CONFIG_SOC_SECURE_BOOT_V2_RSA=y -CONFIG_SOC_SECURE_BOOT_V2_ECC=y -CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=3 -CONFIG_SOC_EFUSE_REVOKE_BOOT_KEY_DIGESTS=y -CONFIG_SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY=y -CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=64 -CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES=y -CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_128=y -CONFIG_SOC_APM_CTRL_FILTER_SUPPORTED=y -CONFIG_SOC_APM_LP_APM0_SUPPORTED=y -CONFIG_SOC_CRYPTO_DPA_PROTECTION_SUPPORTED=y +CONFIG_SOC_TWAI_CLK_SUPPORT_APB=y +CONFIG_SOC_TWAI_SUPPORT_MULTI_ADDRESS_LAYOUT=y CONFIG_SOC_UART_NUM=3 -CONFIG_SOC_UART_HP_NUM=2 -CONFIG_SOC_UART_LP_NUM=1 +CONFIG_SOC_UART_HP_NUM=3 +CONFIG_SOC_UART_SUPPORT_APB_CLK=y +CONFIG_SOC_UART_SUPPORT_REF_TICK=y CONFIG_SOC_UART_FIFO_LEN=128 -CONFIG_SOC_LP_UART_FIFO_LEN=16 CONFIG_SOC_UART_BITRATE_MAX=5000000 -CONFIG_SOC_UART_SUPPORT_PLL_F80M_CLK=y -CONFIG_SOC_UART_SUPPORT_RTC_CLK=y -CONFIG_SOC_UART_SUPPORT_XTAL_CLK=y -CONFIG_SOC_UART_SUPPORT_WAKEUP_INT=y -CONFIG_SOC_UART_HAS_LP_UART=y -CONFIG_SOC_UART_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_UART_SUPPORT_FSM_TX_WAIT_SEND=y -CONFIG_SOC_COEX_HW_PTI=y -CONFIG_SOC_EXTERNAL_COEX_ADVANCE=y +CONFIG_SOC_SPIRAM_SUPPORTED=y +CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y +CONFIG_SOC_SHA_SUPPORT_PARALLEL_ENG=y +CONFIG_SOC_SHA_ENDIANNESS_BE=y +CONFIG_SOC_SHA_SUPPORT_SHA1=y +CONFIG_SOC_SHA_SUPPORT_SHA256=y +CONFIG_SOC_SHA_SUPPORT_SHA384=y +CONFIG_SOC_SHA_SUPPORT_SHA512=y +CONFIG_SOC_MPI_MEM_BLOCKS_NUM=4 +CONFIG_SOC_MPI_OPERATIONS_NUM=1 +CONFIG_SOC_RSA_MAX_BIT_LEN=4096 +CONFIG_SOC_AES_SUPPORT_AES_128=y +CONFIG_SOC_AES_SUPPORT_AES_192=y +CONFIG_SOC_AES_SUPPORT_AES_256=y +CONFIG_SOC_SECURE_BOOT_V1=y +CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=1 +CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32 CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 -CONFIG_SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH=12 -CONFIG_SOC_PM_SUPPORT_WIFI_WAKEUP=y -CONFIG_SOC_PM_SUPPORT_BEACON_WAKEUP=y -CONFIG_SOC_PM_SUPPORT_BT_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_EXT0_WAKEUP=y CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP=y -CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP_MODE_PER_PIN=y -CONFIG_SOC_PM_SUPPORT_CPU_PD=y -CONFIG_SOC_PM_SUPPORT_MODEM_PD=y -CONFIG_SOC_PM_SUPPORT_XTAL32K_PD=y -CONFIG_SOC_PM_SUPPORT_RC32K_PD=y +CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_FAST_MEM_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_SLOW_MEM_PD=y CONFIG_SOC_PM_SUPPORT_RC_FAST_PD=y CONFIG_SOC_PM_SUPPORT_VDDSDIO_PD=y -CONFIG_SOC_PM_SUPPORT_TOP_PD=y -CONFIG_SOC_PM_SUPPORT_HP_AON_PD=y -CONFIG_SOC_PM_SUPPORT_MAC_BB_PD=y -CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y -CONFIG_SOC_PM_SUPPORT_PMU_MODEM_STATE=y -CONFIG_SOC_PM_SUPPORT_DEEPSLEEP_CHECK_STUB_ONLY=y -CONFIG_SOC_PM_CPU_RETENTION_BY_SW=y -CONFIG_SOC_PM_MODEM_RETENTION_BY_REGDMA=y -CONFIG_SOC_PM_RETENTION_HAS_CLOCK_BUG=y -CONFIG_SOC_EXT_MEM_CACHE_TAG_IN_CPU_DOMAIN=y -CONFIG_SOC_PM_PAU_LINK_NUM=4 -CONFIG_SOC_PM_PAU_REGDMA_LINK_MULTI_ADDR=y -CONFIG_SOC_PM_PAU_REGDMA_LINK_WIFIMAC=y -CONFIG_SOC_PM_PAU_REGDMA_UPDATE_CACHE_BEFORE_WAIT_COMPARE=y -CONFIG_SOC_PM_RETENTION_MODULE_NUM=32 +CONFIG_SOC_PM_SUPPORT_MODEM_PD=y +CONFIG_SOC_CONFIGURABLE_VDDSDIO_SUPPORTED=y +CONFIG_SOC_PM_MODEM_PD_BY_SW=y +CONFIG_SOC_CLK_APLL_SUPPORTED=y +CONFIG_SOC_CLK_RC_FAST_D256_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_CLK_SUPPORT_RC_FAST_D256=y CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y -CONFIG_SOC_MODEM_CLOCK_IS_INDEPENDENT=y CONFIG_SOC_CLK_XTAL32K_SUPPORTED=y -CONFIG_SOC_CLK_OSC_SLOW_SUPPORTED=y -CONFIG_SOC_CLK_RC32K_SUPPORTED=y -CONFIG_SOC_RCC_IS_INDEPENDENT=y -CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_FAST_RC=y -CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_XTAL=y -CONFIG_SOC_TEMPERATURE_SENSOR_INTR_SUPPORT=y -CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_ETM=y -CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_SLEEP_RETENTION=y -CONFIG_SOC_TEMPERATURE_SENSOR_UNDER_PD_TOP_DOMAIN=y -CONFIG_SOC_RNG_CLOCK_IS_INDEPENDENT=y -CONFIG_SOC_WIFI_HW_TSF=y -CONFIG_SOC_WIFI_FTM_SUPPORT=y -CONFIG_SOC_WIFI_GCMP_SUPPORT=y +CONFIG_SOC_SDMMC_USE_IOMUX=y +CONFIG_SOC_SDMMC_NUM_SLOTS=2 CONFIG_SOC_WIFI_WAPI_SUPPORT=y CONFIG_SOC_WIFI_CSI_SUPPORT=y CONFIG_SOC_WIFI_MESH_SUPPORT=y -CONFIG_SOC_WIFI_HE_SUPPORT=y -CONFIG_SOC_WIFI_MAC_VERSION_NUM=2 +CONFIG_SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW=y +CONFIG_SOC_WIFI_NAN_SUPPORT=y CONFIG_SOC_BLE_SUPPORTED=y CONFIG_SOC_BLE_MESH_SUPPORTED=y -CONFIG_SOC_ESP_NIMBLE_CONTROLLER=y -CONFIG_SOC_BLE_50_SUPPORTED=y -CONFIG_SOC_BLE_DEVICE_PRIVACY_SUPPORTED=y -CONFIG_SOC_BLE_POWER_CONTROL_SUPPORTED=y -CONFIG_SOC_BLE_PERIODIC_ADV_ENH_SUPPORTED=y +CONFIG_SOC_BT_CLASSIC_SUPPORTED=y CONFIG_SOC_BLUFI_SUPPORTED=y +CONFIG_SOC_BT_H2C_ENC_KEY_CTRL_ENH_VSC_SUPPORTED=y CONFIG_SOC_BLE_MULTI_CONN_OPTIMIZATION=y -CONFIG_SOC_BLE_USE_WIFI_PWR_CLK_WORKAROUND=y +CONFIG_SOC_ULP_HAS_ADC=y CONFIG_SOC_PHY_COMBO_MODULE=y -CONFIG_SOC_CAPS_NO_RESET_BY_ANA_BOD=y -CONFIG_SOC_LP_CORE_SINGLE_INTERRUPT_VECTOR=y -CONFIG_SOC_LP_CORE_SUPPORT_ETM=y -CONFIG_SOC_DEBUG_HAVE_OCD_STUB_BINS=y +CONFIG_SOC_EMAC_RMII_CLK_OUT_INTERNAL_LOOPBACK=y CONFIG_IDF_CMAKE=y CONFIG_IDF_TOOLCHAIN="gcc" CONFIG_IDF_TOOLCHAIN_GCC=y -CONFIG_IDF_TARGET_ARCH_RISCV=y -CONFIG_IDF_TARGET_ARCH="riscv" -CONFIG_IDF_TARGET="esp32c6" -CONFIG_IDF_INIT_VERSION="5.4.1" -CONFIG_IDF_TARGET_ESP32C6=y -CONFIG_IDF_FIRMWARE_CHIP_ID=0x000D +CONFIG_IDF_TARGET_ARCH_XTENSA=y +CONFIG_IDF_TARGET_ARCH="xtensa" +CONFIG_IDF_TARGET="esp32" +CONFIG_IDF_INIT_VERSION="5.4.3" +CONFIG_IDF_TARGET_ESP32=y +CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 # # Build type @@ -415,6 +260,8 @@ CONFIG_APP_BUILD_BOOTLOADER=y CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y # CONFIG_APP_REPRODUCIBLE_BUILD is not set # CONFIG_APP_NO_BLOBS is not set +# CONFIG_APP_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set # end of Build type # @@ -428,10 +275,11 @@ CONFIG_BOOTLOADER_COMPILE_TIME_DATE=y CONFIG_BOOTLOADER_PROJECT_VER=1 # end of Bootloader manager -CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x0 +CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000 CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set # # Log @@ -459,6 +307,8 @@ CONFIG_BOOTLOADER_LOG_TIMESTAMP_SOURCE_CPU_TICKS=y CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y # end of Serial Flash Configurations +# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y # CONFIG_BOOTLOADER_FACTORY_RESET is not set # CONFIG_BOOTLOADER_APP_TEST is not set CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y @@ -476,13 +326,10 @@ CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 # # Security features # -CONFIG_SECURE_BOOT_V2_RSA_SUPPORTED=y -CONFIG_SECURE_BOOT_V2_ECC_SUPPORTED=y -CONFIG_SECURE_BOOT_V2_PREFERRED=y +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 -CONFIG_SECURE_ROM_DL_MODE_ENABLED=y # end of Security features # @@ -497,41 +344,19 @@ CONFIG_APP_RETRIEVE_LEN_ELF_SHA=9 CONFIG_ESP_ROM_HAS_CRC_LE=y CONFIG_ESP_ROM_HAS_CRC_BE=y +CONFIG_ESP_ROM_HAS_MZ_CRC32=y CONFIG_ESP_ROM_HAS_JPEG_DECODE=y -CONFIG_ESP_ROM_UART_CLK_IS_XTAL=y -CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=3 -CONFIG_ESP_ROM_HAS_RETARGETABLE_LOCKING=y -CONFIG_ESP_ROM_GET_CLK_FREQ=y -CONFIG_ESP_ROM_HAS_RVFPLIB=y -CONFIG_ESP_ROM_HAS_HAL_WDT=y -CONFIG_ESP_ROM_HAS_HAL_SYSTIMER=y -CONFIG_ESP_ROM_HAS_HEAP_TLSF=y -CONFIG_ESP_ROM_TLSF_CHECK_PATCH=y -CONFIG_ESP_ROM_MULTI_HEAP_WALK_PATCH=y -CONFIG_ESP_ROM_HAS_LAYOUT_TABLE=y -CONFIG_ESP_ROM_HAS_SPI_FLASH=y -CONFIG_ESP_ROM_HAS_REGI2C_BUG=y +CONFIG_ESP_ROM_HAS_UART_BUF_SWITCH=y +CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y CONFIG_ESP_ROM_HAS_NEWLIB=y -CONFIG_ESP_ROM_HAS_NEWLIB_NORMAL_FORMAT=y -CONFIG_ESP_ROM_REV0_HAS_NO_ECDSA_INTERFACE=y -CONFIG_ESP_ROM_WDT_INIT_PATCH=y -CONFIG_ESP_ROM_NEEDS_SET_CACHE_MMU_SIZE=y -CONFIG_ESP_ROM_RAM_APP_NEEDS_MMU_INIT=y +CONFIG_ESP_ROM_HAS_NEWLIB_NANO_FORMAT=y +CONFIG_ESP_ROM_HAS_NEWLIB_32BIT_TIME=y CONFIG_ESP_ROM_HAS_SW_FLOAT=y CONFIG_ESP_ROM_USB_OTG_NUM=-1 -CONFIG_ESP_ROM_HAS_VERSION=y +CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=-1 CONFIG_ESP_ROM_SUPPORT_DEEP_SLEEP_WAKEUP_STUB=y CONFIG_ESP_ROM_HAS_OUTPUT_PUTC_FUNC=y -# -# Boot ROM Behavior -# -CONFIG_BOOT_ROM_LOG_ALWAYS_ON=y -# CONFIG_BOOT_ROM_LOG_ALWAYS_OFF is not set -# CONFIG_BOOT_ROM_LOG_ON_GPIO_HIGH is not set -# CONFIG_BOOT_ROM_LOG_ON_GPIO_LOW is not set -# end of Boot ROM Behavior - # # Serial flasher config # @@ -542,19 +367,20 @@ 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=y -# CONFIG_ESPTOOLPY_FLASHFREQ_40M is not set +# 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="80m" +CONFIG_ESPTOOLPY_FLASHFREQ="40m" # CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set -# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y # CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set -CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y +# 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="8MB" +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" # CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set CONFIG_ESPTOOLPY_BEFORE_RESET=y # CONFIG_ESPTOOLPY_BEFORE_NORESET is not set @@ -592,24 +418,21 @@ CONFIG_DEVICE_MAX_STA_CONN=4 # Example Ethernet Configuration # CONFIG_ENV_GPIO_RANGE_MIN=0 -CONFIG_ENV_GPIO_RANGE_MAX=30 -CONFIG_ENV_GPIO_IN_RANGE_MAX=30 -CONFIG_ENV_GPIO_OUT_RANGE_MAX=30 -CONFIG_USE_SPI_ETHERNET=y -CONFIG_SPI_ETHERNETS_NUM=1 -# CONFIG_USE_DM9051 is not set -# CONFIG_USE_KSZ8851SNL is not set -CONFIG_USE_W5500=y -CONFIG_ETH_SPI_HOST=1 -CONFIG_ETH_SPI_SCLK_GPIO=6 -CONFIG_ETH_SPI_MOSI_GPIO=7 -CONFIG_ETH_SPI_MISO_GPIO=2 -CONFIG_ETH_SPI_CLOCK_MHZ=16 -CONFIG_ETH_SPI_CS0_GPIO=3 -CONFIG_ETH_SPI_INT0_GPIO=4 -CONFIG_ETH_SPI_POLLING0_MS=0 -CONFIG_ETH_SPI_PHY_RST0_GPIO=-1 -CONFIG_ETH_SPI_PHY_ADDR0=1 +CONFIG_ENV_GPIO_RANGE_MAX=39 +CONFIG_ENV_GPIO_IN_RANGE_MAX=39 +CONFIG_ENV_GPIO_OUT_RANGE_MAX=33 +CONFIG_USE_INTERNAL_ETHERNET=y +# CONFIG_ETH_PHY_GENERIC is not set +# CONFIG_ETH_PHY_IP101 is not set +# CONFIG_ETH_PHY_RTL8201 is not set +CONFIG_ETH_PHY_LAN87XX=y +# CONFIG_ETH_PHY_DP83848 is not set +# CONFIG_ETH_PHY_KSZ80XX is not set +CONFIG_ETH_MDC_GPIO=23 +CONFIG_ETH_MDIO_GPIO=33 +CONFIG_ETH_PHY_RST_GPIO=5 +CONFIG_ETH_PHY_ADDR=1 +# CONFIG_USE_SPI_ETHERNET is not set # end of Example Ethernet Configuration # @@ -623,8 +446,7 @@ CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set CONFIG_COMPILER_ASSERT_NDEBUG_EVALUATE=y -# CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB is not set -CONFIG_COMPILER_FLOAT_LIB_FROM_RVFPLIB=y +CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 # CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set CONFIG_COMPILER_HIDE_PATHS_MACROS=y @@ -637,7 +459,6 @@ CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y # CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set # CONFIG_COMPILER_NO_MERGE_CONSTANTS is not set # CONFIG_COMPILER_WARN_WRITE_STRINGS is not set -# CONFIG_COMPILER_SAVE_RESTORE_LIBCALLS is not set CONFIG_COMPILER_DISABLE_DEFAULT_ERRORS=y # CONFIG_COMPILER_DISABLE_GCC12_WARNINGS is not set # CONFIG_COMPILER_DISABLE_GCC13_WARNINGS is not set @@ -645,8 +466,8 @@ CONFIG_COMPILER_DISABLE_DEFAULT_ERRORS=y # CONFIG_COMPILER_DUMP_RTL_FILES is not set CONFIG_COMPILER_RT_LIB_GCCLIB=y CONFIG_COMPILER_RT_LIB_NAME="gcc" -# CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING is not set -CONFIG_COMPILER_ORPHAN_SECTIONS_PLACE=y +CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING=y +# CONFIG_COMPILER_ORPHAN_SECTIONS_PLACE is not set # CONFIG_COMPILER_STATIC_ANALYZER is not set # end of Compiler options @@ -670,7 +491,20 @@ CONFIG_APPTRACE_LOCK_ENABLE=y # Bluetooth # # CONFIG_BT_ENABLED is not set -CONFIG_BT_ALARM_MAX_NUM=50 + +# +# Common Options +# + +# +# BLE Log +# +# CONFIG_BLE_LOG_ENABLED is not set +# end of BLE Log + +# CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED is not set +# CONFIG_BT_BLE_LOG_UHCI_OUT_ENABLED is not set +# end of Common Options # end of Bluetooth # @@ -687,21 +521,37 @@ CONFIG_BT_ALARM_MAX_NUM=50 # 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 +CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y # end of TWAI Configuration # # Legacy ADC Driver Configuration # +CONFIG_ADC_DISABLE_DAC=y # CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_ADC_SKIP_LEGACY_CONFLICT_CHECK is not set # # Legacy ADC Calibration Configuration # +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y # CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set # end of Legacy ADC Calibration Configuration # end of Legacy ADC Driver Configuration +# +# Legacy DAC Driver Configurations +# +# CONFIG_DAC_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_DAC_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy DAC Driver Configurations + # # Legacy MCPWM Driver Configurations # @@ -730,6 +580,12 @@ CONFIG_BT_ALARM_MAX_NUM=50 # CONFIG_I2S_SKIP_LEGACY_CONFLICT_CHECK is not set # end of Legacy I2S Driver Configurations +# +# Legacy I2C Driver Configurations +# +# CONFIG_I2C_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy I2C Driver Configurations + # # Legacy PCNT Driver Configurations # @@ -743,13 +599,6 @@ CONFIG_BT_ALARM_MAX_NUM=50 # CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_SDM_SKIP_LEGACY_CONFLICT_CHECK is not set # end of Legacy SDM Driver Configurations - -# -# Legacy Temperature Sensor Driver Configurations -# -# CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set -# CONFIG_TEMP_SENSOR_SKIP_LEGACY_CONFLICT_CHECK is not set -# end of Legacy Temperature Sensor Driver Configurations # end of Driver Configurations # @@ -757,20 +606,24 @@ CONFIG_BT_ALARM_MAX_NUM=50 # # CONFIG_EFUSE_CUSTOM_TABLE is not set # CONFIG_EFUSE_VIRTUAL is not set -CONFIG_EFUSE_MAX_BLK_LEN=256 +# 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_DS_PERIPHERAL=y +# CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set # CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set # CONFIG_ESP_TLS_SERVER_SESSION_TICKETS is not set # CONFIG_ESP_TLS_SERVER_CERT_SELECT_HOOK is not set # CONFIG_ESP_TLS_SERVER_MIN_AUTH_MODE_OPTIONAL is not set # CONFIG_ESP_TLS_PSK_VERIFICATION is not set # CONFIG_ESP_TLS_INSECURE is not set +CONFIG_ESP_TLS_DYN_BUF_STRATEGY_SUPPORTED=y # end of ESP-TLS # @@ -778,6 +631,16 @@ CONFIG_ESP_TLS_USE_DS_PERIPHERAL=y # # CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set # CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set + +# +# ADC Calibration Configurations +# +CONFIG_ADC_CALI_EFUSE_TP_ENABLE=y +CONFIG_ADC_CALI_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CALI_LUT_ENABLE=y +# end of ADC Calibration Configurations + +CONFIG_ADC_DISABLE_DAC_OUTPUT=y # CONFIG_ADC_ENABLE_DEBUG_LOG is not set # end of ADC and ADC Calibration @@ -785,9 +648,6 @@ CONFIG_ESP_TLS_USE_DS_PERIPHERAL=y # Wireless Coexistence # CONFIG_ESP_COEX_ENABLED=y -CONFIG_ESP_COEX_SW_COEXIST_ENABLE=y -# CONFIG_ESP_COEX_EXTERNAL_COEXIST_ENABLE is not set -# CONFIG_ESP_COEX_POWER_MANAGEMENT is not set # CONFIG_ESP_COEX_GPIO_DEBUG is not set # end of Wireless Coexistence @@ -797,9 +657,19 @@ CONFIG_ESP_COEX_SW_COEXIST_ENABLE=y CONFIG_ESP_ERR_TO_NAME_LOOKUP=y # end of Common ESP-related +# +# ESP-Driver:DAC Configurations +# +# CONFIG_DAC_CTRL_FUNC_IN_IRAM is not set +# CONFIG_DAC_ISR_IRAM_SAFE is not set +# CONFIG_DAC_ENABLE_DEBUG_LOG is not set +CONFIG_DAC_DMA_AUTO_16BIT_ALIGN=y +# end of ESP-Driver:DAC Configurations + # # ESP-Driver:GPIO Configurations # +# CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set # CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set # end of ESP-Driver:GPIO Configurations @@ -809,6 +679,7 @@ CONFIG_ESP_ERR_TO_NAME_LOOKUP=y CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y # CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set # CONFIG_GPTIMER_ISR_IRAM_SAFE is not set +CONFIG_GPTIMER_OBJ_CACHE_SAFE=y # CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set # end of ESP-Driver:GPTimer Configurations @@ -841,13 +712,6 @@ CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y # CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set # end of ESP-Driver:MCPWM Configurations -# -# ESP-Driver:Parallel IO Configurations -# -# CONFIG_PARLIO_ENABLE_DEBUG_LOG is not set -# CONFIG_PARLIO_ISR_IRAM_SAFE is not set -# end of ESP-Driver:Parallel IO Configurations - # # ESP-Driver:PCNT Configurations # @@ -881,11 +745,12 @@ CONFIG_SPI_SLAVE_ISR_IN_IRAM=y # end of ESP-Driver:SPI Configurations # -# ESP-Driver:Temperature Sensor Configurations +# ESP-Driver:Touch Sensor Configurations # -# CONFIG_TEMP_SENSOR_ENABLE_DEBUG_LOG is not set -# CONFIG_TEMP_SENSOR_ISR_IRAM_SAFE is not set -# end of ESP-Driver:Temperature Sensor Configurations +# CONFIG_TOUCH_CTRL_FUNC_IN_IRAM is not set +# CONFIG_TOUCH_ISR_IRAM_SAFE is not set +# CONFIG_TOUCH_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:Touch Sensor Configurations # # ESP-Driver:UART Configurations @@ -894,18 +759,29 @@ CONFIG_SPI_SLAVE_ISR_IN_IRAM=y # end of ESP-Driver:UART Configurations # -# ESP-Driver:USB Serial/JTAG Configuration +# ESP-Driver:UHCI Configurations # -CONFIG_USJ_ENABLE_USB_SERIAL_JTAG=y -# end of ESP-Driver:USB Serial/JTAG Configuration +# CONFIG_UHCI_ISR_HANDLER_IN_IRAM is not set +# CONFIG_UHCI_ISR_CACHE_SAFE is not set +# CONFIG_UHCI_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:UHCI Configurations # # Ethernet # CONFIG_ETH_ENABLED=y +CONFIG_ETH_USE_ESP32_EMAC=y +CONFIG_ETH_PHY_INTERFACE_RMII=y +CONFIG_ETH_RMII_CLK_INPUT=y +# CONFIG_ETH_RMII_CLK_OUTPUT is not set +CONFIG_ETH_RMII_CLK_IN_GPIO=0 +CONFIG_ETH_DMA_BUFFER_SIZE=512 +CONFIG_ETH_DMA_RX_BUFFER_NUM=10 +CONFIG_ETH_DMA_TX_BUFFER_NUM=10 +# CONFIG_ETH_IRAM_OPTIMIZATION is not set CONFIG_ETH_USE_SPI_ETHERNET=y # CONFIG_ETH_SPI_ETHERNET_DM9051 is not set -CONFIG_ETH_SPI_ETHERNET_W5500=y +# 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 @@ -980,21 +856,26 @@ CONFIG_ESP_HTTPS_SERVER_EVENT_POST_TIMEOUT=2000 # # Chip revision # -CONFIG_ESP32C6_REV_MIN_0=y -# CONFIG_ESP32C6_REV_MIN_1 is not set -CONFIG_ESP32C6_REV_MIN_FULL=0 +CONFIG_ESP32_REV_MIN_0=y +# CONFIG_ESP32_REV_MIN_1 is not set +# CONFIG_ESP32_REV_MIN_1_1 is not set +# CONFIG_ESP32_REV_MIN_2 is not set +# CONFIG_ESP32_REV_MIN_3 is not set +# CONFIG_ESP32_REV_MIN_3_1 is not set +CONFIG_ESP32_REV_MIN=0 +CONFIG_ESP32_REV_MIN_FULL=0 CONFIG_ESP_REV_MIN_FULL=0 # -# Maximum Supported ESP32-C6 Revision (Rev v0.99) +# Maximum Supported ESP32 Revision (Rev v3.99) # -CONFIG_ESP32C6_REV_MAX_FULL=99 -CONFIG_ESP_REV_MAX_FULL=99 +CONFIG_ESP32_REV_MAX_FULL=399 +CONFIG_ESP_REV_MAX_FULL=399 CONFIG_ESP_EFUSE_BLOCK_REV_MIN_FULL=0 CONFIG_ESP_EFUSE_BLOCK_REV_MAX_FULL=99 # -# Maximum Supported ESP32-C6 eFuse Block Revision (eFuse Block Rev v0.99) +# Maximum Supported ESP32 eFuse Block Revision (eFuse Block Rev v0.99) # # end of Chip revision @@ -1005,12 +886,12 @@ CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y -CONFIG_ESP_MAC_ADDR_UNIVERSE_IEEE802154=y CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR=y CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES=4 -# CONFIG_ESP32C6_UNIVERSAL_MAC_ADDRESSES_TWO is not set -CONFIG_ESP32C6_UNIVERSAL_MAC_ADDRESSES_FOUR=y -CONFIG_ESP32C6_UNIVERSAL_MAC_ADDRESSES=4 +# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 +# CONFIG_ESP_MAC_IGNORE_MAC_CRC_ERROR is not set # CONFIG_ESP_MAC_USE_CUSTOM_MAC_AS_BASE_MAC is not set # end of MAC Config @@ -1020,8 +901,9 @@ CONFIG_ESP32C6_UNIVERSAL_MAC_ADDRESSES=4 # CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y # CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set -CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y -CONFIG_ESP_SLEEP_WAIT_FLASH_READY_EXTRA_DELAY=0 +CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y +# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set +CONFIG_ESP_SLEEP_WAIT_FLASH_READY_EXTRA_DELAY=2000 # CONFIG_ESP_SLEEP_CACHE_SAFE_ASSERTION is not set # CONFIG_ESP_SLEEP_DEBUG is not set CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y @@ -1033,34 +915,23 @@ CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y 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_USE_DANGEROUS_RC32K_ALLOWED 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=y +# CONFIG_PERIPH_CTRL_FUNC_IN_IRAM is not set # end of Peripheral Control -# -# ETM Configuration -# -# CONFIG_ETM_ENABLE_DEBUG_LOG is not set -# end of ETM Configuration - -# -# GDMA Configurations -# -CONFIG_GDMA_CTRL_FUNC_IN_IRAM=y -# CONFIG_GDMA_ISR_IRAM_SAFE is not set -# CONFIG_GDMA_ENABLE_DEBUG_LOG is not set -# end of GDMA Configurations - # # Main XTAL Config # +# CONFIG_XTAL_FREQ_26 is not set +# CONFIG_XTAL_FREQ_32 is not set CONFIG_XTAL_FREQ_40=y +# CONFIG_XTAL_FREQ_AUTO is not set CONFIG_XTAL_FREQ=40 # end of Main XTAL Config @@ -1112,8 +983,11 @@ CONFIG_ESP_PHY_RF_CAL_PARTIAL=y # CONFIG_ESP_PHY_RF_CAL_NONE is not set # CONFIG_ESP_PHY_RF_CAL_FULL is not set CONFIG_ESP_PHY_CALIBRATION_MODE=0 +CONFIG_ESP_PHY_PLL_TRACK_PERIOD_MS=1000 # CONFIG_ESP_PHY_PLL_TRACK_DEBUG is not set # CONFIG_ESP_PHY_RECORD_USED_TIME is not set +CONFIG_ESP_PHY_IRAM_OPT=y +# CONFIG_ESP_PHY_DEBUG is not set # end of PHY # @@ -1121,14 +995,13 @@ CONFIG_ESP_PHY_CALIBRATION_MODE=0 # # CONFIG_PM_ENABLE is not set # CONFIG_PM_SLP_IRAM_OPT is not set -CONFIG_PM_SLP_DEFAULT_PARAMS_OPT=y -CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y -# CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP is not set # end of Power Management # # ESP PSRAM # +# CONFIG_SPIRAM is not set +# end of ESP PSRAM # # ESP Ringbuf @@ -1139,96 +1012,101 @@ CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y # # ESP Security Specific # - -# -# Crypto DPA Protection -# -CONFIG_ESP_CRYPTO_DPA_PROTECTION_AT_STARTUP=y -CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL_LOW=y -# CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL_MEDIUM is not set -# CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL_HIGH is not set -CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL=1 -# end of Crypto DPA Protection # end of ESP Security Specific # # ESP System Settings # # CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set -# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_120 is not set CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 + +# +# Memory +# +# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set + +# +# Non-backward compatible options +# +# CONFIG_ESP_SYSTEM_ESP32_SRAM1_REGION_AS_IRAM is not set +# end of Non-backward compatible options +# end of Memory + +# +# Trace memory +# +# CONFIG_ESP32_TRAX is not set +CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 +# end of Trace memory + # CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y # CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set # CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0 -CONFIG_ESP_SYSTEM_SINGLE_CORE_MODE=y -CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK=y -CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP=y -# CONFIG_ESP_SYSTEM_USE_EH_FRAME is not set # # Memory protection # -CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT=y -# CONFIG_ESP_SYSTEM_PMP_LP_CORE_RESERVE_MEM_EXECUTABLE is not set # 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_USB_SERIAL_JTAG is not set # CONFIG_ESP_CONSOLE_UART_CUSTOM is not set # CONFIG_ESP_CONSOLE_NONE is not set -# CONFIG_ESP_CONSOLE_SECONDARY_NONE is not set -CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG=y -CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG_ENABLED=y CONFIG_ESP_CONSOLE_UART=y CONFIG_ESP_CONSOLE_UART_NUM=0 CONFIG_ESP_CONSOLE_ROM_SERIAL_PORT_NUM=0 CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 CONFIG_ESP_INT_WDT=y CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 +CONFIG_ESP_INT_WDT_CHECK_CPU1=y CONFIG_ESP_TASK_WDT_EN=y CONFIG_ESP_TASK_WDT_INIT=y # CONFIG_ESP_TASK_WDT_PANIC is not set CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y # CONFIG_ESP_PANIC_HANDLER_IRAM is not set # CONFIG_ESP_DEBUG_STUBS_ENABLE is not set -# CONFIG_ESP_DEBUG_INCLUDE_OCD_STUB_BINS is not set CONFIG_ESP_DEBUG_OCDAWARE=y +# CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5 is not set CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y # # Brownout Detector # CONFIG_ESP_BROWNOUT_DET=y -CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7=y -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set +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=7 +# 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 +# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y -CONFIG_ESP_SYSTEM_HW_STACK_GUARD=y -CONFIG_ESP_SYSTEM_BBPLL_RECALIB=y -CONFIG_ESP_SYSTEM_HW_PC_RECORD=y # 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) # @@ -1244,7 +1122,7 @@ CONFIG_ESP_TIMER_TASK_AFFINITY=0x0 CONFIG_ESP_TIMER_TASK_AFFINITY_CPU0=y CONFIG_ESP_TIMER_ISR_AFFINITY_CPU0=y # CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set -CONFIG_ESP_TIMER_IMPL_SYSTIMER=y +CONFIG_ESP_TIMER_IMPL_TG0_LAC=y # end of ESP Timer (High Resolution Timer) # @@ -1267,38 +1145,35 @@ CONFIG_ESP_WIFI_TX_BA_WIN=6 CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP_WIFI_RX_BA_WIN=6 CONFIG_ESP_WIFI_NVS_ENABLED=y +CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_0=y +# CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_1 is not set CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752 CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32 CONFIG_ESP_WIFI_IRAM_OPT=y -CONFIG_ESP_WIFI_EXTRA_IRAM_OPT=y +# CONFIG_ESP_WIFI_EXTRA_IRAM_OPT is not set CONFIG_ESP_WIFI_RX_IRAM_OPT=y CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y CONFIG_ESP_WIFI_ENABLE_SAE_PK=y CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y -CONFIG_ESP_WIFI_SLP_IRAM_OPT=y +# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set CONFIG_ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME=50 CONFIG_ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME=10 CONFIG_ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15 -# CONFIG_ESP_WIFI_FTM_ENABLE is not set CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE=y -# CONFIG_ESP_WIFI_GCMP_SUPPORT is not set # CONFIG_ESP_WIFI_GMAC_SUPPORT is not set CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y # CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7 +# CONFIG_ESP_WIFI_NAN_ENABLE is not set CONFIG_ESP_WIFI_MBEDTLS_CRYPTO=y CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y # CONFIG_ESP_WIFI_WAPI_PSK is not set -# CONFIG_ESP_WIFI_SUITE_B_192 is not set # CONFIG_ESP_WIFI_11KV_SUPPORT is not set # CONFIG_ESP_WIFI_MBO_SUPPORT is not set # CONFIG_ESP_WIFI_DPP_SUPPORT is not set # CONFIG_ESP_WIFI_11R_SUPPORT is not set # CONFIG_ESP_WIFI_WPS_SOFTAP_REGISTRAR is not set -# CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS is not set -# CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS is not set -CONFIG_ESP_WIFI_TX_HETB_QUEUE_NUM=3 # # WPS Configuration Options @@ -1364,6 +1239,14 @@ CONFIG_FATFS_VFS_FSTAT_BLKSIZE=0 # CONFIG_FATFS_IMMEDIATE_FSYNC is not set # CONFIG_FATFS_USE_LABEL is not set CONFIG_FATFS_LINK_LOCK=y +# CONFIG_FATFS_USE_DYN_BUFFERS is not set + +# +# File system free space calculation behavior +# +CONFIG_FATFS_DONT_TRUST_FREE_CLUSTER_CNT=0 +CONFIG_FATFS_DONT_TRUST_LAST_ALLOC=0 +# end of File system free space calculation behavior # end of FAT Filesystem support # @@ -1374,9 +1257,8 @@ CONFIG_FATFS_LINK_LOCK=y # Kernel # # CONFIG_FREERTOS_SMP is not set -CONFIG_FREERTOS_UNICORE=y +# CONFIG_FREERTOS_UNICORE is not set CONFIG_FREERTOS_HZ=100 -CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y @@ -1389,6 +1271,7 @@ CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 CONFIG_FREERTOS_USE_TIMERS=y CONFIG_FREERTOS_TIMER_SERVICE_TASK_NAME="Tmr Svc" # CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU0 is not set +# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU1 is not set CONFIG_FREERTOS_TIMER_TASK_NO_AFFINITY=y CONFIG_FREERTOS_TIMER_SERVICE_TASK_CORE_AFFINITY=0x7FFFFFFF CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 @@ -1413,10 +1296,11 @@ CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y CONFIG_FREERTOS_ISR_STACKSIZE=1536 CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y -CONFIG_FREERTOS_TICK_SUPPORT_SYSTIMER=y -CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL1=y -# CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL3 is not set -CONFIG_FREERTOS_SYSTICK_USES_SYSTIMER=y +# CONFIG_FREERTOS_FPU_IN_ISR is not set +CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER=y +CONFIG_FREERTOS_CORETIMER_0=y +# CONFIG_FREERTOS_CORETIMER_1 is not set +CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y # CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set # CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set # end of Port @@ -1432,7 +1316,7 @@ CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y CONFIG_FREERTOS_DEBUG_OCDAWARE=y CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y -CONFIG_FREERTOS_NUMBER_OF_CORES=1 +CONFIG_FREERTOS_NUMBER_OF_CORES=2 # end of FreeRTOS # @@ -1443,8 +1327,6 @@ CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y # CONFIG_HAL_ASSERTION_SILENT is not set # CONFIG_HAL_ASSERTION_ENABLE is not set CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 -CONFIG_HAL_SYSTIMER_USE_ROM_IMPL=y -CONFIG_HAL_WDT_USE_ROM_IMPL=y CONFIG_HAL_SPI_MASTER_FUNC_IN_IRAM=y CONFIG_HAL_SPI_SLAVE_FUNC_IN_IRAM=y # end of Hardware Abstraction Layer (HAL) and Low Level (LL) @@ -1461,26 +1343,9 @@ CONFIG_HEAP_TRACING_OFF=y # CONFIG_HEAP_USE_HOOKS is not set # CONFIG_HEAP_TASK_TRACKING is not set # CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set -CONFIG_HEAP_TLSF_USE_ROM_IMPL=y +# CONFIG_HEAP_PLACE_FUNCTION_INTO_FLASH is not set # end of Heap memory debugging -# -# IEEE 802.15.4 -# -CONFIG_IEEE802154_ENABLED=y -CONFIG_IEEE802154_RX_BUFFER_SIZE=20 -# CONFIG_IEEE802154_CCA_CARRIER is not set -CONFIG_IEEE802154_CCA_ED=y -# CONFIG_IEEE802154_CCA_CARRIER_OR_ED is not set -# CONFIG_IEEE802154_CCA_CARRIER_AND_ED is not set -CONFIG_IEEE802154_CCA_MODE=1 -CONFIG_IEEE802154_CCA_THRESHOLD=-60 -CONFIG_IEEE802154_PENDING_TABLE_SIZE=20 -# CONFIG_IEEE802154_MULTI_PAN_ENABLE is not set -# CONFIG_IEEE802154_TIMING_OPTIMIZATION is not set -# CONFIG_IEEE802154_DEBUG is not set -# end of IEEE 802.15.4 - # # Log # @@ -1495,10 +1360,10 @@ 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 is not set -CONFIG_LOG_MAXIMUM_LEVEL_DEBUG=y +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=4 +CONFIG_LOG_MAXIMUM_LEVEL=3 # # Level Settings @@ -1517,7 +1382,7 @@ CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_SIZE=31 # # Format # -CONFIG_LOG_COLORS=y +# CONFIG_LOG_COLORS is not set CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y # CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set # end of Format @@ -1527,7 +1392,7 @@ CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y # LWIP # CONFIG_LWIP_ENABLE=y -CONFIG_LWIP_LOCAL_HOSTNAME="ChaosWatch" +CONFIG_LWIP_LOCAL_HOSTNAME="LeoLights" # CONFIG_LWIP_NETIF_API is not set CONFIG_LWIP_TCPIP_TASK_PRIO=18 # CONFIG_LWIP_TCPIP_CORE_LOCKING is not set @@ -1565,7 +1430,7 @@ 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 +CONFIG_LWIP_DHCP_OPTIONS_LEN=69 CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 CONFIG_LWIP_DHCP_COARSE_TIMER_SECS=1 @@ -1633,12 +1498,14 @@ CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y # CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 CONFIG_LWIP_IPV6_ND6_NUM_PREFIXES=5 CONFIG_LWIP_IPV6_ND6_NUM_ROUTERS=3 CONFIG_LWIP_IPV6_ND6_NUM_DESTINATIONS=10 +# CONFIG_LWIP_IPV6_ND6_ROUTE_INFO_OPTION_SUPPORT is not set # CONFIG_LWIP_PPP_SUPPORT is not set # CONFIG_LWIP_SLIP_SUPPORT is not set @@ -1698,8 +1565,8 @@ CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_NONE=y # CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_CUSTOM is not set -CONFIG_LWIP_HOOK_IP6_INPUT_NONE=y -# CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_INPUT_NONE is not set +CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT=y # CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set # end of Hooks @@ -1726,6 +1593,7 @@ CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 # CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set # CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y +# CONFIG_MBEDTLS_SSL_KEYING_MATERIAL_EXPORT is not set CONFIG_MBEDTLS_PKCS7_C=y # end of mbedTLS v3.x related @@ -1744,16 +1612,10 @@ CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 # CONFIG_MBEDTLS_ECP_RESTARTABLE is not set CONFIG_MBEDTLS_CMAC_C=y CONFIG_MBEDTLS_HARDWARE_AES=y -CONFIG_MBEDTLS_AES_USE_INTERRUPT=y -CONFIG_MBEDTLS_AES_INTERRUPT_LEVEL=0 CONFIG_MBEDTLS_GCM_SUPPORT_NON_AES_CIPHER=y CONFIG_MBEDTLS_HARDWARE_MPI=y -CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI=y -CONFIG_MBEDTLS_MPI_USE_INTERRUPT=y -CONFIG_MBEDTLS_MPI_INTERRUPT_LEVEL=0 +# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set CONFIG_MBEDTLS_HARDWARE_SHA=y -CONFIG_MBEDTLS_HARDWARE_ECC=y -CONFIG_MBEDTLS_ECC_OTHER_CURVES_SOFT_FALLBACK=y CONFIG_MBEDTLS_ROM_MD5=y # CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set # CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set @@ -1761,6 +1623,7 @@ CONFIG_MBEDTLS_HAVE_TIME=y # CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set # CONFIG_MBEDTLS_HAVE_TIME_DATE is not set CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y +CONFIG_MBEDTLS_SHA1_C=y CONFIG_MBEDTLS_SHA512_C=y # CONFIG_MBEDTLS_SHA3_C is not set CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y @@ -1835,13 +1698,14 @@ CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y CONFIG_MBEDTLS_ECP_NIST_OPTIM=y -CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM=y +# CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM is not set # CONFIG_MBEDTLS_POLY1305_C is not set # CONFIG_MBEDTLS_CHACHA20_C is not set # CONFIG_MBEDTLS_HKDF_C is not set # CONFIG_MBEDTLS_THREADING_C is not set CONFIG_MBEDTLS_ERROR_STRINGS=y CONFIG_MBEDTLS_FS_IO=y +# CONFIG_MBEDTLS_ALLOW_WEAK_CERTIFICATE_VERIFICATION is not set # end of mbedTLS # @@ -1879,7 +1743,6 @@ CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y # # NVS # -# CONFIG_NVS_ENCRYPTION is not set # CONFIG_NVS_ASSERT_ERROR_CHECK is not set # CONFIG_NVS_LEGACY_DUP_KEYS_COMPATIBILITY is not set # end of NVS @@ -1894,6 +1757,8 @@ CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y # # CONFIG_OPENTHREAD_SPINEL_ONLY is not set # end of OpenThread Spinel + +# CONFIG_OPENTHREAD_DEBUG is not set # end of OpenThread # @@ -1911,6 +1776,9 @@ CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_PATCH_VERSION=y 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 @@ -1941,9 +1809,9 @@ CONFIG_SPI_FLASH_BROWNOUT_RESET=y # # Features here require specific hardware (READ DOCS FIRST!) # -# CONFIG_SPI_FLASH_AUTO_SUSPEND is not set CONFIG_SPI_FLASH_SUSPEND_TSUS_VAL_US=50 # CONFIG_SPI_FLASH_FORCE_ENABLE_XMC_C_SUSPEND is not set +# CONFIG_SPI_FLASH_FORCE_ENABLE_C6_H2_SUSPEND is not set # end of Optional and Experimental Features (READ DOCS FIRST) # end of Main Flash configuration @@ -1953,10 +1821,10 @@ CONFIG_SPI_FLASH_SUSPEND_TSUS_VAL_US=50 # 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_ROM_IMPL is not set CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y # CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set # CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set +# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set # CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 @@ -1970,10 +1838,14 @@ CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 # Auto-detect flash chips # CONFIG_SPI_FLASH_VENDOR_XMC_SUPPORTED=y -# CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP is not set -# CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP is not set -# CONFIG_SPI_FLASH_SUPPORT_GD_CHIP is not set -# CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP is not set +CONFIG_SPI_FLASH_VENDOR_GD_SUPPORTED=y +CONFIG_SPI_FLASH_VENDOR_ISSI_SUPPORTED=y +CONFIG_SPI_FLASH_VENDOR_MXIC_SUPPORTED=y +CONFIG_SPI_FLASH_VENDOR_WINBOND_SUPPORTED=y +CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y # CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set # CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set # end of Auto-detect flash chips @@ -2100,7 +1972,17 @@ CONFIG_MDNS_ACTION_QUEUE_LEN=16 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 + +# +# MDNS Memory Configuration +# +CONFIG_MDNS_TASK_CREATE_FROM_INTERNAL=y +CONFIG_MDNS_MEMORY_ALLOC_INTERNAL=y +# CONFIG_MDNS_MEMORY_CUSTOM_IMPL is not set +# end of MDNS Memory Configuration + CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000 CONFIG_MDNS_TIMER_PERIOD_MS=100 # CONFIG_MDNS_NETWORKING_SOCKET is not set @@ -2163,6 +2045,9 @@ CONFIG_TELNET_SERVER_REDIRECT_LOGS=0 # Deprecated options for backward compatibility # CONFIG_APP_BUILD_TYPE_ELF_RAM is not set # CONFIG_NO_BLOBS is not set +# CONFIG_ESP32_NO_BLOBS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set # CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set # CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set # CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set @@ -2196,11 +2081,7 @@ CONFIG_STACK_CHECK_NONE=y # CONFIG_ESP32_APPTRACE_DEST_TRAX is not set CONFIG_ESP32_APPTRACE_DEST_NONE=y CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y -CONFIG_SW_COEXIST_ENABLE=y -CONFIG_ESP32_WIFI_SW_COEXIST_ENABLE=y -CONFIG_ESP_WIFI_SW_COEXIST_ENABLE=y -# CONFIG_EXTERNAL_COEX_ENABLE is not set -# CONFIG_ESP_WIFI_EXTERNAL_COEXIST_ENABLE is not set +CONFIG_ADC2_DISABLE_DAC=y # CONFIG_MCPWM_ISR_IN_IRAM is not set # CONFIG_EVENT_LOOP_PROFILING is not set CONFIG_POST_EVENTS_FROM_ISR=y @@ -2208,14 +2089,42 @@ CONFIG_POST_EVENTS_FROM_IRAM_ISR=y CONFIG_GDBSTUB_SUPPORT_TASKS=y CONFIG_GDBSTUB_MAX_TASKS=32 # CONFIG_OTA_ALLOW_HTTP is not set +# CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 # CONFIG_ESP_SYSTEM_PD_FLASH is not set +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +# CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set +# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set +# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +# CONFIG_ESP32_XTAL_FREQ_26 is not set +CONFIG_ESP32_XTAL_FREQ_40=y +# CONFIG_ESP32_XTAL_FREQ_AUTO is not set +CONFIG_ESP32_XTAL_FREQ=40 CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y # CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 CONFIG_ESP32_PHY_MAX_TX_POWER=20 # CONFIG_REDUCE_PHY_TX_POWER is not set # CONFIG_ESP32_REDUCE_PHY_TX_POWER is not set -CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU=y +# CONFIG_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 +# CONFIG_ESP32_PANIC_PRINT_HALT is not set +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +# CONFIG_ESP32_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP32_PANIC_GDBSTUB is not set CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 CONFIG_MAIN_TASK_STACK_SIZE=3584 @@ -2228,20 +2137,36 @@ CONFIG_CONSOLE_UART_NUM=0 CONFIG_CONSOLE_UART_BAUDRATE=115200 CONFIG_INT_WDT=y CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y CONFIG_TASK_WDT=y CONFIG_ESP_TASK_WDT=y # CONFIG_TASK_WDT_PANIC is not set CONFIG_TASK_WDT_TIMEOUT_S=5 CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y # CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP32_DEBUG_OCDAWARE=y CONFIG_BROWNOUT_DET=y -CONFIG_BROWNOUT_DET_LVL_SEL_7=y -# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set +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_BROWNOUT_DET_LVL=7 +# 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_DISABLE_BASIC_ROM_CONSOLE is not set CONFIG_IPC_TASK_STACK_SIZE=1024 CONFIG_TIMER_TASK_STACK_SIZE=3584 CONFIG_ESP32_WIFI_ENABLED=y @@ -2257,6 +2182,8 @@ 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 @@ -2266,7 +2193,6 @@ CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y CONFIG_WPA_MBEDTLS_CRYPTO=y CONFIG_WPA_MBEDTLS_TLS_CLIENT=y # CONFIG_WPA_WAPI_PSK is not set -# CONFIG_WPA_SUITE_B_192 is not set # CONFIG_WPA_11KV_SUPPORT is not set # CONFIG_WPA_MBO_SUPPORT is not set # CONFIG_WPA_DPP_SUPPORT is not set @@ -2302,16 +2228,27 @@ 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 diff --git a/sdkconfig.defaults b/sdkconfig.defaults index 861053f..5adba1b 100644 --- a/sdkconfig.defaults +++ b/sdkconfig.defaults @@ -2,32 +2,6 @@ # Compiler options # CONFIG_COMPILER_CXX_EXCEPTIONS=y -CONFIG_LWIP_LOCAL_HOSTNAME="ChaosWatch" - -# -# Ethernet Configuration -# -CONFIG_USE_SPI_ETHERNET=y -CONFIG_SPI_ETHERNETS_NUM=1 -# CONFIG_USE_DM9051 is not set -# CONFIG_USE_KSZ8851SNL is not set -CONFIG_USE_W5500=y -CONFIG_ETH_SPI_HOST=1 -CONFIG_ETH_SPI_SCLK_GPIO=6 -CONFIG_ETH_SPI_MOSI_GPIO=7 -CONFIG_ETH_SPI_MISO_GPIO=2 -CONFIG_ETH_SPI_CLOCK_MHZ=16 -CONFIG_ETH_SPI_CS0_GPIO=3 -CONFIG_ETH_SPI_INT0_GPIO=4 -CONFIG_ETH_SPI_POLLING0_MS=0 -CONFIG_ETH_SPI_PHY_RST0_GPIO=-1 -CONFIG_ETH_SPI_PHY_ADDR0=1 -# end of Ethernet Configuration - -# -# Ethernet -# -CONFIG_ETH_SPI_ETHERNET_W5500=y # # Wi-Fi @@ -37,11 +11,15 @@ CONFIG_ETH_SPI_ETHERNET_W5500=y # # LWIP # -CONFIG_LWIP_LOCAL_HOSTNAME="ChaosWatch" +CONFIG_LWIP_LOCAL_HOSTNAME="LeoLights" # -# Serial flasher config +# Ethernet # -CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y -CONFIG_ESPTOOLPY_FLASHSIZE="8MB" +CONFIG_USE_INTERNAL_ETHERNET=y +CONFIG_ETH_PHY_LAN87XX=y +CONFIG_ETH_MDC_GPIO=23 +CONFIG_ETH_MDIO_GPIO=33 +CONFIG_ETH_PHY_RST_GPIO=5 +CONFIG_ETH_PHY_ADDR=1