diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 83c355a9..86417ded 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -54,16 +54,30 @@ jobs: - name: Install PlatformIO run: python -m pip install platformio - name: Pre-install PlatformIO packages (release env) - run: platformio pkg install -e release + run: | + platformio pkg install -e release + platformio pkg install -e S3release - name: Check pre-commit hooks uses: pre-commit/action@v3.0.1 - name: Build firmware run: platformio run -e release - name: Build filesystem run: platformio run -e release --target buildfs + - name: Build S3 firmware + run: platformio run -e S3release + - name: Build S3 filesystem + run: platformio run -e S3release --target buildfs - name: Create artifacts run: | - 7z a SmartSpin2kFirmware-${{ steps.date.outputs.date }}.bin.zip ./.pio/build/release/*.bin + cp ./.pio/build/release/firmware.bin firmware.bin + cp ./.pio/build/release/littlefs.bin littlefs.bin + cp ./.pio/build/release/partitions.bin partitions.bin + cp ./.pio/build/release/bootloader.bin bootloader.bin + cp ./.pio/build/S3release/S3firmware.bin S3firmware.bin + cp ./.pio/build/S3release/S3littlefs.bin S3littlefs.bin + cp ./.pio/build/S3release/S3partitions.bin S3partitions.bin + cp ./.pio/build/S3release/S3bootloader.bin S3bootloader.bin + 7z a SmartSpin2kFirmware-${{ steps.date.outputs.date }}.bin.zip firmware.bin littlefs.bin partitions.bin bootloader.bin S3firmware.bin S3littlefs.bin S3partitions.bin S3bootloader.bin - name: Archive uses: actions/upload-artifact@v7 with: diff --git a/.gitignore b/.gitignore index aee06ddc..67e5264f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,7 @@ .pio/ .vscode/c_cpp_properties.json -.vscode/launch.json .vscode/ipch -.vscode/extensions.json +.vscode/launch.json .idea/ test/tmp_pio_test_transport.cpp test/output/ @@ -21,6 +20,10 @@ C/Users/ /build /managed_components dependencies.lock +dependencies.lock.* +sdkconfig.S3release +sdkconfig.S3debug .vscode/settings.json *.map graphify-out/ + diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..b3974015 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + "recommendations": [ + "Jason2866.esp-decoder", + "pioarduino.pioarduino-ide" + ], + "unwantedRecommendations": [ + "ms-vscode.cpptools-extension-pack" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json index b42585b9..d5e3d756 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -119,11 +119,5 @@ "VERSIONFILE", "WEBSERVER" ], - "idf.pythonInstallPath": "C:\\Users\\anthony\\.espressif\\tools\\idf-python\\3.11.2\\python.exe", - "idf.flashType": "UART", "liveServer.settings.port": 5501, - "clangd.arguments": [ - "--compile-commands-dir=d:/git/SmartSpin2k/.cache/clangd", - "--query-driver=C:/Users/emadm/.platformio/packages/toolchain-*/bin/*,C:/Users/emadm/.platformio/packages/tool-*/bin/*" - ], } \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md index 210867f4..7ecbebbd 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -22,7 +22,8 @@ Primary software directories: - `lib/SS2K/`: core sensor parsing library used by firmware and native tests. - `lib/ArduinoCompat/`: native-test compatibility shims. - `test/`: Unity tests for native PlatformIO environment. -- `data/`: web interface assets served by the firmware. +- `data/`: web interface assets for classic ESP32 filesystem images. +- `data_s3/`: ESP32-S3 filesystem assets; initially mirrors `data/` but may grow independently. - `.github/copilot-instructions.md`: older agent/build notes that may still be useful. ## Build And Test @@ -30,11 +31,21 @@ Primary software directories: PlatformIO is the expected entry point. - Build firmware: `pio run --environment release` +- Build ESP32-S3 firmware: `pio run --environment S3release` - Build filesystem: `pio run --target buildfs` - Run native tests: `pio test --environment native` - Static analysis: `pio check -e debug` - Pre-commit checks: `pre-commit run --all-files` +S3 firmware and filesystem builds use `S3firmware.bin` and `S3littlefs.bin` as their native PlatformIO output/upload names. They also create `S3partitions.bin` and `S3bootloader.bin` copies for releases; the generic partition and bootloader intermediates remain because PlatformIO's flash uploader depends on those names. +The GitHub release archive includes firmware, LittleFS, partition-table, and bootloader binaries for both classic ESP32 and ESP32-S3 targets. + +Filesystem builds stage deterministic gzip copies of every HTML/CSS source file under the environment build directory. They also refresh the checked-in `.gz` companions and `list.json` in `data/` or `data_s3/`, which are consumed by repository-based automatic OTA updates. + +Codex environment constraint: + +- Do not run PlatformIO firmware or filesystem builds from the Codex environment. The Windows Xtensa toolchain can hang and leave orphaned compiler processes here. Make the requested changes, run non-build checks where useful, and clearly leave PlatformIO build validation for the user to run manually. + Important timing/network notes: - First PlatformIO builds/tests may download ESP32 platforms and toolchains. They can take 15-45 minutes for firmware builds and 5-15 minutes for native tests. @@ -75,7 +86,7 @@ Boot entry is `app_main()` in `src/Main.cpp`. Boot sequence: 1. Initialize Arduino/Serial. -2. Detect hardware revision using `REV_PIN` and `boards.rev1/rev2`. +2. Detect hardware revision using the revision pin and ADC values in `include/boards.h`. 3. Start stepper serial and optional aux serial for Peloton. 4. Mount LittleFS. 5. Load and re-save `userConfig`. @@ -227,7 +238,7 @@ Key functions: - `SpinBLEClient::start()`: creates BLE client task and configures scanning. - `ScanCallbacks::onResult()`: filters supported devices, updates `foundDevices`, sets slots to connect when user config matches. -- `SpinBLEClient::connectToServer()`: creates fresh NimBLE client, connects, sets slot state, removes duplicates. +- `SpinBLEClient::connectToServer()`: creates fresh BLE client, connects, sets slot state, removes duplicates. - `subscribeToAllNotifications()`: subscribes to notify/indicate characteristics for supported services. - `SpinBLEClient::postConnect()`: completes service subscriptions, reads FTMS resistance range, starts FTMS training where needed, drains notification queues. - `SpinBLEClient::checkBLEReconnect()`: sets `doScan` when configured devices are missing. @@ -264,7 +275,7 @@ Stateful parser caution: Primary files: `src/BLE_Server.cpp`, `src/BLE_Fitness_Machine_Service.cpp`, service-specific `src/BLE_*_Service.cpp`. -`startBLEServer()` creates the NimBLE server and starts services: +`startBLEServer()` creates the BLE server and starts services: - Cycling Speed/Cadence - Cycling Power @@ -274,6 +285,9 @@ Primary files: `src/BLE_Server.cpp`, `src/BLE_Fitness_Machine_Service.cpp`, serv - Device Information - BLE firmware update +The primary BLE advertisement carries the current WiFi IPv4 address in versioned SmartSpin2k manufacturer data. +The device name and 128-bit SmartSpin2k service UUID are kept in the scan response to stay within the legacy advertisement size limit. + Zwift/OpenBikeControl services exist but are currently commented out in regular BLE advertising/setup; DirCon and the source files still matter. `SpinBLEServer::update()` refreshes wheel/crank revolution counters, then calls service `update()` methods. The FTMS service also processes pending writes. @@ -302,6 +316,7 @@ Protocol: - `cc_read` reads a variable. - `cc_write` writes a variable. - Responses generally start with `cc_success` or `cc_error`, followed by the variable id and bytes/string. +- Reading `BLE_allSettings` returns a versioned, MTU-sized sequence of indications whose payloads concatenate into the JSON from `userConfig->returnJSON()`. The giant switch in `BLE_ss2kCustomCharacteristic::process()` maps variable IDs to `userConfig`, `rtConfig`, and `ss2k` fields. Examples: @@ -469,6 +484,7 @@ DirCon exposes BLE-like services over TCP: - Handles discover-services, discover-characteristics, read, write, enable-notifications, and unsolicited notification messages. - Services register with `DirConManager::registerService()`. - FTMS registers a write handler in `BLE_Fitness_Machine_Service::setupService()` so DirCon writes to the FTMS control point run the same control logic as BLE writes. +- The SmartSpin2k custom service registers a write handler so its request/response protocol also works over DirCon; changed-value notifications and chunked all-settings snapshots are mirrored over TCP. - BLE server updates call `DirConManager::notifyCharacteristic()` so TCP clients receive corresponding updates. DirCon uses static buffers and fixed client/subscription arrays. Be cautious with dynamic allocation and payload sizes. @@ -482,6 +498,7 @@ Responsibilities: - Start/stop WiFi (`startWifi()`, `stopWifi()`). - Serve LittleFS web assets and built-in OTA pages. - Firmware update flow through `HTTP_Server::FirmwareUpdate()`. +- Automatic filesystem updates treat remote `list.json` as an allowlist, preserve config/power-table/recovery metadata, and store the installed filesystem release version in NVS. - Settings JSON/API behavior through `settingsProcessor()`. - Periodic web client update through `webClientUpdate()`. - BLE scanner page support. @@ -510,11 +527,12 @@ Use `SS2K_LOG*` macros rather than raw `Serial.printf` unless matching nearby co - Stepper power, speed, acceleration, travel, and driver tuning. - ERG constants and compile-time feature flags. - Power-table sizes, increments, and quality constants. -- Hardware pin assignments for board revisions. - BLE timing, reconnect, stack, and buffer sizes. - Peloton aux serial constants. - Homing thresholds and sensitivity defaults. +Board-specific pin mappings, driver sense resistance, current scaling, revision detection values, homing capability, and homing-sensitivity scaling live in `include/boards.h`. + When changing behavior, prefer adjusting named constants instead of scattering magic numbers. ## Common Change Patterns @@ -563,11 +581,14 @@ Changing BLE server characteristics: - `Measurement` timestamps matter for ERG deduplication. - `PowerTable` stores positions divided by `TABLE_DIVISOR`; lookup returns full-scale positions. - `PowerTable` persistence requires homing. +- Saved BLE device identifiers are matched case-insensitively because NimBLE address formatting has changed between lowercase and uppercase across library versions. - `SpinBLEAdvertisedDevice::reset()` updates global connected flags before clearing local flags. - BLE address randomization is handled specially in `adevName2UniqueName()`; saved names depend on this behavior. - `spinBLEServer.writeCache` is shared by BLE writes and DirCon writes. - `spinDownFlag` is a state machine trigger, not just a bool: `1` means home/startup-ish, `2+` means full spindown/homing. - `externalControl` bypasses normal target calculation but final state can still be affected by sync/clamping code. +- Firmware OTA paths validate the incoming `esp_image_header_t` chip ID before starting flash writes; filesystem images are intentionally exempt from application-image validation. +- Stepper UART initialization drives TX high for 20 ms before starting hardware UART. TMC connection checks track `IFCNT` across calls to confirm intervening writes were accepted; a failed UART test or unchanged counter restarts UART with one idle-high recovery pulse and aborts the requested setup/power update if that retry fails. Initial setup also checks `OTP_IHOLD`; if its two-bit field is unprogrammed, firmware irreversibly programs byte 2/bit 5 for the 9% standalone hold-current default, while incompatible existing OTP values are never modified. - Many BLE and motor changes cannot be fully validated without hardware. ## Search Tips diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ef2aefe..e6bcda57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +### Changed +- Start the maintenance task directly from `app_main()` and finish initialization on its configurable stack, preventing HTTPS firmware checks from overflowing the ESP-IDF main task. +- Consolidated board pin mappings, revision detection, current scaling, homing capability, and driver sense-resistor values in `boards.h`. +- Added a board-specific homing-sensitivity scaler, making the ESP32-S3 default equivalent to 80 while revisions one and two remain at 50. +- Moved stepper homing tuning constants into `settings.h`. +- Restyled the compact built-in recovery, OTA, and login pages and added visible feedback for image validation, upload failures, and reboot completion. +- Added S3-prefixed PlatformIO build artifacts and updated the release workflow to package them directly. +- Gzip HTML and CSS assets during LittleFS builds, serve them with the correct encoding, and make automatic filesystem updates binary-safe. +- Automatic filesystem updates now remove files outside the server manifest while preserving settings and power-table data, track the installed filesystem release version, and never replace it with an older release. +- Successful LittleFS uploads from the recovery page now reboot after acknowledging the upload so the replacement filesystem is mounted cleanly. +- Fixed gzip web responses being labeled with duplicate content-encoding headers, which Firefox rejected. + +### Hardware +- Corrected the ESP32-S3 shift-up and shift-down pin assignments. + + +## [26.7.15] + +### Added +- Support for Spinning Bike Chrono + ### Changed ### Hardware diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a5f975e..0fc0d379 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,14 @@ cmake_minimum_required(VERSION 3.16.0) include($ENV{IDF_PATH}/tools/cmake/project.cmake) +add_compile_definitions(ARDUINO_ARCH_ESP32=1) +if(IDF_TARGET STREQUAL "esp32s3") + set(SDKCONFIG_DEFAULTS "sdkconfig.defaults;sdkconfig.s3.defaults") +endif() +# Keep component-manager locks target-specific so ESP32 and ESP32-S3 builds can +# coexist without rewriting one another's dependency target. +idf_build_set_property(DEPENDENCIES_LOCK dependencies.lock.${IDF_TARGET}) project(SmartSpin2k) include_directories( ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/src -) \ No newline at end of file +) diff --git a/CustomCharacteristic.md b/CustomCharacteristic.md index f6493477..20ee7342 100644 --- a/CustomCharacteristic.md +++ b/CustomCharacteristic.md @@ -5,6 +5,20 @@ Custom Characteristic for userConfig Variable manipulation via BLE SMARTSPIN2K_SERVICE_UUID "77776277-7877-7774-4466-896665500000" SMARTSPIN2K_CHARACTERISTIC_UUID "77776277-7877-7774-4466-896665500001" +The same service and characteristic are published in the DirCon mDNS service. +A DirCon client sends the protocol bytes in a characteristic-write request and receives the custom-characteristic response bytes in that write response. +Subscribed DirCon clients also receive changed-value notifications. + +The primary BLE advertisement includes the current Wi-Fi IPv4 address in manufacturer-specific data. +The device name and SmartSpin2k service UUID remain in the scan response. The payload is: + +| Offset | Size | Meaning | +|--------|------|---------| +| 0 | 2 | Reserved development company identifier `0xFFFF`, little-endian | +| 2 | 2 | ASCII payload marker `SS` | +| 4 | 1 | Payload format version (`0x01`) | +| 5 | 4 | IPv4 address octets in network/display order | + An example follows to read/write 26.3kph to simulatedSpeed: simulatedSpeed is a float and first needs to be converted to int by *10 for transmission, so convert 26.3kph to 263 (multiply by 10) @@ -77,11 +91,39 @@ From BLE_common.h |BLE_externalControl |0x1A |bool |01 disables internal calculation of targetPosition.| |BLE_syncMode |0x1B |bool |01 stops motor movement for external calibration | |BLE_UDPLogging |0x2E |bool |Enable/disable UDP log streaming | +|BLE_hardwareVersion |0x2F |str |Read-only detected hardware revision | |BLE_BLELogging |0x30 |bool/str|Write: enable/disable BLE log streaming. Read: returns last log message| +|BLE_allSettings |0x31 |JSON |Read-only chunked snapshot of all user settings | *syncMode will disable the movement of the stepper motor by forcing stepperPosition = targetPosition prior to the motor control. While this mode is enabled, it allows the client to set parameters like incline and shifterPosition without moving the motor from it's current position. Once the parameters are set, this mode should be turned back off and SS2K will resume normal operation. This characteristic also notifies when a shift is preformed or the button is pressed. -See code for more references/info in BLE_Server.cpp starting on line 534 \ No newline at end of file +See code for more references/info in BLE_Server.cpp starting on line 534 + +Hardware-version example: + +- Client writes: `0x01, 0x2F` +- An ESP32-S3 board indicates: `0x80, 0x2F`, followed by the ASCII bytes for `Revision Three (ESP32-S3)`. +- Writes to `0x2F` return `cc_error` because the detected hardware revision is read-only. + +All-settings snapshot (BLE or DirCon): + +- Client writes `0x01, 0x31`. BLE clients subscribe to indications on the custom characteristic. + A DirCon client receives the first chunk in the characteristic-write response and is automatically subscribed for the remaining chunks. +- The server serializes `userConfig->returnJSON()` once. + Over BLE, it sends MTU-sized indications sequentially and waits for each acknowledgement before sending the next. +- Over DirCon, chunks use the same framing and arrive as characteristic notifications after the first write-response chunk. +- Every snapshot chunk begins with this seven-byte header: + +| Offset | Size | Meaning | +|--------|------|---------| +| 0 | 1 | `cc_success` (`0x80`) | +| 1 | 1 | `BLE_allSettings` (`0x31`) | +| 2 | 1 | Snapshot framing version (`0x01`) | +| 3 | 2 | Zero-based chunk number, little-endian | +| 5 | 2 | Total chunk count, little-endian | +| 7 | remainder | UTF-8 JSON bytes | + +The client validates that it received chunks `0` through `chunk count - 1`, concatenates the bytes after each header, and parses the result as JSON. If the connection closes or a chunk is missing, discard the partial snapshot and issue the read command again. Unknown JSON properties should be ignored so newly added settings remain backward compatible. The snapshot includes sensitive settings such as the Wi-Fi password, consistent with the existing individual password read command. diff --git a/data/bluetoothscanner.html.gz b/data/bluetoothscanner.html.gz new file mode 100644 index 00000000..e61de0e8 Binary files /dev/null and b/data/bluetoothscanner.html.gz differ diff --git a/data/btsimulator.html.gz b/data/btsimulator.html.gz new file mode 100644 index 00000000..c7cec439 Binary files /dev/null and b/data/btsimulator.html.gz differ diff --git a/data/develop.html.gz b/data/develop.html.gz new file mode 100644 index 00000000..178f7af8 Binary files /dev/null and b/data/develop.html.gz differ diff --git a/data/index.html.gz b/data/index.html.gz new file mode 100644 index 00000000..63766bfc Binary files /dev/null and b/data/index.html.gz differ diff --git a/data/list.json b/data/list.json index fcb36ff5..d5643c83 100644 --- a/data/list.json +++ b/data/list.json @@ -1 +1 @@ -["bluetoothscanner.html", "btsimulator.html", "favicon.ico", "index.html", "settings.html", "shift.html", "status.html", "style.css", "streamfit.html", "develop.html"] \ No newline at end of file +["bluetoothscanner.html.gz","btsimulator.html.gz","develop.html.gz","favicon.ico","index.html.gz","settings.html.gz","shift.html.gz","status.html.gz","streamfit.html.gz","style.css.gz"] \ No newline at end of file diff --git a/data/settings.html b/data/settings.html index 836446cd..fea8c153 100644 --- a/data/settings.html +++ b/data/settings.html @@ -115,7 +115,7 @@

Reset to Defaults?

type: 'slider', title: 'Min Brake Watts', tooltip: 'Bike power floor', - tooltipText: 'Set the minimum watts until stepper stops. 0 disables check.', + tooltipText: 'Minimum ERG target while unhomed. Homed bikes use the detected travel limit. 0 disables the check.', min: 0, max: 200, step: 5, defaultValue: 0, unit: 'W' diff --git a/data/settings.html.gz b/data/settings.html.gz new file mode 100644 index 00000000..627bf40f Binary files /dev/null and b/data/settings.html.gz differ diff --git a/data/shift.html.gz b/data/shift.html.gz new file mode 100644 index 00000000..0a6f70e8 Binary files /dev/null and b/data/shift.html.gz differ diff --git a/data/status.html.gz b/data/status.html.gz new file mode 100644 index 00000000..64541f5f Binary files /dev/null and b/data/status.html.gz differ diff --git a/data/streamfit.html.gz b/data/streamfit.html.gz new file mode 100644 index 00000000..35035468 Binary files /dev/null and b/data/streamfit.html.gz differ diff --git a/data/style.css.gz b/data/style.css.gz new file mode 100644 index 00000000..d6e10276 Binary files /dev/null and b/data/style.css.gz differ diff --git a/data_s3/bluetoothscanner.html b/data_s3/bluetoothscanner.html new file mode 100644 index 00000000..4ea0e487 --- /dev/null +++ b/data_s3/bluetoothscanner.html @@ -0,0 +1,177 @@ + + + + + + SmartSpin2k Bluetooth Scanner + + + +
+
+ +
+ +
+ +

Bluetooth Devices

+ +
+
+

Connected Devices

+
+
+ Power Meter + loading +
+
+ Heart Monitor + loading +
+
+ Remote + loading +
+
+
+ +
+
+

Device Selection

+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+ +
+
+ +
+
+ +

+ Scan for new devices without saving current selections.
+ Tip: Hold both shifters for 3 seconds to scan/connect at any time. +

+
+
+ + +
+
+
+ + + + \ No newline at end of file diff --git a/data_s3/bluetoothscanner.html.gz b/data_s3/bluetoothscanner.html.gz new file mode 100644 index 00000000..e61de0e8 Binary files /dev/null and b/data_s3/bluetoothscanner.html.gz differ diff --git a/data_s3/btsimulator.html b/data_s3/btsimulator.html new file mode 100644 index 00000000..01c342d7 --- /dev/null +++ b/data_s3/btsimulator.html @@ -0,0 +1,293 @@ + + + + + + SmartSpin2k BLE Simulator + + + + +
+
+ +
+ +
+ +

BLE Simulator

+ +
+ +
+
+

Simulate Heart Rate

+ +
+
+
+
+ 40BPM +
+
+ + + +
+
+
+
+ + +
+
+

Simulate Power Output

+ +
+
+
+
+ 0Watts +
+
+ + + +
+
+
+ Auto Update + +
+
+
+ + +
+
+

Simulate Cadence

+ +
+
+
+
+ 0RPM +
+
+ + + +
+
+
+ Auto Update + +
+
+
+ + +
+
+

Simulate ERG Mode

+ +
+
+
+
+ 0Watts +
+
+ + + +
+
+
+ Target Watts Enabled + +
+
+
+
+
+
+ + + + diff --git a/data_s3/btsimulator.html.gz b/data_s3/btsimulator.html.gz new file mode 100644 index 00000000..c7cec439 Binary files /dev/null and b/data_s3/btsimulator.html.gz differ diff --git a/data_s3/develop.html b/data_s3/develop.html new file mode 100644 index 00000000..b1b16c15 --- /dev/null +++ b/data_s3/develop.html @@ -0,0 +1,90 @@ + + + + + + SmartSpin2k Developer Tools + + + +
+
+ +
+ +
+

Developer Tools

+ + + + +
+
+ + diff --git a/data_s3/develop.html.gz b/data_s3/develop.html.gz new file mode 100644 index 00000000..178f7af8 Binary files /dev/null and b/data_s3/develop.html.gz differ diff --git a/data_s3/favicon.ico b/data_s3/favicon.ico new file mode 100644 index 00000000..d09e9478 Binary files /dev/null and b/data_s3/favicon.ico differ diff --git a/data_s3/index.html b/data_s3/index.html new file mode 100644 index 00000000..4c832341 --- /dev/null +++ b/data_s3/index.html @@ -0,0 +1,118 @@ + + + + + + SmartSpin2k + + + +
+
+ +
+ +
+

SmartSpin2k

+ + + + +
+
+ + + + diff --git a/data_s3/index.html.gz b/data_s3/index.html.gz new file mode 100644 index 00000000..63766bfc Binary files /dev/null and b/data_s3/index.html.gz differ diff --git a/data_s3/list.json b/data_s3/list.json new file mode 100644 index 00000000..d5643c83 --- /dev/null +++ b/data_s3/list.json @@ -0,0 +1 @@ +["bluetoothscanner.html.gz","btsimulator.html.gz","develop.html.gz","favicon.ico","index.html.gz","settings.html.gz","shift.html.gz","status.html.gz","streamfit.html.gz","style.css.gz"] \ No newline at end of file diff --git a/data_s3/settings.html b/data_s3/settings.html new file mode 100644 index 00000000..fea8c153 --- /dev/null +++ b/data_s3/settings.html @@ -0,0 +1,403 @@ + + + + + + SmartSpin2k Settings + + + +
+
+ +
+ +
+
Loading
+

Settings

+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ + Reboot Device +
+ + +

Reset to Defaults?

+

This will delete all current settings. This action cannot be undone.

+
+ + +
+
+
+ + +
+ + + diff --git a/data_s3/settings.html.gz b/data_s3/settings.html.gz new file mode 100644 index 00000000..627bf40f Binary files /dev/null and b/data_s3/settings.html.gz differ diff --git a/data_s3/shift.html b/data_s3/shift.html new file mode 100644 index 00000000..2e105621 --- /dev/null +++ b/data_s3/shift.html @@ -0,0 +1,85 @@ + + + + + + SmartSpin2k Web Shifter + + + +
+
+ +
+ +
+ +

Web Shifter

+ +
+
+ + +
+ + +
+ + +
+
+
+
+ + + + diff --git a/data_s3/shift.html.gz b/data_s3/shift.html.gz new file mode 100644 index 00000000..0a6f70e8 Binary files /dev/null and b/data_s3/shift.html.gz differ diff --git a/data_s3/status.html b/data_s3/status.html new file mode 100644 index 00000000..ae883a61 --- /dev/null +++ b/data_s3/status.html @@ -0,0 +1,240 @@ + + + + + + + SmartSpin2k Status + + + + +
+
+ +
+ +
+

System Status

+ +
+
+
+ + +
+
+

Debug Console

+ +
+
Loading
+
+ +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/data_s3/status.html.gz b/data_s3/status.html.gz new file mode 100644 index 00000000..64541f5f Binary files /dev/null and b/data_s3/status.html.gz differ diff --git a/data_s3/streamfit.html b/data_s3/streamfit.html new file mode 100644 index 00000000..45466e99 --- /dev/null +++ b/data_s3/streamfit.html @@ -0,0 +1,85 @@ + + + + + + SmartSpin2k StreamFit + + + +
+
+ +
+ +
+

StreamFit

+ +
+
+

Upload a .fit file to simulate a recorded workout.

+

Requires internet connection for file processing.

+
+ +
+ + +
REQUIRES INTERNET CONNECTION
+
+ +
+
+
❤️
+
Heart Rate
+
--
+
BPM
+
+ +
+
+
Power
+
--
+
W
+
+ +
+
🔄
+
Cadence
+
--
+
RPM
+
+
+ +
+ +
+
+ + +
+
+ + + + + diff --git a/data_s3/streamfit.html.gz b/data_s3/streamfit.html.gz new file mode 100644 index 00000000..35035468 Binary files /dev/null and b/data_s3/streamfit.html.gz differ diff --git a/data_s3/style.css b/data_s3/style.css new file mode 100644 index 00000000..54caee98 --- /dev/null +++ b/data_s3/style.css @@ -0,0 +1,141 @@ +:root{--primary:#2a9df4;--bg-dark:#03245c;--bg-main:#1167b1;--bg-overlay:rgba(3,37,76,.6);--bg-item:rgba(0,0,0,.2);--text:#fff;--text-secondary:rgba(255,255,255,.7);--border:rgba(255,255,255,.1);--shadow-sm:0 2px 4px rgba(0,0,0,.1);--shadow-md:0 8px 16px rgba(0,0,0,.2);--shadow-lg:0 12px 24px rgba(0,0,0,.25);--radius-sm:4px;--radius-md:8px;--radius-lg:12px} +html{font-family:system-ui,-apple-system,sans-serif;line-height:1.4;background:var(--bg-dark);color:var(--text);-webkit-text-size-adjust:100%} +body{margin:0;min-height:100vh;background:var(--bg-main)} +h1,h2{color:var(--primary);margin:0 0 1rem} +h1{font-size:2rem;font-weight:700} +h2{font-size:1.2rem;font-weight:600} +p{margin:.5rem 0;line-height:1.6} +a{color:var(--text);text-decoration:none;transition:color .2s} +a:hover,.dev-tool-card:hover .card-arrow{color:var(--primary)} +.page-container{max-width:1200px;margin:0 auto;padding:1rem} +header,nav{display:flex;justify-content:space-between;padding:1rem 0} +header{align-items:center} +nav{align-items:center;width:100%} +.brand{font-size:2.5rem;font-weight:700;text-align:center;text-shadow:0 4px 8px rgba(0,0,0,.5);margin:1rem 0;width:100%;letter-spacing:1px;color:var(--text)} +nav a{color:var(--text);padding:.5rem} +nav a:hover{text-decoration:underline} +.dev-tools-grid,.metrics-grid{display:grid;gap:1.5rem} +.dev-tools-grid{padding:2rem 0;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))} +.dev-tool-card,.metric-card,.status-group,.shifter-container,.debug-section,.scan-section,.upload-container,.device-status{background:var(--bg-overlay);border-radius:var(--radius-lg);padding:1.5rem;border:1px solid var(--border)} +.dev-tool-card,.shifter-container{transition:.3s;box-shadow:var(--shadow-md);text-decoration:none;display:block} +.device-status{background:rgba(3,37,76,.8)} +.status-group,.device-status,.debug-section,.scan-section,.shifter-container,.upload-container{margin-bottom:1.5rem} +.dev-tool-card:hover,.shifter-container:hover{background:rgba(42,157,244,.15);border-color:rgba(42,157,244,.5);transform:translateY(-2px);box-shadow:var(--shadow-lg)} +.device-status h2,.status-group h2{margin:0 0 1.5rem;color:var(--primary);font-size:1.2rem;border-bottom:1px solid rgba(42,157,244,.3);padding-bottom:.5rem} +.status-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))} +.status-item{background:var(--bg-item);padding:1rem;border-radius:var(--radius-md);display:flex;flex-direction:column;gap:.5rem;font-weight:500;color:var(--primary)} +.follow-toggle,.metric-label{color:var(--text-secondary);font-size:.9rem;margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.5px} +.follow-toggle{display:block} +.debug-console,.gear-display{box-sizing:border-box;width:100%} +.debug-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem} +.debug-header h2{margin:0;color:var(--primary);font-size:1.2rem} +.follow-toggle{display:flex;align-items:center;gap:.5rem} +.debug-console{margin:0;padding:1rem;background-color:#000;background-image:radial-gradient(rgba(0,150,0,.75),#000 120%);height:40vh;resize:both;border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);font-family:Inconsolata,monospace;font-size:1.1rem;line-height:1.4;overflow:auto;text-shadow:0 0 4px rgba(200,200,200,.5)} +.shifter-container{max-width:600px;margin:2rem auto;padding:2rem;transition:.3s} +.shift-controls{display:flex;flex-direction:column;gap:2rem;align-items:center} +.shift-button{width:100%;height:80px;border:none;border-radius:var(--radius-md);color:var(--text);font-size:1.2rem;font-weight:600;cursor:pointer;transition:.2s;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1rem;background:var(--bg-overlay)} +.shift-button:active,.shift-button.active,.scan-button:active{transform:translateY(1px);box-shadow:var(--shadow-sm)} +.shift-up{background:linear-gradient(to bottom,#2ecc71,#27ae60)} +.shift-up:hover{background:linear-gradient(to bottom,#27ae60,#219a52)} +.shift-down{background:linear-gradient(to bottom,#e74c3c,#c0392b)} +.shift-down:hover{background:linear-gradient(to bottom,#c0392b,#a93224)} +.shift-arrow{font-size:1.5rem;line-height:1} +.shift-label,.metric-label{text-transform:uppercase;letter-spacing:.5px} +.shift-label{font-size:1rem;letter-spacing:1px} +.gear-display{background:var(--bg-item);padding:2rem;border-radius:var(--radius-md);text-align:center} +.gear-label{display:block;font-size:1.2rem;margin-bottom:1rem;color:rgba(255,255,255,.9)} +.gear-value{font-size:2.5rem;font-weight:700;color:var(--primary);background:0 0;border:none;width:100%;padding:0;text-align:center} +.input-group,.toggle-group,.slider-group{display:flex;padding:1rem;background:var(--bg-item);border-radius:var(--radius-sm)} +.input-group{align-items:center;gap:1rem;margin-bottom:1.5rem;padding:2em} +.toggle-group{justify-content:space-between;align-items:center} +.slider-group{align-items:center;gap:0.5rem;min-height:60px;justify-content:center;padding:0.75rem;width:auto;box-sizing:border-box} +.number-input,.device-select{padding:.75rem;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-sm);background:rgba(255,255,255,.1);color:var(--text);font-size:1.1rem;transition:.3s} +.number-input{width:120px;padding:0;text-align:center} +.number-input:focus,.device-select:focus{outline:0;border-color:var(--primary);box-shadow:0 0 0 3px rgba(42,157,244,.4)} +.number-input::-webkit-inner-spin-button,.number-input::-webkit-outer-spin-button{opacity:1} +.unit,.value-display{font-weight:500;color:var(--primary)} +.unit{min-width:40px} +.settings-grid{display:grid;gap:2rem;padding:1rem 0;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));max-width:100%;margin:0 auto} +.settings-section{background:rgba(255,255,255,.1);border-radius:var(--radius-md);padding:1.5rem;margin-bottom:.5rem} +.setting-group{margin-bottom:1.5rem;background:var(--bg-overlay);border-radius:6px;padding:0.75rem;box-shadow:var(--shadow-sm);border:1px solid var(--border);overflow:hidden;box-sizing:border-box} +.setting-group input[type="password"],.setting-group input[type="text"]{width:100%;padding:.75rem;background:rgba(255,255,255,.219);border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-sm);color:var(--text);font-size:1rem;box-sizing:border-box} +.slider-container{flex:1;display:flex;flex-direction:column;align-items:center;gap:.25rem;width:100%;max-width:260px;margin:0 auto;box-sizing:border-box} +.slider-container input[type="range"]{width:100%;max-width:100%} +.value-display{display:flex;align-items:center;justify-content:center;margin-bottom:0.5rem} +.value-display span{margin-left:10px} +.adjust-button{width:36px;height:36px;border:none;background:#03254c;color:var(--text);border-radius:50%;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;transition:background .2s;flex-shrink:0} +.adjust-button:hover,input:checked+.slider{background:var(--primary)} +.button-group{display:flex;gap:1rem;margin-top:2rem;justify-content:flex-end} +.primary-button,.secondary-button,.warning-button{padding:.75rem 1.5rem;border:none;border-radius:var(--radius-sm);font-weight:500;cursor:pointer;transition:.2s} +.primary-button{background:var(--primary);color:var(--text)} +.primary-button:hover{background:#1b8fe3} +.secondary-button,.status-message.info{background:rgba(255,255,255,.1);color:var(--text)} +.secondary-button:hover{background:rgba(255,255,255,.2)} +.warning-button,.status-message.error{background:#dc3545;color:var(--text)} +.warning-button:hover{background:#c82333} +.button-container{text-align:center;margin-top:2rem} +.device-select{width:100%;font-size:1rem;cursor:pointer} +.device-select:hover{background:rgba(255,255,255,.15)} +.device-select option{background:var(--bg-dark);color:var(--text);padding:.5rem} +.scan-section{margin-top:3rem;text-align:center} +.scan-button{display:flex;align-items:center;justify-content:center;gap:1rem;width:100%;max-width:300px;margin:0 auto;padding:1rem;background:linear-gradient(to right,var(--primary),#1b8fe3);border:none;border-radius:var(--radius-md);color:var(--text);font-size:1.1rem;font-weight:600;cursor:pointer;transition:.3s;box-shadow:0 4px 6px rgba(0,0,0,.1)} +.scan-button:hover{transform:translateY(-2px);box-shadow:0 6px 12px rgba(0,0,0,.15);background:linear-gradient(to right,#1b8fe3,#0d7ac9)} +.scan-icon{font-size:1.5rem;animation:2s linear infinite spin;display:inline-block} +.scan-note{margin-top:1.5rem;font-size:.9rem;color:rgba(255,255,255,.8);line-height:1.6} +.scan-note em{color:var(--primary);font-style:normal} +.file-upload{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:1rem;border:2px dashed rgba(255,255,255,.2);border-radius:var(--radius-md);cursor:pointer;transition:.3s} +.file-upload:hover{border-color:var(--primary);background:rgba(42,157,244,.1)} +.upload-icon{font-size:2.5rem;color:var(--primary)} +.file-input,.switch input{display:none} +.metrics-grid{grid-template-columns:repeat(auto-fit,minmax(100px,.5fr));margin:.5rem} +.metric-card{padding:.5rem;text-align:center} +.metric-icon{font-size:2rem;margin-bottom:.5rem} +.metric-value{font-size:2rem;font-weight:600;color:var(--primary);margin-bottom:.25rem} +.metric-unit{font-size:.9rem;color:var(--text-secondary)} +.dev-tool-card{color:var(--text);grid-template-columns:auto 1fr auto;align-items:start} +.tool-icon,.info-box{background:rgba(42,157,244,.1)} +.tool-icon{font-size:2rem;width:3rem;height:3rem;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-lg)} +.info-box{border-left:4px solid var(--primary);padding:1.5rem;margin-bottom:2rem;border-radius:0 4px 4px 0} +.tool-content{flex:1} +.tool-features{list-style:none;padding:0;margin:0;font-size:.9rem;color:var(--text-secondary)} +.tool-features li{margin-bottom:.5rem;display:flex;align-items:center} +.tool-features li:before{content:"•";color:var(--primary);margin-right:.5rem;font-size:1.2em} +.card-arrow{font-size:1.5rem;color:rgba(255,255,255,.3);transition:transform .2s} +.dev-tool-card:hover .card-arrow{transform:translateX(4px)} +.switch,.tooltip{position:relative} +.switch{display:inline-block;width:60px;height:34px} +.switch .slider{position:absolute;inset:0;background:#03254c;border-radius:34px;transition:.4s} +.switch .slider:before{position:absolute;content:"";height:26px;width:26px;left:4px;bottom:4px;background:#fff;border-radius:50%;transition:.4s} +input:checked+.slider:before{transform:translateX(26px)} +input:focus+.slider{box-shadow:0 0 0 3px rgba(42,157,244,.4)} +.tooltip{border-bottom:1px dotted rgba(255,255,255,.3);cursor:help} +.tooltip .tooltiptext{visibility:hidden;width:200px;background:#03254c;color:var(--text);text-align:center;border-radius:6px;padding:.5rem;position:absolute;z-index:1;bottom:125%;left:50%;transform:translateX(-50%);opacity:0;transition:opacity .3s} +.tooltip:hover .tooltiptext{visibility:visible;opacity:1} +.status-message{padding:1rem;margin:1rem 0;border-radius:var(--radius-sm);animation:.3s fadeIn} +.status-message.success{background:#28a745;color:var(--text)} +.note{font-style:italic;color:rgba(255,255,255,.8);font-size:.9rem;margin-top:1rem} +.watermark{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) rotate(45deg);font-size:5rem;color:rgba(255,255,255,.2);pointer-events:none;z-index:0} +footer{margin-top:2rem;padding:1rem 0;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center} +.dev-links{display:flex;align-items:center;gap:1rem} +.dev-link{color:var(--text-secondary);font-size:.9rem} +.separator{color:rgba(255,255,255,.3)} +@keyframes fadeIn{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}} +@keyframes spin{from{transform:rotate(0)}to{transform:rotate(360deg)}} +@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(220,53,69,.4)}70%{box-shadow:0 0 0 10px rgba(220,53,69,0)}100%{box-shadow:0 0 0 0 rgba(220,53,69,0)}} +@media (max-width:768px){ +.input-group,.button-group,.value-display,.dev-links{flex-direction:column} +.status-grid,.metrics-grid,.dev-tools-grid{grid-template-columns:1fr} +.number-input,.scan-button{width:100%} +.settings-section{padding:1rem} +.adjust-button{min-width:32px} +.slider-container{min-width:0} +.input-group{align-items:stretch} +.unit{text-align:right} +.shift-button{height:100px} +.status-group,.metric-card{padding:1.25rem} +.value-display{gap:.5rem;text-align:center} +.auto-update{justify-content:center} +.debug-console{height:50vh} +.dev-links{gap:.5rem} +.separator{display:none} +} diff --git a/data_s3/style.css.gz b/data_s3/style.css.gz new file mode 100644 index 00000000..d6e10276 Binary files /dev/null and b/data_s3/style.css.gz differ diff --git a/dependencies.lock b/dependencies.lock index 6f1aafb5..f84838b8 100644 --- a/dependencies.lock +++ b/dependencies.lock @@ -96,6 +96,6 @@ direct_dependencies: - espressif/network_provisioning - idf - joltwallet/littlefs -manifest_hash: e7ce7a886dfdb3cc5cd59acbdb4ff333c0a91c6e4de55b9fd6323d866c7cc691 +manifest_hash: df9baa925ebc2a028ee0e349be53f2169bb7ac38b2cb9c63b3ebf69123c43ef8 target: esp32 version: 2.0.0 diff --git a/include/BLE_Common.h b/include/BLE_Common.h index 7edfed89..34cbe012 100644 --- a/include/BLE_Common.h +++ b/include/BLE_Common.h @@ -29,7 +29,7 @@ // maxInterval – [in] The maximum connection interval in 1.25ms units. // latency – [in] The number of packets allowed to skip (extends max interval). // timeout – [in] The timeout time in 10ms units before disconnecting. -const uint16_t connectionParams[] = {24, 48, 0, 200}; +const uint16_t connectionParams[] = {24, 48, 0, 500}; // Vector of supported BLE services and their corresponding characteristic UUIDs struct BLEServiceInfo { diff --git a/include/BLE_Custom_Characteristic.h b/include/BLE_Custom_Characteristic.h index 4c1eff5e..1673c46d 100644 --- a/include/BLE_Custom_Characteristic.h +++ b/include/BLE_Custom_Characteristic.h @@ -63,14 +63,16 @@ const uint8_t BLE_hMax = 0x2B; // Maximum homing value const uint8_t BLE_homingSensitivity = 0x2C; // Homing sensitivity value const uint8_t BLE_pTab4Pwr = 0x2D; // Use power values for power table const uint8_t BLE_UDPLogging = 0x2E; // Enable or disable UDP logging +const uint8_t BLE_hardwareVersion = 0x2F; // Read-only string identifying the detected hardware revision const uint8_t BLE_BLELogging = 0x30; // Enable or disable BLE logging +const uint8_t BLE_allSettings = 0x31; // Read all user settings as a chunked JSON snapshot class BLE_ss2kCustomCharacteristic { public: void setupService(NimBLEServer *pServer); void update(); // Used internally for notify and onWrite Callback. - static void process(std::string rxValue); + static void process(std::string rxValue, uint16_t connHandle = BLE_HS_CONN_HANDLE_NONE, uint16_t mtu = 23, bool indicateResponse = true); // Custom Characteristic value that needs to be notified static void notify(char _item, int tableRow = -1); // Notify any changed value in userConfig diff --git a/include/BLE_Device_Identity.h b/include/BLE_Device_Identity.h new file mode 100644 index 00000000..a6290fd4 --- /dev/null +++ b/include/BLE_Device_Identity.h @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2020 Anthony Doud & Joel Baranick + * All rights reserved. + * + * SPDX-License-Identifier: GPL-2.0-only + */ + +#pragma once + +inline char foldBleIdentifierAscii(char value) { + return (value >= 'A' && value <= 'Z') ? static_cast(value + ('a' - 'A')) : value; +} + +inline bool bleDeviceIdentifierEquals(const char* left, const char* right) { + if (left == nullptr || right == nullptr) return left == right; + + while (*left != '\0' && *right != '\0') { + if (foldBleIdentifierAscii(*left) != foldBleIdentifierAscii(*right)) return false; + ++left; + ++right; + } + + return *left == *right; +} diff --git a/include/Builtin_Pages.h b/include/Builtin_Pages.h index 38481cbb..4b4d0da5 100644 --- a/include/Builtin_Pages.h +++ b/include/Builtin_Pages.h @@ -8,80 +8,135 @@ #pragma once #include +#include "settings.h" String OTAStyle = ""; /* Login page */ String OTALoginIndex = - "
" - "

Firmware Update Login

" - " " - " " - "" + "" + "
" + "

SmartSpin2k

Firmware Update
" + "" + "" + "" + "" "" + "
" "" + OTAStyle; String noIndexHTML = "" - "" - "" - "

The webserver files need to be updated.

" - "Please enter the credentials for your network or upload a new filesystem image using the link below." + "" + "
" + "

SmartSpin2k

Setup Required
" + "

Web files are missing. Connect to Wi-Fi for automatic recovery or upload a filesystem image.

" "
" - "

" - "" - "

" - "" - "" + "" + "" + "" "
" "
" - "" + "" "
" - "

Update Firmware

" - "" - " " + + "

Upload firmware or filesystem

" + "
" + OTAStyle; /* Server Index Page */ String OTAServerIndex = - "" - "
" - "
SmartSpin2k OTA
" + "" + "
" + "

SmartSpin2k

Firmware Update
" "
" - "" - "" + "" + "" "
" - "
" - "
0%
" - "
" - "
Valid files are firmware.bin or littlefs.bin
" - "
" - "" + "
" + "
Valid files: " FW_BINFILE " or " FS_BINFILE "
" + "
" + "Return to Main Page" + "" ""; + "" + + OTAStyle; diff --git a/include/DirConManager.h b/include/DirConManager.h index 80b84cc8..6123992a 100644 --- a/include/DirConManager.h +++ b/include/DirConManager.h @@ -18,7 +18,7 @@ #define DIRCON_MDNS_SERVICE_NAME "_wahoo-fitness-tnp" #define DIRCON_MDNS_SERVICE_PROTOCOL "tcp" #define DIRCON_TCP_PORT 8081 -#define DIRCON_MAX_CLIENTS 1 +#define DIRCON_MAX_CLIENTS 3 #define DIRCON_RECEIVE_BUFFER_SIZE 256 #define DIRCON_SEND_BUFFER_SIZE 256 #define DIRCON_MAX_CHARACTERISTICS 20 // maximum number of characteristics to track for subscriptions @@ -54,7 +54,7 @@ class DirConManager { static void registerService(const NimBLEUUID& serviceUuid, DirConWriteHandler writeHandler = nullptr, DirConAdvertiseHandler advertiseHandler = nullptr); // Notify DirCon clients about BLE characteristic changes - static void notifyCharacteristic(const NimBLEUUID& serviceUuid, const NimBLEUUID& characteristicUuid, uint8_t* data, size_t length, bool onlySubscribers = true); + static void notifyCharacteristic(const NimBLEUUID& serviceUuid, const NimBLEUUID& characteristicUuid, const uint8_t* data, size_t length, bool onlySubscribers = true); private: // Service registration @@ -86,7 +86,7 @@ class DirConManager { static bool processDirConMessage(DirConMessage* message, size_t clientIndex); static void sendErrorResponse(uint8_t messageId, uint8_t sequenceNumber, uint8_t errorCode, size_t clientIndex); static void sendResponse(DirConMessage* message, size_t clientIndex); - static void broadcastNotification(const NimBLEUUID& characteristicUuid, uint8_t* data, size_t length, bool onlySubscribers = true); + static void broadcastNotification(const NimBLEUUID& characteristicUuid, const uint8_t* data, size_t length, bool onlySubscribers = true); // Service and characteristic handling static void addBleServiceUuid(const NimBLEUUID& serviceUuid); diff --git a/include/FirmwareImageValidation.h b/include/FirmwareImageValidation.h new file mode 100644 index 00000000..322d7a7a --- /dev/null +++ b/include/FirmwareImageValidation.h @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2020 Anthony Doud & Joel Baranick + * All rights reserved. + * + * SPDX-License-Identifier: GPL-2.0-only + */ + +#pragma once + +#include + +#include +#include + +enum class FirmwareImageHeaderResult { + Valid, + NeedMoreData, + InvalidMagic, + InvalidSegmentCount, + WrongChip, +}; + +struct FirmwareImageHeaderValidation { + FirmwareImageHeaderResult result; + esp_chip_id_t imageChipId; +}; + +inline FirmwareImageHeaderValidation validateFirmwareImageHeader(const uint8_t* data, size_t length) { + if (data == nullptr || length < sizeof(esp_image_header_t)) { + return {FirmwareImageHeaderResult::NeedMoreData, ESP_CHIP_ID_INVALID}; + } + + esp_image_header_t header; + memcpy(&header, data, sizeof(header)); + + if (header.magic != ESP_IMAGE_HEADER_MAGIC) { + return {FirmwareImageHeaderResult::InvalidMagic, header.chip_id}; + } + if (header.segment_count == 0 || header.segment_count > ESP_IMAGE_MAX_SEGMENTS) { + return {FirmwareImageHeaderResult::InvalidSegmentCount, header.chip_id}; + } + if (header.chip_id != static_cast(CONFIG_IDF_FIRMWARE_CHIP_ID)) { + return {FirmwareImageHeaderResult::WrongChip, header.chip_id}; + } + + return {FirmwareImageHeaderResult::Valid, header.chip_id}; +} + +inline const char* firmwareImageHeaderResultName(FirmwareImageHeaderResult result) { + switch (result) { + case FirmwareImageHeaderResult::Valid: + return "valid"; + case FirmwareImageHeaderResult::NeedMoreData: + return "header is incomplete"; + case FirmwareImageHeaderResult::InvalidMagic: + return "invalid image magic"; + case FirmwareImageHeaderResult::InvalidSegmentCount: + return "invalid segment count"; + case FirmwareImageHeaderResult::WrongChip: + return "firmware targets a different chip"; + } + return "unknown validation error"; +} diff --git a/include/Main.h b/include/Main.h index 09a23b6f..f755ec6c 100644 --- a/include/Main.h +++ b/include/Main.h @@ -37,6 +37,7 @@ class SS2K { int32_t currentPosition; bool ledEnabled; void handleShiftButtons(); + static void finishSetup(); public: bool stepperIsRunning; @@ -117,6 +118,7 @@ class AuxSerialBuffer { }; extern SS2K *ss2k; +extern Board currentBoard; // Main program variable that stores most everything extern userParameters *userConfig; diff --git a/include/PowerTable_Helpers.h b/include/PowerTable_Helpers.h index 0801fb0b..0c743534 100644 --- a/include/PowerTable_Helpers.h +++ b/include/PowerTable_Helpers.h @@ -95,6 +95,7 @@ class ResistanceModel { int16_t predict(double watts, double rpm); int predictWatts(int32_t resistance, float cadence); bool getIsValid() { return isValid; } + bool getIsQuadratic() { return isQuadratic; } }; class PTHelpers { @@ -110,4 +111,4 @@ class PTHelpers { void fillGaps(PTData& ptData); bool fillAllWattColumns(PTData& ptData); bool fillAllCadenceLines(PTData& ptData); -}; \ No newline at end of file +}; diff --git a/include/SmartSpin_parameters.h b/include/SmartSpin_parameters.h index 85e6099c..bb58bc8f 100644 --- a/include/SmartSpin_parameters.h +++ b/include/SmartSpin_parameters.h @@ -142,7 +142,7 @@ class userParameters { int32_t hMin = INT32_MIN; int32_t hMax = INT32_MIN; bool FTMSControlPointWrite = false; - int homingSensitivity = DEFAULT_HOMING_SENSITIVITY; // Use default from settings.h + int homingSensitivity = DEFAULT_HOMING_SENSITIVITY; String ssid; String password; String connectedPowerMeter = CONNECTED_POWER_METER; diff --git a/include/Stepper.h b/include/Stepper.h index 18c6a4ba..b3c53ad7 100644 --- a/include/Stepper.h +++ b/include/Stepper.h @@ -14,22 +14,12 @@ constexpr int LOG_INTERVAL = 1000; -#define HOME_TIMEOUT 30000 -#define HOMING_SG_SAMPLE_COUNT 24 -#define HOMING_SG_MIN_SAMPLE_MARGIN 10 -#define HOMING_SG_MAX_THRESHOLD_DRIFT 30 -#define HOMING_TAP_MAX_ATTEMPTS 7 -#define HOMING_TAP_REQUIRED_STABLE 3 -#define HOMING_TAP_TOLERANCE 150 -#define HOMING_RECOVERY_BACKOFF_MULT 3 -#define HOMING_MAX_SENSITIVITY 100 - struct HomingSgBaseline { int threshold; int sensitivity; }; extern HardwareSerial stepperSerial; -extern TMC2209Stepper driver; +void initializeStepperSerial(bool restart = false); extern FastAccelStepperEngine engine; extern FastAccelStepper* stepper; diff --git a/include/boards.h b/include/boards.h index 6b7b9ada..eee640c2 100644 --- a/include/boards.h +++ b/include/boards.h @@ -7,7 +7,6 @@ #pragma once -#include "settings.h" #ifndef UNIT_TEST #include #else @@ -18,6 +17,8 @@ class Board { public: String name; int versionVoltage; + int versionTolerance; + int revisionPin; int shiftUpPin; int shiftDownPin; int enablePin; @@ -27,40 +28,81 @@ class Board { int stepperSerialRxPin; int auxSerialTxPin; int auxSerialRxPin; + int ledPin; int pwrScaler; + float rSense; + bool homingSupported; + float homingSensitivityScaler; }; class Boards { public: +#if defined(SMARTSPIN2K_S3) + Board rev3; +#else Board rev1; Board rev2; +#endif Boards() { +#if defined(SMARTSPIN2K_S3) + rev3.name = "Revision Three (ESP32-S3)"; + rev3.versionVoltage = 1241; + rev3.versionTolerance = 300; + rev3.revisionPin = 4; + rev3.shiftUpPin = 14; + rev3.shiftDownPin = 13; + rev3.enablePin = 48; + rev3.stepPin = 21; + rev3.dirPin = 47; + rev3.stepperSerialTxPin = 11; + rev3.stepperSerialRxPin = 12; + rev3.auxSerialTxPin = 17; + rev3.auxSerialRxPin = 18; + rev3.ledPin = 2; + rev3.pwrScaler = 12; + rev3.rSense = 0.04f; + rev3.homingSupported = true; + rev3.homingSensitivityScaler = 1.6f; +#else // Rev 1 - rev1.name = r1_NAME; - rev1.versionVoltage = r1_VERSION_VOLTAGE; - rev1.shiftUpPin = r1_SHIFT_UP_PIN; - rev1.shiftDownPin = r1_SHIFT_DOWN_PIN; - rev1.enablePin = r1_ENABLE_PIN; - rev1.stepPin = r1_STEP_PIN; - rev1.dirPin = r1_DIR_PIN; - rev1.stepperSerialTxPin = r1_STEPPER_SERIAL_TX; - rev1.stepperSerialRxPin = r1_STEPPER_SERIAL_RX; + rev1.name = "Revision One"; + rev1.versionVoltage = 0; + rev1.versionTolerance = 0; + rev1.revisionPin = 34; + rev1.shiftUpPin = 19; + rev1.shiftDownPin = 18; + rev1.enablePin = 13; + rev1.stepPin = 25; + rev1.dirPin = 33; + rev1.stepperSerialTxPin = 12; + rev1.stepperSerialRxPin = 14; rev1.auxSerialTxPin = 0; rev1.auxSerialRxPin = 0; - rev1.pwrScaler = r1_PWR_SCALER; + rev1.ledPin = 2; + rev1.pwrScaler = 31; + rev1.rSense = 0.08f; + rev1.homingSupported = false; + rev1.homingSensitivityScaler = 1.0f; // Rev 2 - rev2.name = r2_NAME; - rev2.versionVoltage = r2_VERSION_VOLTAGE; - rev2.shiftUpPin = r2_SHIFT_UP_PIN; - rev2.shiftDownPin = r2_SHIFT_DOWN_PIN; - rev2.enablePin = r2_ENABLE_PIN; - rev2.stepPin = r2_STEP_PIN; - rev2.dirPin = r2_DIR_PIN; - rev2.stepperSerialTxPin = r2_STEPPER_SERIAL_TX; - rev2.stepperSerialRxPin = r2_STEPPER_SERIAL_RX; - rev2.auxSerialTxPin = r2_AUX_SERIAL_TX; - rev2.auxSerialRxPin = r2_AUX_SERIAL_RX; - rev2.pwrScaler = r2_PWR_SCALER; + rev2.name = "Revision Two"; + rev2.versionVoltage = 4095; + rev2.versionTolerance = 0; + rev2.revisionPin = 34; + rev2.shiftUpPin = 26; + rev2.shiftDownPin = 32; + rev2.enablePin = 27; + rev2.stepPin = 25; + rev2.dirPin = 33; + rev2.stepperSerialTxPin = 19; + rev2.stepperSerialRxPin = 18; + rev2.auxSerialTxPin = 21; + rev2.auxSerialRxPin = 22; + rev2.ledPin = 2; + rev2.pwrScaler = 12; + rev2.rSense = 0.08f; + rev2.homingSupported = true; + rev2.homingSensitivityScaler = 1.0f; +#endif } -}; \ No newline at end of file +}; diff --git a/include/settings.h b/include/settings.h index 6519365a..4362d8a0 100644 --- a/include/settings.h +++ b/include/settings.h @@ -21,14 +21,23 @@ const char* const DEFAULT_PASSWORD = "password"; // and put it in /include/cert.h #define FW_UPDATEURL "https://raw.githubusercontent.com/doudar/OTAUpdates/main/" -// File that contains Version info +// Target-specific OTA names prevent cross-flashing firmware or filesystems. +#if defined(SMARTSPIN2K_S3) +#define FW_VERSIONFILE "S3version.txt" +#define FW_BINFILE "S3firmware.bin" +#define FS_BINFILE "S3littlefs.bin" +#else #define FW_VERSIONFILE "version.txt" +#define FW_BINFILE "firmware.bin" +#define FS_BINFILE "littlefs.bin" +#endif -// Path to the latest Firmware -#define FW_BINFILE "firmware.bin" - -// Data directory Source +// Web assets follow the filesystem layout for the selected firmware target. +#if defined(SMARTSPIN2K_S3) +#define DATA_UPDATEURL "https://raw.githubusercontent.com/doudar/SmartSpin2k/develop/data_s3" +#else #define DATA_UPDATEURL "https://raw.githubusercontent.com/doudar/SmartSpin2k/develop/data" +#endif #define DATA_FILELIST "/list.json" @@ -95,8 +104,8 @@ const char* const DEFAULT_PASSWORD = "password"; // Minimum cadence where ERG mode stops. #define MIN_ERG_CADENCE 30 -// Default Min Watts to stop stepper. -// This is used to set the lower travel limit for the motor. +// Default minimum ERG target while the stepper is unhomed. +// Homed operation uses the known stepper travel limits instead. #define DEFAULT_MIN_WATTS 50 // Default Max Watts that the brake on the spin bike can absorb from the user. @@ -129,90 +138,6 @@ const char* const DEFAULT_PASSWORD = "password"; // Default debounce delay for shifters. Increase if you have false shifts. Decrease if shifting takes too long. #define DEBOUNCE_DELAY 200 -// Hardware Revision check pin -#define REV_PIN 34 - -//////////// Defines for hardware Revision 1 //////////// - -// Board Name -#define r1_NAME "Revision One" - -// ID Voltage on pin 34. Values are 0-4095 (0-3.3v) -#define r1_VERSION_VOLTAGE 0 - -// Hardware pin for Shift Up -#define r1_SHIFT_UP_PIN 19 - -// Hardware pin for Shift Down -#define r1_SHIFT_DOWN_PIN 18 - -// Hardware pin for stepper Enable -#define r1_ENABLE_PIN 13 - -// Hardware pin for stepper step -#define r1_STEP_PIN 25 - -// Hardware pin for stepper dir -#define r1_DIR_PIN 33 - -// TMC2208/TMC2224 SoftwareSerial receive pin -#define r1_STEPPER_SERIAL_RX 14 - -// TMC2208/TMC2224 SoftwareSerial transmit pin -#define r1_STEPPER_SERIAL_TX 12 - -// Reduce current setting by this divisor (0-31) -#define r1_PWR_SCALER 31 -//////////////////////////////////////////////////////// -//////////// Defines for hardware Revision 2 //////////// - -// Board Name -#define r2_NAME "Revision Two" - -// ID Voltage on pin 34. Values are 0-4095 (0-3.3v) -#define r2_VERSION_VOLTAGE 4095 - -// Hardware pin for Shift Up -#define r2_SHIFT_UP_PIN 26 - -// Hardware pin for Shift Down -#define r2_SHIFT_DOWN_PIN 32 - -// Hardware pin for stepper Enable -#define r2_ENABLE_PIN 27 - -// Hardware pin for stepper step -#define r2_STEP_PIN 25 - -// Hardware pin for stepper dir -#define r2_DIR_PIN 33 - -// TMC2209 SoftwareSerial receive pin -#define r2_STEPPER_SERIAL_RX 18 - -// TMC2209 SoftwareSerial transmit pin -#define r2_STEPPER_SERIAL_TX 19 - -// TMC2209 SoftwareSerial receive pin -#define r2_AUX_SERIAL_RX 22 - -// TMC2209 SoftwareSerial transmit pin -#define r2_AUX_SERIAL_TX 21 - -// Reduce current setting by this divisor (0-31) -#define r2_PWR_SCALER 12 -//////////////////////////////////////////////////////// - -// TMC2208/TMC2224 HardwareSerial port -#define SERIAL_PORT stepperSerial - -// Match to your driver -#define R_SENSE 0.08f - -// Hardware pin for indicator LED *note* internal LED on esp32 Dev board is pin -// 2 -#define LED_PIN 2 - // Reconnect tries removed: connections now always instantiate a new NimBLEClient // loop speed for the SmartSpin2k BLE communications @@ -349,19 +274,35 @@ constexpr const char* ANY = "any"; // Interval for polling ble battery updates #define BATTERY_UPDATE_INTERVAL_MILLIS 300000 -// Default homing sensitivity value +// Base homing sensitivity before applying the detected board's scaler. #define DEFAULT_HOMING_SENSITIVITY 50 +// Stepper homing behavior +#define HOME_TIMEOUT 30000 +#define HOMING_SG_SAMPLE_COUNT 24 +#define HOMING_SG_MIN_SAMPLE_MARGIN 10 +#define HOMING_SG_MAX_THRESHOLD_DRIFT 30 +#define HOMING_TAP_MAX_ATTEMPTS 7 +#define HOMING_TAP_REQUIRED_STABLE 3 +#define HOMING_TAP_TOLERANCE 150 +#define HOMING_RECOVERY_BACKOFF_MULT 3 +#define HOMING_MAX_SENSITIVITY 100 + // BLE automatic reconnect interval in milliseconds. -#define BLE_RECONNECT_SCAN_INTERVAL 6000 +#define BLE_RECONNECT_SCAN_INTERVAL 8000 // Initial and web scan duration in milliseconds -#define DEFAULT_SCAN_DURATION 4000 +#define DEFAULT_SCAN_DURATION 5000 // Task Stack Sizes // In theory you can subtract whatever is left in the report from DEBUG_STACK for each task +#if defined(SMARTSPIN2K_S3) +#define MAIN_STACK 8000 +#define BLE_CLIENT_STACK 8000 // S3 has additional internal RAM and external QSPI PSRAM. +#else #define MAIN_STACK 4500 -#define BLE_CLIENT_STACK 6000 //Scans and connects to BLE devices. Holds the BLE Notify Data. +#define BLE_CLIENT_STACK 6000 // Scans and connects to BLE devices. Holds the BLE Notify Data. +#endif // Uncomment to enable stack size debugging info // #define DEBUG_STACK diff --git a/partitions_esp32s3_16mb.csv b/partitions_esp32s3_16mb.csv new file mode 100644 index 00000000..9a037622 --- /dev/null +++ b/partitions_esp32s3_16mb.csv @@ -0,0 +1,9 @@ +# Name, Type, SubType, Offset, Size, Flags +nvs, data, nvs, 0x9000, 0x10000, +otadata, data, ota, 0x19000, 0x2000, +phy_init, data, phy, 0x1B000, 0x1000, +nvs_keys, data, nvs_keys, 0x1C000, 0x1000, +coredump, data, coredump, 0x1D000, 0x40000, +app0, app, ota_0, 0x60000, 0x400000, +app1, app, ota_1, 0x460000, 0x400000, +spiffs, data, spiffs, 0x860000, 0x7A0000, diff --git a/platformio.ini b/platformio.ini index 020a1f98..7cee719b 100644 --- a/platformio.ini +++ b/platformio.ini @@ -10,19 +10,19 @@ [platformio] default_envs = release -[esp32doit] +[common] lib_ldf_mode = chain lib_compat_mode = strict extra_scripts = pre:scripts/pre_build_cleanup.py -platform = https://github.com/pioarduino/platform-espressif32/releases/download/54.03.21-2/platform-espressif32.zip + pre:scripts/prepare_filesystem.py + pre:scripts/name_build_artifacts.py +platform = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.311/platform-espressif32.zip ;platform = https://github.com/pioarduino/platform-espressif32/releases/download/53.03.10/platform-espressif32.zip ;platform = espressif32 ;platform_packages = ; framework-espidf @ https://github.com/espressif/esp-idf/releases/download/v5.3.2/esp-idf-v5.3.2.zip -board = esp32doit-devkit-v1 framework = arduino, espidf -board_build.partitions = min_spiffs.csv board_build.filesystem = littlefs upload_speed = 921600 monitor_speed = 115200 @@ -46,6 +46,7 @@ custom_component_remove = espressif/esp_rainmaker espressif/zigbee espressif/rmaker_common + espressif/lan867x build_flags = !python git_tag_macro.py !python build_date_macro.py @@ -68,6 +69,7 @@ build_flags = ;-D CONFIG_BT_NIMBLE_BLOCK_COUNT=20 -std=gnu++17 lib_deps = + ;https://github.com/h2zero/esp-nimble-cpp/ https://github.com/doudar/esp-nimble-cpp/ https://github.com/teemuatlut/TMCStepper/archive/refs/tags/v0.7.3.zip https://github.com/bblanchon/ArduinoJson/archive/refs/tags/v7.3.1.zip @@ -78,14 +80,58 @@ lib_deps = ;https://github.com/Links2004/arduinoWebSockets ;https://github.com/h2zero/NimBLE-Arduino/ +[board_esp32] +board = esp32doit-devkit-v1 +board_build.partitions = min_spiffs.csv +debug_tool = esp-prog +debug_init_break = tbreak setup + +[board_esp32s3] +board = esp32-s3-devkitc-1 +board_build.partitions = partitions_esp32s3_16mb.csv +board_upload.flash_size = 16MB +board_build.arduino.memory_type = qio_qspi +upload_protocol = esptool +build_flags = + -D SMARTSPIN2K_S3=1 + -D BOARD_HAS_PSRAM + -D ARDUINO_USB_CDC_ON_BOOT=1 + -D ARDUINO_USB_MODE=1 + [env:release] -extends = esp32doit +extends = common, board_esp32 +build_flags = ${common.build_flags} + -D CORE_DEBUG_LEVEL=0 [env:debug] -extends = esp32doit +extends = common, board_esp32 build_type = debug -build_flags = ${esp32doit.build_flags} -D__DEBUG__=1 -debug_tool = esp-prog +build_flags = ${common.build_flags} -D__DEBUG__=1 +check_tool = cppcheck +check_flags = + --enable=all + --suppress=*:*/.pio/* + --suppress=*:*/lib/NimBLE-Arduino/* + --suppress=unmatchedSuppression + --suppress=missingIncludeSystem +check_severity = medium, high +check_skip_packages = true + +[env:S3release] +extends = common, board_esp32s3 +build_flags = + ${common.build_flags} + ${board_esp32s3.build_flags} + -D CORE_DEBUG_LEVEL=0 + +[env:S3debug] +extends = common, board_esp32s3 +build_type = debug +build_flags = + ${common.build_flags} + ${board_esp32s3.build_flags} + -D__DEBUG__=1 +debug_tool = esp-builtin debug_init_break = tbreak setup check_tool = cppcheck check_flags = diff --git a/scripts/name_build_artifacts.py b/scripts/name_build_artifacts.py new file mode 100644 index 00000000..cc35ddf7 --- /dev/null +++ b/scripts/name_build_artifacts.py @@ -0,0 +1,30 @@ +# +# Copyright (C) 2020 Anthony Doud & Joel Baranick +# All rights reserved +# +# SPDX-License-Identifier: GPL-2.0-only +# + +Import("env") + +from pathlib import Path +from shutil import copy2 + + +def copy_s3_artifact(source, target, env): + artifact = Path(str(target[0])) + prefixed = artifact.with_name(f"S3{artifact.name}") + copy2(artifact, prefixed) + print(f"[name_build_artifacts] created {prefixed}") + + +if env.subst("$PIOENV") in ("S3release", "S3debug"): + # Make the upload and uploadfs targets consume the target-specific images + # directly instead of renaming their inputs after PlatformIO creates them. + env.Replace(PROGNAME="S3firmware", ESP32_FS_IMAGE_NAME="S3littlefs") + + # The ESP32 platform hard-codes these two intermediate names in its flash + # dependency list, so keep them available for `upload` while also creating + # the target-specific release artifacts. + env.AddPostAction("$BUILD_DIR/partitions.bin", copy_s3_artifact) + env.AddPostAction("$BUILD_DIR/bootloader.bin", copy_s3_artifact) diff --git a/scripts/pre_build_cleanup.py b/scripts/pre_build_cleanup.py index ce392476..b2c12cf6 100644 --- a/scripts/pre_build_cleanup.py +++ b/scripts/pre_build_cleanup.py @@ -10,6 +10,12 @@ from pathlib import Path +# The S3 has a much larger filesystem partition and keeps its web assets +# separate so they can grow without increasing the classic ESP32 image. +if env.subst("$PIOENV") in ("S3release", "S3debug"): + env.Replace(PROJECT_DATA_DIR=str(Path(env.subst("$PROJECT_DIR")) / "data_s3")) + + # Work around intermittent malformed x509_crt_bundle.S generation. # Removing stale generated files before each build avoids carrying # corrupted artifacts between runs. diff --git a/scripts/prepare_filesystem.py b/scripts/prepare_filesystem.py new file mode 100644 index 00000000..4d69fb57 --- /dev/null +++ b/scripts/prepare_filesystem.py @@ -0,0 +1,85 @@ +# Copyright (C) 2026 Anthony Doud & Joel Baranick +# SPDX-License-Identifier: GPL-2.0-only + +"""Stage compact LittleFS contents before PlatformIO filesystem builds.""" + +Import("env") + +import gzip +import json +import shutil +from pathlib import Path + +from SCons.Script import COMMAND_LINE_TARGETS + + +FILESYSTEM_TARGETS = {"buildfs", "uploadfs", "uploadfsota"} +COMPRESSED_SUFFIXES = {".html", ".css"} + + +def update_repository_ota_assets(source_dir: Path) -> None: + """Keep gzip files used by raw-GitHub automatic OTA in sync.""" + output_files = [] + expected_gzip_files = set() + source_files = sorted(path for path in source_dir.rglob("*") if path.is_file()) + for source_file in source_files: + relative_path = source_file.relative_to(source_dir) + if relative_path.as_posix() == "list.json": + continue + if source_file.suffix == ".gz" and source_file.with_suffix("").suffix in COMPRESSED_SUFFIXES: + continue + + if source_file.suffix in COMPRESSED_SUFFIXES: + gzip_file = source_file.with_name(source_file.name + ".gz") + gzip_file.write_bytes(gzip.compress(source_file.read_bytes(), compresslevel=9, mtime=0)) + relative_path = gzip_file.relative_to(source_dir) + expected_gzip_files.add(gzip_file) + output_files.append(relative_path.as_posix()) + + for gzip_file in source_dir.rglob("*.gz"): + if gzip_file.with_suffix("").suffix in COMPRESSED_SUFFIXES and gzip_file not in expected_gzip_files: + gzip_file.unlink() + + (source_dir / "list.json").write_text(json.dumps(output_files, separators=(",", ":")), encoding="utf-8") + + +def stage_filesystem(source_dir: Path, output_dir: Path) -> None: + if output_dir.exists(): + shutil.rmtree(output_dir) + output_dir.mkdir(parents=True) + + output_files = [] + for source_file in sorted(path for path in source_dir.rglob("*") if path.is_file()): + relative_path = source_file.relative_to(source_dir) + if relative_path.as_posix() == "list.json": + continue + + # Gzip copies checked into data/ are for repository-based automatic OTA. + # Always regenerate filesystem copies from the readable source files. + if source_file.suffix == ".gz" and source_file.with_suffix("").suffix in COMPRESSED_SUFFIXES: + continue + + if source_file.suffix in COMPRESSED_SUFFIXES: + relative_path = Path(relative_path.as_posix() + ".gz") + destination = output_dir / relative_path + destination.parent.mkdir(parents=True, exist_ok=True) + destination.write_bytes(gzip.compress(source_file.read_bytes(), compresslevel=9, mtime=0)) + else: + destination = output_dir / relative_path + destination.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(source_file, destination) + + output_files.append(relative_path.as_posix()) + + print(f"[prepare_filesystem] staged {len(output_files)} files in {output_dir}") + + +if FILESYSTEM_TARGETS.intersection(COMMAND_LINE_TARGETS): + project_dir = Path(env.subst("$PROJECT_DIR")) + build_dir = Path(env.subst("$BUILD_DIR")) + source_name = "data_s3" if env.subst("$PIOENV") in ("S3release", "S3debug") else "data" + staged_dir = build_dir / "filesystem_data" + source_dir = project_dir / source_name + update_repository_ota_assets(source_dir) + stage_filesystem(source_dir, staged_dir) + env.Replace(PROJECT_DATA_DIR=str(staged_dir)) diff --git a/sdkconfig b/sdkconfig index 1287da4d..1e74df4f 100644 --- a/sdkconfig +++ b/sdkconfig @@ -1289,11 +1289,11 @@ CONFIG_HEAP_TRACING_OFF=y 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_DEFAULT_LEVEL=1 CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y # CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set # CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set -CONFIG_LOG_MAXIMUM_LEVEL=3 +CONFIG_LOG_MAXIMUM_LEVEL=1 # # Level Settings diff --git a/sdkconfig.S3release.old b/sdkconfig.S3release.old new file mode 100644 index 00000000..a35b102b --- /dev/null +++ b/sdkconfig.S3release.old @@ -0,0 +1,3766 @@ +# +# Automatically generated file. DO NOT EDIT. +# Espressif IoT Development Framework (ESP-IDF) 5.5.5 Project Configuration +# +# default: +CONFIG_SOC_ADC_SUPPORTED=y +# default: +CONFIG_SOC_UART_SUPPORTED=y +# default: +CONFIG_SOC_PCNT_SUPPORTED=y +# default: +CONFIG_SOC_PHY_SUPPORTED=y +# default: +CONFIG_SOC_WIFI_SUPPORTED=y +# default: +CONFIG_SOC_TWAI_SUPPORTED=y +# default: +CONFIG_SOC_GDMA_SUPPORTED=y +# default: +CONFIG_SOC_UHCI_SUPPORTED=y +# default: +CONFIG_SOC_AHB_GDMA_SUPPORTED=y +# default: +CONFIG_SOC_GPTIMER_SUPPORTED=y +# default: +CONFIG_SOC_LCDCAM_SUPPORTED=y +# default: +CONFIG_SOC_LCDCAM_CAM_SUPPORTED=y +# default: +CONFIG_SOC_LCDCAM_I80_LCD_SUPPORTED=y +# default: +CONFIG_SOC_LCDCAM_RGB_LCD_SUPPORTED=y +# default: +CONFIG_SOC_MCPWM_SUPPORTED=y +# default: +CONFIG_SOC_DEDICATED_GPIO_SUPPORTED=y +# default: +CONFIG_SOC_CACHE_SUPPORT_WRAP=y +# default: +CONFIG_SOC_ULP_SUPPORTED=y +# default: +CONFIG_SOC_ULP_FSM_SUPPORTED=y +# default: +CONFIG_SOC_RISCV_COPROC_SUPPORTED=y +# default: +CONFIG_SOC_BT_SUPPORTED=y +# default: +CONFIG_SOC_USB_OTG_SUPPORTED=y +# default: +CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=y +# default: +CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y +# default: +CONFIG_SOC_ASYNC_MEMCPY_SUPPORTED=y +# default: +CONFIG_SOC_SUPPORTS_SECURE_DL_MODE=y +# default: +CONFIG_SOC_EFUSE_KEY_PURPOSE_FIELD=y +# default: +CONFIG_SOC_EFUSE_SUPPORTED=y +# default: +CONFIG_SOC_SDMMC_HOST_SUPPORTED=y +# default: +CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y +# default: +CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y +# default: +CONFIG_SOC_RTC_MEM_SUPPORTED=y +# default: +CONFIG_SOC_PSRAM_DMA_CAPABLE=y +# default: +CONFIG_SOC_XT_WDT_SUPPORTED=y +# default: +CONFIG_SOC_I2S_SUPPORTED=y +# default: +CONFIG_SOC_RMT_SUPPORTED=y +# default: +CONFIG_SOC_SDM_SUPPORTED=y +# default: +CONFIG_SOC_GPSPI_SUPPORTED=y +# default: +CONFIG_SOC_LEDC_SUPPORTED=y +# default: +CONFIG_SOC_I2C_SUPPORTED=y +# default: +CONFIG_SOC_SYSTIMER_SUPPORTED=y +# default: +CONFIG_SOC_SUPPORT_COEXISTENCE=y +# default: +CONFIG_SOC_TEMP_SENSOR_SUPPORTED=y +# default: +CONFIG_SOC_AES_SUPPORTED=y +# default: +CONFIG_SOC_MPI_SUPPORTED=y +# default: +CONFIG_SOC_SHA_SUPPORTED=y +# default: +CONFIG_SOC_HMAC_SUPPORTED=y +# default: +CONFIG_SOC_DIG_SIGN_SUPPORTED=y +# default: +CONFIG_SOC_FLASH_ENC_SUPPORTED=y +# default: +CONFIG_SOC_SECURE_BOOT_SUPPORTED=y +# default: +CONFIG_SOC_MEMPROT_SUPPORTED=y +# default: +CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y +# default: +CONFIG_SOC_BOD_SUPPORTED=y +# default: +CONFIG_SOC_CLK_TREE_SUPPORTED=y +# default: +CONFIG_SOC_MPU_SUPPORTED=y +# default: +CONFIG_SOC_WDT_SUPPORTED=y +# default: +CONFIG_SOC_SPI_FLASH_SUPPORTED=y +# default: +CONFIG_SOC_RNG_SUPPORTED=y +# default: +CONFIG_SOC_LIGHT_SLEEP_SUPPORTED=y +# default: +CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y +# default: +CONFIG_SOC_LP_PERIPH_SHARE_INTERRUPT=y +# default: +CONFIG_SOC_PM_SUPPORTED=y +# default: +CONFIG_SOC_SIMD_INSTRUCTION_SUPPORTED=y +# default: +CONFIG_SOC_XTAL_SUPPORT_40M=y +# default: +CONFIG_SOC_APPCPU_HAS_CLOCK_GATING_BUG=y +# default: +CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y +# default: +CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y +# default: +CONFIG_SOC_ADC_ARBITER_SUPPORTED=y +# default: +CONFIG_SOC_ADC_DIG_IIR_FILTER_SUPPORTED=y +# default: +CONFIG_SOC_ADC_MONITOR_SUPPORTED=y +# default: +CONFIG_SOC_ADC_DMA_SUPPORTED=y +# default: +CONFIG_SOC_ADC_PERIPH_NUM=2 +# default: +CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10 +# default: +CONFIG_SOC_ADC_ATTEN_NUM=4 +# default: +CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2 +# default: +CONFIG_SOC_ADC_PATT_LEN_MAX=24 +# default: +CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=12 +# default: +CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 +# default: +CONFIG_SOC_ADC_DIGI_RESULT_BYTES=4 +# default: +CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 +# default: +CONFIG_SOC_ADC_DIGI_IIR_FILTER_NUM=2 +# default: +CONFIG_SOC_ADC_DIGI_MONITOR_NUM=2 +# default: +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=83333 +# default: +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=611 +# default: +CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=12 +# default: +CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +# default: +CONFIG_SOC_ADC_CALIBRATION_V1_SUPPORTED=y +# default: +CONFIG_SOC_ADC_SELF_HW_CALI_SUPPORTED=y +# default: +CONFIG_SOC_ADC_SHARED_POWER=y +# default: +CONFIG_SOC_APB_BACKUP_DMA=y +# default: +CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y +# default: +CONFIG_SOC_CACHE_WRITEBACK_SUPPORTED=y +# default: +CONFIG_SOC_CACHE_FREEZE_SUPPORTED=y +# default: +CONFIG_SOC_CACHE_ACS_INVALID_STATE_ON_PANIC=y +# default: +CONFIG_SOC_CPU_CORES_NUM=2 +# default: +CONFIG_SOC_CPU_INTR_NUM=32 +# default: +CONFIG_SOC_CPU_HAS_FPU=y +# default: +CONFIG_SOC_HP_CPU_HAS_MULTIPLE_CORES=y +# default: +CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 +# default: +CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 +# default: +CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=0x40 +# default: +CONFIG_SOC_SIMD_PREFERRED_DATA_ALIGNMENT=16 +# default: +CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=4096 +# default: +CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16 +# default: +CONFIG_SOC_DS_KEY_CHECK_MAX_WAIT_US=1100 +# default: +CONFIG_SOC_AHB_GDMA_VERSION=1 +# default: +CONFIG_SOC_GDMA_NUM_GROUPS_MAX=1 +# default: +CONFIG_SOC_GDMA_PAIRS_PER_GROUP=5 +# default: +CONFIG_SOC_GDMA_PAIRS_PER_GROUP_MAX=5 +# default: +CONFIG_SOC_AHB_GDMA_SUPPORT_PSRAM=y +# default: +CONFIG_SOC_GPIO_PORT=1 +# default: +CONFIG_SOC_GPIO_PIN_COUNT=49 +# default: +CONFIG_SOC_GPIO_SUPPORT_PIN_GLITCH_FILTER=y +# default: +CONFIG_SOC_GPIO_FILTER_CLK_SUPPORT_APB=y +# default: +CONFIG_SOC_GPIO_SUPPORT_RTC_INDEPENDENT=y +# default: +CONFIG_SOC_GPIO_SUPPORT_FORCE_HOLD=y +# default: +CONFIG_SOC_GPIO_VALID_GPIO_MASK=0x1FFFFFFFFFFFF +# default: +CONFIG_SOC_GPIO_IN_RANGE_MAX=48 +# default: +CONFIG_SOC_GPIO_OUT_RANGE_MAX=48 +# default: +CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0x0001FFFFFC000000 +# default: +CONFIG_SOC_GPIO_CLOCKOUT_BY_IO_MUX=y +# default: +CONFIG_SOC_GPIO_CLOCKOUT_CHANNEL_NUM=3 +# default: +CONFIG_SOC_DEDIC_GPIO_OUT_CHANNELS_NUM=8 +# default: +CONFIG_SOC_DEDIC_GPIO_IN_CHANNELS_NUM=8 +# default: +CONFIG_SOC_DEDIC_GPIO_OUT_AUTO_ENABLE=y +# default: +CONFIG_SOC_I2C_NUM=2 +# default: +CONFIG_SOC_HP_I2C_NUM=2 +# default: +CONFIG_SOC_I2C_FIFO_LEN=32 +# default: +CONFIG_SOC_I2C_CMD_REG_NUM=8 +# default: +CONFIG_SOC_I2C_SUPPORT_SLAVE=y +# default: +CONFIG_SOC_I2C_SUPPORT_HW_CLR_BUS=y +# default: +CONFIG_SOC_I2C_SUPPORT_XTAL=y +# default: +CONFIG_SOC_I2C_SUPPORT_RTC=y +# default: +CONFIG_SOC_I2C_SUPPORT_10BIT_ADDR=y +# default: +CONFIG_SOC_I2C_SLAVE_SUPPORT_BROADCAST=y +# default: +CONFIG_SOC_I2C_SLAVE_SUPPORT_I2CRAM_ACCESS=y +# default: +CONFIG_SOC_I2C_SLAVE_CAN_GET_STRETCH_CAUSE=y +# default: +CONFIG_SOC_I2S_NUM=2 +# default: +CONFIG_SOC_I2S_HW_VERSION_2=y +# default: +CONFIG_SOC_I2S_SUPPORTS_XTAL=y +# default: +CONFIG_SOC_I2S_SUPPORTS_PLL_F160M=y +# default: +CONFIG_SOC_I2S_SUPPORTS_PCM=y +# default: +CONFIG_SOC_I2S_SUPPORTS_PDM=y +# default: +CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y +# default: +CONFIG_SOC_I2S_SUPPORTS_PCM2PDM=y +# default: +CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +# default: +CONFIG_SOC_I2S_SUPPORTS_PDM2PCM=y +# default: +CONFIG_SOC_I2S_PDM_MAX_TX_LINES=2 +# default: +CONFIG_SOC_I2S_PDM_MAX_RX_LINES=4 +# default: +CONFIG_SOC_I2S_SUPPORTS_TDM=y +# default: +CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y +# default: +CONFIG_SOC_LEDC_SUPPORT_XTAL_CLOCK=y +# default: +CONFIG_SOC_LEDC_TIMER_NUM=4 +# default: +CONFIG_SOC_LEDC_CHANNEL_NUM=8 +# default: +CONFIG_SOC_LEDC_TIMER_BIT_WIDTH=14 +# default: +CONFIG_SOC_LEDC_SUPPORT_FADE_STOP=y +# default: +CONFIG_SOC_MCPWM_GROUPS=2 +# default: +CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 +# default: +CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 +# default: +CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 +# default: +CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 +# default: +CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 +# default: +CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 +# default: +CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y +# default: +CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 +# default: +CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 +# default: +CONFIG_SOC_MCPWM_SWSYNC_CAN_PROPAGATE=y +# default: +CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=1 +# default: +CONFIG_SOC_MMU_PERIPH_NUM=1 +# default: +CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 +# default: +CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 +# default: +CONFIG_SOC_PCNT_GROUPS=1 +# default: +CONFIG_SOC_PCNT_UNITS_PER_GROUP=4 +# default: +CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 +# default: +CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 +# default: +CONFIG_SOC_RMT_GROUPS=1 +# default: +CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=4 +# default: +CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=4 +# default: +CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8 +# default: +CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=48 +# default: +CONFIG_SOC_RMT_SUPPORT_RX_PINGPONG=y +# default: +CONFIG_SOC_RMT_SUPPORT_RX_DEMODULATION=y +# default: +CONFIG_SOC_RMT_SUPPORT_ASYNC_STOP=y +# default: +CONFIG_SOC_RMT_SUPPORT_TX_LOOP_COUNT=y +# default: +CONFIG_SOC_RMT_SUPPORT_TX_LOOP_AUTO_STOP=y +# default: +CONFIG_SOC_RMT_SUPPORT_TX_SYNCHRO=y +# default: +CONFIG_SOC_RMT_SUPPORT_TX_CARRIER_DATA_ONLY=y +# default: +CONFIG_SOC_RMT_SUPPORT_XTAL=y +# default: +CONFIG_SOC_RMT_SUPPORT_RC_FAST=y +# default: +CONFIG_SOC_RMT_SUPPORT_APB=y +# default: +CONFIG_SOC_RMT_SUPPORT_DMA=y +# default: +CONFIG_SOC_LCD_I80_SUPPORTED=y +# default: +CONFIG_SOC_LCD_RGB_SUPPORTED=y +# default: +CONFIG_SOC_LCD_I80_BUSES=1 +# default: +CONFIG_SOC_LCD_RGB_PANELS=1 +# default: +CONFIG_SOC_LCD_I80_BUS_WIDTH=16 +# default: +CONFIG_SOC_LCD_RGB_DATA_WIDTH=16 +# default: +CONFIG_SOC_LCD_SUPPORT_RGB_YUV_CONV=y +# default: +CONFIG_SOC_LCDCAM_I80_NUM_BUSES=1 +# default: +CONFIG_SOC_LCDCAM_I80_BUS_WIDTH=16 +# default: +CONFIG_SOC_LCDCAM_RGB_NUM_PANELS=1 +# default: +CONFIG_SOC_LCDCAM_RGB_DATA_WIDTH=16 +# default: +CONFIG_SOC_RTC_CNTL_CPU_PD_DMA_BUS_WIDTH=128 +# default: +CONFIG_SOC_RTC_CNTL_CPU_PD_REG_FILE_NUM=549 +# default: +CONFIG_SOC_RTC_CNTL_TAGMEM_PD_DMA_BUS_WIDTH=128 +# default: +CONFIG_SOC_RTC_CNTL_NEEDS_ATOMIC_ACCESS=y +# default: +CONFIG_SOC_RTCIO_PIN_COUNT=22 +# default: +CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y +# default: +CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y +# default: +CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y +# default: +CONFIG_SOC_LP_IO_CLOCK_IS_INDEPENDENT=y +# default: +CONFIG_SOC_SDM_GROUPS=1 +# default: +CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 +# default: +CONFIG_SOC_SDM_CLK_SUPPORT_APB=y +# default: +CONFIG_SOC_SPI_PERIPH_NUM=3 +# default: +CONFIG_SOC_SPI_MAX_CS_NUM=6 +# default: +CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 +# default: +CONFIG_SOC_SPI_SUPPORT_DDRCLK=y +# default: +CONFIG_SOC_SPI_SLAVE_SUPPORT_SEG_TRANS=y +# default: +CONFIG_SOC_SPI_SUPPORT_CD_SIG=y +# default: +CONFIG_SOC_SPI_SUPPORT_CONTINUOUS_TRANS=y +# default: +CONFIG_SOC_SPI_SUPPORT_SLAVE_HD_VER2=y +# default: +CONFIG_SOC_SPI_SUPPORT_CLK_APB=y +# default: +CONFIG_SOC_SPI_SUPPORT_CLK_XTAL=y +# default: +CONFIG_SOC_SPI_PERIPH_SUPPORT_CONTROL_DUMMY_OUT=y +# default: +CONFIG_SOC_MEMSPI_IS_INDEPENDENT=y +# default: +CONFIG_SOC_SPI_MAX_PRE_DIVIDER=16 +# default: +CONFIG_SOC_SPI_SUPPORT_OCT=y +# default: +CONFIG_SOC_SPI_SCT_SUPPORTED=y +# default: +CONFIG_SOC_SPI_SCT_REG_NUM=14 +# default: +CONFIG_SOC_SPI_SCT_BUFFER_NUM_MAX=y +# default: +CONFIG_SOC_SPI_SCT_CONF_BITLEN_MAX=0x3FFFA +# default: +CONFIG_SOC_SPIRAM_SUPPORTED=y +# default: +CONFIG_SOC_SPIRAM_XIP_SUPPORTED=y +# default: +CONFIG_SOC_SYSTIMER_COUNTER_NUM=2 +# default: +CONFIG_SOC_SYSTIMER_ALARM_NUM=3 +# default: +CONFIG_SOC_SYSTIMER_BIT_WIDTH_LO=32 +# default: +CONFIG_SOC_SYSTIMER_BIT_WIDTH_HI=20 +# default: +CONFIG_SOC_SYSTIMER_FIXED_DIVIDER=y +# default: +CONFIG_SOC_SYSTIMER_INT_LEVEL=y +# default: +CONFIG_SOC_SYSTIMER_ALARM_MISS_COMPENSATE=y +# default: +CONFIG_SOC_TIMER_GROUPS=2 +# default: +CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2 +# default: +CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=54 +# default: +CONFIG_SOC_TIMER_GROUP_SUPPORT_XTAL=y +# default: +CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y +# default: +CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 +# default: +CONFIG_SOC_LP_TIMER_BIT_WIDTH_LO=32 +# default: +CONFIG_SOC_LP_TIMER_BIT_WIDTH_HI=16 +# default: +CONFIG_SOC_TOUCH_SENSOR_VERSION=2 +# default: +CONFIG_SOC_TOUCH_SENSOR_NUM=15 +# default: +CONFIG_SOC_TOUCH_MIN_CHAN_ID=1 +# default: +CONFIG_SOC_TOUCH_MAX_CHAN_ID=14 +# default: +CONFIG_SOC_TOUCH_SUPPORT_BENCHMARK=y +# default: +CONFIG_SOC_TOUCH_SUPPORT_SLEEP_WAKEUP=y +# default: +CONFIG_SOC_TOUCH_SUPPORT_WATERPROOF=y +# default: +CONFIG_SOC_TOUCH_SUPPORT_PROX_SENSING=y +# default: +CONFIG_SOC_TOUCH_SUPPORT_DENOISE_CHAN=y +# default: +CONFIG_SOC_TOUCH_PROXIMITY_CHANNEL_NUM=3 +# default: +CONFIG_SOC_TOUCH_PROXIMITY_MEAS_DONE_SUPPORTED=y +# default: +CONFIG_SOC_TOUCH_SAMPLE_CFG_NUM=1 +# default: +CONFIG_SOC_TWAI_CONTROLLER_NUM=1 +# default: +CONFIG_SOC_TWAI_MASK_FILTER_NUM=1 +# default: +CONFIG_SOC_TWAI_CLK_SUPPORT_APB=y +# default: +CONFIG_SOC_TWAI_BRP_MIN=2 +# default: +CONFIG_SOC_TWAI_BRP_MAX=16384 +# default: +CONFIG_SOC_TWAI_SUPPORTS_RX_STATUS=y +# default: +CONFIG_SOC_UART_NUM=3 +# default: +CONFIG_SOC_UART_HP_NUM=3 +# default: +CONFIG_SOC_UART_FIFO_LEN=128 +# default: +CONFIG_SOC_UART_BITRATE_MAX=5000000 +# default: +CONFIG_SOC_UART_SUPPORT_FSM_TX_WAIT_SEND=y +# default: +CONFIG_SOC_UART_SUPPORT_WAKEUP_INT=y +# default: +CONFIG_SOC_UART_SUPPORT_APB_CLK=y +# default: +CONFIG_SOC_UART_SUPPORT_RTC_CLK=y +# default: +CONFIG_SOC_UART_SUPPORT_XTAL_CLK=y +# default: +CONFIG_SOC_UART_WAKEUP_SUPPORT_ACTIVE_THRESH_MODE=y +# default: +CONFIG_SOC_UHCI_NUM=1 +# default: +CONFIG_SOC_USB_OTG_PERIPH_NUM=1 +# default: +CONFIG_SOC_USB_FSLS_PHY_NUM=1 +# default: +CONFIG_SOC_SHA_DMA_MAX_BUFFER_SIZE=3968 +# default: +CONFIG_SOC_SHA_SUPPORT_DMA=y +# default: +CONFIG_SOC_SHA_SUPPORT_RESUME=y +# default: +CONFIG_SOC_SHA_GDMA=y +# default: +CONFIG_SOC_SHA_SUPPORT_SHA1=y +# default: +CONFIG_SOC_SHA_SUPPORT_SHA224=y +# default: +CONFIG_SOC_SHA_SUPPORT_SHA256=y +# default: +CONFIG_SOC_SHA_SUPPORT_SHA384=y +# default: +CONFIG_SOC_SHA_SUPPORT_SHA512=y +# default: +CONFIG_SOC_SHA_SUPPORT_SHA512_224=y +# default: +CONFIG_SOC_SHA_SUPPORT_SHA512_256=y +# default: +CONFIG_SOC_SHA_SUPPORT_SHA512_T=y +# default: +CONFIG_SOC_MPI_MEM_BLOCKS_NUM=4 +# default: +CONFIG_SOC_MPI_OPERATIONS_NUM=3 +# default: +CONFIG_SOC_RSA_MAX_BIT_LEN=4096 +# default: +CONFIG_SOC_AES_SUPPORT_DMA=y +# default: +CONFIG_SOC_AES_GDMA=y +# default: +CONFIG_SOC_AES_SUPPORT_AES_128=y +# default: +CONFIG_SOC_AES_SUPPORT_AES_256=y +# default: +CONFIG_SOC_PM_SUPPORT_EXT0_WAKEUP=y +# default: +CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP=y +# default: +CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y +# default: +CONFIG_SOC_PM_SUPPORT_WIFI_WAKEUP=y +# default: +CONFIG_SOC_PM_SUPPORT_BT_WAKEUP=y +# default: +CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y +# default: +CONFIG_SOC_PM_SUPPORT_CPU_PD=y +# default: +CONFIG_SOC_PM_SUPPORT_TAGMEM_PD=y +# default: +CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y +# default: +CONFIG_SOC_PM_SUPPORT_RC_FAST_PD=y +# default: +CONFIG_SOC_PM_SUPPORT_VDDSDIO_PD=y +# default: +CONFIG_SOC_PM_SUPPORT_MAC_BB_PD=y +# default: +CONFIG_SOC_PM_SUPPORT_MODEM_PD=y +# default: +CONFIG_SOC_CONFIGURABLE_VDDSDIO_SUPPORTED=y +# default: +CONFIG_SOC_PM_SUPPORT_DEEPSLEEP_CHECK_STUB_ONLY=y +# default: +CONFIG_SOC_PM_CPU_RETENTION_BY_RTCCNTL=y +# default: +CONFIG_SOC_PM_MODEM_RETENTION_BY_BACKUPDMA=y +# default: +CONFIG_SOC_PM_MODEM_PD_BY_SW=y +# default: +CONFIG_SOC_CLK_RC_FAST_D256_SUPPORTED=y +# default: +CONFIG_SOC_RTC_SLOW_CLK_SUPPORT_RC_FAST_D256=y +# default: +CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y +# default: +CONFIG_SOC_CLK_XTAL32K_SUPPORTED=y +# default: +CONFIG_SOC_CLK_LP_FAST_SUPPORT_XTAL_D2=y +# default: +CONFIG_SOC_EFUSE_DIS_DOWNLOAD_ICACHE=y +# default: +CONFIG_SOC_EFUSE_DIS_DOWNLOAD_DCACHE=y +# default: +CONFIG_SOC_EFUSE_HARD_DIS_JTAG=y +# default: +CONFIG_SOC_EFUSE_DIS_USB_JTAG=y +# default: +CONFIG_SOC_EFUSE_SOFT_DIS_JTAG=y +# default: +CONFIG_SOC_EFUSE_DIS_DIRECT_BOOT=y +# default: +CONFIG_SOC_EFUSE_DIS_ICACHE=y +# default: +CONFIG_SOC_EFUSE_BLOCK9_KEY_PURPOSE_QUIRK=y +# default: +CONFIG_SOC_SECURE_BOOT_V2_RSA=y +# default: +CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=3 +# default: +CONFIG_SOC_EFUSE_REVOKE_BOOT_KEY_DIGESTS=y +# default: +CONFIG_SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY=y +# default: +CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=64 +# default: +CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES=y +# default: +CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_OPTIONS=y +# default: +CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_128=y +# default: +CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_256=y +# default: +CONFIG_SOC_MEMPROT_CPU_PREFETCH_PAD_SIZE=16 +# default: +CONFIG_SOC_MEMPROT_MEM_ALIGN_SIZE=256 +# default: +CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 +# default: +CONFIG_SOC_MAC_BB_PD_MEM_SIZE=192 +# default: +CONFIG_SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH=12 +# default: +CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE=y +# default: +CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND=y +# default: +CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_RESUME=y +# default: +CONFIG_SOC_SPI_MEM_SUPPORT_SW_SUSPEND=y +# default: +CONFIG_SOC_SPI_MEM_SUPPORT_FLASH_OPI_MODE=y +# default: +CONFIG_SOC_SPI_MEM_SUPPORT_TIMING_TUNING=y +# default: +CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y +# default: +CONFIG_SOC_SPI_MEM_SUPPORT_WRAP=y +# default: +CONFIG_SOC_MEMSPI_TIMING_TUNING_BY_MSPI_DELAY=y +# default: +CONFIG_SOC_MEMSPI_CORE_CLK_SHARED_WITH_PSRAM=y +# default: +CONFIG_SOC_SPI_MEM_SUPPORT_CACHE_32BIT_ADDR_MAP=y +# default: +CONFIG_SOC_SPI_MEM_FLASH_SUPPORT_HPM=y +# default: +CONFIG_SOC_MEMSPI_ENCRYPTION_ALIGNMENT=16 +# default: +CONFIG_SOC_COEX_HW_PTI=y +# default: +CONFIG_SOC_EXTERNAL_COEX_LEADER_TX_LINE=y +# default: +CONFIG_SOC_SDMMC_USE_GPIO_MATRIX=y +# default: +CONFIG_SOC_SDMMC_NUM_SLOTS=2 +# default: +CONFIG_SOC_SDMMC_SUPPORT_XTAL_CLOCK=y +# default: +CONFIG_SOC_SDMMC_DELAY_PHASE_NUM=4 +# default: +CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_FAST_RC=y +# default: +CONFIG_SOC_WIFI_HW_TSF=y +# default: +CONFIG_SOC_WIFI_FTM_SUPPORT=y +# default: +CONFIG_SOC_WIFI_GCMP_SUPPORT=y +# default: +CONFIG_SOC_WIFI_WAPI_SUPPORT=y +# default: +CONFIG_SOC_WIFI_TXOP_SUPPORT=y +# default: +CONFIG_SOC_WIFI_CSI_SUPPORT=y +# default: +CONFIG_SOC_WIFI_MESH_SUPPORT=y +# default: +CONFIG_SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW=y +# default: +CONFIG_SOC_WIFI_PHY_NEEDS_USB_WORKAROUND=y +# default: +CONFIG_SOC_BLE_SUPPORTED=y +# default: +CONFIG_SOC_BLE_MESH_SUPPORTED=y +# default: +CONFIG_SOC_BLE_50_SUPPORTED=y +# default: +CONFIG_SOC_BLE_DEVICE_PRIVACY_SUPPORTED=y +# default: +CONFIG_SOC_BLUFI_SUPPORTED=y +# default: +CONFIG_SOC_ULP_HAS_ADC=y +# default: +CONFIG_SOC_PHY_COMBO_MODULE=y +# default: +CONFIG_SOC_LCDCAM_CAM_SUPPORT_RGB_YUV_CONV=y +# default: +CONFIG_SOC_LCDCAM_CAM_PERIPH_NUM=1 +# default: +CONFIG_SOC_LCDCAM_CAM_DATA_WIDTH_MAX=16 +# default: +CONFIG_IDF_CMAKE=y +# default: +CONFIG_IDF_TOOLCHAIN="gcc" +# default: +CONFIG_IDF_TOOLCHAIN_GCC=y +# default: +CONFIG_IDF_TARGET_ARCH_XTENSA=y +# default: +CONFIG_IDF_TARGET_ARCH="xtensa" +# default: +CONFIG_IDF_TARGET="esp32s3" +# default: +CONFIG_IDF_INIT_VERSION="5.4.2" +# default: +CONFIG_IDF_TARGET_ESP32S3=y +# default: +CONFIG_IDF_FIRMWARE_CHIP_ID=0x0009 + +# +# Build type +# +CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y +# CONFIG_APP_BUILD_TYPE_RAM is not set +# default: +CONFIG_APP_BUILD_GENERATE_BINARIES=y +# default: +CONFIG_APP_BUILD_BOOTLOADER=y +# default: +CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y +# CONFIG_APP_REPRODUCIBLE_BUILD is not set +# CONFIG_APP_NO_BLOBS is not set +# end of Build type + +# +# Bootloader config +# + +# +# Bootloader manager +# +CONFIG_BOOTLOADER_COMPILE_TIME_DATE=y +CONFIG_BOOTLOADER_PROJECT_VER=1 +# end of Bootloader manager + +# +# Application Rollback +# +# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set +# end of Application Rollback + +# +# Recovery Bootloader and Rollback +# +# end of Recovery Bootloader and Rollback + +# default: +CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x0 +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 +# +# default: +CONFIG_BOOTLOADER_LOG_VERSION_1=y +# default: +CONFIG_BOOTLOADER_LOG_VERSION=1 +# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set +CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y +# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set +# default: +CONFIG_BOOTLOADER_LOG_LEVEL=3 + +# +# Format +# +# CONFIG_BOOTLOADER_LOG_COLORS is not set +CONFIG_BOOTLOADER_LOG_TIMESTAMP_SOURCE_CPU_TICKS=y +# end of Format + +# +# Settings +# +# default: +CONFIG_BOOTLOADER_LOG_MODE_TEXT_EN=y +# default: +CONFIG_BOOTLOADER_LOG_MODE_TEXT=y +# end of Settings +# end of Log + +# +# Serial Flash Configurations +# +# CONFIG_BOOTLOADER_FLASH_DC_AWARE is not set +CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y +# end of Serial Flash Configurations + +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +# CONFIG_BOOTLOADER_FACTORY_RESET is not set +# CONFIG_BOOTLOADER_APP_TEST is not set +CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y +CONFIG_BOOTLOADER_WDT_ENABLE=y +# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 +# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set +# default: +CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 +# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set +# end of Bootloader config + +# +# Security features +# +# default: +CONFIG_SECURE_BOOT_V2_RSA_SUPPORTED=y +# default: +CONFIG_SECURE_BOOT_V2_PREFERRED=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 +# default: +CONFIG_SECURE_ROM_DL_MODE_ENABLED=y +# end of Security features + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y +# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set +# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set +# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set +CONFIG_APP_RETRIEVE_LEN_ELF_SHA=9 +# end of Application manager + +# default: +CONFIG_ESP_ROM_HAS_CRC_LE=y +# default: +CONFIG_ESP_ROM_HAS_CRC_BE=y +# default: +CONFIG_ESP_ROM_HAS_MZ_CRC32=y +# default: +CONFIG_ESP_ROM_HAS_JPEG_DECODE=y +# default: +CONFIG_ESP_ROM_UART_CLK_IS_XTAL=y +# default: +CONFIG_ESP_ROM_HAS_RETARGETABLE_LOCKING=y +# default: +CONFIG_ESP_ROM_USB_OTG_NUM=3 +# default: +CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=4 +# default: +CONFIG_ESP_ROM_HAS_ERASE_0_REGION_BUG=y +# default: +CONFIG_ESP_ROM_HAS_ENCRYPTED_WRITES_USING_LEGACY_DRV=y +# default: +CONFIG_ESP_ROM_GET_CLK_FREQ=y +# default: +CONFIG_ESP_ROM_HAS_HAL_WDT=y +# default: +CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y +# default: +CONFIG_ESP_ROM_HAS_LAYOUT_TABLE=y +# default: +CONFIG_ESP_ROM_HAS_SPI_FLASH=y +# default: +CONFIG_ESP_ROM_HAS_SPI_FLASH_MMAP=y +# default: +CONFIG_ESP_ROM_HAS_ETS_PRINTF_BUG=y +# default: +CONFIG_ESP_ROM_HAS_NEWLIB=y +# default: +CONFIG_ESP_ROM_HAS_NEWLIB_NANO_FORMAT=y +# default: +CONFIG_ESP_ROM_HAS_NEWLIB_32BIT_TIME=y +# default: +CONFIG_ESP_ROM_NEEDS_SET_CACHE_MMU_SIZE=y +# default: +CONFIG_ESP_ROM_RAM_APP_NEEDS_MMU_INIT=y +# default: +CONFIG_ESP_ROM_HAS_FLASH_COUNT_PAGES_BUG=y +# default: +CONFIG_ESP_ROM_HAS_CACHE_SUSPEND_WAITI_BUG=y +# default: +CONFIG_ESP_ROM_HAS_CACHE_WRITEBACK_BUG=y +# default: +CONFIG_ESP_ROM_HAS_SW_FLOAT=y +# default: +CONFIG_ESP_ROM_HAS_VERSION=y +# default: +CONFIG_ESP_ROM_SUPPORT_DEEP_SLEEP_WAKEUP_STUB=y +# default: +CONFIG_ESP_ROM_HAS_OUTPUT_PUTC_FUNC=y +# default: +CONFIG_ESP_ROM_CONSOLE_OUTPUT_SECONDARY=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 +# +# CONFIG_ESPTOOLPY_NO_STUB is not set +# CONFIG_ESPTOOLPY_OCT_FLASH is not set +CONFIG_ESPTOOLPY_FLASH_MODE_AUTO_DETECT=y +# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set +CONFIG_ESPTOOLPY_FLASHMODE_DIO=y +# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set +CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y +# default: +CONFIG_ESPTOOLPY_FLASHMODE="dio" +# CONFIG_ESPTOOLPY_FLASHFREQ_120M is not set +CONFIG_ESPTOOLPY_FLASHFREQ_80M=y +# CONFIG_ESPTOOLPY_FLASHFREQ_40M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set +# default: +CONFIG_ESPTOOLPY_FLASHFREQ="80m" +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +# default: +CONFIG_ESPTOOLPY_FLASHSIZE="16MB" +# CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set +CONFIG_ESPTOOLPY_BEFORE_RESET=y +# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set +# default: +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +# CONFIG_ESPTOOLPY_AFTER_NORESET is not set +# default: +CONFIG_ESPTOOLPY_AFTER="hard_reset" +# default: +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 +# end of Serial flasher config + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set +# CONFIG_PARTITION_TABLE_TWO_OTA is not set +# CONFIG_PARTITION_TABLE_TWO_OTA_LARGE is not set +# CONFIG_PARTITION_TABLE_CUSTOM is not set +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +# default: +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y +# end of Partition Table + +# +# Arduino Configuration +# +CONFIG_ARDUINO_VARIANT="esp32s3" +# default: +CONFIG_ENABLE_ARDUINO_DEPENDS=y +# CONFIG_AUTOSTART_ARDUINO is not set +# CONFIG_ARDUINO_RUN_CORE0 is not set +CONFIG_ARDUINO_RUN_CORE1=y +# CONFIG_ARDUINO_RUN_NO_AFFINITY is not set +# default: +CONFIG_ARDUINO_RUNNING_CORE=1 +CONFIG_ARDUINO_LOOP_STACK_SIZE=8192 +# CONFIG_ARDUINO_EVENT_RUN_CORE0 is not set +CONFIG_ARDUINO_EVENT_RUN_CORE1=y +# CONFIG_ARDUINO_EVENT_RUN_NO_AFFINITY is not set +# default: +CONFIG_ARDUINO_EVENT_RUNNING_CORE=1 +# CONFIG_ARDUINO_SERIAL_EVENT_RUN_CORE0 is not set +# CONFIG_ARDUINO_SERIAL_EVENT_RUN_CORE1 is not set +CONFIG_ARDUINO_SERIAL_EVENT_RUN_NO_AFFINITY=y +# default: +CONFIG_ARDUINO_SERIAL_EVENT_TASK_RUNNING_CORE=-1 +CONFIG_ARDUINO_SERIAL_EVENT_TASK_STACK_SIZE=2048 +CONFIG_ARDUINO_SERIAL_EVENT_TASK_PRIORITY=24 +CONFIG_ARDUINO_UDP_RUN_CORE0=y +# CONFIG_ARDUINO_UDP_RUN_CORE1 is not set +# CONFIG_ARDUINO_UDP_RUN_NO_AFFINITY is not set +# default: +CONFIG_ARDUINO_UDP_RUNNING_CORE=0 +CONFIG_ARDUINO_UDP_TASK_PRIORITY=3 +# default: +CONFIG_ARDUINO_UDP_TASK_STACK_SIZE=4096 +# CONFIG_ARDUINO_ISR_IRAM is not set +# CONFIG_DISABLE_HAL_LOCKS is not set + +# +# Debug Log Configuration +# +# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_NONE is not set +CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_ERROR=y +# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_WARN is not set +# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_INFO is not set +# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_DEBUG is not set +# CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_VERBOSE is not set +# default: +CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL=1 +# CONFIG_ARDUHAL_LOG_COLORS is not set +# CONFIG_ARDUHAL_ESP_LOG is not set +# end of Debug Log Configuration + +CONFIG_ARDUHAL_PARTITION_SCHEME_DEFAULT=y +# CONFIG_ARDUHAL_PARTITION_SCHEME_MINIMAL is not set +# CONFIG_ARDUHAL_PARTITION_SCHEME_NO_OTA is not set +# CONFIG_ARDUHAL_PARTITION_SCHEME_HUGE_APP is not set +# CONFIG_ARDUHAL_PARTITION_SCHEME_MIN_SPIFFS is not set +# default: +CONFIG_ARDUHAL_PARTITION_SCHEME="default" +CONFIG_ARDUINO_SELECTIVE_COMPILATION=y +# default: +CONFIG_ARDUINO_SELECTIVE_SPI=y +# default: +CONFIG_ARDUINO_SELECTIVE_Wire=y +# CONFIG_ARDUINO_SELECTIVE_ESP_SR is not set +# CONFIG_ARDUINO_SELECTIVE_ESP_Video is not set +# default: +CONFIG_ARDUINO_SELECTIVE_EEPROM=y +# default: +CONFIG_ARDUINO_SELECTIVE_Preferences=y +# default: +CONFIG_ARDUINO_SELECTIVE_Ticker=y +# default: +CONFIG_ARDUINO_SELECTIVE_Update=y +# CONFIG_ARDUINO_SELECTIVE_Zigbee is not set +# default: +CONFIG_ARDUINO_SELECTIVE_FS=y +# default: +CONFIG_ARDUINO_SELECTIVE_SD=y +# default: +CONFIG_ARDUINO_SELECTIVE_SD_MMC=y +# default: +CONFIG_ARDUINO_SELECTIVE_SPIFFS=y +# default: +CONFIG_ARDUINO_SELECTIVE_FFat=y +# default: +CONFIG_ARDUINO_SELECTIVE_LittleFS=y +# default: +CONFIG_ARDUINO_SELECTIVE_Network=y +# default: +CONFIG_ARDUINO_SELECTIVE_Ethernet=y +# default: +CONFIG_ARDUINO_SELECTIVE_PPP=y +# default: +CONFIG_ARDUINO_SELECTIVE_Hash=y +# default: +CONFIG_ARDUINO_SELECTIVE_ArduinoOTA=y +# default: +CONFIG_ARDUINO_SELECTIVE_AsyncUDP=y +# default: +CONFIG_ARDUINO_SELECTIVE_DNSServer=y +# default: +CONFIG_ARDUINO_SELECTIVE_ESPmDNS=y +# default: +CONFIG_ARDUINO_SELECTIVE_HTTPClient=y +# CONFIG_ARDUINO_SELECTIVE_Matter is not set +# default: +CONFIG_ARDUINO_SELECTIVE_NetBIOS=y +# default: +CONFIG_ARDUINO_SELECTIVE_WebServer=y +# default: +CONFIG_ARDUINO_SELECTIVE_WiFi=y +# default: +CONFIG_ARDUINO_SELECTIVE_NetworkClientSecure=y +# default: +CONFIG_ARDUINO_SELECTIVE_WiFiProv=y +# default: +CONFIG_ARDUINO_SELECTIVE_BLE=y +# default: +CONFIG_ARDUINO_SELECTIVE_BluetoothSerial=y +# CONFIG_ARDUINO_SELECTIVE_SimpleBLE is not set +# CONFIG_ARDUINO_SELECTIVE_RainMaker is not set +# CONFIG_ARDUINO_SELECTIVE_OpenThread is not set +# CONFIG_ARDUINO_SELECTIVE_Insights is not set +# end of Arduino Configuration + +# +# ESP Speech Recognition +# +CONFIG_MODEL_IN_FLASH=y +# CONFIG_MODEL_IN_SDCARD is not set +CONFIG_AFE_INTERFACE_V1=y +# default: +CONFIG_SR_NSN_WEBRTC=y +# default: +# CONFIG_SR_NSN_NSNET2 is not set +# default: +CONFIG_SR_VADN_WEBRTC=y +# default: +# CONFIG_SR_VADN_VADNET1_MEDIUM is not set + +# +# Load Multiple Wake Words (WakeNet9s) +# +# default: +# CONFIG_SR_WN_WN9S_HILEXIN is not set +# default: +# CONFIG_SR_WN_WN9S_HIESP is not set +# default: +# CONFIG_SR_WN_WN9S_NIHAOXIAOZHI is not set +# default: +# CONFIG_SR_WN_WN9S_HIJASON is not set +# end of Load Multiple Wake Words (WakeNet9s) + +# +# Load Multiple Wake Words (WakeNet9) +# +CONFIG_SR_WN_WN9_HILEXIN=y +# CONFIG_SR_WN_WN9_HIESP is not set +# default: +# CONFIG_SR_WN_WN9L_JA_KONNICHIHAESP_TTS3 is not set +# default: +# CONFIG_SR_WN_WN9L_FR_BONJOURESP_TTS3 is not set +# default: +# CONFIG_SR_WN_WN9_NIHAOMIAOBAN_TTS2 is not set +# CONFIG_SR_WN_WN9_XIAOAITONGXUE is not set +# default: +# CONFIG_SR_WN_WN9L_XIAOAITONGXUE is not set +# CONFIG_SR_WN_WN9_NIHAOXIAOZHI_TTS is not set +# default: +# CONFIG_SR_WN_WN9L_NIHAOXIAOZHI_TTS3 is not set +# CONFIG_SR_WN_WN9_ALEXA is not set +# CONFIG_SR_WN_WN9_JARVIS_TTS is not set +# CONFIG_SR_WN_WN9_COMPUTER_TTS is not set +# CONFIG_SR_WN_WN9_HEYWILLOW_TTS is not set +# CONFIG_SR_WN_WN9_HIMFIVE is not set +# CONFIG_SR_WN_WN9_SOPHIA_TTS is not set +# CONFIG_SR_WN_WN9_HEYWANDA_TTS is not set +# default: +# CONFIG_SR_WN_WN9_HIJOLLY_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_HIFAIRY_TTS2 is not set +# CONFIG_SR_WN_WN9_HEYPRINTER_TTS is not set +# CONFIG_SR_WN_WN9_MYCROFT_TTS is not set +# CONFIG_SR_WN_WN9_HIJOY_TTS is not set +# CONFIG_SR_WN_WN9_HIJASON_TTS2 is not set +# CONFIG_SR_WN_WN9_ASTROLABE_TTS is not set +# default: +# CONFIG_SR_WN_WN9_HEYILY_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_BLUECHIP_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_HIANDY_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_HEYIVY_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9L_HISTACKCHAN_TTS3 is not set +# default: +# CONFIG_SR_WN_WN9_HEYKIRA_TTS3 is not set +# default: +# CONFIG_SR_WN_WN9L_HEYGIGI_TTS3 is not set +# CONFIG_SR_WN_WN9_XIAOLONGXIAOLONG_TTS is not set +# CONFIG_SR_WN_WN9_HIMIAOMIAO_TTS is not set +# CONFIG_SR_WN_WN9_MIAOMIAOTONGXUE_TTS is not set +# CONFIG_SR_WN_WN9_NIHAOXIAOXIN_TTS is not set +# CONFIG_SR_WN_WN9_XIAOMEITONGXUE_TTS is not set +# CONFIG_SR_WN_WN9_HILILI_TTS is not set +# CONFIG_SR_WN_WN9_HITELLY_TTS is not set +# CONFIG_SR_WN_WN9_XIAOBINXIAOBIN_TTS is not set +# CONFIG_SR_WN_WN9_HAIXIAOWU_TTS is not set +# CONFIG_SR_WN_WN9_XIAOYAXIAOYA_TTS2 is not set +# CONFIG_SR_WN_WN9_LINAIBAN_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_XIAOSUROU_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_XIAOYUTONGXUE_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_XIAOMINGTONGXUE_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_XIAOKANGTONGXUE_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_XIAOJIANXIAOJIAN_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_XIAOTEXIAOTE_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_NIHAOXIAOYI_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_NIHAOBAIYING_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_NIHAODONGDONG_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_HIWALLE_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_XIAOLUXIAOLU_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_NIHAOXIAOAN_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_NI3HAO3XIAO3MAI4_TTS2 is not set +# default: +# CONFIG_SR_WN_WN9_NI3HAO3XIAO3RUI4_TTS3 is not set +# default: +# CONFIG_SR_WN_WN9_HAI1XIAO3OU1_TTS3 is not set +# default: +# CONFIG_SR_WN_WN9_XIAO3JIA1XIAO3JIA1_TTS3 is not set +# default: +# CONFIG_SR_WN_WN9_XIAO3FENG1XIAO3FENG1_TTS3 is not set +# default: +# CONFIG_SR_WN_WN9_HAI1XIAO3XIANG4_TTS3 is not set +# default: +# CONFIG_SR_WN_WN9L_NI3HAO3XING1BAO3_TTS3 is not set +# end of Load Multiple Wake Words (WakeNet9) + +# CONFIG_SR_MN_CN_NONE is not set +# CONFIG_SR_MN_CN_MULTINET5_RECOGNITION_QUANT8 is not set +CONFIG_SR_MN_CN_MULTINET6_QUANT=y +# CONFIG_SR_MN_CN_MULTINET6_AC_QUANT is not set +# CONFIG_SR_MN_CN_MULTINET7_QUANT is not set +# CONFIG_SR_MN_CN_MULTINET7_AC_QUANT is not set +CONFIG_SR_MN_EN_NONE=y +# CONFIG_SR_MN_EN_MULTINET5_SINGLE_RECOGNITION_QUANT8 is not set +# CONFIG_SR_MN_EN_MULTINET6_QUANT is not set +# CONFIG_SR_MN_EN_MULTINET7_QUANT is not set +# default: +CONFIG_ESP_SR_EXTERNAL_MODEL_PATH="" +# end of ESP Speech Recognition + +# +# Compiler options +# +CONFIG_COMPILER_OPTIMIZATION_DEBUG=y +# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set +# CONFIG_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_COMPILER_OPTIMIZATION_NONE is not set +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set +CONFIG_COMPILER_ASSERT_NDEBUG_EVALUATE=y +CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y +# default: +CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set +CONFIG_COMPILER_HIDE_PATHS_MACROS=y +# CONFIG_COMPILER_CXX_EXCEPTIONS is not set +# CONFIG_COMPILER_CXX_RTTI is not set +CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y +# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set +# CONFIG_COMPILER_NO_MERGE_CONSTANTS is not set +# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set +CONFIG_COMPILER_DISABLE_DEFAULT_ERRORS=y +# CONFIG_COMPILER_DISABLE_GCC12_WARNINGS is not set +# CONFIG_COMPILER_DISABLE_GCC13_WARNINGS is not set +# CONFIG_COMPILER_DISABLE_GCC14_WARNINGS is not set +# CONFIG_COMPILER_DUMP_RTL_FILES is not set +CONFIG_COMPILER_RT_LIB_GCCLIB=y +# default: +CONFIG_COMPILER_RT_LIB_NAME="gcc" +CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING=y +# CONFIG_COMPILER_ORPHAN_SECTIONS_PLACE is not set +# CONFIG_COMPILER_STATIC_ANALYZER is not set +# end of Compiler options + +# +# Component config +# + +# +# Application Level Tracing +# +# CONFIG_APPTRACE_DEST_JTAG is not set +CONFIG_APPTRACE_DEST_NONE=y +# CONFIG_APPTRACE_DEST_UART1 is not set +# CONFIG_APPTRACE_DEST_UART2 is not set +# CONFIG_APPTRACE_DEST_USB_CDC is not set +CONFIG_APPTRACE_DEST_UART_NONE=y +CONFIG_APPTRACE_UART_TASK_PRIO=1 +# default: +CONFIG_APPTRACE_LOCK_ENABLE=y +# end of Application Level Tracing + +# +# Bluetooth +# +CONFIG_BT_ENABLED=y +# CONFIG_BT_BLUEDROID_ENABLED is not set +CONFIG_BT_NIMBLE_ENABLED=y +# CONFIG_BT_CONTROLLER_ONLY is not set +CONFIG_BT_CONTROLLER_ENABLED=y +# CONFIG_BT_CONTROLLER_DISABLED is not set + +# +# Common Options +# +CONFIG_BT_ALARM_MAX_NUM=50 +# default: +CONFIG_BT_BLE_HOST_ALLOW_SUB_SPEC_MIN_CONN_INT=y +# default: +CONFIG_BT_SMP_CRYPTO_STACK_TINYCRYPT=y +# default: +# CONFIG_BT_SMP_CRYPTO_STACK_MBEDTLS is not set + +# +# BT Logs +# + +# +# Log Sources +# +# end of Log Sources + +# default: +# CONFIG_BT_LOG_CRITICAL_ONLY is not set +# default: +# CONFIG_BLE_LOG_ENABLED is not set + +# +# Legacy SPI Log Output (Deprecated - use BT Log Async Output instead) +# +# CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED is not set +# end of Legacy SPI Log Output (Deprecated - use BT Log Async Output instead) +# end of BT Logs + +# default: +# CONFIG_BT_LE_USED_MEM_STATISTICS_ENABLED is not set +# end of Common Options + +# +# NimBLE Options +# + +# +# General +# +CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL=y +# CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL is not set +# CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_DEFAULT is not set +# default: +CONFIG_BT_NIMBLE_PINNED_TO_CORE=0 +CONFIG_BT_NIMBLE_PINNED_TO_CORE_0=y +# CONFIG_BT_NIMBLE_PINNED_TO_CORE_1 is not set +CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=4096 +# default: +CONFIG_BT_NIMBLE_LEGACY_VHCI_ENABLE=y +# end of General + +# +# Roles and Profiles +# +CONFIG_BT_NIMBLE_ROLE_CENTRAL=y +CONFIG_BT_NIMBLE_ROLE_PERIPHERAL=y +CONFIG_BT_NIMBLE_ROLE_BROADCASTER=y +CONFIG_BT_NIMBLE_ROLE_OBSERVER=y +CONFIG_BT_NIMBLE_GATT_CLIENT=y +CONFIG_BT_NIMBLE_GATT_SERVER=y +# end of Roles and Profiles + +# +# Security (SMP) +# +CONFIG_BT_NIMBLE_SECURITY_ENABLE=y +CONFIG_BT_NIMBLE_SM_LEGACY=y +CONFIG_BT_NIMBLE_SM_SC=y +# CONFIG_BT_NIMBLE_SM_SC_DEBUG_KEYS is not set +CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_ENCRYPTION=y +CONFIG_BT_NIMBLE_SM_LVL=0 +CONFIG_BT_NIMBLE_SM_SC_ONLY=0 +# CONFIG_BT_NIMBLE_SMP_ID_RESET is not set +# CONFIG_BT_NIMBLE_NVS_PERSIST is not set +CONFIG_BT_NIMBLE_MAX_BONDS=3 +# CONFIG_BT_NIMBLE_HANDLE_REPEAT_PAIRING_DELETION is not set +# end of Security (SMP) + +# +# GAP +# +CONFIG_BT_NIMBLE_RPA_TIMEOUT=900 +CONFIG_BT_NIMBLE_WHITELIST_SIZE=12 +CONFIG_BT_NIMBLE_ENABLE_CONN_REATTEMPT=y +CONFIG_BT_NIMBLE_MAX_CONN_REATTEMPT=3 +# default: +CONFIG_BT_NIMBLE_HS_PVCY=y +# CONFIG_BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN is not set +# CONFIG_BT_NIMBLE_HOST_QUEUE_CONG_CHECK is not set +CONFIG_BT_NIMBLE_MAX_CONNECTIONS=7 +CONFIG_BT_NIMBLE_MAX_CCCDS=8 +CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS=y +CONFIG_BT_NIMBLE_HS_STOP_TIMEOUT_MS=2000 +CONFIG_BT_NIMBLE_USE_ESP_TIMER=y +# CONFIG_BT_NIMBLE_HS_FLOW_CTRL is not set +# end of GAP + +# +# GATT / ATT +# +CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=256 +CONFIG_BT_NIMBLE_ATT_MAX_PREP_ENTRIES=64 +CONFIG_BT_NIMBLE_GATT_MAX_PROCS=4 +# CONFIG_BT_NIMBLE_BLE_GATT_BLOB_TRANSFER is not set +# CONFIG_BT_NIMBLE_GATT_CACHING is not set +# CONFIG_BT_NIMBLE_INCL_SVC_DISCOVERY is not set +# end of GATT / ATT + +# +# L2CAP +# +CONFIG_BT_NIMBLE_L2CAP_COC_MAX_NUM=0 +# end of L2CAP + +# +# Memory Settings +# +CONFIG_BT_NIMBLE_MSYS_1_BLOCK_COUNT=12 +CONFIG_BT_NIMBLE_MSYS_1_BLOCK_SIZE=256 +CONFIG_BT_NIMBLE_MSYS_2_BLOCK_COUNT=24 +CONFIG_BT_NIMBLE_MSYS_2_BLOCK_SIZE=320 +CONFIG_BT_NIMBLE_TRANSPORT_ACL_FROM_LL_COUNT=24 +CONFIG_BT_NIMBLE_TRANSPORT_ACL_SIZE=255 +CONFIG_BT_NIMBLE_TRANSPORT_EVT_SIZE=70 +CONFIG_BT_NIMBLE_TRANSPORT_EVT_COUNT=30 +CONFIG_BT_NIMBLE_TRANSPORT_EVT_DISCARD_COUNT=8 +CONFIG_BT_NIMBLE_L2CAP_COC_SDU_BUFF_COUNT=1 +# default: +# CONFIG_BT_NIMBLE_MEMPOOL_RUNTIME_ALLOC is not set +# end of Memory Settings + +# +# BLE 5.x Features +# +CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT=y +CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_2M_PHY=y +CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_CODED_PHY=y +# CONFIG_BT_NIMBLE_EXT_ADV is not set +CONFIG_BT_NIMBLE_EXT_SCAN=y +CONFIG_BT_NIMBLE_ENABLE_PERIODIC_SYNC=y +CONFIG_BT_NIMBLE_MAX_PERIODIC_SYNCS=0 +# default: +# CONFIG_BT_NIMBLE_ISO is not set +# end of BLE 5.x Features + +# +# Services +# +CONFIG_BT_NIMBLE_PROX_SERVICE=y +CONFIG_BT_NIMBLE_ANS_SERVICE=y +CONFIG_BT_NIMBLE_CTS_SERVICE=y +CONFIG_BT_NIMBLE_HTP_SERVICE=y +CONFIG_BT_NIMBLE_IPSS_SERVICE=y +CONFIG_BT_NIMBLE_TPS_SERVICE=y +CONFIG_BT_NIMBLE_IAS_SERVICE=y +CONFIG_BT_NIMBLE_LLS_SERVICE=y +CONFIG_BT_NIMBLE_SPS_SERVICE=y +CONFIG_BT_NIMBLE_HR_SERVICE=y +# CONFIG_BT_NIMBLE_HID_SERVICE is not set +CONFIG_BT_NIMBLE_BAS_SERVICE=y +# CONFIG_BT_NIMBLE_SVC_BAS_BATTERY_LEVEL_NOTIFY is not set +CONFIG_BT_NIMBLE_DIS_SERVICE=y +# CONFIG_BT_NIMBLE_SVC_DIS_MANUFACTURER_NAME is not set +# CONFIG_BT_NIMBLE_SVC_DIS_SERIAL_NUMBER is not set +# CONFIG_BT_NIMBLE_SVC_DIS_HARDWARE_REVISION is not set +# CONFIG_BT_NIMBLE_SVC_DIS_FIRMWARE_REVISION is not set +# CONFIG_BT_NIMBLE_SVC_DIS_SOFTWARE_REVISION is not set +# CONFIG_BT_NIMBLE_SVC_DIS_SYSTEM_ID is not set +# CONFIG_BT_NIMBLE_SVC_DIS_PNP_ID is not set +# CONFIG_BT_NIMBLE_SVC_DIS_INCLUDED is not set +CONFIG_BT_NIMBLE_GAP_SERVICE=y +CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="nimble" +CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=31 +CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE=0 +# default: +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM=0 +# default: +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_ENC=0 +# default: +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHEN=0 +# default: +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHOR=0 +# CONFIG_BT_NIMBLE_SVC_GAP_GATT_SECURITY_LEVEL is not set +# CONFIG_BT_NIMBLE_SVC_GAP_RPA_ONLY is not set +CONFIG_BT_NIMBLE_SVC_GAP_CAR_CHAR_NOT_SUPP=y +# CONFIG_BT_NIMBLE_SVC_GAP_CAR_NOT_SUPP is not set +# CONFIG_BT_NIMBLE_SVC_GAP_CAR_SUPP is not set +# default: +CONFIG_BT_NIMBLE_SVC_GAP_CENT_ADDR_RESOLUTION=-1 + +# +# GAP Appearance write permissions +# +# CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE is not set +# default: +CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM=0 +# default: +CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ENC=0 +# default: +CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ATHN=0 +# default: +CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ATHR=0 +# end of GAP Appearance write permissions + +# +# GAP device name write permissions +# +# CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE is not set +# end of GAP device name write permissions + +# +# Peripheral Preferred Connection Parameters (PPCP) settings +# +CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MAX_CONN_INTERVAL=0 +CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MIN_CONN_INTERVAL=0 +CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SLAVE_LATENCY=0 +CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SUPERVISION_TMO=0 +# end of Peripheral Preferred Connection Parameters (PPCP) settings +# end of Services + +# +# Extra Features +# +# CONFIG_BT_NIMBLE_DYNAMIC_SERVICE is not set +# CONFIG_BT_NIMBLE_BLUFI_ENABLE is not set +# CONFIG_BT_NIMBLE_ENC_ADV_DATA is not set +# default: +# CONFIG_BT_NIMBLE_ADV_UUID_CONCAT is not set +# CONFIG_BT_NIMBLE_GATTC_PROC_PREEMPTION_PROTECT is not set +# default: +# CONFIG_BT_NIMBLE_GATTC_AUTO_PAIR is not set +CONFIG_BT_NIMBLE_EATT_CHAN_NUM=0 +# CONFIG_BT_NIMBLE_SUBRATE is not set +# default: +# CONFIG_BT_NIMBLE_STATIC_PASSKEY is not set +# default: +CONFIG_BT_NIMBLE_DTM_MODE_TEST=y +# default: +CONFIG_BT_NIMBLE_MEM_OPTIMIZATION=y +# default: +CONFIG_BT_NIMBLE_STATIC_TO_DYNAMIC=y +# default: +CONFIG_BT_NIMBLE_SM_SIGN_CNT=y +# default: +CONFIG_BT_NIMBLE_CPFD_CAFD=y +# default: +CONFIG_BT_NIMBLE_RECONFIG_MTU=y +# default: +# CONFIG_BT_NIMBLE_LOW_SPEED_MODE is not set +# end of Extra Features + +# +# NimBLE Mesh +# +# CONFIG_BT_NIMBLE_MESH is not set +# end of NimBLE Mesh + +# +# Host-controller Transport +# +CONFIG_UART_HW_FLOWCTRL_DISABLE=y +# CONFIG_UART_HW_FLOWCTRL_CTS_RTS is not set +# default: +CONFIG_BT_NIMBLE_HCI_UART_FLOW_CTRL=0 +CONFIG_BT_NIMBLE_HCI_UART_RTS_PIN=19 +CONFIG_BT_NIMBLE_HCI_UART_CTS_PIN=23 +# end of Host-controller Transport + +# +# Debugging/Testing +# +# default: +# CONFIG_BT_NIMBLE_MEM_DEBUG is not set +# CONFIG_BT_NIMBLE_LOG_LEVEL_NONE is not set +# CONFIG_BT_NIMBLE_LOG_LEVEL_ERROR is not set +# CONFIG_BT_NIMBLE_LOG_LEVEL_WARNING is not set +CONFIG_BT_NIMBLE_LOG_LEVEL_INFO=y +# CONFIG_BT_NIMBLE_LOG_LEVEL_DEBUG is not set +# default: +CONFIG_BT_NIMBLE_LOG_LEVEL=1 +CONFIG_BT_NIMBLE_PRINT_ERR_NAME=y +# CONFIG_BT_NIMBLE_DEBUG is not set +# CONFIG_BT_NIMBLE_TEST_THROUGHPUT_TEST is not set +# end of Debugging/Testing + +# +# Vendor / Optimization +# +# CONFIG_BT_NIMBLE_VS_SUPPORT is not set +# CONFIG_BT_NIMBLE_HIGH_DUTY_ADV_ITVL is not set +# end of Vendor / Optimization + +# +# Helper Utils +# +# default: +CONFIG_BT_NIMBLE_CHK_HOST_STATUS=y +# default: +CONFIG_BT_NIMBLE_UTIL_API=y +# default: +CONFIG_BT_NIMBLE_EXTRA_ADV_FIELDS=y +# end of Helper Utils +# end of NimBLE Options + +# +# Controller Options +# +# default: +CONFIG_BT_CTRL_MODE_EFF=1 +# default: +CONFIG_BT_CTRL_CHECK_CONFIG_EFF=1 +CONFIG_BT_CTRL_BLE_MAX_ACT=6 +# default: +CONFIG_BT_CTRL_BLE_MAX_ACT_EFF=6 +CONFIG_BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB=0 +CONFIG_BT_CTRL_PINNED_TO_CORE_0=y +# CONFIG_BT_CTRL_PINNED_TO_CORE_1 is not set +# default: +CONFIG_BT_CTRL_PINNED_TO_CORE=0 +CONFIG_BT_CTRL_HCI_MODE_VHCI=y +# CONFIG_BT_CTRL_HCI_MODE_UART_H4 is not set +# default: +CONFIG_BT_CTRL_HCI_TL=1 +CONFIG_BT_CTRL_ADV_DUP_FILT_MAX=30 +CONFIG_BT_BLE_CCA_MODE_NONE=y +# CONFIG_BT_BLE_CCA_MODE_HW is not set +# CONFIG_BT_BLE_CCA_MODE_SW is not set +# default: +CONFIG_BT_BLE_CCA_MODE=0 +CONFIG_BT_CTRL_HW_CCA_VAL=20 +# default: +CONFIG_BT_CTRL_HW_CCA_EFF=0 +CONFIG_BT_CTRL_CE_LENGTH_TYPE_ORIG=y +# CONFIG_BT_CTRL_CE_LENGTH_TYPE_CE is not set +# CONFIG_BT_CTRL_CE_LENGTH_TYPE_SD is not set +# default: +CONFIG_BT_CTRL_CE_LENGTH_TYPE_EFF=0 +CONFIG_BT_CTRL_TX_ANTENNA_INDEX_0=y +# CONFIG_BT_CTRL_TX_ANTENNA_INDEX_1 is not set +# default: +CONFIG_BT_CTRL_TX_ANTENNA_INDEX_EFF=0 +CONFIG_BT_CTRL_RX_ANTENNA_INDEX_0=y +# CONFIG_BT_CTRL_RX_ANTENNA_INDEX_1 is not set +# default: +CONFIG_BT_CTRL_RX_ANTENNA_INDEX_EFF=0 +# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N24 is not set +# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N21 is not set +# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N18 is not set +# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N15 is not set +# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N12 is not set +# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N9 is not set +# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N6 is not set +# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N3 is not set +# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_N0 is not set +# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P3 is not set +# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P6 is not set +CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P9=y +# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P12 is not set +# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P15 is not set +# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P18 is not set +# CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P20 is not set +# default: +CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_EFF=11 +CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP=y +CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM=100 +CONFIG_BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD=20 +CONFIG_BT_CTRL_BLE_SCAN_DUPL=y +CONFIG_BT_CTRL_SCAN_DUPL_TYPE_DEVICE=y +# CONFIG_BT_CTRL_SCAN_DUPL_TYPE_DATA is not set +# CONFIG_BT_CTRL_SCAN_DUPL_TYPE_DATA_DEVICE is not set +# default: +CONFIG_BT_CTRL_SCAN_DUPL_TYPE=0 +CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE=100 +CONFIG_BT_CTRL_DUPL_SCAN_CACHE_REFRESH_PERIOD=0 +# CONFIG_BT_CTRL_BLE_MESH_SCAN_DUPL_EN is not set +# CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EN is not set +CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_DIS=y +# default: +CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EFF=0 + +# +# MODEM SLEEP Options +# +# CONFIG_BT_CTRL_MODEM_SLEEP is not set +# end of MODEM SLEEP Options + +# default: +CONFIG_BT_CTRL_SLEEP_MODE_EFF=0 +# default: +CONFIG_BT_CTRL_SLEEP_CLOCK_EFF=0 +# default: +CONFIG_BT_CTRL_HCI_TL_EFF=1 +# CONFIG_BT_CTRL_AGC_RECORRECT_EN is not set +# CONFIG_BT_CTRL_SCAN_BACKOFF_UPPERLIMITMAX is not set +# CONFIG_BT_BLE_ADV_DATA_LENGTH_ZERO_AUX is not set +CONFIG_BT_CTRL_CHAN_ASS_EN=y +CONFIG_BT_CTRL_LE_PING_EN=y + +# +# BLE disconnects when Instant Passed (0x28) occurs +# +# CONFIG_BT_CTRL_BLE_LLCP_CONN_UPDATE is not set +# CONFIG_BT_CTRL_BLE_LLCP_CHAN_MAP_UPDATE is not set +# CONFIG_BT_CTRL_BLE_LLCP_PHY_UPDATE is not set +# end of BLE disconnects when Instant Passed (0x28) occurs + +# CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY is not set +CONFIG_BT_CTRL_DTM_ENABLE=y +CONFIG_BT_CTRL_BLE_MASTER=y +# CONFIG_BT_CTRL_BLE_TEST is not set +CONFIG_BT_CTRL_BLE_SCAN=y +CONFIG_BT_CTRL_BLE_SECURITY_ENABLE=y +CONFIG_BT_CTRL_BLE_ADV=y +# CONFIG_BT_CTRL_CHECK_CONNECT_IND_ACCESS_ADDRESS is not set +# default: +CONFIG_BT_CTRL_BLE_MIN_CONN_INTERVAL_ENABLE=y + +# +# Controller debug log Options (Experimental) +# +# default: +# CONFIG_BT_CTRL_LE_LOG_EN is not set +# end of Controller debug log Options (Experimental) +# end of Controller Options + +# CONFIG_BT_HCI_LOG_DEBUG_EN is not set +# end of Bluetooth + +# CONFIG_BLE_MESH is not set + +# +# Console Library +# +# CONFIG_CONSOLE_SORTED_HELP is not set +# end of Console Library + +# +# Driver Configurations +# + +# +# Legacy TWAI Driver Configurations +# +# default: +# CONFIG_TWAI_SKIP_LEGACY_CONFLICT_CHECK is not set +CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y +# end of Legacy TWAI Driver Configurations + +# +# Legacy ADC Driver Configuration +# +# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_ADC_SKIP_LEGACY_CONFLICT_CHECK is not set + +# +# Legacy ADC Calibration Configuration +# +# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy ADC Calibration Configuration +# end of Legacy ADC Driver Configuration + +# +# Legacy MCPWM Driver Configurations +# +# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_MCPWM_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy MCPWM Driver Configurations + +# +# Legacy Timer Group Driver Configurations +# +# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_GPTIMER_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy Timer Group Driver Configurations + +# +# Legacy RMT Driver Configurations +# +# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_RMT_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy RMT Driver Configurations + +# +# Legacy I2S Driver Configurations +# +# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_I2S_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy I2S Driver Configurations + +# +# Legacy I2C Driver Configurations +# +# CONFIG_I2C_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy I2C Driver Configurations + +# +# Legacy PCNT Driver Configurations +# +# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_PCNT_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy PCNT Driver Configurations + +# +# Legacy SDM Driver Configurations +# +# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_SDM_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy SDM Driver Configurations + +# +# Legacy 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 + +# +# Legacy Touch Sensor Driver Configurations +# +# default: +# CONFIG_TOUCH_SUPPRESS_DEPRECATE_WARN is not set +# default: +# CONFIG_TOUCH_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy Touch Sensor Driver Configurations +# end of Driver Configurations + +# +# eFuse Bit Manager +# +# CONFIG_EFUSE_CUSTOM_TABLE is not set +# CONFIG_EFUSE_VIRTUAL is not set +# default: +CONFIG_EFUSE_MAX_BLK_LEN=256 +# end of eFuse Bit Manager + +# +# ESP-TLS +# +CONFIG_ESP_TLS_USING_MBEDTLS=y +# default: +# CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set +CONFIG_ESP_TLS_USE_DS_PERIPHERAL=y +# 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 +# default: +CONFIG_ESP_TLS_DYN_BUF_STRATEGY_SUPPORTED=y +# end of ESP-TLS + +# +# ADC and ADC Calibration +# +# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set +# CONFIG_ADC_CONTINUOUS_FORCE_USE_ADC2_ON_C3_S3 is not set +# CONFIG_ADC_ENABLE_DEBUG_LOG is not set +# end of ADC and ADC Calibration + +# +# Wireless Coexistence +# +# default: +CONFIG_ESP_COEX_ENABLED=y +CONFIG_ESP_COEX_SW_COEXIST_ENABLE=y +# CONFIG_ESP_COEX_POWER_MANAGEMENT is not set +# CONFIG_ESP_COEX_GPIO_DEBUG is not set +# end of Wireless Coexistence + +# +# Common ESP-related +# +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y +# end of Common ESP-related + +# +# ESP-Driver:Camera Controller Configurations +# +# default: +# CONFIG_CAM_CTLR_DVP_CAM_ISR_CACHE_SAFE is not set +# end of ESP-Driver:Camera Controller Configurations + +# +# ESP-Driver:GPIO Configurations +# +# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set +# end of ESP-Driver:GPIO Configurations + +# +# ESP-Driver:GPTimer Configurations +# +CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y +# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GPTIMER_ISR_CACHE_SAFE is not set +# default: +CONFIG_GPTIMER_OBJ_CACHE_SAFE=y +# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:GPTimer Configurations + +# +# ESP-Driver:I2C Configurations +# +# CONFIG_I2C_ISR_IRAM_SAFE is not set +# CONFIG_I2C_ENABLE_DEBUG_LOG is not set +# CONFIG_I2C_ENABLE_SLAVE_DRIVER_VERSION_2 is not set +# default: +CONFIG_I2C_MASTER_ISR_HANDLER_IN_IRAM=y +# end of ESP-Driver:I2C Configurations + +# +# ESP-Driver:I2S Configurations +# +# CONFIG_I2S_ISR_IRAM_SAFE is not set +# CONFIG_I2S_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:I2S Configurations + +# +# ESP-Driver:LEDC Configurations +# +# CONFIG_LEDC_CTRL_FUNC_IN_IRAM is not set +# end of ESP-Driver:LEDC Configurations + +# +# ESP-Driver:MCPWM Configurations +# +# default: +CONFIG_MCPWM_ISR_HANDLER_IN_IRAM=y +# CONFIG_MCPWM_ISR_CACHE_SAFE is not set +# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set +# default: +CONFIG_MCPWM_OBJ_CACHE_SAFE=y +# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:MCPWM Configurations + +# +# ESP-Driver:PCNT Configurations +# +# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_PCNT_ISR_IRAM_SAFE is not set +# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:PCNT Configurations + +# +# ESP-Driver:RMT Configurations +# +# default: +CONFIG_RMT_ENCODER_FUNC_IN_IRAM=y +# default: +CONFIG_RMT_TX_ISR_HANDLER_IN_IRAM=y +# default: +CONFIG_RMT_RX_ISR_HANDLER_IN_IRAM=y +# CONFIG_RMT_RECV_FUNC_IN_IRAM is not set +# default: +# CONFIG_RMT_TX_ISR_CACHE_SAFE is not set +# default: +# CONFIG_RMT_RX_ISR_CACHE_SAFE is not set +# default: +CONFIG_RMT_OBJ_CACHE_SAFE=y +# CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# CONFIG_RMT_ISR_IRAM_SAFE is not set +# end of ESP-Driver:RMT Configurations + +# +# ESP-Driver:Sigma Delta Modulator Configurations +# +# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_SDM_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:Sigma Delta Modulator Configurations + +# +# ESP-Driver:SPI Configurations +# +# CONFIG_SPI_MASTER_IN_IRAM is not set +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +# CONFIG_SPI_SLAVE_IN_IRAM is not set +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y +# end of ESP-Driver:SPI Configurations + +# +# ESP-Driver:Touch Sensor Configurations +# +# CONFIG_TOUCH_CTRL_FUNC_IN_IRAM is not set +# CONFIG_TOUCH_ISR_IRAM_SAFE is not set +# CONFIG_TOUCH_ENABLE_DEBUG_LOG is not set +# default: +# CONFIG_TOUCH_SKIP_FSM_CHECK is not set +# end of ESP-Driver:Touch Sensor Configurations + +# +# ESP-Driver:Temperature Sensor Configurations +# +# CONFIG_TEMP_SENSOR_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:Temperature Sensor Configurations + +# +# ESP-Driver:TWAI Configurations +# +# CONFIG_TWAI_ISR_IN_IRAM is not set +# default: +# CONFIG_TWAI_IO_FUNC_IN_IRAM is not set +# default: +# CONFIG_TWAI_ISR_CACHE_SAFE is not set +# default: +# CONFIG_TWAI_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:TWAI Configurations + +# +# ESP-Driver:UART Configurations +# +# CONFIG_UART_ISR_IN_IRAM is not set +# end of ESP-Driver:UART Configurations + +# +# ESP-Driver:UHCI Configurations +# +# default: +# CONFIG_UHCI_ISR_HANDLER_IN_IRAM is not set +# default: +# CONFIG_UHCI_ISR_CACHE_SAFE is not set +# default: +# CONFIG_UHCI_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:UHCI Configurations + +# +# ESP-Driver:USB Serial/JTAG Configuration +# +CONFIG_USJ_ENABLE_USB_SERIAL_JTAG=y +# end of ESP-Driver:USB Serial/JTAG Configuration + +# +# Ethernet +# +# default: +CONFIG_ETH_ENABLED=y +CONFIG_ETH_USE_SPI_ETHERNET=y +# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set +# CONFIG_ETH_SPI_ETHERNET_W5500 is not set +# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set +# CONFIG_ETH_USE_OPENETH is not set +# CONFIG_ETH_TRANSMIT_MUTEX is not set +# end of Ethernet + +# +# Event Loop Library +# +# CONFIG_ESP_EVENT_LOOP_PROFILING is not set +CONFIG_ESP_EVENT_POST_FROM_ISR=y +CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y +# end of Event Loop Library + +# +# GDB Stub +# +# default: +CONFIG_ESP_GDBSTUB_ENABLED=y +# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set +CONFIG_ESP_GDBSTUB_SUPPORT_TASKS=y +CONFIG_ESP_GDBSTUB_MAX_TASKS=32 +# end of GDB Stub + +# +# ESP HID +# +CONFIG_ESPHID_TASK_SIZE_BT=2048 +CONFIG_ESPHID_TASK_SIZE_BLE=4096 +# end of ESP HID + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y +# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_CUSTOM_TRANSPORT is not set +CONFIG_ESP_HTTP_CLIENT_EVENT_POST_TIMEOUT=2000 +# end of ESP HTTP client + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 +CONFIG_HTTPD_ERR_RESP_NO_DELAY=y +CONFIG_HTTPD_PURGE_BUF_LEN=32 +# CONFIG_HTTPD_LOG_PURGE_DATA is not set +# CONFIG_HTTPD_WS_SUPPORT is not set +# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set +CONFIG_HTTPD_SERVER_EVENT_POST_TIMEOUT=2000 +# end of HTTP Server + +# +# ESP HTTPS OTA +# +# CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set +# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set +CONFIG_ESP_HTTPS_OTA_EVENT_POST_TIMEOUT=2000 +# end of ESP HTTPS OTA + +# +# ESP HTTPS server +# +# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set +CONFIG_ESP_HTTPS_SERVER_EVENT_POST_TIMEOUT=2000 +# default: +# CONFIG_ESP_HTTPS_SERVER_CERT_SELECT_HOOK is not set +# end of ESP HTTPS server + +# +# Hardware Settings +# +# default: +CONFIG_ESP_HW_SUPPORT_FUNC_IN_IRAM=y + +# +# Chip revision +# +CONFIG_ESP32S3_REV_MIN_0=y +# CONFIG_ESP32S3_REV_MIN_1 is not set +# CONFIG_ESP32S3_REV_MIN_2 is not set +# default: +CONFIG_ESP32S3_REV_MIN_FULL=0 +# default: +CONFIG_ESP_REV_MIN_FULL=0 + +# +# Maximum Supported ESP32-S3 Revision (Rev v0.99) +# +# default: +CONFIG_ESP32S3_REV_MAX_FULL=99 +# default: +CONFIG_ESP_REV_MAX_FULL=99 +CONFIG_ESP_EFUSE_BLOCK_REV_MIN_FULL=0 +# default: +CONFIG_ESP_EFUSE_BLOCK_REV_MAX_FULL=199 + +# +# Maximum Supported ESP32-S3 eFuse Block Revision (eFuse Block Rev v1.99) +# +# end of Chip revision + +# +# MAC Config +# +# default: +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y +# default: +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y +# default: +CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y +# default: +CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y +# default: +CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR=y +# default: +CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES=4 +# CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_FOUR=y +# default: +CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES=4 +# CONFIG_ESP_MAC_USE_CUSTOM_MAC_AS_BASE_MAC is not set +# end of MAC Config + +# +# Sleep Config +# +CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y +CONFIG_ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND=y +CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU=y +# default: +CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y +CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y +CONFIG_ESP_SLEEP_WAIT_FLASH_READY_EXTRA_DELAY=2000 +# CONFIG_ESP_SLEEP_CACHE_SAFE_ASSERTION is not set +# CONFIG_ESP_SLEEP_DEBUG is not set +CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y +# end of Sleep Config + +# +# RTC Clock Config +# +CONFIG_RTC_CLK_SRC_INT_RC=y +# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_RTC_CLK_SRC_INT_8MD256 is not set +CONFIG_RTC_CLK_CAL_CYCLES=1024 +# default: +CONFIG_RTC_CLK_FUNC_IN_IRAM=y +# default: +CONFIG_RTC_TIME_FUNC_IN_IRAM=y +# end of RTC Clock Config + +# +# Peripheral Control +# +CONFIG_ESP_PERIPH_CTRL_FUNC_IN_IRAM=y +# default: +CONFIG_ESP_REGI2C_CTRL_FUNC_IN_IRAM=y +# end of Peripheral Control + +# +# GDMA Configurations +# +CONFIG_GDMA_CTRL_FUNC_IN_IRAM=y +CONFIG_GDMA_ISR_HANDLER_IN_IRAM=y +# default: +CONFIG_GDMA_OBJ_DRAM_SAFE=y +# CONFIG_GDMA_ENABLE_DEBUG_LOG is not set +# CONFIG_GDMA_ISR_IRAM_SAFE is not set +# end of GDMA Configurations + +# +# Main XTAL Config +# +CONFIG_XTAL_FREQ_40=y +# default: +CONFIG_XTAL_FREQ=40 +# end of Main XTAL Config + +# +# Power Supplier +# + +# +# 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_2 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set +# default: +CONFIG_ESP_BROWNOUT_DET_LVL=7 +# default: +CONFIG_ESP_BROWNOUT_USE_INTR=y +# end of Brownout Detector +# end of Power Supplier + +# default: +CONFIG_ESP_SPI_BUS_LOCK_ISR_FUNCS_IN_IRAM=y +# default: +CONFIG_ESP_INTR_IN_IRAM=y +# end of Hardware Settings + +# +# ESP-Driver:LCD Controller Configurations +# +# CONFIG_LCD_RGB_ISR_IRAM_SAFE is not set +# CONFIG_LCD_RGB_RESTART_IN_VSYNC is not set +# CONFIG_LCD_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:LCD Controller Configurations + +# +# ESP-MM: Memory Management Configurations +# +# CONFIG_ESP_MM_CACHE_MSYNC_C2M_CHUNKED_OPS is not set +# end of ESP-MM: Memory Management Configurations + +# +# ESP NETIF Adapter +# +CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 +# CONFIG_ESP_NETIF_PROVIDE_CUSTOM_IMPLEMENTATION is not set +CONFIG_ESP_NETIF_TCPIP_LWIP=y +# CONFIG_ESP_NETIF_LOOPBACK is not set +# default: +CONFIG_ESP_NETIF_USES_TCPIP_WITH_BSD_API=y +CONFIG_ESP_NETIF_REPORT_DATA_TRAFFIC=y +# CONFIG_ESP_NETIF_RECEIVE_REPORT_ERRORS is not set +# CONFIG_ESP_NETIF_L2_TAP is not set +# CONFIG_ESP_NETIF_BRIDGE_EN is not set +# CONFIG_ESP_NETIF_SET_DNS_PER_DEFAULT_NETIF is not set +# end of ESP NETIF Adapter + +# +# Partition API Configuration +# +# end of Partition API Configuration + +# +# PHY +# +# default: +CONFIG_ESP_PHY_ENABLED=y +CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 +# default: +CONFIG_ESP_PHY_MAX_TX_POWER=20 +# CONFIG_ESP_PHY_REDUCE_TX_POWER is not set +CONFIG_ESP_PHY_ENABLE_USB=y +# CONFIG_ESP_PHY_ENABLE_CERT_TEST is not set +CONFIG_ESP_PHY_RF_CAL_PARTIAL=y +# CONFIG_ESP_PHY_RF_CAL_NONE is not set +# CONFIG_ESP_PHY_RF_CAL_FULL is not set +# default: +CONFIG_ESP_PHY_CALIBRATION_MODE=0 +# default: +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 +# default: +CONFIG_ESP_PHY_IRAM_OPT=y +# default: +# CONFIG_ESP_PHY_DEBUG is not set +# default: +CONFIG_ESP_PHY_ENABLE_VERSION_PRINT=y +# end of PHY + +# +# Power Management +# +# default: +# CONFIG_PM_SLEEP_FUNC_IN_IRAM is not set +# CONFIG_PM_ENABLE is not set +# CONFIG_PM_SLP_IRAM_OPT is not set +CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y +CONFIG_PM_RESTORE_CACHE_TAGMEM_AFTER_LIGHT_SLEEP=y +# default: +CONFIG_PM_SLP_SPIRAM_HALFSLEEP_ENABLED=y +# default: +CONFIG_PM_SLP_SPIRAM_HALFSLEEP_EXIT_WAIT_DELAY=150 +# end of Power Management + +# +# ESP PSRAM +# +CONFIG_SPIRAM=y + +# +# SPI RAM config +# +CONFIG_SPIRAM_MODE_QUAD=y +# CONFIG_SPIRAM_MODE_OCT is not set +CONFIG_SPIRAM_TYPE_AUTO=y +# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set +# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set +# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set +# default: +CONFIG_SPIRAM_CLK_IO=30 +# default: +CONFIG_SPIRAM_CS_IO=26 +# CONFIG_SPIRAM_XIP_FROM_PSRAM is not set +# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set +# CONFIG_SPIRAM_RODATA is not set +# CONFIG_SPIRAM_SPEED_120M is not set +# CONFIG_SPIRAM_SPEED_80M is not set +CONFIG_SPIRAM_SPEED_40M=y +# default: +CONFIG_SPIRAM_SPEED=40 +# default: +CONFIG_SPIRAM_BOOT_HW_INIT=y +CONFIG_SPIRAM_BOOT_INIT=y +CONFIG_SPIRAM_PRE_CONFIGURE_MEMORY_PROTECTION=y +# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set +# CONFIG_SPIRAM_USE_MEMMAP is not set +# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set +CONFIG_SPIRAM_USE_MALLOC=y +CONFIG_SPIRAM_MEMTEST=y +CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=16384 +# CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP is not set +CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768 +# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set +# CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY is not set +# end of SPI RAM config +# end of ESP PSRAM + +# +# ESP Ringbuf +# +# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set +# end of ESP Ringbuf + +# +# ESP-ROM +# +# default: +CONFIG_ESP_ROM_PRINT_IN_IRAM=y +# end of ESP-ROM + +# +# ESP Security Specific +# +# end of ESP Security Specific + +# +# ESP System Settings +# +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set +# default: +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 + +# +# Cache config +# +CONFIG_ESP32S3_INSTRUCTION_CACHE_16KB=y +# CONFIG_ESP32S3_INSTRUCTION_CACHE_32KB is not set +# default: +CONFIG_ESP32S3_INSTRUCTION_CACHE_SIZE=0x4000 +# CONFIG_ESP32S3_INSTRUCTION_CACHE_4WAYS is not set +CONFIG_ESP32S3_INSTRUCTION_CACHE_8WAYS=y +# default: +CONFIG_ESP32S3_ICACHE_ASSOCIATED_WAYS=8 +# CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_16B is not set +CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_32B=y +# default: +CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_SIZE=32 +# CONFIG_ESP32S3_DATA_CACHE_16KB is not set +CONFIG_ESP32S3_DATA_CACHE_32KB=y +# CONFIG_ESP32S3_DATA_CACHE_64KB is not set +# default: +CONFIG_ESP32S3_DATA_CACHE_SIZE=0x8000 +# CONFIG_ESP32S3_DATA_CACHE_4WAYS is not set +CONFIG_ESP32S3_DATA_CACHE_8WAYS=y +# default: +CONFIG_ESP32S3_DCACHE_ASSOCIATED_WAYS=8 +# CONFIG_ESP32S3_DATA_CACHE_LINE_16B is not set +CONFIG_ESP32S3_DATA_CACHE_LINE_32B=y +# CONFIG_ESP32S3_DATA_CACHE_LINE_64B is not set +# default: +CONFIG_ESP32S3_DATA_CACHE_LINE_SIZE=32 +# end of Cache config + +# +# Memory +# +# CONFIG_ESP32S3_RTCDATA_IN_FAST_MEM is not set +# CONFIG_ESP32S3_USE_FIXED_STATIC_RAM_SIZE is not set +# end of Memory + +# +# Trace memory +# +# CONFIG_ESP32S3_TRAX is not set +# default: +CONFIG_ESP32S3_TRACEMEM_RESERVE_DRAM=0x0 +# end of Trace memory + +# default: +CONFIG_ESP_SYSTEM_IN_IRAM=y +# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set +CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y +# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set +CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0 +# default: +CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK=y +CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP=y + +# +# Memory protection +# +CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=y +CONFIG_ESP_SYSTEM_MEMPROT_FEATURE_LOCK=y +# 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=8192 +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 +# default: +CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 +CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +# CONFIG_ESP_CONSOLE_USB_CDC is not set +# 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 +# default: +CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG_ENABLED=y +# default: +CONFIG_ESP_CONSOLE_UART=y +# default: +CONFIG_ESP_CONSOLE_UART_NUM=0 +# default: +CONFIG_ESP_CONSOLE_ROM_SERIAL_PORT_NUM=0 +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ESP_INT_WDT=y +CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 +CONFIG_ESP_INT_WDT_CHECK_CPU1=y +CONFIG_ESP_TASK_WDT_EN=y +CONFIG_ESP_TASK_WDT_INIT=y +# CONFIG_ESP_TASK_WDT_PANIC is not set +CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP_PANIC_HANDLER_IRAM is not set +# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP_DEBUG_OCDAWARE=y +CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y +CONFIG_ESP_SYSTEM_BBPLL_RECALIB=y +# end of ESP System Settings + +# +# IPC (Inter-Processor Call) +# +# default: +CONFIG_ESP_IPC_ENABLE=y +CONFIG_ESP_IPC_TASK_STACK_SIZE=1280 +CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y +# default: +CONFIG_ESP_IPC_ISR_ENABLE=y +# end of IPC (Inter-Processor Call) + +# +# ESP Timer (High Resolution Timer) +# +# default: +CONFIG_ESP_TIMER_IN_IRAM=y +# CONFIG_ESP_TIMER_PROFILING is not set +# default: +CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y +# default: +CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y +CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 +CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 +# CONFIG_ESP_TIMER_SHOW_EXPERIMENTAL is not set +# default: +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 +# default: +CONFIG_ESP_TIMER_IMPL_SYSTIMER=y +# end of ESP Timer (High Resolution Timer) + +# +# Wi-Fi +# +# default: +CONFIG_ESP_WIFI_ENABLED=y +CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +# CONFIG_ESP_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER=y +# default: +CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y +# CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set +# default: +CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0 +CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5 +# CONFIG_ESP_WIFI_CSI_ENABLED is not set +CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP_WIFI_TX_BA_WIN=6 +CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP_WIFI_RX_BA_WIN=6 +CONFIG_ESP_WIFI_NVS_ENABLED=y +CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_0=y +# CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_1 is not set +CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP_WIFI_IRAM_OPT=y +# CONFIG_ESP_WIFI_EXTRA_IRAM_OPT is not set +CONFIG_ESP_WIFI_RX_IRAM_OPT=y +CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP_WIFI_ENABLE_SAE_PK=y +# default: +CONFIG_ESP_WIFI_ENABLE_SAE_H2E=y +CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y +CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y +# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set +CONFIG_ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME=50 +# default: +# CONFIG_ESP_WIFI_BSS_MAX_IDLE_SUPPORT is not set +CONFIG_ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME=10 +CONFIG_ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15 +# CONFIG_ESP_WIFI_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=y +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y +# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set +CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7 +CONFIG_ESP_WIFI_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 +# default: +# CONFIG_ESP_WIFI_P256_ACCEL is not set +# CONFIG_ESP_WIFI_11R_SUPPORT is not set +# CONFIG_ESP_WIFI_WPS_SOFTAP_REGISTRAR is not set + +# +# WPS Configuration Options +# +# CONFIG_ESP_WIFI_WPS_STRICT is not set +# CONFIG_ESP_WIFI_WPS_PASSPHRASE is not set +# default: +# CONFIG_ESP_WIFI_WPS_RECONNECT_ON_FAIL is not set +# end of WPS Configuration Options + +# CONFIG_ESP_WIFI_DEBUG_PRINT is not set +CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y +# CONFIG_ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER is not set +# default: +# CONFIG_ESP_WIFI_PASSIVE_HIDDEN_AP_SUPPORT is not set +# end of Wi-Fi + +# +# Core dump +# +# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set +# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set +CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y +# end of Core dump + +# +# FAT Filesystem support +# +CONFIG_FATFS_VOLUME_COUNT=2 +CONFIG_FATFS_LFN_NONE=y +# CONFIG_FATFS_LFN_HEAP is not set +# CONFIG_FATFS_LFN_STACK is not set +# CONFIG_FATFS_SECTOR_512 is not set +CONFIG_FATFS_SECTOR_4096=y +# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set +CONFIG_FATFS_CODEPAGE_437=y +# CONFIG_FATFS_CODEPAGE_720 is not set +# CONFIG_FATFS_CODEPAGE_737 is not set +# CONFIG_FATFS_CODEPAGE_771 is not set +# CONFIG_FATFS_CODEPAGE_775 is not set +# CONFIG_FATFS_CODEPAGE_850 is not set +# CONFIG_FATFS_CODEPAGE_852 is not set +# CONFIG_FATFS_CODEPAGE_855 is not set +# CONFIG_FATFS_CODEPAGE_857 is not set +# CONFIG_FATFS_CODEPAGE_860 is not set +# CONFIG_FATFS_CODEPAGE_861 is not set +# CONFIG_FATFS_CODEPAGE_862 is not set +# CONFIG_FATFS_CODEPAGE_863 is not set +# CONFIG_FATFS_CODEPAGE_864 is not set +# CONFIG_FATFS_CODEPAGE_865 is not set +# CONFIG_FATFS_CODEPAGE_866 is not set +# CONFIG_FATFS_CODEPAGE_869 is not set +# CONFIG_FATFS_CODEPAGE_932 is not set +# CONFIG_FATFS_CODEPAGE_936 is not set +# CONFIG_FATFS_CODEPAGE_949 is not set +# CONFIG_FATFS_CODEPAGE_950 is not set +# default: +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y +CONFIG_FATFS_ALLOC_PREFER_EXTRAM=y +# CONFIG_FATFS_USE_FASTSEEK is not set +CONFIG_FATFS_USE_STRFUNC_NONE=y +# CONFIG_FATFS_USE_STRFUNC_WITHOUT_CRLF_CONV is not set +# CONFIG_FATFS_USE_STRFUNC_WITH_CRLF_CONV is not set +CONFIG_FATFS_VFS_FSTAT_BLKSIZE=0 +# CONFIG_FATFS_IMMEDIATE_FSYNC is not set +# CONFIG_FATFS_USE_LABEL is not set +CONFIG_FATFS_LINK_LOCK=y +# CONFIG_FATFS_USE_DYN_BUFFERS is not set + +# +# File system free space calculation behavior +# +CONFIG_FATFS_DONT_TRUST_FREE_CLUSTER_CNT=0 +CONFIG_FATFS_DONT_TRUST_LAST_ALLOC=0 +# end of File system free space calculation behavior +# end of FAT Filesystem support + +# +# FreeRTOS +# + +# +# Kernel +# +# CONFIG_FREERTOS_SMP is not set +# CONFIG_FREERTOS_UNICORE is not set +CONFIG_FREERTOS_HZ=1000 +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +# CONFIG_FREERTOS_USE_IDLE_HOOK is not set +# CONFIG_FREERTOS_USE_TICK_HOOK is not set +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +# CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY is not set +CONFIG_FREERTOS_USE_TIMERS=y +CONFIG_FREERTOS_TIMER_SERVICE_TASK_NAME="Tmr Svc" +# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU0 is not set +# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU1 is not set +CONFIG_FREERTOS_TIMER_TASK_NO_AFFINITY=y +# default: +CONFIG_FREERTOS_TIMER_SERVICE_TASK_CORE_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=1 +# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set +# CONFIG_FREERTOS_USE_LIST_DATA_INTEGRITY_CHECK_BYTES is not set +# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +# CONFIG_FREERTOS_USE_APPLICATION_TASK_TAG is not set +# end of Kernel + +# +# Port +# +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y +# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set +CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y +# CONFIG_FREERTOS_TASK_PRE_DELETION_HOOK is not set +# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set +# default: +CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +# CONFIG_FREERTOS_FPU_IN_ISR is not set +# default: +CONFIG_FREERTOS_TICK_SUPPORT_SYSTIMER=y +CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL1=y +# CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL3 is not set +# default: +CONFIG_FREERTOS_SYSTICK_USES_SYSTIMER=y +# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +# end of Port + +# +# Extra +# +CONFIG_FREERTOS_TASK_CREATE_ALLOW_EXT_MEM=y +# end of Extra + +# default: +CONFIG_FREERTOS_PORT=y +# default: +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +# default: +CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y +# default: +CONFIG_FREERTOS_DEBUG_OCDAWARE=y +# default: +CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +# default: +CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y +# default: +CONFIG_FREERTOS_NUMBER_OF_CORES=2 +# default: +CONFIG_FREERTOS_IN_IRAM=y +# end of FreeRTOS + +# +# Hardware Abstraction Layer (HAL) and Low Level (LL) +# +CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y +# CONFIG_HAL_ASSERTION_DISABLE is not set +# CONFIG_HAL_ASSERTION_SILENT is not set +# CONFIG_HAL_ASSERTION_ENABLE is not set +# default: +CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 +CONFIG_HAL_WDT_USE_ROM_IMPL=y +# end of Hardware Abstraction Layer (HAL) and Low Level (LL) + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +# CONFIG_HEAP_POISONING_LIGHT is not set +# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set +CONFIG_HEAP_TRACING_OFF=y +# CONFIG_HEAP_TRACING_STANDALONE is not set +# CONFIG_HEAP_TRACING_TOHOST is not set +# CONFIG_HEAP_USE_HOOKS is not set +# CONFIG_HEAP_TASK_TRACKING is not set +# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set +# CONFIG_HEAP_PLACE_FUNCTION_INTO_FLASH is not set +# end of Heap memory debugging + +# +# Log +# +# default: +CONFIG_LOG_VERSION_1=y +# default: +# CONFIG_LOG_VERSION_2 is not set +# default: +CONFIG_LOG_VERSION=1 + +# +# Log Level +# +# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set +CONFIG_LOG_DEFAULT_LEVEL_ERROR=y +# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set +# CONFIG_LOG_DEFAULT_LEVEL_INFO is not set +# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set +# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set +# default: +CONFIG_LOG_DEFAULT_LEVEL=1 +CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y +# CONFIG_LOG_MAXIMUM_LEVEL_WARN is not set +# CONFIG_LOG_MAXIMUM_LEVEL_INFO is not set +# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set +# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set +# default: +CONFIG_LOG_MAXIMUM_LEVEL=1 + +# +# Level Settings +# +# CONFIG_LOG_MASTER_LEVEL is not set +CONFIG_LOG_DYNAMIC_LEVEL_CONTROL=y +# CONFIG_LOG_TAG_LEVEL_IMPL_NONE is not set +# CONFIG_LOG_TAG_LEVEL_IMPL_LINKED_LIST is not set +CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_AND_LINKED_LIST=y +# CONFIG_LOG_TAG_LEVEL_CACHE_ARRAY is not set +CONFIG_LOG_TAG_LEVEL_CACHE_BINARY_MIN_HEAP=y +CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_SIZE=31 +# end of Level Settings +# end of Log Level + +# +# Format +# +# CONFIG_LOG_COLORS is not set +CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y +# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set +# end of Format + +# +# Settings +# +# default: +CONFIG_LOG_MODE_TEXT_EN=y +# default: +CONFIG_LOG_MODE_TEXT=y +# end of Settings + +# default: +CONFIG_LOG_IN_IRAM=y +# end of Log + +# +# LWIP +# +CONFIG_LWIP_ENABLE=y +CONFIG_LWIP_LOCAL_HOSTNAME="espressif" +CONFIG_LWIP_TCPIP_TASK_PRIO=18 +# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set +# CONFIG_LWIP_CHECK_THREAD_SAFETY is not set +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# CONFIG_LWIP_L2_TO_L3_COPY is not set +# CONFIG_LWIP_IRAM_OPTIMIZATION is not set +# CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION is not set +CONFIG_LWIP_TIMERS_ONDEMAND=y +CONFIG_LWIP_ND6=y +# CONFIG_LWIP_FORCE_ROUTER_FORWARDING is not set +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +CONFIG_LWIP_SO_RCVBUF=y +# CONFIG_LWIP_NETBUF_RECVINFO is not set +CONFIG_LWIP_IP_DEFAULT_TTL=64 +CONFIG_LWIP_IP4_FRAG=y +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP4_REASSEMBLY is not set +# CONFIG_LWIP_IP6_REASSEMBLY is not set +CONFIG_LWIP_IP_REASS_MAX_PBUFS=10 +# CONFIG_LWIP_IP_FORWARD is not set +# CONFIG_LWIP_STATS is not set +CONFIG_LWIP_ESP_GRATUITOUS_ARP=y +CONFIG_LWIP_GARP_TMR_INTERVAL=60 +CONFIG_LWIP_ESP_MLDV6_REPORT=y +CONFIG_LWIP_MLDV6_TMR_INTERVAL=40 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +# CONFIG_LWIP_DHCP_DOES_ACD_CHECK is not set +# CONFIG_LWIP_DHCP_DOES_NOT_CHECK_OFFERED_IP is not set +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=69 +CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 +CONFIG_LWIP_DHCP_COARSE_TIMER_SECS=1 + +# +# DHCP server +# +CONFIG_LWIP_DHCPS=y +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_DHCPS_STATIC_ENTRIES=y +CONFIG_LWIP_DHCPS_ADD_DNS=y +# end of DHCP server + +# CONFIG_LWIP_AUTOIP is not set +CONFIG_LWIP_IPV4=y +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_MSS=1440 +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5760 +CONFIG_LWIP_TCP_WND_DEFAULT=5760 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +CONFIG_LWIP_TCP_ACCEPTMBOX_SIZE=6 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +CONFIG_LWIP_TCP_OOSEQ_TIMEOUT=6 +CONFIG_LWIP_TCP_OOSEQ_MAX_PBUFS=4 +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +# end of TCP + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# end of UDP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set +# default: +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 +# default: +# CONFIG_LWIP_IPV6_ND6_ROUTE_INFO_OPTION_SUPPORT is not set +CONFIG_LWIP_PPP_SUPPORT=y +# default: +CONFIG_LWIP_PPP_ENABLE_IPV4=y +# default: +CONFIG_LWIP_PPP_ENABLE_IPV6=y +# default: +# CONFIG_LWIP_PPP_NOTIFY_PHASE_SUPPORT is not set +# default: +# CONFIG_LWIP_PPP_PAP_SUPPORT is not set +# default: +# CONFIG_LWIP_PPP_CHAP_SUPPORT is not set +# default: +# CONFIG_LWIP_PPP_MSCHAP_SUPPORT is not set +# default: +# CONFIG_LWIP_PPP_MPPE_SUPPORT is not set +# default: +# CONFIG_LWIP_PPP_SERVER_SUPPORT is not set +# default: +CONFIG_LWIP_PPP_VJ_HEADER_COMPRESSION=y +# default: +# CONFIG_LWIP_ENABLE_LCP_ECHO is not set +# default: +# CONFIG_LWIP_PPP_DEBUG_ON is not set +# default: +# CONFIG_LWIP_USE_EXTERNAL_MBEDTLS is not set +# CONFIG_LWIP_SLIP_SUPPORT is not set + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +# CONFIG_LWIP_MULTICAST_PING is not set +# CONFIG_LWIP_BROADCAST_PING is not set +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 +# end of LWIP RAW API + +# +# SNTP +# +CONFIG_LWIP_SNTP_MAX_SERVERS=1 +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 +CONFIG_LWIP_SNTP_STARTUP_DELAY=y +CONFIG_LWIP_SNTP_MAXIMUM_STARTUP_DELAY=5000 +# end of SNTP + +# +# DNS +# +CONFIG_LWIP_DNS_MAX_HOST_IP=1 +CONFIG_LWIP_DNS_MAX_SERVERS=3 +# CONFIG_LWIP_FALLBACK_DNS_SERVER_SUPPORT is not set +# CONFIG_LWIP_DNS_SETSERVER_WITH_NETIF is not set +# default: +# CONFIG_LWIP_USE_ESP_GETADDRINFO is not set +# end of DNS + +CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 +CONFIG_LWIP_ESP_LWIP_ASSERT=y + +# +# Hooks +# +# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set +CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y +# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y +# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set +CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y +# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set +# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_NONE=y +# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_CUSTOM is not set +# default: +CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_NONE=y +# default: +# CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_DEFAULT is not set +# default: +# CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_CUSTOM is not set +CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set +CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_CUSTOM is not set +# CONFIG_LWIP_HOOK_IP6_INPUT_NONE is not set +CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT=y +# CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set +# end of Hooks + +# CONFIG_LWIP_DEBUG is not set +# end of LWIP + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC is not set +# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set +# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y +CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 +CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 +# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set +# CONFIG_MBEDTLS_DEBUG is not set + +# +# mbedTLS v3.x related +# +# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set +# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set +# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set +# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set +CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y +# default: +# CONFIG_MBEDTLS_SSL_KEYING_MATERIAL_EXPORT is not set +CONFIG_MBEDTLS_PKCS7_C=y +# end of mbedTLS v3.x related + +# +# Certificate Bundle +# +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set +# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEPRECATED_LIST is not set +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 +# end of Certificate Bundle + +# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set +CONFIG_MBEDTLS_CMAC_C=y +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_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 is not set +CONFIG_MBEDTLS_MPI_USE_INTERRUPT=y +CONFIG_MBEDTLS_MPI_INTERRUPT_LEVEL=0 +CONFIG_MBEDTLS_HARDWARE_SHA=y +CONFIG_MBEDTLS_ROM_MD5=y +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set +CONFIG_MBEDTLS_HAVE_TIME=y +# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set +# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set +CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y +CONFIG_MBEDTLS_SHA1_C=y +CONFIG_MBEDTLS_SHA512_C=y +# CONFIG_MBEDTLS_SHA3_C is not set +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set +# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set +# CONFIG_MBEDTLS_TLS_DISABLED is not set +# default: +CONFIG_MBEDTLS_TLS_SERVER=y +# default: +CONFIG_MBEDTLS_TLS_CLIENT=y +# default: +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +CONFIG_MBEDTLS_PSK_MODES=y +CONFIG_MBEDTLS_KEY_EXCHANGE_PSK=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK=y +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA_PSK=y +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +# end of TLS Key Exchange Methods + +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set +# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y +CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +# CONFIG_MBEDTLS_CAMELLIA_C is not set +# CONFIG_MBEDTLS_DES_C is not set +# CONFIG_MBEDTLS_BLOWFISH_C is not set +# CONFIG_MBEDTLS_XTEA_C is not set +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +# CONFIG_MBEDTLS_NIST_KW_C is not set +# end of Symmetric Ciphers + +# CONFIG_MBEDTLS_RIPEMD160_C is not set + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +# end of Certificates + +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_PK_PARSE_EC_EXTENDED=y +CONFIG_MBEDTLS_PK_PARSE_EC_COMPRESSED=y +# CONFIG_MBEDTLS_DHM_C is not set +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +# CONFIG_MBEDTLS_ECJPAKE_C is not set +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y +# CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM is not set +# CONFIG_MBEDTLS_POLY1305_C is not set +# CONFIG_MBEDTLS_CHACHA20_C is not set +# CONFIG_MBEDTLS_HKDF_C is not set +# CONFIG_MBEDTLS_THREADING_C is not set +CONFIG_MBEDTLS_ERROR_STRINGS=y +CONFIG_MBEDTLS_FS_IO=y +# CONFIG_MBEDTLS_ALLOW_WEAK_CERTIFICATE_VERIFICATION is not set +# end of mbedTLS + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +# CONFIG_MQTT_PROTOCOL_5 is not set +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set +# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set +# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set +# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set +# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set +# CONFIG_MQTT_CUSTOM_OUTBOX is not set +# end of ESP-MQTT Configurations + +# +# LibC +# +# default: +CONFIG_LIBC_NEWLIB=y +# default: +# CONFIG_LIBC_PICOLIBC is not set +# default: +CONFIG_LIBC_MISC_IN_IRAM=y +# default: +CONFIG_LIBC_LOCKS_PLACE_IN_IRAM=y +CONFIG_LIBC_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_LIBC_STDOUT_LINE_ENDING_LF is not set +# CONFIG_LIBC_STDOUT_LINE_ENDING_CR is not set +# CONFIG_LIBC_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_LIBC_STDIN_LINE_ENDING_LF is not set +CONFIG_LIBC_STDIN_LINE_ENDING_CR=y +# CONFIG_LIBC_NEWLIB_NANO_FORMAT is not set +CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT=y +# CONFIG_LIBC_TIME_SYSCALL_USE_RTC is not set +# CONFIG_LIBC_TIME_SYSCALL_USE_HRT is not set +# CONFIG_LIBC_TIME_SYSCALL_USE_NONE is not set +# default: +CONFIG_LIBC_ASSERT_BUFFER_SIZE=200 +# end of LibC + +# default: +CONFIG_STDATOMIC_S32C1I_SPIRAM_WORKAROUND=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 +# CONFIG_NVS_ALLOCATE_CACHE_IN_SPIRAM is not set +# end of NVS + +# +# OpenThread +# +# CONFIG_OPENTHREAD_ENABLED is not set + +# +# OpenThread Spinel +# +# CONFIG_OPENTHREAD_SPINEL_ONLY is not set +# end of OpenThread Spinel + +# default: +# CONFIG_OPENTHREAD_DEBUG is not set +# end of OpenThread + +# +# Protocomm +# +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y +# default: +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_PATCH_VERSION=y +# end of Protocomm + +# +# PThreads +# +CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y +# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set +# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set +# default: +CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" +# end of PThreads + +# +# MMU Config +# +# default: +CONFIG_MMU_PAGE_SIZE_64KB=y +# default: +CONFIG_MMU_PAGE_MODE="64KB" +# default: +CONFIG_MMU_PAGE_SIZE=0x10000 +# end of MMU Config + +# +# Main Flash configuration +# + +# +# SPI Flash behavior when brownout +# +CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y +# default: +CONFIG_SPI_FLASH_BROWNOUT_RESET=y +# end of SPI Flash behavior when brownout + +# +# Optional and Experimental Features (READ DOCS FIRST) +# + +# +# Features here require specific hardware (READ DOCS FIRST!) +# +# CONFIG_SPI_FLASH_HPM_ENA is not set +CONFIG_SPI_FLASH_HPM_AUTO=y +# CONFIG_SPI_FLASH_HPM_DIS is not set +# default: +CONFIG_SPI_FLASH_HPM_ON=y +CONFIG_SPI_FLASH_HPM_DC_AUTO=y +# CONFIG_SPI_FLASH_HPM_DC_DISABLE is not set +# 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 +# default: +CONFIG_SPI_FLASH_PLACE_FUNCTIONS_IN_IRAM=y +# end of Optional and Experimental Features (READ DOCS FIRST) +# end of Main Flash configuration + +# +# SPI Flash driver +# +# CONFIG_SPI_FLASH_VERIFY_WRITE is not set +# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +# CONFIG_SPI_FLASH_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_BYPASS_BLOCK_ERASE is not set +CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y +CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 +CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 +CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 +# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set +# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set +# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set + +# +# Auto-detect flash chips +# +# default: +CONFIG_SPI_FLASH_VENDOR_XMC_SUPPORT_ENABLED=y +# default: +CONFIG_SPI_FLASH_VENDOR_GD_SUPPORT_ENABLED=y +# default: +CONFIG_SPI_FLASH_VENDOR_ISSI_SUPPORT_ENABLED=y +# default: +CONFIG_SPI_FLASH_VENDOR_MXIC_SUPPORT_ENABLED=y +# default: +CONFIG_SPI_FLASH_VENDOR_WINBOND_SUPPORT_ENABLED=y +# default: +CONFIG_SPI_FLASH_VENDOR_BOYA_SUPPORT_ENABLED=y +# default: +CONFIG_SPI_FLASH_VENDOR_TH_SUPPORT_ENABLED=y +CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_TH_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_MXIC_OPI_CHIP=y +# end of Auto-detect flash chips + +CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y +# end of SPI Flash driver + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +# CONFIG_SPIFFS_CACHE_STATS is not set +# end of SPIFFS Cache Configuration + +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +# CONFIG_SPIFFS_GC_STATS is not set +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +# CONFIG_SPIFFS_DBG is not set +# CONFIG_SPIFFS_API_DBG is not set +# CONFIG_SPIFFS_GC_DBG is not set +# CONFIG_SPIFFS_CACHE_DBG is not set +# CONFIG_SPIFFS_CHECK_DBG is not set +# CONFIG_SPIFFS_TEST_VISUALISATION is not set +# end of Debug Configuration +# end of SPIFFS Configuration + +# +# TCP Transport +# + +# +# Websocket +# +CONFIG_WS_TRANSPORT=y +CONFIG_WS_BUFFER_SIZE=1024 +# CONFIG_WS_DYNAMIC_BUFFER is not set +# end of Websocket +# end of TCP Transport + +# +# Ultra Low Power (ULP) Co-processor +# +# CONFIG_ULP_COPROC_ENABLED is not set + +# +# ULP Debugging Options +# +# end of ULP Debugging Options +# end of Ultra Low Power (ULP) Co-processor + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +# CONFIG_UNITY_ENABLE_64BIT is not set +# CONFIG_UNITY_ENABLE_COLOR is not set +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +# CONFIG_UNITY_ENABLE_FIXTURE is not set +# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set +# default: +# CONFIG_UNITY_TEST_ORDER_BY_FILE_PATH_AND_LINE is not set +# end of Unity unit testing library + +# +# USB-OTG +# +CONFIG_USB_HOST_CONTROL_TRANSFER_MAX_SIZE=256 +CONFIG_USB_HOST_HW_BUFFER_BIAS_BALANCED=y +# CONFIG_USB_HOST_HW_BUFFER_BIAS_IN is not set +# CONFIG_USB_HOST_HW_BUFFER_BIAS_PERIODIC_OUT is not set + +# +# Hub Driver Configuration +# + +# +# Root Port configuration +# +CONFIG_USB_HOST_DEBOUNCE_DELAY_MS=250 +CONFIG_USB_HOST_RESET_HOLD_MS=30 +CONFIG_USB_HOST_RESET_RECOVERY_MS=30 +CONFIG_USB_HOST_SET_ADDR_RECOVERY_MS=10 +# end of Root Port configuration + +# CONFIG_USB_HOST_HUBS_SUPPORTED is not set +# end of Hub Driver Configuration + +# CONFIG_USB_HOST_ENABLE_ENUM_FILTER_CALLBACK is not set +# default: +CONFIG_USB_OTG_SUPPORTED=y +# end of USB-OTG + +# +# Virtual file system +# +CONFIG_VFS_SUPPORT_IO=y +CONFIG_VFS_SUPPORT_DIR=y +CONFIG_VFS_SUPPORT_SELECT=y +CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y +# CONFIG_VFS_SELECT_IN_RAM is not set +CONFIG_VFS_SUPPORT_TERMIOS=y +CONFIG_VFS_MAX_COUNT=8 + +# +# Host File System I/O (Semihosting) +# +CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# end of Host File System I/O (Semihosting) + +CONFIG_VFS_INITIALIZE_DEV_NULL=y +# end of Virtual file system + +# +# Wear Levelling +# +# CONFIG_WL_SECTOR_SIZE_512 is not set +CONFIG_WL_SECTOR_SIZE_4096=y +# default: +CONFIG_WL_SECTOR_SIZE=4096 +# end of Wear Levelling + +# +# Wi-Fi Provisioning Manager +# +CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 +CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 +# CONFIG_WIFI_PROV_BLE_BONDING is not set +CONFIG_WIFI_PROV_BLE_SEC_CONN=y +# CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION is not set +# CONFIG_WIFI_PROV_BLE_NOTIFY is not set +# CONFIG_WIFI_PROV_KEEP_BLE_ON_AFTER_PROV is not set +CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y +# CONFIG_WIFI_PROV_STA_FAST_SCAN is not set +# end of Wi-Fi Provisioning Manager + +# +# cJSON +# +# default: +CONFIG_CJSON_NESTING_LIMIT=1000 +# default: +CONFIG_CJSON_CIRCULAR_LIMIT=10000 +# end of cJSON + +# +# DSP Library +# +# default: +CONFIG_DSP_OPTIMIZATIONS_SUPPORTED=y +# CONFIG_DSP_ANSI is not set +CONFIG_DSP_OPTIMIZED=y +# default: +CONFIG_DSP_OPTIMIZATION=1 +# CONFIG_DSP_MAX_FFT_SIZE_512 is not set +# CONFIG_DSP_MAX_FFT_SIZE_1024 is not set +# CONFIG_DSP_MAX_FFT_SIZE_2048 is not set +CONFIG_DSP_MAX_FFT_SIZE_4096=y +# CONFIG_DSP_MAX_FFT_SIZE_8192 is not set +# CONFIG_DSP_MAX_FFT_SIZE_16384 is not set +# CONFIG_DSP_MAX_FFT_SIZE_32768 is not set +# default: +CONFIG_DSP_MAX_FFT_SIZE=4096 +# end of DSP Library + +# +# Zigbee +# +# CONFIG_ZB_ENABLED is not set +# end of Zigbee + +# +# esp-modem +# +CONFIG_ESP_MODEM_CMUX_DEFRAGMENT_PAYLOAD=y +# CONFIG_ESP_MODEM_USE_INFLATABLE_BUFFER_IF_NEEDED is not set +CONFIG_ESP_MODEM_CMUX_DELAY_AFTER_DLCI_SETUP=0 +# default: +CONFIG_ESP_MODEM_CMUX_DELAY_AFTER_NETIF_DISCONNECT=0 +# CONFIG_ESP_MODEM_CMUX_USE_SHORT_PAYLOADS_ONLY is not set +# CONFIG_ESP_MODEM_ADD_CUSTOM_MODULE is not set +CONFIG_ESP_MODEM_C_API_STR_MAX=128 +# CONFIG_ESP_MODEM_URC_HANDLER is not set +# CONFIG_ESP_MODEM_PPP_ESCAPE_BEFORE_EXIT is not set +# CONFIG_ESP_MODEM_ADD_DEBUG_LOGS is not set +# default: +# CONFIG_ESP_MODEM_ENABLE_DEVELOPMENT_MODE is not set +# default: +CONFIG_ESP_MODEM_USE_PPP_MODE=y +# end of esp-modem + +# +# mDNS +# +CONFIG_MDNS_MAX_INTERFACES=3 +CONFIG_MDNS_MAX_SERVICES=10 +CONFIG_MDNS_TASK_PRIORITY=1 +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 +# default: +CONFIG_MDNS_TASK_AFFINITY=0x0 + +# +# MDNS Memory Configuration +# +# CONFIG_MDNS_TASK_CREATE_FROM_SPIRAM is not set +CONFIG_MDNS_TASK_CREATE_FROM_INTERNAL=y +# CONFIG_MDNS_MEMORY_ALLOC_SPIRAM is not set +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 +# CONFIG_MDNS_SKIP_SUPPRESSING_OWN_QUERIES is not set +# CONFIG_MDNS_ENABLE_DEBUG_PRINTS is not set +CONFIG_MDNS_ENABLE_CONSOLE_CLI=y +# CONFIG_MDNS_RESPOND_REVERSE_QUERIES is not set +CONFIG_MDNS_MULTIPLE_INSTANCE=y + +# +# MDNS Predefined interfaces +# +CONFIG_MDNS_PREDEF_NETIF_STA=y +CONFIG_MDNS_PREDEF_NETIF_AP=y +CONFIG_MDNS_PREDEF_NETIF_ETH=y +# end of MDNS Predefined interfaces +# end of mDNS + +# +# Network Provisioning Manager +# +CONFIG_NETWORK_PROV_NETWORK_TYPE_WIFI=y +CONFIG_NETWORK_PROV_SCAN_MAX_ENTRIES=16 +CONFIG_NETWORK_PROV_AUTOSTOP_TIMEOUT=30 +# CONFIG_NETWORK_PROV_BLE_BONDING is not set +CONFIG_NETWORK_PROV_BLE_SEC_CONN=y +# CONFIG_NETWORK_PROV_BLE_FORCE_ENCRYPTION is not set +# CONFIG_NETWORK_PROV_KEEP_BLE_ON_AFTER_PROV is not set +CONFIG_NETWORK_PROV_WIFI_STA_ALL_CHANNEL_SCAN=y +# CONFIG_NETWORK_PROV_WIFI_STA_FAST_SCAN is not set +# end of Network Provisioning Manager + +# +# LittleFS +# +# CONFIG_LITTLEFS_SDMMC_SUPPORT is not set +CONFIG_LITTLEFS_MAX_PARTITIONS=3 +CONFIG_LITTLEFS_PAGE_SIZE=256 +CONFIG_LITTLEFS_OBJ_NAME_LEN=64 +CONFIG_LITTLEFS_READ_SIZE=128 +CONFIG_LITTLEFS_WRITE_SIZE=128 +CONFIG_LITTLEFS_LOOKAHEAD_SIZE=128 +CONFIG_LITTLEFS_CACHE_SIZE=512 +CONFIG_LITTLEFS_BLOCK_CYCLES=512 +CONFIG_LITTLEFS_USE_MTIME=y +# CONFIG_LITTLEFS_USE_ONLY_HASH is not set +# CONFIG_LITTLEFS_HUMAN_READABLE is not set +CONFIG_LITTLEFS_MTIME_USE_SECONDS=y +# CONFIG_LITTLEFS_MTIME_USE_NONCE is not set +# CONFIG_LITTLEFS_SPIFFS_COMPAT is not set +# CONFIG_LITTLEFS_FLUSH_FILE_EVERY_WRITE is not set +# CONFIG_LITTLEFS_FCNTL_GET_PATH is not set +# CONFIG_LITTLEFS_MULTIVERSION is not set +# CONFIG_LITTLEFS_MALLOC_STRATEGY_DISABLE is not set +CONFIG_LITTLEFS_MALLOC_STRATEGY_DEFAULT=y +# CONFIG_LITTLEFS_MALLOC_STRATEGY_INTERNAL is not set +# CONFIG_LITTLEFS_MALLOC_STRATEGY_SPIRAM is not set +# CONFIG_LITTLEFS_MALLOC_STRATEGY_SPIRAM_PREFER is not set +CONFIG_LITTLEFS_ASSERTS=y +# CONFIG_LITTLEFS_MMAP_PARTITION is not set +# CONFIG_LITTLEFS_WDT_RESET is not set +# end of LittleFS +# end of Component config + +# CONFIG_IDF_EXPERIMENTAL_FEATURES is not set diff --git a/sdkconfig.release b/sdkconfig.release index f6c4312e..d974d52a 100644 --- a/sdkconfig.release +++ b/sdkconfig.release @@ -1,254 +1,510 @@ # # Automatically generated file. DO NOT EDIT. -# Espressif IoT Development Framework (ESP-IDF) 5.4.2 Project Configuration +# Espressif IoT Development Framework (ESP-IDF) 5.5.5 Project Configuration # -CONFIG_SOC_BROWNOUT_RESET_SUPPORTED="Not determined" -CONFIG_SOC_TWAI_BRP_DIV_SUPPORTED="Not determined" -CONFIG_SOC_DPORT_WORKAROUND="Not determined" +# default: CONFIG_SOC_CAPS_ECO_VER_MAX=301 +# default: CONFIG_SOC_ADC_SUPPORTED=y +# default: CONFIG_SOC_DAC_SUPPORTED=y +# default: CONFIG_SOC_UART_SUPPORTED=y +# default: CONFIG_SOC_MCPWM_SUPPORTED=y +# default: CONFIG_SOC_GPTIMER_SUPPORTED=y +# default: CONFIG_SOC_SDMMC_HOST_SUPPORTED=y +# default: CONFIG_SOC_BT_SUPPORTED=y +# default: CONFIG_SOC_PCNT_SUPPORTED=y +# default: CONFIG_SOC_PHY_SUPPORTED=y +# default: CONFIG_SOC_WIFI_SUPPORTED=y +# default: CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y +# default: CONFIG_SOC_TWAI_SUPPORTED=y +# default: CONFIG_SOC_EFUSE_SUPPORTED=y +# default: CONFIG_SOC_EMAC_SUPPORTED=y +# default: CONFIG_SOC_ULP_SUPPORTED=y +# default: CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y +# default: CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y +# default: CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y +# default: CONFIG_SOC_RTC_MEM_SUPPORTED=y +# default: CONFIG_SOC_I2S_SUPPORTED=y +# default: CONFIG_SOC_RMT_SUPPORTED=y +# default: CONFIG_SOC_SDM_SUPPORTED=y +# default: CONFIG_SOC_GPSPI_SUPPORTED=y +# default: CONFIG_SOC_LEDC_SUPPORTED=y +# default: CONFIG_SOC_I2C_SUPPORTED=y +# default: CONFIG_SOC_SUPPORT_COEXISTENCE=y +# default: CONFIG_SOC_AES_SUPPORTED=y +# default: CONFIG_SOC_MPI_SUPPORTED=y +# default: CONFIG_SOC_SHA_SUPPORTED=y +# default: CONFIG_SOC_FLASH_ENC_SUPPORTED=y +# default: CONFIG_SOC_SECURE_BOOT_SUPPORTED=y +# default: CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y +# default: CONFIG_SOC_BOD_SUPPORTED=y +# default: CONFIG_SOC_ULP_FSM_SUPPORTED=y +# default: CONFIG_SOC_CLK_TREE_SUPPORTED=y +# default: CONFIG_SOC_MPU_SUPPORTED=y +# default: CONFIG_SOC_WDT_SUPPORTED=y +# default: CONFIG_SOC_SPI_FLASH_SUPPORTED=y +# default: CONFIG_SOC_RNG_SUPPORTED=y +# default: CONFIG_SOC_LIGHT_SLEEP_SUPPORTED=y +# default: CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y +# default: CONFIG_SOC_LP_PERIPH_SHARE_INTERRUPT=y +# default: CONFIG_SOC_PM_SUPPORTED=y +# default: CONFIG_SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL=5 +# default: CONFIG_SOC_XTAL_SUPPORT_26M=y +# default: CONFIG_SOC_XTAL_SUPPORT_40M=y +# default: CONFIG_SOC_XTAL_SUPPORT_AUTO_DETECT=y +# default: CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y +# default: CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y +# default: CONFIG_SOC_ADC_DMA_SUPPORTED=y +# default: CONFIG_SOC_ADC_PERIPH_NUM=2 +# default: CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10 +# default: CONFIG_SOC_ADC_ATTEN_NUM=4 +# default: CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2 +# default: CONFIG_SOC_ADC_PATT_LEN_MAX=16 +# default: CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=9 +# default: CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 +# default: CONFIG_SOC_ADC_DIGI_RESULT_BYTES=2 +# default: CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 +# default: CONFIG_SOC_ADC_DIGI_MONITOR_NUM=0 +# default: CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=2 +# default: CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=20 +# default: CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=9 +# default: CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +# default: CONFIG_SOC_ADC_SHARED_POWER=y +# default: +CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y +# default: CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y +# default: CONFIG_SOC_IDCACHE_PER_CORE=y +# default: CONFIG_SOC_CPU_CORES_NUM=2 +# default: CONFIG_SOC_CPU_INTR_NUM=32 +# default: CONFIG_SOC_CPU_HAS_FPU=y +# default: CONFIG_SOC_HP_CPU_HAS_MULTIPLE_CORES=y +# default: CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 +# default: CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 -CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=64 +# default: +CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=0x40 +# default: CONFIG_SOC_DAC_CHAN_NUM=2 +# default: CONFIG_SOC_DAC_RESOLUTION=8 +# default: CONFIG_SOC_DAC_DMA_16BIT_ALIGN=y +# default: CONFIG_SOC_GPIO_PORT=1 +# default: CONFIG_SOC_GPIO_PIN_COUNT=40 +# default: CONFIG_SOC_GPIO_VALID_GPIO_MASK=0xFFFFFFFFFF +# default: CONFIG_SOC_GPIO_IN_RANGE_MAX=39 +# default: CONFIG_SOC_GPIO_OUT_RANGE_MAX=33 +# default: CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0xEF0FEA +# default: CONFIG_SOC_GPIO_CLOCKOUT_BY_IO_MUX=y +# default: CONFIG_SOC_GPIO_CLOCKOUT_CHANNEL_NUM=3 -CONFIG_SOC_GPIO_SUPPORT_HOLD_IO_IN_DSLP=y +# default: CONFIG_SOC_I2C_NUM=2 +# default: CONFIG_SOC_HP_I2C_NUM=2 +# default: CONFIG_SOC_I2C_FIFO_LEN=32 +# default: CONFIG_SOC_I2C_CMD_REG_NUM=16 +# default: CONFIG_SOC_I2C_SUPPORT_SLAVE=y +# default: CONFIG_SOC_I2C_SUPPORT_APB=y +# default: CONFIG_SOC_I2C_SUPPORT_10BIT_ADDR=y +# default: CONFIG_SOC_I2C_STOP_INDEPENDENT=y +# default: CONFIG_SOC_I2S_NUM=2 +# default: CONFIG_SOC_I2S_HW_VERSION_1=y +# default: CONFIG_SOC_I2S_SUPPORTS_APLL=y +# default: CONFIG_SOC_I2S_SUPPORTS_PLL_F160M=y +# default: CONFIG_SOC_I2S_SUPPORTS_PDM=y +# default: CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y -CONFIG_SOC_I2S_PDM_MAX_TX_LINES=1 +# default: +CONFIG_SOC_I2S_SUPPORTS_PCM2PDM=y +# default: CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +# default: +CONFIG_SOC_I2S_SUPPORTS_PDM2PCM=y +# default: +CONFIG_SOC_I2S_PDM_MAX_TX_LINES=1 +# default: CONFIG_SOC_I2S_PDM_MAX_RX_LINES=1 +# default: CONFIG_SOC_I2S_SUPPORTS_ADC_DAC=y +# default: CONFIG_SOC_I2S_SUPPORTS_ADC=y +# default: CONFIG_SOC_I2S_SUPPORTS_DAC=y +# default: CONFIG_SOC_I2S_SUPPORTS_LCD_CAMERA=y +# default: CONFIG_SOC_I2S_MAX_DATA_WIDTH=24 +# default: CONFIG_SOC_I2S_TRANS_SIZE_ALIGN_WORD=y +# default: CONFIG_SOC_I2S_LCD_I80_VARIANT=y +# default: CONFIG_SOC_LCD_I80_SUPPORTED=y +# default: CONFIG_SOC_LCD_I80_BUSES=2 +# default: CONFIG_SOC_LCD_I80_BUS_WIDTH=24 +# default: CONFIG_SOC_LEDC_HAS_TIMER_SPECIFIC_MUX=y +# default: CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y +# default: CONFIG_SOC_LEDC_SUPPORT_REF_TICK=y +# default: CONFIG_SOC_LEDC_SUPPORT_HS_MODE=y +# default: CONFIG_SOC_LEDC_TIMER_NUM=4 +# default: CONFIG_SOC_LEDC_CHANNEL_NUM=8 +# default: CONFIG_SOC_LEDC_TIMER_BIT_WIDTH=20 +# default: CONFIG_SOC_MCPWM_GROUPS=2 +# default: CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 +# default: CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 +# default: CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 +# default: CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 +# default: CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 +# default: CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 +# default: CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y +# default: CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 +# default: CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 +# default: CONFIG_SOC_MMU_PERIPH_NUM=2 +# default: CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=3 +# default: CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 +# default: CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 +# default: CONFIG_SOC_PCNT_GROUPS=1 +# default: CONFIG_SOC_PCNT_UNITS_PER_GROUP=8 +# default: CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 +# default: CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 +# default: CONFIG_SOC_RMT_GROUPS=1 +# default: CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=8 +# default: CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=8 +# default: CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8 +# default: CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=64 +# default: CONFIG_SOC_RMT_SUPPORT_REF_TICK=y +# default: CONFIG_SOC_RMT_SUPPORT_APB=y +# default: CONFIG_SOC_RMT_CHANNEL_CLK_INDEPENDENT=y +# default: CONFIG_SOC_RTCIO_PIN_COUNT=18 +# default: CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y +# default: CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y +# default: CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y +# default: +CONFIG_SOC_RTC_CNTL_NEEDS_ATOMIC_ACCESS=y +# default: CONFIG_SOC_SDM_GROUPS=1 +# default: CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 +# default: CONFIG_SOC_SDM_CLK_SUPPORT_APB=y +# default: CONFIG_SOC_SPI_HD_BOTH_INOUT_SUPPORTED=y +# default: CONFIG_SOC_SPI_AS_CS_SUPPORTED=y +# default: CONFIG_SOC_SPI_PERIPH_NUM=3 +# default: CONFIG_SOC_SPI_DMA_CHAN_NUM=2 +# default: CONFIG_SOC_SPI_MAX_CS_NUM=3 +# default: CONFIG_SOC_SPI_SUPPORT_CLK_APB=y +# default: CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 +# default: 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 +# default: CONFIG_SOC_TIMER_GROUPS=2 +# default: CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2 +# default: CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=64 +# default: CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 +# default: CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y +# default: CONFIG_SOC_LP_TIMER_BIT_WIDTH_LO=32 +# default: CONFIG_SOC_LP_TIMER_BIT_WIDTH_HI=16 +# default: CONFIG_SOC_TOUCH_SENSOR_VERSION=1 +# default: CONFIG_SOC_TOUCH_SENSOR_NUM=10 +# default: +CONFIG_SOC_TOUCH_MIN_CHAN_ID=0 +# default: +CONFIG_SOC_TOUCH_MAX_CHAN_ID=9 +# default: +CONFIG_SOC_TOUCH_SUPPORT_SLEEP_WAKEUP=y +# default: CONFIG_SOC_TOUCH_SAMPLE_CFG_NUM=1 +# default: CONFIG_SOC_TWAI_CONTROLLER_NUM=1 +# default: +CONFIG_SOC_TWAI_MASK_FILTER_NUM=1 +# default: CONFIG_SOC_TWAI_BRP_MIN=2 +# default: CONFIG_SOC_TWAI_CLK_SUPPORT_APB=y +# default: CONFIG_SOC_TWAI_SUPPORT_MULTI_ADDRESS_LAYOUT=y +# default: CONFIG_SOC_UART_NUM=3 +# default: CONFIG_SOC_UART_HP_NUM=3 +# default: CONFIG_SOC_UART_SUPPORT_APB_CLK=y +# default: CONFIG_SOC_UART_SUPPORT_REF_TICK=y +# default: CONFIG_SOC_UART_FIFO_LEN=128 +# default: CONFIG_SOC_UART_BITRATE_MAX=5000000 +# default: +CONFIG_SOC_UART_WAKEUP_SUPPORT_ACTIVE_THRESH_MODE=y +# default: CONFIG_SOC_SPIRAM_SUPPORTED=y +# default: CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y +# default: +CONFIG_SOC_MEMSPI_ENCRYPTION_ALIGNMENT=16 +# default: CONFIG_SOC_SHA_SUPPORT_PARALLEL_ENG=y +# default: CONFIG_SOC_SHA_ENDIANNESS_BE=y +# default: CONFIG_SOC_SHA_SUPPORT_SHA1=y +# default: CONFIG_SOC_SHA_SUPPORT_SHA256=y +# default: CONFIG_SOC_SHA_SUPPORT_SHA384=y +# default: CONFIG_SOC_SHA_SUPPORT_SHA512=y +# default: CONFIG_SOC_MPI_MEM_BLOCKS_NUM=4 -CONFIG_SOC_MPI_OPERATIONS_NUM=y +# default: +CONFIG_SOC_MPI_OPERATIONS_NUM=1 +# default: CONFIG_SOC_RSA_MAX_BIT_LEN=4096 +# default: CONFIG_SOC_AES_SUPPORT_AES_128=y +# default: CONFIG_SOC_AES_SUPPORT_AES_192=y +# default: CONFIG_SOC_AES_SUPPORT_AES_256=y +# default: CONFIG_SOC_SECURE_BOOT_V1=y -CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=y +# default: +CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=1 +# default: CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32 +# default: CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 +# default: CONFIG_SOC_PM_SUPPORT_EXT0_WAKEUP=y +# default: CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP=y +# default: CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y +# default: CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y +# default: CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y +# default: CONFIG_SOC_PM_SUPPORT_RTC_FAST_MEM_PD=y +# default: CONFIG_SOC_PM_SUPPORT_RTC_SLOW_MEM_PD=y +# default: CONFIG_SOC_PM_SUPPORT_RC_FAST_PD=y +# default: CONFIG_SOC_PM_SUPPORT_VDDSDIO_PD=y +# default: CONFIG_SOC_PM_SUPPORT_MODEM_PD=y +# default: CONFIG_SOC_CONFIGURABLE_VDDSDIO_SUPPORTED=y +# default: CONFIG_SOC_PM_MODEM_PD_BY_SW=y +# default: CONFIG_SOC_CLK_APLL_SUPPORTED=y +# default: CONFIG_SOC_CLK_RC_FAST_D256_SUPPORTED=y +# default: CONFIG_SOC_RTC_SLOW_CLK_SUPPORT_RC_FAST_D256=y +# default: CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y +# default: CONFIG_SOC_CLK_XTAL32K_SUPPORTED=y +# default: +CONFIG_SOC_CLK_LP_FAST_SUPPORT_XTAL_D4=y +# default: CONFIG_SOC_SDMMC_USE_IOMUX=y +# default: CONFIG_SOC_SDMMC_NUM_SLOTS=2 +# default: CONFIG_SOC_WIFI_WAPI_SUPPORT=y +# default: CONFIG_SOC_WIFI_CSI_SUPPORT=y +# default: CONFIG_SOC_WIFI_MESH_SUPPORT=y +# default: CONFIG_SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW=y +# default: CONFIG_SOC_WIFI_NAN_SUPPORT=y +# default: CONFIG_SOC_BLE_SUPPORTED=y +# default: CONFIG_SOC_BLE_MESH_SUPPORTED=y +# default: CONFIG_SOC_BT_CLASSIC_SUPPORTED=y +# default: CONFIG_SOC_BLUFI_SUPPORTED=y +# default: CONFIG_SOC_BT_H2C_ENC_KEY_CTRL_ENH_VSC_SUPPORTED=y +# default: +CONFIG_SOC_BLE_MULTI_CONN_OPTIMIZATION=y +# default: CONFIG_SOC_ULP_HAS_ADC=y +# default: CONFIG_SOC_PHY_COMBO_MODULE=y +# default: CONFIG_SOC_EMAC_RMII_CLK_OUT_INTERNAL_LOOPBACK=y +# default: CONFIG_IDF_CMAKE=y +# default: CONFIG_IDF_TOOLCHAIN="gcc" +# default: CONFIG_IDF_TOOLCHAIN_GCC=y +# default: CONFIG_IDF_TARGET_ARCH_XTENSA=y +# default: CONFIG_IDF_TARGET_ARCH="xtensa" +# default: CONFIG_IDF_TARGET="esp32" +# default: CONFIG_IDF_INIT_VERSION="5.4.1" +# default: CONFIG_IDF_TARGET_ESP32=y +# default: CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 # @@ -256,8 +512,11 @@ CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 # CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y # CONFIG_APP_BUILD_TYPE_RAM is not set +# default: CONFIG_APP_BUILD_GENERATE_BINARIES=y +# default: CONFIG_APP_BUILD_BOOTLOADER=y +# default: CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y # CONFIG_APP_REPRODUCIBLE_BUILD is not set # CONFIG_APP_NO_BLOBS is not set @@ -276,6 +535,18 @@ CONFIG_BOOTLOADER_COMPILE_TIME_DATE=y CONFIG_BOOTLOADER_PROJECT_VER=1 # end of Bootloader manager +# +# Application Rollback +# +# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set +# end of Application Rollback + +# +# Recovery Bootloader and Rollback +# +# end of Recovery Bootloader and Rollback + +# default: CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000 CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set @@ -285,12 +556,17 @@ CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y # # Log # +# default: +CONFIG_BOOTLOADER_LOG_VERSION_1=y +# default: +CONFIG_BOOTLOADER_LOG_VERSION=1 # CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set # CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set # CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y # CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set # CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set +# default: CONFIG_BOOTLOADER_LOG_LEVEL=3 # @@ -299,6 +575,15 @@ CONFIG_BOOTLOADER_LOG_LEVEL=3 # CONFIG_BOOTLOADER_LOG_COLORS is not set CONFIG_BOOTLOADER_LOG_TIMESTAMP_SOURCE_CPU_TICKS=y # end of Format + +# +# Settings +# +# default: +CONFIG_BOOTLOADER_LOG_MODE_TEXT_EN=y +# default: +CONFIG_BOOTLOADER_LOG_MODE_TEXT=y +# end of Settings # end of Log # @@ -316,10 +601,10 @@ CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y CONFIG_BOOTLOADER_WDT_ENABLE=y # CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set CONFIG_BOOTLOADER_WDT_TIME_MS=9000 -# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set # CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set # CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set # CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set +# default: CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 # CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set # end of Bootloader config @@ -327,6 +612,7 @@ CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 # # Security features # +# default: CONFIG_SECURE_BOOT_V1_SUPPORTED=y # CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set # CONFIG_SECURE_BOOT is not set @@ -343,19 +629,33 @@ CONFIG_APP_COMPILE_TIME_DATE=y CONFIG_APP_RETRIEVE_LEN_ELF_SHA=9 # end of Application manager +# default: CONFIG_ESP_ROM_HAS_CRC_LE=y +# default: CONFIG_ESP_ROM_HAS_CRC_BE=y +# default: CONFIG_ESP_ROM_HAS_MZ_CRC32=y +# default: CONFIG_ESP_ROM_HAS_JPEG_DECODE=y +# default: CONFIG_ESP_ROM_HAS_UART_BUF_SWITCH=y +# default: CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y +# default: CONFIG_ESP_ROM_HAS_NEWLIB=y +# default: CONFIG_ESP_ROM_HAS_NEWLIB_NANO_FORMAT=y +# default: CONFIG_ESP_ROM_HAS_NEWLIB_32BIT_TIME=y +# default: CONFIG_ESP_ROM_HAS_SW_FLOAT=y +# default: CONFIG_ESP_ROM_USB_OTG_NUM=-1 +# default: CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=-1 +# default: CONFIG_ESP_ROM_SUPPORT_DEEP_SLEEP_WAKEUP_STUB=y +# default: CONFIG_ESP_ROM_HAS_OUTPUT_PUTC_FUNC=y # @@ -367,11 +667,13 @@ CONFIG_ESP_ROM_HAS_OUTPUT_PUTC_FUNC=y CONFIG_ESPTOOLPY_FLASHMODE_DIO=y # CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y +# default: CONFIG_ESPTOOLPY_FLASHMODE="dio" # CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set CONFIG_ESPTOOLPY_FLASHFREQ_40M=y # CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set # CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set +# default: CONFIG_ESPTOOLPY_FLASHFREQ="40m" # CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y @@ -381,14 +683,18 @@ CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y # CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +# default: CONFIG_ESPTOOLPY_FLASHSIZE="2MB" # CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set CONFIG_ESPTOOLPY_BEFORE_RESET=y # CONFIG_ESPTOOLPY_BEFORE_NORESET is not set +# default: CONFIG_ESPTOOLPY_BEFORE="default_reset" CONFIG_ESPTOOLPY_AFTER_RESET=y # CONFIG_ESPTOOLPY_AFTER_NORESET is not set +# default: CONFIG_ESPTOOLPY_AFTER="hard_reset" +# default: CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 # end of Serial flasher config @@ -401,6 +707,7 @@ CONFIG_PARTITION_TABLE_SINGLE_APP=y # CONFIG_PARTITION_TABLE_TWO_OTA_LARGE is not set # CONFIG_PARTITION_TABLE_CUSTOM is not set CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +# default: CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" CONFIG_PARTITION_TABLE_OFFSET=0x8000 CONFIG_PARTITION_TABLE_MD5=y @@ -410,28 +717,35 @@ CONFIG_PARTITION_TABLE_MD5=y # Arduino Configuration # CONFIG_ARDUINO_VARIANT="esp32" +# default: CONFIG_ENABLE_ARDUINO_DEPENDS=y # CONFIG_AUTOSTART_ARDUINO is not set # CONFIG_ARDUINO_RUN_CORE0 is not set CONFIG_ARDUINO_RUN_CORE1=y # CONFIG_ARDUINO_RUN_NO_AFFINITY is not set +# default: CONFIG_ARDUINO_RUNNING_CORE=1 CONFIG_ARDUINO_LOOP_STACK_SIZE=8192 # CONFIG_ARDUINO_EVENT_RUN_CORE0 is not set CONFIG_ARDUINO_EVENT_RUN_CORE1=y # CONFIG_ARDUINO_EVENT_RUN_NO_AFFINITY is not set +# default: CONFIG_ARDUINO_EVENT_RUNNING_CORE=1 # CONFIG_ARDUINO_SERIAL_EVENT_RUN_CORE0 is not set # CONFIG_ARDUINO_SERIAL_EVENT_RUN_CORE1 is not set CONFIG_ARDUINO_SERIAL_EVENT_RUN_NO_AFFINITY=y +# default: CONFIG_ARDUINO_SERIAL_EVENT_TASK_RUNNING_CORE=-1 CONFIG_ARDUINO_SERIAL_EVENT_TASK_STACK_SIZE=2048 CONFIG_ARDUINO_SERIAL_EVENT_TASK_PRIORITY=24 CONFIG_ARDUINO_UDP_RUN_CORE0=y # CONFIG_ARDUINO_UDP_RUN_CORE1 is not set # CONFIG_ARDUINO_UDP_RUN_NO_AFFINITY is not set +# default: CONFIG_ARDUINO_UDP_RUNNING_CORE=0 CONFIG_ARDUINO_UDP_TASK_PRIORITY=3 +# default: +CONFIG_ARDUINO_UDP_TASK_STACK_SIZE=4096 # CONFIG_ARDUINO_ISR_IRAM is not set # CONFIG_DISABLE_HAL_LOCKS is not set @@ -444,6 +758,7 @@ CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_NONE=y # CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_INFO is not set # CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_DEBUG is not set # CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_VERBOSE is not set +# default: CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL=0 # CONFIG_ARDUHAL_LOG_COLORS is not set # CONFIG_ARDUHAL_ESP_LOG is not set @@ -454,37 +769,41 @@ CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL=0 # CONFIG_ARDUHAL_PARTITION_SCHEME_NO_OTA is not set # CONFIG_ARDUHAL_PARTITION_SCHEME_HUGE_APP is not set CONFIG_ARDUHAL_PARTITION_SCHEME_MIN_SPIFFS=y +# default: CONFIG_ARDUHAL_PARTITION_SCHEME="min_spiffs" CONFIG_ARDUINO_SELECTIVE_COMPILATION=y CONFIG_ARDUINO_SELECTIVE_SPI=y CONFIG_ARDUINO_SELECTIVE_Wire=y # CONFIG_ARDUINO_SELECTIVE_ESP_SR is not set +# CONFIG_ARDUINO_SELECTIVE_ESP_Video is not set CONFIG_ARDUINO_SELECTIVE_EEPROM=y -# CONFIG_ARDUINO_SELECTIVE_Preferences is not set +CONFIG_ARDUINO_SELECTIVE_Preferences=y # CONFIG_ARDUINO_SELECTIVE_Ticker is not set CONFIG_ARDUINO_SELECTIVE_Update=y # CONFIG_ARDUINO_SELECTIVE_Zigbee is not set CONFIG_ARDUINO_SELECTIVE_FS=y -# CONFIG_ARDUINO_SELECTIVE_SD is not set -# CONFIG_ARDUINO_SELECTIVE_SD_MMC is not set -# CONFIG_ARDUINO_SELECTIVE_SPIFFS is not set -# CONFIG_ARDUINO_SELECTIVE_FFat is not set +CONFIG_ARDUINO_SELECTIVE_SD=y +CONFIG_ARDUINO_SELECTIVE_SD_MMC=y +CONFIG_ARDUINO_SELECTIVE_SPIFFS=y +CONFIG_ARDUINO_SELECTIVE_FFat=y CONFIG_ARDUINO_SELECTIVE_LittleFS=y CONFIG_ARDUINO_SELECTIVE_Network=y # CONFIG_ARDUINO_SELECTIVE_Ethernet is not set CONFIG_ARDUINO_SELECTIVE_PPP=y +# default: +CONFIG_ARDUINO_SELECTIVE_Hash=y CONFIG_ARDUINO_SELECTIVE_ArduinoOTA=y CONFIG_ARDUINO_SELECTIVE_AsyncUDP=y CONFIG_ARDUINO_SELECTIVE_DNSServer=y CONFIG_ARDUINO_SELECTIVE_ESPmDNS=y CONFIG_ARDUINO_SELECTIVE_HTTPClient=y # CONFIG_ARDUINO_SELECTIVE_Matter is not set -# CONFIG_ARDUINO_SELECTIVE_NetBIOS is not set +CONFIG_ARDUINO_SELECTIVE_NetBIOS=y CONFIG_ARDUINO_SELECTIVE_WebServer=y CONFIG_ARDUINO_SELECTIVE_WiFi=y CONFIG_ARDUINO_SELECTIVE_NetworkClientSecure=y # CONFIG_ARDUINO_SELECTIVE_WiFiProv is not set -# CONFIG_ARDUINO_SELECTIVE_BLE is not set +CONFIG_ARDUINO_SELECTIVE_BLE=y # CONFIG_ARDUINO_SELECTIVE_BluetoothSerial is not set # CONFIG_ARDUINO_SELECTIVE_SimpleBLE is not set # CONFIG_ARDUINO_SELECTIVE_RainMaker is not set @@ -504,6 +823,7 @@ CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set CONFIG_COMPILER_ASSERT_NDEBUG_EVALUATE=y CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y +# default: CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 # CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set CONFIG_COMPILER_HIDE_PATHS_MACROS=y @@ -521,6 +841,7 @@ CONFIG_COMPILER_DISABLE_DEFAULT_ERRORS=y # CONFIG_COMPILER_DISABLE_GCC14_WARNINGS is not set # CONFIG_COMPILER_DUMP_RTL_FILES is not set CONFIG_COMPILER_RT_LIB_GCCLIB=y +# default: CONFIG_COMPILER_RT_LIB_NAME="gcc" CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING=y # CONFIG_COMPILER_ORPHAN_SECTIONS_PLACE is not set @@ -540,6 +861,7 @@ CONFIG_APPTRACE_DEST_NONE=y # CONFIG_APPTRACE_DEST_UART2 is not set CONFIG_APPTRACE_DEST_UART_NONE=y CONFIG_APPTRACE_UART_TASK_PRIO=1 +# default: CONFIG_APPTRACE_LOCK_ENABLE=y # end of Application Level Tracing @@ -553,42 +875,112 @@ CONFIG_BT_NIMBLE_ENABLED=y CONFIG_BT_CONTROLLER_ENABLED=y # CONFIG_BT_CONTROLLER_DISABLED is not set +# +# Common Options +# +CONFIG_BT_ALARM_MAX_NUM=50 +# default: +# CONFIG_BT_BLE_HOST_ALLOW_SUB_SPEC_MIN_CONN_INT is not set + +# +# BT Logs +# + +# +# Log Sources +# +# end of Log Sources + +# default: +# CONFIG_BT_LOG_CRITICAL_ONLY is not set +# default: +# CONFIG_BLE_LOG_ENABLED is not set + +# +# Legacy SPI Log Output (Deprecated - use BT Log Async Output instead) +# +# CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED is not set +# end of Legacy SPI Log Output (Deprecated - use BT Log Async Output instead) +# end of BT Logs + +# default: +# CONFIG_BT_LE_USED_MEM_STATISTICS_ENABLED is not set +# end of Common Options + # # NimBLE Options # + +# +# General +# CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL=y # CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_DEFAULT is not set -# CONFIG_BT_NIMBLE_LOG_LEVEL_NONE is not set -# CONFIG_BT_NIMBLE_LOG_LEVEL_ERROR is not set -# CONFIG_BT_NIMBLE_LOG_LEVEL_WARNING is not set -CONFIG_BT_NIMBLE_LOG_LEVEL_INFO=y -# CONFIG_BT_NIMBLE_LOG_LEVEL_DEBUG is not set -CONFIG_BT_NIMBLE_LOG_LEVEL=1 -CONFIG_BT_NIMBLE_MAX_CONNECTIONS=7 -CONFIG_BT_NIMBLE_MAX_BONDS=1 -CONFIG_BT_NIMBLE_MAX_CCCDS=0 -CONFIG_BT_NIMBLE_L2CAP_COC_MAX_NUM=0 +# default: +CONFIG_BT_NIMBLE_PINNED_TO_CORE=0 CONFIG_BT_NIMBLE_PINNED_TO_CORE_0=y # CONFIG_BT_NIMBLE_PINNED_TO_CORE_1 is not set -CONFIG_BT_NIMBLE_PINNED_TO_CORE=0 CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=4096 +# default: +CONFIG_BT_NIMBLE_LEGACY_VHCI_ENABLE=y +# end of General + +# +# Roles and Profiles +# CONFIG_BT_NIMBLE_ROLE_CENTRAL=y CONFIG_BT_NIMBLE_ROLE_PERIPHERAL=y CONFIG_BT_NIMBLE_ROLE_BROADCASTER=y CONFIG_BT_NIMBLE_ROLE_OBSERVER=y CONFIG_BT_NIMBLE_GATT_CLIENT=y CONFIG_BT_NIMBLE_GATT_SERVER=y -# CONFIG_BT_NIMBLE_NVS_PERSIST is not set -# CONFIG_BT_NIMBLE_SMP_ID_RESET is not set +# end of Roles and Profiles + +# +# Security (SMP) +# # CONFIG_BT_NIMBLE_SECURITY_ENABLE is not set -CONFIG_BT_NIMBLE_PRINT_ERR_NAME=y -# CONFIG_BT_NIMBLE_DEBUG is not set -# CONFIG_BT_NIMBLE_DYNAMIC_SERVICE is not set -CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="nimble" -CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=31 +# end of Security (SMP) + +# +# GAP +# +CONFIG_BT_NIMBLE_RPA_TIMEOUT=900 +CONFIG_BT_NIMBLE_WHITELIST_SIZE=1 +CONFIG_BT_NIMBLE_ENABLE_CONN_REATTEMPT=y +CONFIG_BT_NIMBLE_MAX_CONN_REATTEMPT=3 +# default: +CONFIG_BT_NIMBLE_HS_PVCY=y +# CONFIG_BT_NIMBLE_HOST_BASED_PRIVACY is not set +CONFIG_BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN=y +# CONFIG_BT_NIMBLE_HOST_QUEUE_CONG_CHECK is not set +CONFIG_BT_NIMBLE_MAX_CONNECTIONS=7 +CONFIG_BT_NIMBLE_MAX_CCCDS=0 +CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS=y +CONFIG_BT_NIMBLE_HS_STOP_TIMEOUT_MS=2000 +CONFIG_BT_NIMBLE_USE_ESP_TIMER=y +CONFIG_BT_NIMBLE_HS_FLOW_CTRL=y +CONFIG_BT_NIMBLE_HS_FLOW_CTRL_ITVL=1000 +CONFIG_BT_NIMBLE_HS_FLOW_CTRL_THRESH=2 +CONFIG_BT_NIMBLE_HS_FLOW_CTRL_TX_ON_DISCONNECT=y +# end of GAP + +# +# GATT / ATT +# CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=256 CONFIG_BT_NIMBLE_ATT_MAX_PREP_ENTRIES=64 -CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE=0 +CONFIG_BT_NIMBLE_GATT_MAX_PROCS=4 +# CONFIG_BT_NIMBLE_BLE_GATT_BLOB_TRANSFER is not set +# CONFIG_BT_NIMBLE_GATT_CACHING is not set +# CONFIG_BT_NIMBLE_INCL_SVC_DISCOVERY is not set +# end of GATT / ATT + +# +# L2CAP +# +CONFIG_BT_NIMBLE_L2CAP_COC_MAX_NUM=0 +# end of L2CAP # # Memory Settings @@ -603,32 +995,17 @@ CONFIG_BT_NIMBLE_TRANSPORT_EVT_SIZE=70 CONFIG_BT_NIMBLE_TRANSPORT_EVT_COUNT=30 CONFIG_BT_NIMBLE_TRANSPORT_EVT_DISCARD_COUNT=8 CONFIG_BT_NIMBLE_L2CAP_COC_SDU_BUFF_COUNT=1 +# default: +# CONFIG_BT_NIMBLE_MEMPOOL_RUNTIME_ALLOC is not set # end of Memory Settings -CONFIG_BT_NIMBLE_GATT_MAX_PROCS=4 -CONFIG_BT_NIMBLE_HS_FLOW_CTRL=y -CONFIG_BT_NIMBLE_HS_FLOW_CTRL_ITVL=1000 -CONFIG_BT_NIMBLE_HS_FLOW_CTRL_THRESH=2 -CONFIG_BT_NIMBLE_HS_FLOW_CTRL_TX_ON_DISCONNECT=y -CONFIG_BT_NIMBLE_RPA_TIMEOUT=900 -# CONFIG_BT_NIMBLE_MESH is not set -CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS=y -CONFIG_BT_NIMBLE_HS_STOP_TIMEOUT_MS=2000 -# CONFIG_BT_NIMBLE_HOST_BASED_PRIVACY is not set -CONFIG_BT_NIMBLE_ENABLE_CONN_REATTEMPT=y -CONFIG_BT_NIMBLE_MAX_CONN_REATTEMPT=3 -# CONFIG_BT_NIMBLE_HANDLE_REPEAT_PAIRING_DELETION is not set -# CONFIG_BT_NIMBLE_GATT_CACHING is not set -# CONFIG_BT_NIMBLE_INCL_SVC_DISCOVERY is not set -CONFIG_BT_NIMBLE_WHITELIST_SIZE=1 -# CONFIG_BT_NIMBLE_TEST_THROUGHPUT_TEST is not set -# CONFIG_BT_NIMBLE_BLUFI_ENABLE is not set -CONFIG_BT_NIMBLE_USE_ESP_TIMER=y -CONFIG_BT_NIMBLE_LEGACY_VHCI_ENABLE=y -# CONFIG_BT_NIMBLE_BLE_GATT_BLOB_TRANSFER is not set +# +# BLE 5.x Features +# +# end of BLE 5.x Features # -# BLE Services +# Services # # CONFIG_BT_NIMBLE_PROX_SERVICE is not set # CONFIG_BT_NIMBLE_ANS_SERVICE is not set @@ -644,22 +1021,39 @@ CONFIG_BT_NIMBLE_LEGACY_VHCI_ENABLE=y # CONFIG_BT_NIMBLE_BAS_SERVICE is not set # CONFIG_BT_NIMBLE_DIS_SERVICE is not set CONFIG_BT_NIMBLE_GAP_SERVICE=y +CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="nimble" +CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=31 +CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE=0 +# default: +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM=0 +# default: +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_ENC=0 +# default: +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHEN=0 +# default: +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHOR=0 +# CONFIG_BT_NIMBLE_SVC_GAP_GATT_SECURITY_LEVEL is not set +# CONFIG_BT_NIMBLE_SVC_GAP_RPA_ONLY is not set +CONFIG_BT_NIMBLE_SVC_GAP_CAR_CHAR_NOT_SUPP=y +# CONFIG_BT_NIMBLE_SVC_GAP_CAR_NOT_SUPP is not set +# CONFIG_BT_NIMBLE_SVC_GAP_CAR_SUPP is not set +# default: +CONFIG_BT_NIMBLE_SVC_GAP_CENT_ADDR_RESOLUTION=-1 # # GAP Appearance write permissions # # CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE is not set +# default: CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM=0 +# default: CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ENC=0 +# default: CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ATHN=0 +# default: CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ATHR=0 # end of GAP Appearance write permissions -CONFIG_BT_NIMBLE_SVC_GAP_CAR_CHAR_NOT_SUPP=y -# CONFIG_BT_NIMBLE_SVC_GAP_CAR_NOT_SUPP is not set -# CONFIG_BT_NIMBLE_SVC_GAP_CAR_SUPP is not set -CONFIG_BT_NIMBLE_SVC_GAP_CENT_ADDR_RESOLUTION=-1 - # # GAP device name write permissions # @@ -667,41 +1061,97 @@ CONFIG_BT_NIMBLE_SVC_GAP_CENT_ADDR_RESOLUTION=-1 # end of GAP device name write permissions # -# PPCP settings +# Peripheral Preferred Connection Parameters (PPCP) settings # CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MAX_CONN_INTERVAL=0 CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MIN_CONN_INTERVAL=0 CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SLAVE_LATENCY=0 CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SUPERVISION_TMO=0 -# end of PPCP settings +# end of Peripheral Preferred Connection Parameters (PPCP) settings +# end of Services -CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM=0 -CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_ENC=0 -CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHEN=0 -CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHOR=0 -# CONFIG_BT_NIMBLE_SVC_GAP_GATT_SECURITY_LEVEL is not set -# CONFIG_BT_NIMBLE_SVC_GAP_RPA_ONLY is not set -# end of BLE Services - -# CONFIG_BT_NIMBLE_VS_SUPPORT is not set +# +# Extra Features +# +# CONFIG_BT_NIMBLE_DYNAMIC_SERVICE is not set +# CONFIG_BT_NIMBLE_BLUFI_ENABLE is not set # CONFIG_BT_NIMBLE_ENC_ADV_DATA is not set -# CONFIG_BT_NIMBLE_HIGH_DUTY_ADV_ITVL is not set -# CONFIG_BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN is not set -# CONFIG_BT_NIMBLE_HOST_QUEUE_CONG_CHECK is not set +# default: +# CONFIG_BT_NIMBLE_ADV_UUID_CONCAT is not set # CONFIG_BT_NIMBLE_GATTC_PROC_PREEMPTION_PROTECT is not set +# default: +# CONFIG_BT_NIMBLE_GATTC_AUTO_PAIR is not set +CONFIG_BT_NIMBLE_EATT_CHAN_NUM=0 +# CONFIG_BT_NIMBLE_SUBRATE is not set +# default: +CONFIG_BT_NIMBLE_DTM_MODE_TEST=y +# default: +CONFIG_BT_NIMBLE_MEM_OPTIMIZATION=y +# default: +CONFIG_BT_NIMBLE_STATIC_TO_DYNAMIC=y +# default: +CONFIG_BT_NIMBLE_SM_SIGN_CNT=y +# default: +CONFIG_BT_NIMBLE_CPFD_CAFD=y +# default: +CONFIG_BT_NIMBLE_RECONFIG_MTU=y +# default: +# CONFIG_BT_NIMBLE_LOW_SPEED_MODE is not set +# end of Extra Features + +# +# NimBLE Mesh +# +# CONFIG_BT_NIMBLE_MESH is not set +# end of NimBLE Mesh # # Host-controller Transport # CONFIG_UART_HW_FLOWCTRL_DISABLE=y # CONFIG_UART_HW_FLOWCTRL_CTS_RTS is not set +# default: CONFIG_BT_NIMBLE_HCI_UART_FLOW_CTRL=0 CONFIG_BT_NIMBLE_HCI_UART_RTS_PIN=19 CONFIG_BT_NIMBLE_HCI_UART_CTS_PIN=23 # end of Host-controller Transport -CONFIG_BT_NIMBLE_EATT_CHAN_NUM=0 -# CONFIG_BT_NIMBLE_SUBRATE is not set +# +# Debugging/Testing +# +# default: +# CONFIG_BT_NIMBLE_MEM_DEBUG is not set +# CONFIG_BT_NIMBLE_LOG_LEVEL_NONE is not set +# CONFIG_BT_NIMBLE_LOG_LEVEL_ERROR is not set +# CONFIG_BT_NIMBLE_LOG_LEVEL_WARNING is not set +CONFIG_BT_NIMBLE_LOG_LEVEL_INFO=y +# CONFIG_BT_NIMBLE_LOG_LEVEL_DEBUG is not set +# default: +CONFIG_BT_NIMBLE_LOG_LEVEL=1 +CONFIG_BT_NIMBLE_PRINT_ERR_NAME=y +# CONFIG_BT_NIMBLE_DEBUG is not set +# CONFIG_BT_NIMBLE_TEST_THROUGHPUT_TEST is not set +# end of Debugging/Testing + +# +# Vendor / Optimization +# +# CONFIG_BT_NIMBLE_VS_SUPPORT is not set +# default: +# CONFIG_BT_NIMBLE_OPTIMIZE_MULTI_CONN is not set +# CONFIG_BT_NIMBLE_HIGH_DUTY_ADV_ITVL is not set +# end of Vendor / Optimization + +# +# Helper Utils +# +# default: +CONFIG_BT_NIMBLE_CHK_HOST_STATUS=y +# default: +CONFIG_BT_NIMBLE_UTIL_API=y +# default: +CONFIG_BT_NIMBLE_EXTRA_ADV_FIELDS=y +# end of Helper Utils # end of NimBLE Options # @@ -711,16 +1161,23 @@ CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y # CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY is not set # CONFIG_BTDM_CTRL_MODE_BTDM is not set CONFIG_BTDM_CTRL_BLE_MAX_CONN=7 +# default: CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=0 +# default: CONFIG_BTDM_CTRL_PCM_ROLE_EFF=0 +# default: CONFIG_BTDM_CTRL_PCM_POLAR_EFF=0 +# default: CONFIG_BTDM_CTRL_PCM_FSYNCSHP_EFF=0 +# default: CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=7 +# default: CONFIG_BTDM_CTRL_BR_EDR_MIN_ENC_KEY_SZ_DFT_EFF=0 +# default: CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=0 -CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0 CONFIG_BTDM_CTRL_PINNED_TO_CORE_0=y # CONFIG_BTDM_CTRL_PINNED_TO_CORE_1 is not set +# default: CONFIG_BTDM_CTRL_PINNED_TO_CORE=0 CONFIG_BTDM_CTRL_HCI_MODE_VHCI=y # CONFIG_BTDM_CTRL_HCI_MODE_UART_H4 is not set @@ -735,11 +1192,13 @@ CONFIG_BTDM_CTRL_LPCLK_SEL_MAIN_XTAL=y # end of MODEM SLEEP Options CONFIG_BTDM_BLE_DEFAULT_SCA_250PPM=y +# default: CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF=1 CONFIG_BTDM_BLE_SCAN_DUPL=y CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE=y # CONFIG_BTDM_SCAN_DUPL_TYPE_DATA is not set # CONFIG_BTDM_SCAN_DUPL_TYPE_DATA_DEVICE is not set +# default: CONFIG_BTDM_SCAN_DUPL_TYPE=0 CONFIG_BTDM_SCAN_DUPL_CACHE_SIZE=100 CONFIG_BTDM_SCAN_DUPL_CACHE_REFRESH_PERIOD=0 @@ -761,17 +1220,11 @@ CONFIG_BTDM_BLE_ADV_REPORT_DISCARD_THRSHOLD=20 CONFIG_BTDM_BLE_CHAN_ASS_EN=y CONFIG_BTDM_BLE_PING_EN=y # CONFIG_BTDM_CTRL_CONTROLLER_DEBUG_MODE_1 is not set +# default: CONFIG_BTDM_RESERVE_DRAM=0xdb5c CONFIG_BTDM_CTRL_HLI=y # end of Controller Options -# -# Common Options -# -CONFIG_BT_ALARM_MAX_NUM=50 -# CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED is not set -# end of Common Options - # CONFIG_BT_HCI_LOG_DEBUG_EN is not set # end of Bluetooth @@ -788,15 +1241,16 @@ CONFIG_BT_ALARM_MAX_NUM=50 # # -# TWAI Configuration +# Legacy TWAI Driver Configurations # -# CONFIG_TWAI_ISR_IN_IRAM is not set +# default: +# CONFIG_TWAI_SKIP_LEGACY_CONFLICT_CHECK is not set CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC=y CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST=y CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID=y CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT=y CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y -# end of TWAI Configuration +# end of Legacy TWAI Driver Configurations # # Legacy ADC Driver Configuration @@ -869,6 +1323,15 @@ CONFIG_ADC_CAL_LUT_ENABLE=y # CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_SDM_SKIP_LEGACY_CONFLICT_CHECK is not set # end of Legacy SDM Driver Configurations + +# +# Legacy Touch Sensor Driver Configurations +# +# default: +# CONFIG_TOUCH_SUPPRESS_DEPRECATE_WARN is not set +# default: +# CONFIG_TOUCH_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy Touch Sensor Driver Configurations # end of Driver Configurations # @@ -879,6 +1342,7 @@ CONFIG_ADC_CAL_LUT_ENABLE=y # 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 +# default: CONFIG_EFUSE_MAX_BLK_LEN=192 # end of eFuse Bit Manager @@ -893,6 +1357,8 @@ CONFIG_ESP_TLS_USING_MBEDTLS=y # 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 +# default: +CONFIG_ESP_TLS_DYN_BUF_STRATEGY_SUPPORTED=y # end of ESP-TLS # @@ -916,6 +1382,7 @@ CONFIG_ADC_DISABLE_DAC_OUTPUT=y # # Wireless Coexistence # +# default: CONFIG_ESP_COEX_ENABLED=y CONFIG_ESP_COEX_SW_COEXIST_ENABLE=y # CONFIG_ESP_COEX_POWER_MANAGEMENT is not set @@ -949,7 +1416,8 @@ CONFIG_DAC_DMA_AUTO_16BIT_ALIGN=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_ISR_CACHE_SAFE is not set +# default: CONFIG_GPTIMER_OBJ_CACHE_SAFE=y # CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set # end of ESP-Driver:GPTimer Configurations @@ -960,6 +1428,8 @@ CONFIG_GPTIMER_OBJ_CACHE_SAFE=y # CONFIG_I2C_ISR_IRAM_SAFE is not set # CONFIG_I2C_ENABLE_DEBUG_LOG is not set # CONFIG_I2C_ENABLE_SLAVE_DRIVER_VERSION_2 is not set +# default: +CONFIG_I2C_MASTER_ISR_HANDLER_IN_IRAM=y # end of ESP-Driver:I2C Configurations # @@ -978,8 +1448,12 @@ CONFIG_GPTIMER_OBJ_CACHE_SAFE=y # # ESP-Driver:MCPWM Configurations # -# CONFIG_MCPWM_ISR_IRAM_SAFE is not set +# default: +CONFIG_MCPWM_ISR_HANDLER_IN_IRAM=y +# CONFIG_MCPWM_ISR_CACHE_SAFE is not set # CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set +# default: +CONFIG_MCPWM_OBJ_CACHE_SAFE=y # CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set # end of ESP-Driver:MCPWM Configurations @@ -994,9 +1468,21 @@ CONFIG_GPTIMER_OBJ_CACHE_SAFE=y # # ESP-Driver:RMT Configurations # -# CONFIG_RMT_ISR_IRAM_SAFE is not set +# default: +CONFIG_RMT_ENCODER_FUNC_IN_IRAM=y +# default: +CONFIG_RMT_TX_ISR_HANDLER_IN_IRAM=y +# default: +CONFIG_RMT_RX_ISR_HANDLER_IN_IRAM=y # CONFIG_RMT_RECV_FUNC_IN_IRAM is not set +# default: +# CONFIG_RMT_TX_ISR_CACHE_SAFE is not set +# default: +# CONFIG_RMT_RX_ISR_CACHE_SAFE is not set +# default: +CONFIG_RMT_OBJ_CACHE_SAFE=y # CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# CONFIG_RMT_ISR_IRAM_SAFE is not set # end of ESP-Driver:RMT Configurations # @@ -1021,14 +1507,39 @@ CONFIG_SPI_SLAVE_ISR_IN_IRAM=y # 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 +# default: +# CONFIG_TOUCH_SKIP_FSM_CHECK is not set # end of ESP-Driver:Touch Sensor Configurations +# +# ESP-Driver:TWAI Configurations +# +# CONFIG_TWAI_ISR_IN_IRAM is not set +# default: +# CONFIG_TWAI_IO_FUNC_IN_IRAM is not set +# default: +# CONFIG_TWAI_ISR_CACHE_SAFE is not set +# default: +# CONFIG_TWAI_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:TWAI Configurations + # # ESP-Driver:UART Configurations # # CONFIG_UART_ISR_IN_IRAM is not set # end of ESP-Driver:UART Configurations +# +# ESP-Driver:UHCI Configurations +# +# default: +# CONFIG_UHCI_ISR_HANDLER_IN_IRAM is not set +# default: +# CONFIG_UHCI_ISR_CACHE_SAFE is not set +# default: +# CONFIG_UHCI_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:UHCI Configurations + # # Ethernet # @@ -1048,6 +1559,7 @@ CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y # # GDB Stub # +# default: CONFIG_ESP_GDBSTUB_ENABLED=y # CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set CONFIG_ESP_GDBSTUB_SUPPORT_TASKS=y @@ -1097,11 +1609,15 @@ CONFIG_ESP_HTTPS_OTA_EVENT_POST_TIMEOUT=2000 # # CONFIG_ESP_HTTPS_SERVER_ENABLE is not set CONFIG_ESP_HTTPS_SERVER_EVENT_POST_TIMEOUT=2000 +# default: +# CONFIG_ESP_HTTPS_SERVER_CERT_SELECT_HOOK is not set # end of ESP HTTPS server # # Hardware Settings # +# default: +CONFIG_ESP_HW_SUPPORT_FUNC_IN_IRAM=y # # Chip revision @@ -1112,16 +1628,22 @@ CONFIG_ESP32_REV_MIN_0=y # 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 +# default: CONFIG_ESP32_REV_MIN=0 +# default: CONFIG_ESP32_REV_MIN_FULL=0 +# default: CONFIG_ESP_REV_MIN_FULL=0 # # Maximum Supported ESP32 Revision (Rev v3.99) # +# default: CONFIG_ESP32_REV_MAX_FULL=399 +# default: CONFIG_ESP_REV_MAX_FULL=399 CONFIG_ESP_EFUSE_BLOCK_REV_MIN_FULL=0 +# default: CONFIG_ESP_EFUSE_BLOCK_REV_MAX_FULL=99 # @@ -1132,14 +1654,21 @@ CONFIG_ESP_EFUSE_BLOCK_REV_MAX_FULL=99 # # MAC Config # +# default: CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y +# default: CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y +# default: CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y +# default: CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y +# default: CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR=y +# default: CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES=4 # CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y +# default: 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 @@ -1151,6 +1680,7 @@ CONFIG_ESP32_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 +# default: 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 @@ -1167,12 +1697,18 @@ CONFIG_RTC_CLK_SRC_INT_RC=y # CONFIG_RTC_CLK_SRC_EXT_OSC is not set # CONFIG_RTC_CLK_SRC_INT_8MD256 is not set CONFIG_RTC_CLK_CAL_CYCLES=1024 +# default: +CONFIG_RTC_CLK_FUNC_IN_IRAM=y +# default: +CONFIG_RTC_TIME_FUNC_IN_IRAM=y # end of RTC Clock Config # # Peripheral Control # -CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y +CONFIG_ESP_PERIPH_CTRL_FUNC_IN_IRAM=y +# default: +CONFIG_ESP_REGI2C_CTRL_FUNC_IN_IRAM=y # end of Peripheral Control # @@ -1182,10 +1718,37 @@ CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y # CONFIG_XTAL_FREQ_32 is not set CONFIG_XTAL_FREQ_40=y # CONFIG_XTAL_FREQ_AUTO is not set +# default: CONFIG_XTAL_FREQ=40 # end of Main XTAL Config +# +# Power Supplier +# + +# +# Brownout Detector +# +CONFIG_ESP_BROWNOUT_DET=y +CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 is not set +# default: +CONFIG_ESP_BROWNOUT_DET_LVL=0 +# default: +CONFIG_ESP_BROWNOUT_USE_INTR=y +# end of Brownout Detector +# end of Power Supplier + +# default: CONFIG_ESP_SPI_BUS_LOCK_ISR_FUNCS_IN_IRAM=y +# default: +CONFIG_ESP_INTR_IN_IRAM=y # end of Hardware Settings # @@ -1206,6 +1769,7 @@ CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 # CONFIG_ESP_NETIF_PROVIDE_CUSTOM_IMPLEMENTATION is not set CONFIG_ESP_NETIF_TCPIP_LWIP=y # CONFIG_ESP_NETIF_LOOPBACK is not set +# default: CONFIG_ESP_NETIF_USES_TCPIP_WITH_BSD_API=y CONFIG_ESP_NETIF_REPORT_DATA_TRAFFIC=y # CONFIG_ESP_NETIF_RECEIVE_REPORT_ERRORS is not set @@ -1222,24 +1786,37 @@ CONFIG_ESP_NETIF_REPORT_DATA_TRAFFIC=y # # PHY # +# default: CONFIG_ESP_PHY_ENABLED=y CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y # CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 +# default: CONFIG_ESP_PHY_MAX_TX_POWER=20 # CONFIG_ESP_PHY_REDUCE_TX_POWER is not set # CONFIG_ESP_PHY_ENABLE_CERT_TEST is not set CONFIG_ESP_PHY_RF_CAL_PARTIAL=y # CONFIG_ESP_PHY_RF_CAL_NONE is not set # CONFIG_ESP_PHY_RF_CAL_FULL is not set +# default: CONFIG_ESP_PHY_CALIBRATION_MODE=0 +# default: +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 +# default: +CONFIG_ESP_PHY_IRAM_OPT=y +# default: +# CONFIG_ESP_PHY_DEBUG is not set +# default: +CONFIG_ESP_PHY_ENABLE_VERSION_PRINT=y # end of PHY # # Power Management # +# default: +# CONFIG_PM_SLEEP_FUNC_IN_IRAM is not set # CONFIG_PM_ENABLE is not set # CONFIG_PM_SLP_IRAM_OPT is not set # end of Power Management @@ -1256,6 +1833,13 @@ CONFIG_ESP_PHY_CALIBRATION_MODE=0 # CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set # end of ESP Ringbuf +# +# ESP-ROM +# +# default: +CONFIG_ESP_ROM_PRINT_IN_IRAM=y +# end of ESP-ROM + # # ESP Security Specific # @@ -1267,6 +1851,7 @@ CONFIG_ESP_PHY_CALIBRATION_MODE=0 # CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y # CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set +# default: CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 # @@ -1285,9 +1870,12 @@ CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 # Trace memory # # CONFIG_ESP32_TRAX is not set +# default: CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 # end of Trace memory +# default: +CONFIG_ESP_SYSTEM_IN_IRAM=y # CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y # CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set @@ -1305,13 +1893,17 @@ 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 +# default: CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 CONFIG_ESP_CONSOLE_UART_DEFAULT=y # CONFIG_ESP_CONSOLE_UART_CUSTOM is not set # CONFIG_ESP_CONSOLE_NONE is not set +# default: CONFIG_ESP_CONSOLE_UART=y +# default: CONFIG_ESP_CONSOLE_UART_NUM=0 +# default: CONFIG_ESP_CONSOLE_ROM_SERIAL_PORT_NUM=0 CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 CONFIG_ESP_INT_WDT=y @@ -1327,62 +1919,57 @@ CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y # CONFIG_ESP_DEBUG_STUBS_ENABLE is not set CONFIG_ESP_DEBUG_OCDAWARE=y CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5=y - -# -# Brownout Detector -# -CONFIG_ESP_BROWNOUT_DET=y -CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0=y -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 is not set -CONFIG_ESP_BROWNOUT_DET_LVL=0 -# end of Brownout Detector - # CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set -CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y # end of ESP System Settings # # IPC (Inter-Processor Call) # +# default: +CONFIG_ESP_IPC_ENABLE=y CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y +# default: CONFIG_ESP_IPC_ISR_ENABLE=y # end of IPC (Inter-Processor Call) # # ESP Timer (High Resolution Timer) # +# default: +CONFIG_ESP_TIMER_IN_IRAM=y # CONFIG_ESP_TIMER_PROFILING is not set +# default: CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y +# default: CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 # CONFIG_ESP_TIMER_SHOW_EXPERIMENTAL is not set +# default: 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 +# default: CONFIG_ESP_TIMER_IMPL_TG0_LAC=y # end of ESP Timer (High Resolution Timer) # # Wi-Fi # +# default: CONFIG_ESP_WIFI_ENABLED=y CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 # CONFIG_ESP_WIFI_STATIC_TX_BUFFER is not set CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER=y +# default: CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1 CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y # CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set +# default: CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0 CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5 # CONFIG_ESP_WIFI_CSI_ENABLED is not set @@ -1400,10 +1987,14 @@ CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32 # CONFIG_ESP_WIFI_RX_IRAM_OPT is not set CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y CONFIG_ESP_WIFI_ENABLE_SAE_PK=y +# default: +CONFIG_ESP_WIFI_ENABLE_SAE_H2E=y CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y # CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set CONFIG_ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME=50 +# default: +# CONFIG_ESP_WIFI_BSS_MAX_IDLE_SUPPORT is not set CONFIG_ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME=10 CONFIG_ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15 CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE=y @@ -1418,6 +2009,8 @@ CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y # CONFIG_ESP_WIFI_11KV_SUPPORT is not set # CONFIG_ESP_WIFI_MBO_SUPPORT is not set # CONFIG_ESP_WIFI_DPP_SUPPORT is not set +# default: +# CONFIG_ESP_WIFI_P256_ACCEL is not set # CONFIG_ESP_WIFI_11R_SUPPORT is not set # CONFIG_ESP_WIFI_WPS_SOFTAP_REGISTRAR is not set @@ -1426,12 +2019,15 @@ CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y # # CONFIG_ESP_WIFI_WPS_STRICT is not set # CONFIG_ESP_WIFI_WPS_PASSPHRASE is not set +# default: +# CONFIG_ESP_WIFI_WPS_RECONNECT_ON_FAIL is not set # end of WPS Configuration Options # CONFIG_ESP_WIFI_DEBUG_PRINT is not set -# CONFIG_ESP_WIFI_TESTING_OPTIONS is not set CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y # CONFIG_ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER is not set +# default: +# CONFIG_ESP_WIFI_PASSIVE_HIDDEN_AP_SUPPORT is not set # end of Wi-Fi # @@ -1473,6 +2069,7 @@ CONFIG_FATFS_CODEPAGE_437=y # CONFIG_FATFS_CODEPAGE_936 is not set # CONFIG_FATFS_CODEPAGE_949 is not set # CONFIG_FATFS_CODEPAGE_950 is not set +# default: CONFIG_FATFS_CODEPAGE=437 CONFIG_FATFS_FS_LOCK=0 CONFIG_FATFS_TIMEOUT_MS=10000 @@ -1519,6 +2116,7 @@ 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 +# default: CONFIG_FREERTOS_TIMER_SERVICE_TASK_CORE_AFFINITY=0x7FFFFFFF CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 @@ -1538,13 +2136,16 @@ CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=1 CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y # CONFIG_FREERTOS_TASK_PRE_DELETION_HOOK is not set # CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set +# default: CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y CONFIG_FREERTOS_ISR_STACKSIZE=1536 CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y # CONFIG_FREERTOS_FPU_IN_ISR is not set +# default: CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER=y CONFIG_FREERTOS_CORETIMER_0=y # CONFIG_FREERTOS_CORETIMER_1 is not set +# default: CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y # CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set # CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set @@ -1555,13 +2156,22 @@ CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y # # end of Extra +# default: CONFIG_FREERTOS_PORT=y +# default: CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +# default: CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y +# default: CONFIG_FREERTOS_DEBUG_OCDAWARE=y +# default: CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +# default: CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y +# default: CONFIG_FREERTOS_NUMBER_OF_CORES=2 +# default: +CONFIG_FREERTOS_IN_IRAM=y # end of FreeRTOS # @@ -1571,9 +2181,8 @@ CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y # CONFIG_HAL_ASSERTION_DISABLE is not set # CONFIG_HAL_ASSERTION_SILENT is not set # CONFIG_HAL_ASSERTION_ENABLE is not set +# default: CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 -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) # @@ -1594,6 +2203,12 @@ CONFIG_HEAP_TRACING_OFF=y # # Log # +# default: +CONFIG_LOG_VERSION_1=y +# default: +# CONFIG_LOG_VERSION_2 is not set +# default: +CONFIG_LOG_VERSION=1 # # Log Level @@ -1604,6 +2219,7 @@ CONFIG_LOG_DEFAULT_LEVEL_NONE=y # CONFIG_LOG_DEFAULT_LEVEL_INFO is not set # CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set # CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set +# default: CONFIG_LOG_DEFAULT_LEVEL=0 CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y # CONFIG_LOG_MAXIMUM_LEVEL_ERROR is not set @@ -1611,6 +2227,7 @@ CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y # CONFIG_LOG_MAXIMUM_LEVEL_INFO is not set # CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set # CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set +# default: CONFIG_LOG_MAXIMUM_LEVEL=0 # @@ -1634,6 +2251,18 @@ CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_SIZE=31 CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y # CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set # end of Format + +# +# Settings +# +# default: +CONFIG_LOG_MODE_TEXT_EN=y +# default: +CONFIG_LOG_MODE_TEXT=y +# end of Settings + +# default: +CONFIG_LOG_IN_IRAM=y # end of Log # @@ -1641,7 +2270,6 @@ CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y # CONFIG_LWIP_ENABLE=y CONFIG_LWIP_LOCAL_HOSTNAME="espressif" -# CONFIG_LWIP_NETIF_API is not set CONFIG_LWIP_TCPIP_TASK_PRIO=18 # CONFIG_LWIP_TCPIP_CORE_LOCKING is not set # CONFIG_LWIP_CHECK_THREAD_SAFETY is not set @@ -1678,7 +2306,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 @@ -1747,13 +2375,40 @@ 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 +# default: CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 CONFIG_LWIP_IPV6_ND6_NUM_PREFIXES=5 CONFIG_LWIP_IPV6_ND6_NUM_ROUTERS=3 CONFIG_LWIP_IPV6_ND6_NUM_DESTINATIONS=10 -# CONFIG_LWIP_PPP_SUPPORT is not set +# default: +# CONFIG_LWIP_IPV6_ND6_ROUTE_INFO_OPTION_SUPPORT is not set +CONFIG_LWIP_PPP_SUPPORT=y +# default: +CONFIG_LWIP_PPP_ENABLE_IPV4=y +# default: +CONFIG_LWIP_PPP_ENABLE_IPV6=y +# default: +# CONFIG_LWIP_PPP_NOTIFY_PHASE_SUPPORT is not set +# default: +# CONFIG_LWIP_PPP_PAP_SUPPORT is not set +# default: +# CONFIG_LWIP_PPP_CHAP_SUPPORT is not set +# default: +# CONFIG_LWIP_PPP_MSCHAP_SUPPORT is not set +# default: +# CONFIG_LWIP_PPP_MPPE_SUPPORT is not set +# default: +# CONFIG_LWIP_PPP_SERVER_SUPPORT is not set +# default: +CONFIG_LWIP_PPP_VJ_HEADER_COMPRESSION=y +# default: +# CONFIG_LWIP_ENABLE_LCP_ECHO is not set +# default: +# CONFIG_LWIP_PPP_DEBUG_ON is not set +# default: +# CONFIG_LWIP_USE_EXTERNAL_MBEDTLS is not set # CONFIG_LWIP_SLIP_SUPPORT is not set # @@ -1787,6 +2442,8 @@ CONFIG_LWIP_DNS_MAX_HOST_IP=1 CONFIG_LWIP_DNS_MAX_SERVERS=3 # CONFIG_LWIP_FALLBACK_DNS_SERVER_SUPPORT is not set # CONFIG_LWIP_DNS_SETSERVER_WITH_NETIF is not set +# default: +# CONFIG_LWIP_USE_ESP_GETADDRINFO is not set # end of DNS CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 @@ -1807,6 +2464,12 @@ CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_NONE=y # CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT is not set # CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_CUSTOM is not set +# default: +CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_NONE=y +# default: +# CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_DEFAULT is not set +# default: +# CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_CUSTOM is not set CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set @@ -1840,6 +2503,8 @@ 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 +# default: +# CONFIG_MBEDTLS_SSL_KEYING_MATERIAL_EXPORT is not set CONFIG_MBEDTLS_PKCS7_C=y # end of mbedTLS v3.x related @@ -1876,8 +2541,11 @@ CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y # CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set # CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set # CONFIG_MBEDTLS_TLS_DISABLED is not set +# default: CONFIG_MBEDTLS_TLS_SERVER=y +# default: CONFIG_MBEDTLS_TLS_CLIENT=y +# default: CONFIG_MBEDTLS_TLS_ENABLED=y # @@ -1973,20 +2641,30 @@ CONFIG_MBEDTLS_FS_IO=y # end of ESP-MQTT Configurations # -# Newlib -# -CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y -# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set -# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set -# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set -# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set -CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y -# CONFIG_NEWLIB_NANO_FORMAT is not set -CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y -# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set -# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set -# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set -# end of Newlib +# LibC +# +# default: +CONFIG_LIBC_NEWLIB=y +# default: +# CONFIG_LIBC_PICOLIBC is not set +# default: +CONFIG_LIBC_MISC_IN_IRAM=y +# default: +CONFIG_LIBC_LOCKS_PLACE_IN_IRAM=y +CONFIG_LIBC_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_LIBC_STDOUT_LINE_ENDING_LF is not set +# CONFIG_LIBC_STDOUT_LINE_ENDING_CR is not set +# CONFIG_LIBC_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_LIBC_STDIN_LINE_ENDING_LF is not set +CONFIG_LIBC_STDIN_LINE_ENDING_CR=y +# CONFIG_LIBC_NEWLIB_NANO_FORMAT is not set +CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT=y +# CONFIG_LIBC_TIME_SYSCALL_USE_RTC is not set +# CONFIG_LIBC_TIME_SYSCALL_USE_HRT is not set +# CONFIG_LIBC_TIME_SYSCALL_USE_NONE is not set +# default: +CONFIG_LIBC_ASSERT_BUFFER_SIZE=200 +# end of LibC # # NVS @@ -2005,6 +2683,9 @@ CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y # # CONFIG_OPENTHREAD_SPINEL_ONLY is not set # end of OpenThread Spinel + +# default: +# CONFIG_OPENTHREAD_DEBUG is not set # end of OpenThread # @@ -2013,6 +2694,7 @@ CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y +# default: CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_PATCH_VERSION=y # end of Protocomm @@ -2025,6 +2707,7 @@ 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 +# default: CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" # end of PThreads @@ -2032,8 +2715,11 @@ CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" # # MMU Config # +# default: CONFIG_MMU_PAGE_SIZE_64KB=y +# default: CONFIG_MMU_PAGE_MODE="64KB" +# default: CONFIG_MMU_PAGE_SIZE=0x10000 # end of MMU Config @@ -2045,6 +2731,7 @@ CONFIG_MMU_PAGE_SIZE=0x10000 # SPI Flash behavior when brownout # CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y +# default: CONFIG_SPI_FLASH_BROWNOUT_RESET=y # end of SPI Flash behavior when brownout @@ -2058,6 +2745,8 @@ CONFIG_SPI_FLASH_BROWNOUT_RESET=y 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 +# default: +CONFIG_SPI_FLASH_PLACE_FUNCTIONS_IN_IRAM=y # end of Optional and Experimental Features (READ DOCS FIRST) # end of Main Flash configuration @@ -2083,11 +2772,16 @@ CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 # # Auto-detect flash chips # -CONFIG_SPI_FLASH_VENDOR_XMC_SUPPORTED=y -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 +# default: +CONFIG_SPI_FLASH_VENDOR_XMC_SUPPORT_ENABLED=y +# default: +CONFIG_SPI_FLASH_VENDOR_GD_SUPPORT_ENABLED=y +# default: +CONFIG_SPI_FLASH_VENDOR_ISSI_SUPPORT_ENABLED=y +# default: +CONFIG_SPI_FLASH_VENDOR_MXIC_SUPPORT_ENABLED=y +# default: +CONFIG_SPI_FLASH_VENDOR_WINBOND_SUPPORT_ENABLED=y CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y @@ -2169,6 +2863,8 @@ CONFIG_UNITY_ENABLE_DOUBLE=y CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y # CONFIG_UNITY_ENABLE_FIXTURE is not set # CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set +# default: +# CONFIG_UNITY_TEST_ORDER_BY_FILE_PATH_AND_LINE is not set # end of Unity unit testing library # @@ -2196,6 +2892,7 @@ CONFIG_VFS_INITIALIZE_DEV_NULL=y # # CONFIG_WL_SECTOR_SIZE_512 is not set CONFIG_WL_SECTOR_SIZE_4096=y +# default: CONFIG_WL_SECTOR_SIZE=4096 # end of Wear Levelling @@ -2222,15 +2919,30 @@ CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y # # esp-modem # +# default: CONFIG_ESP_MODEM_CMUX_DEFRAGMENT_PAYLOAD=y +# default: # CONFIG_ESP_MODEM_USE_INFLATABLE_BUFFER_IF_NEEDED is not set +# default: CONFIG_ESP_MODEM_CMUX_DELAY_AFTER_DLCI_SETUP=0 +# default: +CONFIG_ESP_MODEM_CMUX_DELAY_AFTER_NETIF_DISCONNECT=0 +# default: # CONFIG_ESP_MODEM_CMUX_USE_SHORT_PAYLOADS_ONLY is not set +# default: # CONFIG_ESP_MODEM_ADD_CUSTOM_MODULE is not set +# default: CONFIG_ESP_MODEM_C_API_STR_MAX=128 +# default: # CONFIG_ESP_MODEM_URC_HANDLER is not set +# default: # CONFIG_ESP_MODEM_PPP_ESCAPE_BEFORE_EXIT is not set +# default: # CONFIG_ESP_MODEM_ADD_DEBUG_LOGS is not set +# default: +# CONFIG_ESP_MODEM_ENABLE_DEVELOPMENT_MODE is not set +# default: +CONFIG_ESP_MODEM_USE_PPP_MODE=y # end of esp-modem # @@ -2244,6 +2956,7 @@ 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 +# default: CONFIG_MDNS_TASK_AFFINITY=0x0 # @@ -2309,6 +3022,7 @@ CONFIG_LITTLEFS_MTIME_USE_SECONDS=y # CONFIG_LITTLEFS_MALLOC_STRATEGY_DISABLE is not set CONFIG_LITTLEFS_MALLOC_STRATEGY_DEFAULT=y # CONFIG_LITTLEFS_MALLOC_STRATEGY_INTERNAL is not set +# CONFIG_LITTLEFS_MALLOC_STRATEGY_SPIRAM_PREFER is not set CONFIG_LITTLEFS_ASSERTS=y # CONFIG_LITTLEFS_MMAP_PARTITION is not set # CONFIG_LITTLEFS_WDT_RESET is not set @@ -2323,6 +3037,7 @@ CONFIG_LITTLEFS_ASSERTS=y # CONFIG_ESP32_NO_BLOBS is not set # CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set # CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set +# CONFIG_APP_ROLLBACK_ENABLE is not set # CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set # CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set # CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set @@ -2330,7 +3045,6 @@ CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y # CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set # CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set CONFIG_LOG_BOOTLOADER_LEVEL=3 -# CONFIG_APP_ROLLBACK_ENABLE is not set # CONFIG_FLASH_ENCRYPTION_ENABLED is not set # CONFIG_FLASHMODE_QIO is not set # CONFIG_FLASHMODE_QOUT is not set @@ -2359,45 +3073,42 @@ CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y CONFIG_NIMBLE_ENABLED=y CONFIG_NIMBLE_MEM_ALLOC_MODE_INTERNAL=y # CONFIG_NIMBLE_MEM_ALLOC_MODE_DEFAULT is not set -CONFIG_NIMBLE_MAX_CONNECTIONS=7 -CONFIG_NIMBLE_MAX_BONDS=1 -CONFIG_NIMBLE_MAX_CCCDS=0 -CONFIG_NIMBLE_L2CAP_COC_MAX_NUM=0 +CONFIG_NIMBLE_PINNED_TO_CORE=0 CONFIG_NIMBLE_PINNED_TO_CORE_0=y # CONFIG_NIMBLE_PINNED_TO_CORE_1 is not set -CONFIG_NIMBLE_PINNED_TO_CORE=0 CONFIG_NIMBLE_TASK_STACK_SIZE=4096 CONFIG_BT_NIMBLE_TASK_STACK_SIZE=4096 CONFIG_NIMBLE_ROLE_CENTRAL=y CONFIG_NIMBLE_ROLE_PERIPHERAL=y CONFIG_NIMBLE_ROLE_BROADCASTER=y CONFIG_NIMBLE_ROLE_OBSERVER=y -# CONFIG_NIMBLE_NVS_PERSIST is not set -# CONFIG_NIMBLE_DEBUG is not set -CONFIG_NIMBLE_SVC_GAP_DEVICE_NAME="nimble" -CONFIG_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=31 +CONFIG_NIMBLE_RPA_TIMEOUT=900 +CONFIG_NIMBLE_MAX_CONNECTIONS=7 +CONFIG_NIMBLE_MAX_CCCDS=0 +CONFIG_NIMBLE_CRYPTO_STACK_MBEDTLS=y +CONFIG_NIMBLE_HS_FLOW_CTRL=y +CONFIG_NIMBLE_HS_FLOW_CTRL_ITVL=1000 +CONFIG_NIMBLE_HS_FLOW_CTRL_THRESH=2 +CONFIG_NIMBLE_HS_FLOW_CTRL_TX_ON_DISCONNECT=y CONFIG_NIMBLE_ATT_PREFERRED_MTU=256 -CONFIG_NIMBLE_SVC_GAP_APPEARANCE=0 +CONFIG_NIMBLE_L2CAP_COC_MAX_NUM=0 CONFIG_BT_NIMBLE_MSYS1_BLOCK_COUNT=12 CONFIG_BT_NIMBLE_ACL_BUF_COUNT=24 CONFIG_BT_NIMBLE_ACL_BUF_SIZE=255 CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE=70 CONFIG_BT_NIMBLE_HCI_EVT_HI_BUF_COUNT=30 CONFIG_BT_NIMBLE_HCI_EVT_LO_BUF_COUNT=8 -CONFIG_NIMBLE_HS_FLOW_CTRL=y -CONFIG_NIMBLE_HS_FLOW_CTRL_ITVL=1000 -CONFIG_NIMBLE_HS_FLOW_CTRL_THRESH=2 -CONFIG_NIMBLE_HS_FLOW_CTRL_TX_ON_DISCONNECT=y -CONFIG_NIMBLE_RPA_TIMEOUT=900 +CONFIG_NIMBLE_SVC_GAP_DEVICE_NAME="nimble" +CONFIG_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=31 +CONFIG_NIMBLE_SVC_GAP_APPEARANCE=0 # CONFIG_NIMBLE_MESH is not set -CONFIG_NIMBLE_CRYPTO_STACK_MBEDTLS=y +# CONFIG_NIMBLE_DEBUG is not set CONFIG_BTDM_CONTROLLER_MODE_BLE_ONLY=y # CONFIG_BTDM_CONTROLLER_MODE_BR_EDR_ONLY is not set # CONFIG_BTDM_CONTROLLER_MODE_BTDM is not set CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN=7 CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=7 CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 -CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 CONFIG_BTDM_CONTROLLER_HCI_MODE_VHCI=y # CONFIG_BTDM_CONTROLLER_HCI_MODE_UART_H4 is not set @@ -2417,7 +3128,8 @@ CONFIG_ADC2_DISABLE_DAC=y CONFIG_SW_COEXIST_ENABLE=y CONFIG_ESP32_WIFI_SW_COEXIST_ENABLE=y CONFIG_ESP_WIFI_SW_COEXIST_ENABLE=y -# CONFIG_MCPWM_ISR_IN_IRAM is not set +# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set +# CONFIG_MCPWM_ISR_IRAM_SAFE is not set # CONFIG_EVENT_LOOP_PROFILING is not set CONFIG_POST_EVENTS_FROM_ISR=y CONFIG_POST_EVENTS_FROM_IRAM_ISR=y @@ -2439,10 +3151,32 @@ CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y # CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set # CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y # CONFIG_ESP32_XTAL_FREQ_26 is not set CONFIG_ESP32_XTAL_FREQ_40=y # CONFIG_ESP32_XTAL_FREQ_AUTO is not set CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_BROWNOUT_DET=y +CONFIG_ESP32_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_ESP32_BROWNOUT_DET_LVL=0 +CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y # CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 @@ -2481,26 +3215,6 @@ CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y # CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set CONFIG_ESP32_DEBUG_OCDAWARE=y -CONFIG_BROWNOUT_DET=y -CONFIG_ESP32_BROWNOUT_DET=y -CONFIG_BROWNOUT_DET_LVL_SEL_0=y -CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y -# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set -# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set -CONFIG_BROWNOUT_DET_LVL=0 -CONFIG_ESP32_BROWNOUT_DET_LVL=0 # CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set CONFIG_IPC_TASK_STACK_SIZE=1024 CONFIG_TIMER_TASK_STACK_SIZE=3584 @@ -2535,7 +3249,6 @@ CONFIG_WPA_MBEDTLS_TLS_CLIENT=y # CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set # CONFIG_WPA_WPS_STRICT is not set # CONFIG_WPA_DEBUG_PRINT is not set -# CONFIG_WPA_TESTING_OPTIONS is not set # CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set # CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y @@ -2565,12 +3278,29 @@ 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_PPP_SUPPORT=y +# CONFIG_PPP_NOTIFY_PHASE_SUPPORT is not set +# CONFIG_PPP_PAP_SUPPORT is not set +# CONFIG_PPP_CHAP_SUPPORT is not set +# CONFIG_PPP_MSCHAP_SUPPORT is not set +# CONFIG_PPP_MPPE_SUPPORT is not set +# CONFIG_PPP_DEBUG_ON is not set +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +# CONFIG_NEWLIB_NANO_FORMAT is not set +CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y CONFIG_ESP32_TIME_SYSCALL_USE_RTC_HRT=y CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set # CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set # CONFIG_ESP32_TIME_SYSCALL_USE_HRT is not set # CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set # CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 diff --git a/sdkconfig.release.old b/sdkconfig.release.old index d3f58118..734e985e 100644 --- a/sdkconfig.release.old +++ b/sdkconfig.release.old @@ -1,254 +1,510 @@ # # Automatically generated file. DO NOT EDIT. -# Espressif IoT Development Framework (ESP-IDF) 5.4.2 Project Configuration +# Espressif IoT Development Framework (ESP-IDF) 5.5.5 Project Configuration # -CONFIG_SOC_BROWNOUT_RESET_SUPPORTED="Not determined" -CONFIG_SOC_TWAI_BRP_DIV_SUPPORTED="Not determined" -CONFIG_SOC_DPORT_WORKAROUND="Not determined" +# default: CONFIG_SOC_CAPS_ECO_VER_MAX=301 +# default: CONFIG_SOC_ADC_SUPPORTED=y +# default: CONFIG_SOC_DAC_SUPPORTED=y +# default: CONFIG_SOC_UART_SUPPORTED=y +# default: CONFIG_SOC_MCPWM_SUPPORTED=y +# default: CONFIG_SOC_GPTIMER_SUPPORTED=y +# default: CONFIG_SOC_SDMMC_HOST_SUPPORTED=y +# default: CONFIG_SOC_BT_SUPPORTED=y +# default: CONFIG_SOC_PCNT_SUPPORTED=y +# default: CONFIG_SOC_PHY_SUPPORTED=y +# default: CONFIG_SOC_WIFI_SUPPORTED=y +# default: CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y +# default: CONFIG_SOC_TWAI_SUPPORTED=y +# default: CONFIG_SOC_EFUSE_SUPPORTED=y +# default: CONFIG_SOC_EMAC_SUPPORTED=y +# default: CONFIG_SOC_ULP_SUPPORTED=y +# default: CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y +# default: CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y +# default: CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y +# default: CONFIG_SOC_RTC_MEM_SUPPORTED=y +# default: CONFIG_SOC_I2S_SUPPORTED=y +# default: CONFIG_SOC_RMT_SUPPORTED=y +# default: CONFIG_SOC_SDM_SUPPORTED=y +# default: CONFIG_SOC_GPSPI_SUPPORTED=y +# default: CONFIG_SOC_LEDC_SUPPORTED=y +# default: CONFIG_SOC_I2C_SUPPORTED=y +# default: CONFIG_SOC_SUPPORT_COEXISTENCE=y +# default: CONFIG_SOC_AES_SUPPORTED=y +# default: CONFIG_SOC_MPI_SUPPORTED=y +# default: CONFIG_SOC_SHA_SUPPORTED=y +# default: CONFIG_SOC_FLASH_ENC_SUPPORTED=y +# default: CONFIG_SOC_SECURE_BOOT_SUPPORTED=y +# default: CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y +# default: CONFIG_SOC_BOD_SUPPORTED=y +# default: CONFIG_SOC_ULP_FSM_SUPPORTED=y +# default: CONFIG_SOC_CLK_TREE_SUPPORTED=y +# default: CONFIG_SOC_MPU_SUPPORTED=y +# default: CONFIG_SOC_WDT_SUPPORTED=y +# default: CONFIG_SOC_SPI_FLASH_SUPPORTED=y +# default: CONFIG_SOC_RNG_SUPPORTED=y +# default: CONFIG_SOC_LIGHT_SLEEP_SUPPORTED=y +# default: CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y +# default: CONFIG_SOC_LP_PERIPH_SHARE_INTERRUPT=y +# default: CONFIG_SOC_PM_SUPPORTED=y +# default: CONFIG_SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL=5 +# default: CONFIG_SOC_XTAL_SUPPORT_26M=y +# default: CONFIG_SOC_XTAL_SUPPORT_40M=y +# default: CONFIG_SOC_XTAL_SUPPORT_AUTO_DETECT=y +# default: CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y +# default: CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y +# default: CONFIG_SOC_ADC_DMA_SUPPORTED=y +# default: CONFIG_SOC_ADC_PERIPH_NUM=2 +# default: CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10 +# default: CONFIG_SOC_ADC_ATTEN_NUM=4 +# default: CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2 +# default: CONFIG_SOC_ADC_PATT_LEN_MAX=16 +# default: CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=9 +# default: CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 +# default: CONFIG_SOC_ADC_DIGI_RESULT_BYTES=2 +# default: CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 +# default: CONFIG_SOC_ADC_DIGI_MONITOR_NUM=0 +# default: CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=2 +# default: CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=20 +# default: CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=9 +# default: CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +# default: CONFIG_SOC_ADC_SHARED_POWER=y +# default: +CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y +# default: CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y +# default: CONFIG_SOC_IDCACHE_PER_CORE=y +# default: CONFIG_SOC_CPU_CORES_NUM=2 +# default: CONFIG_SOC_CPU_INTR_NUM=32 +# default: CONFIG_SOC_CPU_HAS_FPU=y +# default: CONFIG_SOC_HP_CPU_HAS_MULTIPLE_CORES=y +# default: CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 +# default: CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 -CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=64 +# default: +CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=0x40 +# default: CONFIG_SOC_DAC_CHAN_NUM=2 +# default: CONFIG_SOC_DAC_RESOLUTION=8 +# default: CONFIG_SOC_DAC_DMA_16BIT_ALIGN=y +# default: CONFIG_SOC_GPIO_PORT=1 +# default: CONFIG_SOC_GPIO_PIN_COUNT=40 +# default: CONFIG_SOC_GPIO_VALID_GPIO_MASK=0xFFFFFFFFFF +# default: CONFIG_SOC_GPIO_IN_RANGE_MAX=39 +# default: CONFIG_SOC_GPIO_OUT_RANGE_MAX=33 +# default: CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0xEF0FEA +# default: CONFIG_SOC_GPIO_CLOCKOUT_BY_IO_MUX=y +# default: CONFIG_SOC_GPIO_CLOCKOUT_CHANNEL_NUM=3 -CONFIG_SOC_GPIO_SUPPORT_HOLD_IO_IN_DSLP=y +# default: CONFIG_SOC_I2C_NUM=2 +# default: CONFIG_SOC_HP_I2C_NUM=2 +# default: CONFIG_SOC_I2C_FIFO_LEN=32 +# default: CONFIG_SOC_I2C_CMD_REG_NUM=16 +# default: CONFIG_SOC_I2C_SUPPORT_SLAVE=y +# default: CONFIG_SOC_I2C_SUPPORT_APB=y +# default: CONFIG_SOC_I2C_SUPPORT_10BIT_ADDR=y +# default: CONFIG_SOC_I2C_STOP_INDEPENDENT=y +# default: CONFIG_SOC_I2S_NUM=2 +# default: CONFIG_SOC_I2S_HW_VERSION_1=y +# default: CONFIG_SOC_I2S_SUPPORTS_APLL=y +# default: CONFIG_SOC_I2S_SUPPORTS_PLL_F160M=y +# default: CONFIG_SOC_I2S_SUPPORTS_PDM=y +# default: CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y -CONFIG_SOC_I2S_PDM_MAX_TX_LINES=1 +# default: +CONFIG_SOC_I2S_SUPPORTS_PCM2PDM=y +# default: CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +# default: +CONFIG_SOC_I2S_SUPPORTS_PDM2PCM=y +# default: +CONFIG_SOC_I2S_PDM_MAX_TX_LINES=1 +# default: CONFIG_SOC_I2S_PDM_MAX_RX_LINES=1 +# default: CONFIG_SOC_I2S_SUPPORTS_ADC_DAC=y +# default: CONFIG_SOC_I2S_SUPPORTS_ADC=y +# default: CONFIG_SOC_I2S_SUPPORTS_DAC=y +# default: CONFIG_SOC_I2S_SUPPORTS_LCD_CAMERA=y +# default: CONFIG_SOC_I2S_MAX_DATA_WIDTH=24 +# default: CONFIG_SOC_I2S_TRANS_SIZE_ALIGN_WORD=y +# default: CONFIG_SOC_I2S_LCD_I80_VARIANT=y +# default: CONFIG_SOC_LCD_I80_SUPPORTED=y +# default: CONFIG_SOC_LCD_I80_BUSES=2 +# default: CONFIG_SOC_LCD_I80_BUS_WIDTH=24 +# default: CONFIG_SOC_LEDC_HAS_TIMER_SPECIFIC_MUX=y +# default: CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y +# default: CONFIG_SOC_LEDC_SUPPORT_REF_TICK=y +# default: CONFIG_SOC_LEDC_SUPPORT_HS_MODE=y +# default: CONFIG_SOC_LEDC_TIMER_NUM=4 +# default: CONFIG_SOC_LEDC_CHANNEL_NUM=8 +# default: CONFIG_SOC_LEDC_TIMER_BIT_WIDTH=20 +# default: CONFIG_SOC_MCPWM_GROUPS=2 +# default: CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 +# default: CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 +# default: CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 +# default: CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 +# default: CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 +# default: CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 +# default: CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y +# default: CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 +# default: CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 +# default: CONFIG_SOC_MMU_PERIPH_NUM=2 +# default: CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=3 +# default: CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 +# default: CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 +# default: CONFIG_SOC_PCNT_GROUPS=1 +# default: CONFIG_SOC_PCNT_UNITS_PER_GROUP=8 +# default: CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 +# default: CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 +# default: CONFIG_SOC_RMT_GROUPS=1 +# default: CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=8 +# default: CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=8 +# default: CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8 +# default: CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=64 +# default: CONFIG_SOC_RMT_SUPPORT_REF_TICK=y +# default: CONFIG_SOC_RMT_SUPPORT_APB=y +# default: CONFIG_SOC_RMT_CHANNEL_CLK_INDEPENDENT=y +# default: CONFIG_SOC_RTCIO_PIN_COUNT=18 +# default: CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y +# default: CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y +# default: CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y +# default: +CONFIG_SOC_RTC_CNTL_NEEDS_ATOMIC_ACCESS=y +# default: CONFIG_SOC_SDM_GROUPS=1 +# default: CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 +# default: CONFIG_SOC_SDM_CLK_SUPPORT_APB=y +# default: CONFIG_SOC_SPI_HD_BOTH_INOUT_SUPPORTED=y +# default: CONFIG_SOC_SPI_AS_CS_SUPPORTED=y +# default: CONFIG_SOC_SPI_PERIPH_NUM=3 +# default: CONFIG_SOC_SPI_DMA_CHAN_NUM=2 +# default: CONFIG_SOC_SPI_MAX_CS_NUM=3 +# default: CONFIG_SOC_SPI_SUPPORT_CLK_APB=y +# default: CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 +# default: 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 +# default: CONFIG_SOC_TIMER_GROUPS=2 +# default: CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2 +# default: CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=64 +# default: CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 +# default: CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y +# default: CONFIG_SOC_LP_TIMER_BIT_WIDTH_LO=32 +# default: CONFIG_SOC_LP_TIMER_BIT_WIDTH_HI=16 +# default: CONFIG_SOC_TOUCH_SENSOR_VERSION=1 +# default: CONFIG_SOC_TOUCH_SENSOR_NUM=10 +# default: +CONFIG_SOC_TOUCH_MIN_CHAN_ID=0 +# default: +CONFIG_SOC_TOUCH_MAX_CHAN_ID=9 +# default: +CONFIG_SOC_TOUCH_SUPPORT_SLEEP_WAKEUP=y +# default: CONFIG_SOC_TOUCH_SAMPLE_CFG_NUM=1 +# default: CONFIG_SOC_TWAI_CONTROLLER_NUM=1 +# default: +CONFIG_SOC_TWAI_MASK_FILTER_NUM=1 +# default: CONFIG_SOC_TWAI_BRP_MIN=2 +# default: CONFIG_SOC_TWAI_CLK_SUPPORT_APB=y +# default: CONFIG_SOC_TWAI_SUPPORT_MULTI_ADDRESS_LAYOUT=y +# default: CONFIG_SOC_UART_NUM=3 +# default: CONFIG_SOC_UART_HP_NUM=3 +# default: CONFIG_SOC_UART_SUPPORT_APB_CLK=y +# default: CONFIG_SOC_UART_SUPPORT_REF_TICK=y +# default: CONFIG_SOC_UART_FIFO_LEN=128 +# default: CONFIG_SOC_UART_BITRATE_MAX=5000000 +# default: +CONFIG_SOC_UART_WAKEUP_SUPPORT_ACTIVE_THRESH_MODE=y +# default: CONFIG_SOC_SPIRAM_SUPPORTED=y +# default: CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y +# default: +CONFIG_SOC_MEMSPI_ENCRYPTION_ALIGNMENT=16 +# default: CONFIG_SOC_SHA_SUPPORT_PARALLEL_ENG=y +# default: CONFIG_SOC_SHA_ENDIANNESS_BE=y +# default: CONFIG_SOC_SHA_SUPPORT_SHA1=y +# default: CONFIG_SOC_SHA_SUPPORT_SHA256=y +# default: CONFIG_SOC_SHA_SUPPORT_SHA384=y +# default: CONFIG_SOC_SHA_SUPPORT_SHA512=y +# default: CONFIG_SOC_MPI_MEM_BLOCKS_NUM=4 -CONFIG_SOC_MPI_OPERATIONS_NUM=y +# default: +CONFIG_SOC_MPI_OPERATIONS_NUM=1 +# default: CONFIG_SOC_RSA_MAX_BIT_LEN=4096 +# default: CONFIG_SOC_AES_SUPPORT_AES_128=y +# default: CONFIG_SOC_AES_SUPPORT_AES_192=y +# default: CONFIG_SOC_AES_SUPPORT_AES_256=y +# default: CONFIG_SOC_SECURE_BOOT_V1=y -CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=y +# default: +CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=1 +# default: CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32 +# default: CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 +# default: CONFIG_SOC_PM_SUPPORT_EXT0_WAKEUP=y +# default: CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP=y +# default: CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y +# default: CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y +# default: CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y +# default: CONFIG_SOC_PM_SUPPORT_RTC_FAST_MEM_PD=y +# default: CONFIG_SOC_PM_SUPPORT_RTC_SLOW_MEM_PD=y +# default: CONFIG_SOC_PM_SUPPORT_RC_FAST_PD=y +# default: CONFIG_SOC_PM_SUPPORT_VDDSDIO_PD=y +# default: CONFIG_SOC_PM_SUPPORT_MODEM_PD=y +# default: CONFIG_SOC_CONFIGURABLE_VDDSDIO_SUPPORTED=y +# default: CONFIG_SOC_PM_MODEM_PD_BY_SW=y +# default: CONFIG_SOC_CLK_APLL_SUPPORTED=y +# default: CONFIG_SOC_CLK_RC_FAST_D256_SUPPORTED=y +# default: CONFIG_SOC_RTC_SLOW_CLK_SUPPORT_RC_FAST_D256=y +# default: CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y +# default: CONFIG_SOC_CLK_XTAL32K_SUPPORTED=y +# default: +CONFIG_SOC_CLK_LP_FAST_SUPPORT_XTAL_D4=y +# default: CONFIG_SOC_SDMMC_USE_IOMUX=y +# default: CONFIG_SOC_SDMMC_NUM_SLOTS=2 +# default: CONFIG_SOC_WIFI_WAPI_SUPPORT=y +# default: CONFIG_SOC_WIFI_CSI_SUPPORT=y +# default: CONFIG_SOC_WIFI_MESH_SUPPORT=y +# default: CONFIG_SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW=y +# default: CONFIG_SOC_WIFI_NAN_SUPPORT=y +# default: CONFIG_SOC_BLE_SUPPORTED=y +# default: CONFIG_SOC_BLE_MESH_SUPPORTED=y +# default: CONFIG_SOC_BT_CLASSIC_SUPPORTED=y +# default: CONFIG_SOC_BLUFI_SUPPORTED=y +# default: CONFIG_SOC_BT_H2C_ENC_KEY_CTRL_ENH_VSC_SUPPORTED=y +# default: +CONFIG_SOC_BLE_MULTI_CONN_OPTIMIZATION=y +# default: CONFIG_SOC_ULP_HAS_ADC=y +# default: CONFIG_SOC_PHY_COMBO_MODULE=y +# default: CONFIG_SOC_EMAC_RMII_CLK_OUT_INTERNAL_LOOPBACK=y +# default: CONFIG_IDF_CMAKE=y +# default: CONFIG_IDF_TOOLCHAIN="gcc" +# default: CONFIG_IDF_TOOLCHAIN_GCC=y +# default: CONFIG_IDF_TARGET_ARCH_XTENSA=y +# default: CONFIG_IDF_TARGET_ARCH="xtensa" +# default: CONFIG_IDF_TARGET="esp32" +# default: CONFIG_IDF_INIT_VERSION="5.4.1" +# default: CONFIG_IDF_TARGET_ESP32=y +# default: CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 # @@ -256,8 +512,11 @@ CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 # CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y # CONFIG_APP_BUILD_TYPE_RAM is not set +# default: CONFIG_APP_BUILD_GENERATE_BINARIES=y +# default: CONFIG_APP_BUILD_BOOTLOADER=y +# default: CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y # CONFIG_APP_REPRODUCIBLE_BUILD is not set # CONFIG_APP_NO_BLOBS is not set @@ -276,6 +535,18 @@ CONFIG_BOOTLOADER_COMPILE_TIME_DATE=y CONFIG_BOOTLOADER_PROJECT_VER=1 # end of Bootloader manager +# +# Application Rollback +# +# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set +# end of Application Rollback + +# +# Recovery Bootloader and Rollback +# +# end of Recovery Bootloader and Rollback + +# default: CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000 CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set @@ -285,12 +556,17 @@ CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y # # Log # +# default: +CONFIG_BOOTLOADER_LOG_VERSION_1=y +# default: +CONFIG_BOOTLOADER_LOG_VERSION=1 # CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set # CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set # CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y # CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set # CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set +# default: CONFIG_BOOTLOADER_LOG_LEVEL=3 # @@ -299,6 +575,15 @@ CONFIG_BOOTLOADER_LOG_LEVEL=3 # CONFIG_BOOTLOADER_LOG_COLORS is not set CONFIG_BOOTLOADER_LOG_TIMESTAMP_SOURCE_CPU_TICKS=y # end of Format + +# +# Settings +# +# default: +CONFIG_BOOTLOADER_LOG_MODE_TEXT_EN=y +# default: +CONFIG_BOOTLOADER_LOG_MODE_TEXT=y +# end of Settings # end of Log # @@ -316,10 +601,10 @@ CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y CONFIG_BOOTLOADER_WDT_ENABLE=y # CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set CONFIG_BOOTLOADER_WDT_TIME_MS=9000 -# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set # CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set # CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set # CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set +# default: CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 # CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set # end of Bootloader config @@ -327,6 +612,7 @@ CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 # # Security features # +# default: CONFIG_SECURE_BOOT_V1_SUPPORTED=y # CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set # CONFIG_SECURE_BOOT is not set @@ -343,19 +629,33 @@ CONFIG_APP_COMPILE_TIME_DATE=y CONFIG_APP_RETRIEVE_LEN_ELF_SHA=9 # end of Application manager +# default: CONFIG_ESP_ROM_HAS_CRC_LE=y +# default: CONFIG_ESP_ROM_HAS_CRC_BE=y +# default: CONFIG_ESP_ROM_HAS_MZ_CRC32=y +# default: CONFIG_ESP_ROM_HAS_JPEG_DECODE=y +# default: CONFIG_ESP_ROM_HAS_UART_BUF_SWITCH=y +# default: CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y +# default: CONFIG_ESP_ROM_HAS_NEWLIB=y +# default: CONFIG_ESP_ROM_HAS_NEWLIB_NANO_FORMAT=y +# default: CONFIG_ESP_ROM_HAS_NEWLIB_32BIT_TIME=y +# default: CONFIG_ESP_ROM_HAS_SW_FLOAT=y +# default: CONFIG_ESP_ROM_USB_OTG_NUM=-1 +# default: CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=-1 +# default: CONFIG_ESP_ROM_SUPPORT_DEEP_SLEEP_WAKEUP_STUB=y +# default: CONFIG_ESP_ROM_HAS_OUTPUT_PUTC_FUNC=y # @@ -367,11 +667,13 @@ CONFIG_ESP_ROM_HAS_OUTPUT_PUTC_FUNC=y CONFIG_ESPTOOLPY_FLASHMODE_DIO=y # CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y +# default: CONFIG_ESPTOOLPY_FLASHMODE="dio" # CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set CONFIG_ESPTOOLPY_FLASHFREQ_40M=y # CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set # CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set +# default: CONFIG_ESPTOOLPY_FLASHFREQ="40m" # CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y @@ -381,14 +683,18 @@ CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y # CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +# default: CONFIG_ESPTOOLPY_FLASHSIZE="2MB" # CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set CONFIG_ESPTOOLPY_BEFORE_RESET=y # CONFIG_ESPTOOLPY_BEFORE_NORESET is not set +# default: CONFIG_ESPTOOLPY_BEFORE="default_reset" CONFIG_ESPTOOLPY_AFTER_RESET=y # CONFIG_ESPTOOLPY_AFTER_NORESET is not set +# default: CONFIG_ESPTOOLPY_AFTER="hard_reset" +# default: CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 # end of Serial flasher config @@ -401,6 +707,7 @@ CONFIG_PARTITION_TABLE_SINGLE_APP=y # CONFIG_PARTITION_TABLE_TWO_OTA_LARGE is not set # CONFIG_PARTITION_TABLE_CUSTOM is not set CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +# default: CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" CONFIG_PARTITION_TABLE_OFFSET=0x8000 CONFIG_PARTITION_TABLE_MD5=y @@ -410,28 +717,35 @@ CONFIG_PARTITION_TABLE_MD5=y # Arduino Configuration # CONFIG_ARDUINO_VARIANT="esp32" +# default: CONFIG_ENABLE_ARDUINO_DEPENDS=y # CONFIG_AUTOSTART_ARDUINO is not set # CONFIG_ARDUINO_RUN_CORE0 is not set CONFIG_ARDUINO_RUN_CORE1=y # CONFIG_ARDUINO_RUN_NO_AFFINITY is not set +# default: CONFIG_ARDUINO_RUNNING_CORE=1 CONFIG_ARDUINO_LOOP_STACK_SIZE=8192 # CONFIG_ARDUINO_EVENT_RUN_CORE0 is not set CONFIG_ARDUINO_EVENT_RUN_CORE1=y # CONFIG_ARDUINO_EVENT_RUN_NO_AFFINITY is not set +# default: CONFIG_ARDUINO_EVENT_RUNNING_CORE=1 # CONFIG_ARDUINO_SERIAL_EVENT_RUN_CORE0 is not set # CONFIG_ARDUINO_SERIAL_EVENT_RUN_CORE1 is not set CONFIG_ARDUINO_SERIAL_EVENT_RUN_NO_AFFINITY=y +# default: CONFIG_ARDUINO_SERIAL_EVENT_TASK_RUNNING_CORE=-1 CONFIG_ARDUINO_SERIAL_EVENT_TASK_STACK_SIZE=2048 CONFIG_ARDUINO_SERIAL_EVENT_TASK_PRIORITY=24 CONFIG_ARDUINO_UDP_RUN_CORE0=y # CONFIG_ARDUINO_UDP_RUN_CORE1 is not set # CONFIG_ARDUINO_UDP_RUN_NO_AFFINITY is not set +# default: CONFIG_ARDUINO_UDP_RUNNING_CORE=0 CONFIG_ARDUINO_UDP_TASK_PRIORITY=3 +# default: +CONFIG_ARDUINO_UDP_TASK_STACK_SIZE=4096 # CONFIG_ARDUINO_ISR_IRAM is not set # CONFIG_DISABLE_HAL_LOCKS is not set @@ -444,6 +758,7 @@ CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_NONE=y # CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_INFO is not set # CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_DEBUG is not set # CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_VERBOSE is not set +# default: CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL=0 # CONFIG_ARDUHAL_LOG_COLORS is not set # CONFIG_ARDUHAL_ESP_LOG is not set @@ -454,37 +769,41 @@ CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL=0 # CONFIG_ARDUHAL_PARTITION_SCHEME_NO_OTA is not set # CONFIG_ARDUHAL_PARTITION_SCHEME_HUGE_APP is not set CONFIG_ARDUHAL_PARTITION_SCHEME_MIN_SPIFFS=y +# default: CONFIG_ARDUHAL_PARTITION_SCHEME="min_spiffs" CONFIG_ARDUINO_SELECTIVE_COMPILATION=y CONFIG_ARDUINO_SELECTIVE_SPI=y CONFIG_ARDUINO_SELECTIVE_Wire=y # CONFIG_ARDUINO_SELECTIVE_ESP_SR is not set +# CONFIG_ARDUINO_SELECTIVE_ESP_Video is not set CONFIG_ARDUINO_SELECTIVE_EEPROM=y -# CONFIG_ARDUINO_SELECTIVE_Preferences is not set +CONFIG_ARDUINO_SELECTIVE_Preferences=y # CONFIG_ARDUINO_SELECTIVE_Ticker is not set CONFIG_ARDUINO_SELECTIVE_Update=y # CONFIG_ARDUINO_SELECTIVE_Zigbee is not set CONFIG_ARDUINO_SELECTIVE_FS=y -# CONFIG_ARDUINO_SELECTIVE_SD is not set -# CONFIG_ARDUINO_SELECTIVE_SD_MMC is not set -# CONFIG_ARDUINO_SELECTIVE_SPIFFS is not set -# CONFIG_ARDUINO_SELECTIVE_FFat is not set +CONFIG_ARDUINO_SELECTIVE_SD=y +CONFIG_ARDUINO_SELECTIVE_SD_MMC=y +CONFIG_ARDUINO_SELECTIVE_SPIFFS=y +CONFIG_ARDUINO_SELECTIVE_FFat=y CONFIG_ARDUINO_SELECTIVE_LittleFS=y CONFIG_ARDUINO_SELECTIVE_Network=y # CONFIG_ARDUINO_SELECTIVE_Ethernet is not set CONFIG_ARDUINO_SELECTIVE_PPP=y +# default: +CONFIG_ARDUINO_SELECTIVE_Hash=y CONFIG_ARDUINO_SELECTIVE_ArduinoOTA=y CONFIG_ARDUINO_SELECTIVE_AsyncUDP=y CONFIG_ARDUINO_SELECTIVE_DNSServer=y CONFIG_ARDUINO_SELECTIVE_ESPmDNS=y CONFIG_ARDUINO_SELECTIVE_HTTPClient=y # CONFIG_ARDUINO_SELECTIVE_Matter is not set -# CONFIG_ARDUINO_SELECTIVE_NetBIOS is not set +CONFIG_ARDUINO_SELECTIVE_NetBIOS=y CONFIG_ARDUINO_SELECTIVE_WebServer=y CONFIG_ARDUINO_SELECTIVE_WiFi=y CONFIG_ARDUINO_SELECTIVE_NetworkClientSecure=y # CONFIG_ARDUINO_SELECTIVE_WiFiProv is not set -# CONFIG_ARDUINO_SELECTIVE_BLE is not set +CONFIG_ARDUINO_SELECTIVE_BLE=y # CONFIG_ARDUINO_SELECTIVE_BluetoothSerial is not set # CONFIG_ARDUINO_SELECTIVE_SimpleBLE is not set # CONFIG_ARDUINO_SELECTIVE_RainMaker is not set @@ -504,6 +823,7 @@ CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set CONFIG_COMPILER_ASSERT_NDEBUG_EVALUATE=y CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y +# default: CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 # CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set CONFIG_COMPILER_HIDE_PATHS_MACROS=y @@ -521,6 +841,7 @@ CONFIG_COMPILER_DISABLE_DEFAULT_ERRORS=y # CONFIG_COMPILER_DISABLE_GCC14_WARNINGS is not set # CONFIG_COMPILER_DUMP_RTL_FILES is not set CONFIG_COMPILER_RT_LIB_GCCLIB=y +# default: CONFIG_COMPILER_RT_LIB_NAME="gcc" CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING=y # CONFIG_COMPILER_ORPHAN_SECTIONS_PLACE is not set @@ -540,6 +861,7 @@ CONFIG_APPTRACE_DEST_NONE=y # CONFIG_APPTRACE_DEST_UART2 is not set CONFIG_APPTRACE_DEST_UART_NONE=y CONFIG_APPTRACE_UART_TASK_PRIO=1 +# default: CONFIG_APPTRACE_LOCK_ENABLE=y # end of Application Level Tracing @@ -553,42 +875,112 @@ CONFIG_BT_NIMBLE_ENABLED=y CONFIG_BT_CONTROLLER_ENABLED=y # CONFIG_BT_CONTROLLER_DISABLED is not set +# +# Common Options +# +CONFIG_BT_ALARM_MAX_NUM=50 +# default: +# CONFIG_BT_BLE_HOST_ALLOW_SUB_SPEC_MIN_CONN_INT is not set + +# +# BT Logs +# + +# +# Log Sources +# +# end of Log Sources + +# default: +# CONFIG_BT_LOG_CRITICAL_ONLY is not set +# default: +# CONFIG_BLE_LOG_ENABLED is not set + +# +# Legacy SPI Log Output (Deprecated - use BT Log Async Output instead) +# +# CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED is not set +# end of Legacy SPI Log Output (Deprecated - use BT Log Async Output instead) +# end of BT Logs + +# default: +# CONFIG_BT_LE_USED_MEM_STATISTICS_ENABLED is not set +# end of Common Options + # # NimBLE Options # + +# +# General +# CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL=y # CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_DEFAULT is not set -# CONFIG_BT_NIMBLE_LOG_LEVEL_NONE is not set -# CONFIG_BT_NIMBLE_LOG_LEVEL_ERROR is not set -# CONFIG_BT_NIMBLE_LOG_LEVEL_WARNING is not set -CONFIG_BT_NIMBLE_LOG_LEVEL_INFO=y -# CONFIG_BT_NIMBLE_LOG_LEVEL_DEBUG is not set -CONFIG_BT_NIMBLE_LOG_LEVEL=1 -CONFIG_BT_NIMBLE_MAX_CONNECTIONS=7 -CONFIG_BT_NIMBLE_MAX_BONDS=1 -CONFIG_BT_NIMBLE_MAX_CCCDS=1 -CONFIG_BT_NIMBLE_L2CAP_COC_MAX_NUM=0 +# default: +CONFIG_BT_NIMBLE_PINNED_TO_CORE=0 CONFIG_BT_NIMBLE_PINNED_TO_CORE_0=y # CONFIG_BT_NIMBLE_PINNED_TO_CORE_1 is not set -CONFIG_BT_NIMBLE_PINNED_TO_CORE=0 CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=4096 +# default: +CONFIG_BT_NIMBLE_LEGACY_VHCI_ENABLE=y +# end of General + +# +# Roles and Profiles +# CONFIG_BT_NIMBLE_ROLE_CENTRAL=y CONFIG_BT_NIMBLE_ROLE_PERIPHERAL=y CONFIG_BT_NIMBLE_ROLE_BROADCASTER=y CONFIG_BT_NIMBLE_ROLE_OBSERVER=y CONFIG_BT_NIMBLE_GATT_CLIENT=y CONFIG_BT_NIMBLE_GATT_SERVER=y -# CONFIG_BT_NIMBLE_NVS_PERSIST is not set -# CONFIG_BT_NIMBLE_SMP_ID_RESET is not set +# end of Roles and Profiles + +# +# Security (SMP) +# # CONFIG_BT_NIMBLE_SECURITY_ENABLE is not set -CONFIG_BT_NIMBLE_PRINT_ERR_NAME=y -# CONFIG_BT_NIMBLE_DEBUG is not set -# CONFIG_BT_NIMBLE_DYNAMIC_SERVICE is not set -CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="nimble" -CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=31 +# end of Security (SMP) + +# +# GAP +# +CONFIG_BT_NIMBLE_RPA_TIMEOUT=900 +CONFIG_BT_NIMBLE_WHITELIST_SIZE=1 +CONFIG_BT_NIMBLE_ENABLE_CONN_REATTEMPT=y +CONFIG_BT_NIMBLE_MAX_CONN_REATTEMPT=3 +# default: +CONFIG_BT_NIMBLE_HS_PVCY=y +# CONFIG_BT_NIMBLE_HOST_BASED_PRIVACY is not set +# CONFIG_BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN is not set +# CONFIG_BT_NIMBLE_HOST_QUEUE_CONG_CHECK is not set +CONFIG_BT_NIMBLE_MAX_CONNECTIONS=7 +CONFIG_BT_NIMBLE_MAX_CCCDS=0 +CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS=y +CONFIG_BT_NIMBLE_HS_STOP_TIMEOUT_MS=2000 +CONFIG_BT_NIMBLE_USE_ESP_TIMER=y +CONFIG_BT_NIMBLE_HS_FLOW_CTRL=y +CONFIG_BT_NIMBLE_HS_FLOW_CTRL_ITVL=1000 +CONFIG_BT_NIMBLE_HS_FLOW_CTRL_THRESH=2 +CONFIG_BT_NIMBLE_HS_FLOW_CTRL_TX_ON_DISCONNECT=y +# end of GAP + +# +# GATT / ATT +# CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=256 CONFIG_BT_NIMBLE_ATT_MAX_PREP_ENTRIES=64 -CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE=0 +CONFIG_BT_NIMBLE_GATT_MAX_PROCS=4 +# CONFIG_BT_NIMBLE_BLE_GATT_BLOB_TRANSFER is not set +# CONFIG_BT_NIMBLE_GATT_CACHING is not set +# CONFIG_BT_NIMBLE_INCL_SVC_DISCOVERY is not set +# end of GATT / ATT + +# +# L2CAP +# +CONFIG_BT_NIMBLE_L2CAP_COC_MAX_NUM=0 +# end of L2CAP # # Memory Settings @@ -603,32 +995,17 @@ CONFIG_BT_NIMBLE_TRANSPORT_EVT_SIZE=70 CONFIG_BT_NIMBLE_TRANSPORT_EVT_COUNT=30 CONFIG_BT_NIMBLE_TRANSPORT_EVT_DISCARD_COUNT=8 CONFIG_BT_NIMBLE_L2CAP_COC_SDU_BUFF_COUNT=1 +# default: +# CONFIG_BT_NIMBLE_MEMPOOL_RUNTIME_ALLOC is not set # end of Memory Settings -CONFIG_BT_NIMBLE_GATT_MAX_PROCS=4 -CONFIG_BT_NIMBLE_HS_FLOW_CTRL=y -CONFIG_BT_NIMBLE_HS_FLOW_CTRL_ITVL=1000 -CONFIG_BT_NIMBLE_HS_FLOW_CTRL_THRESH=2 -CONFIG_BT_NIMBLE_HS_FLOW_CTRL_TX_ON_DISCONNECT=y -CONFIG_BT_NIMBLE_RPA_TIMEOUT=900 -# CONFIG_BT_NIMBLE_MESH is not set -CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS=y -CONFIG_BT_NIMBLE_HS_STOP_TIMEOUT_MS=2000 -# CONFIG_BT_NIMBLE_HOST_BASED_PRIVACY is not set -CONFIG_BT_NIMBLE_ENABLE_CONN_REATTEMPT=y -CONFIG_BT_NIMBLE_MAX_CONN_REATTEMPT=3 -# CONFIG_BT_NIMBLE_HANDLE_REPEAT_PAIRING_DELETION is not set -# CONFIG_BT_NIMBLE_GATT_CACHING is not set -# CONFIG_BT_NIMBLE_INCL_SVC_DISCOVERY is not set -CONFIG_BT_NIMBLE_WHITELIST_SIZE=1 -# CONFIG_BT_NIMBLE_TEST_THROUGHPUT_TEST is not set -# CONFIG_BT_NIMBLE_BLUFI_ENABLE is not set -CONFIG_BT_NIMBLE_USE_ESP_TIMER=y -CONFIG_BT_NIMBLE_LEGACY_VHCI_ENABLE=y -# CONFIG_BT_NIMBLE_BLE_GATT_BLOB_TRANSFER is not set +# +# BLE 5.x Features +# +# end of BLE 5.x Features # -# BLE Services +# Services # # CONFIG_BT_NIMBLE_PROX_SERVICE is not set # CONFIG_BT_NIMBLE_ANS_SERVICE is not set @@ -644,22 +1021,39 @@ CONFIG_BT_NIMBLE_LEGACY_VHCI_ENABLE=y # CONFIG_BT_NIMBLE_BAS_SERVICE is not set # CONFIG_BT_NIMBLE_DIS_SERVICE is not set CONFIG_BT_NIMBLE_GAP_SERVICE=y +CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="nimble" +CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=31 +CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE=0 +# default: +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM=0 +# default: +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_ENC=0 +# default: +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHEN=0 +# default: +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHOR=0 +# CONFIG_BT_NIMBLE_SVC_GAP_GATT_SECURITY_LEVEL is not set +# CONFIG_BT_NIMBLE_SVC_GAP_RPA_ONLY is not set +CONFIG_BT_NIMBLE_SVC_GAP_CAR_CHAR_NOT_SUPP=y +# CONFIG_BT_NIMBLE_SVC_GAP_CAR_NOT_SUPP is not set +# CONFIG_BT_NIMBLE_SVC_GAP_CAR_SUPP is not set +# default: +CONFIG_BT_NIMBLE_SVC_GAP_CENT_ADDR_RESOLUTION=-1 # # GAP Appearance write permissions # # CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE is not set +# default: CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM=0 +# default: CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ENC=0 +# default: CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ATHN=0 +# default: CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ATHR=0 # end of GAP Appearance write permissions -CONFIG_BT_NIMBLE_SVC_GAP_CAR_CHAR_NOT_SUPP=y -# CONFIG_BT_NIMBLE_SVC_GAP_CAR_NOT_SUPP is not set -# CONFIG_BT_NIMBLE_SVC_GAP_CAR_SUPP is not set -CONFIG_BT_NIMBLE_SVC_GAP_CENT_ADDR_RESOLUTION=-1 - # # GAP device name write permissions # @@ -667,41 +1061,97 @@ CONFIG_BT_NIMBLE_SVC_GAP_CENT_ADDR_RESOLUTION=-1 # end of GAP device name write permissions # -# PPCP settings +# Peripheral Preferred Connection Parameters (PPCP) settings # CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MAX_CONN_INTERVAL=0 CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MIN_CONN_INTERVAL=0 CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SLAVE_LATENCY=0 CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SUPERVISION_TMO=0 -# end of PPCP settings +# end of Peripheral Preferred Connection Parameters (PPCP) settings +# end of Services -CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM=0 -CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_ENC=0 -CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHEN=0 -CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHOR=0 -# CONFIG_BT_NIMBLE_SVC_GAP_GATT_SECURITY_LEVEL is not set -# CONFIG_BT_NIMBLE_SVC_GAP_RPA_ONLY is not set -# end of BLE Services - -# CONFIG_BT_NIMBLE_VS_SUPPORT is not set +# +# Extra Features +# +# CONFIG_BT_NIMBLE_DYNAMIC_SERVICE is not set +# CONFIG_BT_NIMBLE_BLUFI_ENABLE is not set # CONFIG_BT_NIMBLE_ENC_ADV_DATA is not set -# CONFIG_BT_NIMBLE_HIGH_DUTY_ADV_ITVL is not set -# CONFIG_BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN is not set -# CONFIG_BT_NIMBLE_HOST_QUEUE_CONG_CHECK is not set +# default: +# CONFIG_BT_NIMBLE_ADV_UUID_CONCAT is not set # CONFIG_BT_NIMBLE_GATTC_PROC_PREEMPTION_PROTECT is not set +# default: +# CONFIG_BT_NIMBLE_GATTC_AUTO_PAIR is not set +CONFIG_BT_NIMBLE_EATT_CHAN_NUM=0 +# CONFIG_BT_NIMBLE_SUBRATE is not set +# default: +CONFIG_BT_NIMBLE_DTM_MODE_TEST=y +# default: +CONFIG_BT_NIMBLE_MEM_OPTIMIZATION=y +# default: +CONFIG_BT_NIMBLE_STATIC_TO_DYNAMIC=y +# default: +CONFIG_BT_NIMBLE_SM_SIGN_CNT=y +# default: +CONFIG_BT_NIMBLE_CPFD_CAFD=y +# default: +CONFIG_BT_NIMBLE_RECONFIG_MTU=y +# default: +# CONFIG_BT_NIMBLE_LOW_SPEED_MODE is not set +# end of Extra Features + +# +# NimBLE Mesh +# +# CONFIG_BT_NIMBLE_MESH is not set +# end of NimBLE Mesh # # Host-controller Transport # CONFIG_UART_HW_FLOWCTRL_DISABLE=y # CONFIG_UART_HW_FLOWCTRL_CTS_RTS is not set +# default: CONFIG_BT_NIMBLE_HCI_UART_FLOW_CTRL=0 CONFIG_BT_NIMBLE_HCI_UART_RTS_PIN=19 CONFIG_BT_NIMBLE_HCI_UART_CTS_PIN=23 # end of Host-controller Transport -CONFIG_BT_NIMBLE_EATT_CHAN_NUM=0 -# CONFIG_BT_NIMBLE_SUBRATE is not set +# +# Debugging/Testing +# +# default: +# CONFIG_BT_NIMBLE_MEM_DEBUG is not set +# CONFIG_BT_NIMBLE_LOG_LEVEL_NONE is not set +# CONFIG_BT_NIMBLE_LOG_LEVEL_ERROR is not set +# CONFIG_BT_NIMBLE_LOG_LEVEL_WARNING is not set +CONFIG_BT_NIMBLE_LOG_LEVEL_INFO=y +# CONFIG_BT_NIMBLE_LOG_LEVEL_DEBUG is not set +# default: +CONFIG_BT_NIMBLE_LOG_LEVEL=1 +CONFIG_BT_NIMBLE_PRINT_ERR_NAME=y +# CONFIG_BT_NIMBLE_DEBUG is not set +# CONFIG_BT_NIMBLE_TEST_THROUGHPUT_TEST is not set +# end of Debugging/Testing + +# +# Vendor / Optimization +# +# CONFIG_BT_NIMBLE_VS_SUPPORT is not set +# default: +# CONFIG_BT_NIMBLE_OPTIMIZE_MULTI_CONN is not set +# CONFIG_BT_NIMBLE_HIGH_DUTY_ADV_ITVL is not set +# end of Vendor / Optimization + +# +# Helper Utils +# +# default: +CONFIG_BT_NIMBLE_CHK_HOST_STATUS=y +# default: +CONFIG_BT_NIMBLE_UTIL_API=y +# default: +CONFIG_BT_NIMBLE_EXTRA_ADV_FIELDS=y +# end of Helper Utils # end of NimBLE Options # @@ -711,16 +1161,23 @@ CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y # CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY is not set # CONFIG_BTDM_CTRL_MODE_BTDM is not set CONFIG_BTDM_CTRL_BLE_MAX_CONN=7 +# default: CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=0 +# default: CONFIG_BTDM_CTRL_PCM_ROLE_EFF=0 +# default: CONFIG_BTDM_CTRL_PCM_POLAR_EFF=0 +# default: CONFIG_BTDM_CTRL_PCM_FSYNCSHP_EFF=0 +# default: CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=7 +# default: CONFIG_BTDM_CTRL_BR_EDR_MIN_ENC_KEY_SZ_DFT_EFF=0 +# default: CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=0 -CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0 CONFIG_BTDM_CTRL_PINNED_TO_CORE_0=y # CONFIG_BTDM_CTRL_PINNED_TO_CORE_1 is not set +# default: CONFIG_BTDM_CTRL_PINNED_TO_CORE=0 CONFIG_BTDM_CTRL_HCI_MODE_VHCI=y # CONFIG_BTDM_CTRL_HCI_MODE_UART_H4 is not set @@ -735,11 +1192,13 @@ CONFIG_BTDM_CTRL_LPCLK_SEL_MAIN_XTAL=y # end of MODEM SLEEP Options CONFIG_BTDM_BLE_DEFAULT_SCA_250PPM=y +# default: CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF=1 CONFIG_BTDM_BLE_SCAN_DUPL=y CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE=y # CONFIG_BTDM_SCAN_DUPL_TYPE_DATA is not set # CONFIG_BTDM_SCAN_DUPL_TYPE_DATA_DEVICE is not set +# default: CONFIG_BTDM_SCAN_DUPL_TYPE=0 CONFIG_BTDM_SCAN_DUPL_CACHE_SIZE=100 CONFIG_BTDM_SCAN_DUPL_CACHE_REFRESH_PERIOD=0 @@ -761,17 +1220,11 @@ CONFIG_BTDM_BLE_ADV_REPORT_DISCARD_THRSHOLD=20 CONFIG_BTDM_BLE_CHAN_ASS_EN=y CONFIG_BTDM_BLE_PING_EN=y # CONFIG_BTDM_CTRL_CONTROLLER_DEBUG_MODE_1 is not set +# default: CONFIG_BTDM_RESERVE_DRAM=0xdb5c CONFIG_BTDM_CTRL_HLI=y # end of Controller Options -# -# Common Options -# -CONFIG_BT_ALARM_MAX_NUM=50 -# CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED is not set -# end of Common Options - # CONFIG_BT_HCI_LOG_DEBUG_EN is not set # end of Bluetooth @@ -788,15 +1241,16 @@ CONFIG_BT_ALARM_MAX_NUM=50 # # -# TWAI Configuration +# Legacy TWAI Driver Configurations # -# CONFIG_TWAI_ISR_IN_IRAM is not set +# default: +# CONFIG_TWAI_SKIP_LEGACY_CONFLICT_CHECK is not set CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC=y CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST=y CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID=y CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT=y CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y -# end of TWAI Configuration +# end of Legacy TWAI Driver Configurations # # Legacy ADC Driver Configuration @@ -869,6 +1323,15 @@ CONFIG_ADC_CAL_LUT_ENABLE=y # CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_SDM_SKIP_LEGACY_CONFLICT_CHECK is not set # end of Legacy SDM Driver Configurations + +# +# Legacy Touch Sensor Driver Configurations +# +# default: +# CONFIG_TOUCH_SUPPRESS_DEPRECATE_WARN is not set +# default: +# CONFIG_TOUCH_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy Touch Sensor Driver Configurations # end of Driver Configurations # @@ -879,6 +1342,7 @@ CONFIG_ADC_CAL_LUT_ENABLE=y # 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 +# default: CONFIG_EFUSE_MAX_BLK_LEN=192 # end of eFuse Bit Manager @@ -893,6 +1357,8 @@ CONFIG_ESP_TLS_USING_MBEDTLS=y # 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 +# default: +CONFIG_ESP_TLS_DYN_BUF_STRATEGY_SUPPORTED=y # end of ESP-TLS # @@ -916,6 +1382,7 @@ CONFIG_ADC_DISABLE_DAC_OUTPUT=y # # Wireless Coexistence # +# default: CONFIG_ESP_COEX_ENABLED=y CONFIG_ESP_COEX_SW_COEXIST_ENABLE=y # CONFIG_ESP_COEX_POWER_MANAGEMENT is not set @@ -949,7 +1416,8 @@ CONFIG_DAC_DMA_AUTO_16BIT_ALIGN=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_ISR_CACHE_SAFE is not set +# default: CONFIG_GPTIMER_OBJ_CACHE_SAFE=y # CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set # end of ESP-Driver:GPTimer Configurations @@ -960,6 +1428,8 @@ CONFIG_GPTIMER_OBJ_CACHE_SAFE=y # CONFIG_I2C_ISR_IRAM_SAFE is not set # CONFIG_I2C_ENABLE_DEBUG_LOG is not set # CONFIG_I2C_ENABLE_SLAVE_DRIVER_VERSION_2 is not set +# default: +CONFIG_I2C_MASTER_ISR_HANDLER_IN_IRAM=y # end of ESP-Driver:I2C Configurations # @@ -978,8 +1448,12 @@ CONFIG_GPTIMER_OBJ_CACHE_SAFE=y # # ESP-Driver:MCPWM Configurations # -# CONFIG_MCPWM_ISR_IRAM_SAFE is not set +# default: +CONFIG_MCPWM_ISR_HANDLER_IN_IRAM=y +# CONFIG_MCPWM_ISR_CACHE_SAFE is not set # CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set +# default: +CONFIG_MCPWM_OBJ_CACHE_SAFE=y # CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set # end of ESP-Driver:MCPWM Configurations @@ -994,9 +1468,21 @@ CONFIG_GPTIMER_OBJ_CACHE_SAFE=y # # ESP-Driver:RMT Configurations # -# CONFIG_RMT_ISR_IRAM_SAFE is not set +# default: +CONFIG_RMT_ENCODER_FUNC_IN_IRAM=y +# default: +CONFIG_RMT_TX_ISR_HANDLER_IN_IRAM=y +# default: +CONFIG_RMT_RX_ISR_HANDLER_IN_IRAM=y # CONFIG_RMT_RECV_FUNC_IN_IRAM is not set +# default: +# CONFIG_RMT_TX_ISR_CACHE_SAFE is not set +# default: +# CONFIG_RMT_RX_ISR_CACHE_SAFE is not set +# default: +CONFIG_RMT_OBJ_CACHE_SAFE=y # CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# CONFIG_RMT_ISR_IRAM_SAFE is not set # end of ESP-Driver:RMT Configurations # @@ -1021,14 +1507,39 @@ CONFIG_SPI_SLAVE_ISR_IN_IRAM=y # 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 +# default: +# CONFIG_TOUCH_SKIP_FSM_CHECK is not set # end of ESP-Driver:Touch Sensor Configurations +# +# ESP-Driver:TWAI Configurations +# +# CONFIG_TWAI_ISR_IN_IRAM is not set +# default: +# CONFIG_TWAI_IO_FUNC_IN_IRAM is not set +# default: +# CONFIG_TWAI_ISR_CACHE_SAFE is not set +# default: +# CONFIG_TWAI_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:TWAI Configurations + # # ESP-Driver:UART Configurations # # CONFIG_UART_ISR_IN_IRAM is not set # end of ESP-Driver:UART Configurations +# +# ESP-Driver:UHCI Configurations +# +# default: +# CONFIG_UHCI_ISR_HANDLER_IN_IRAM is not set +# default: +# CONFIG_UHCI_ISR_CACHE_SAFE is not set +# default: +# CONFIG_UHCI_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:UHCI Configurations + # # Ethernet # @@ -1048,6 +1559,7 @@ CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y # # GDB Stub # +# default: CONFIG_ESP_GDBSTUB_ENABLED=y # CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set CONFIG_ESP_GDBSTUB_SUPPORT_TASKS=y @@ -1097,11 +1609,15 @@ CONFIG_ESP_HTTPS_OTA_EVENT_POST_TIMEOUT=2000 # # CONFIG_ESP_HTTPS_SERVER_ENABLE is not set CONFIG_ESP_HTTPS_SERVER_EVENT_POST_TIMEOUT=2000 +# default: +# CONFIG_ESP_HTTPS_SERVER_CERT_SELECT_HOOK is not set # end of ESP HTTPS server # # Hardware Settings # +# default: +CONFIG_ESP_HW_SUPPORT_FUNC_IN_IRAM=y # # Chip revision @@ -1112,16 +1628,22 @@ CONFIG_ESP32_REV_MIN_0=y # 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 +# default: CONFIG_ESP32_REV_MIN=0 +# default: CONFIG_ESP32_REV_MIN_FULL=0 +# default: CONFIG_ESP_REV_MIN_FULL=0 # # Maximum Supported ESP32 Revision (Rev v3.99) # +# default: CONFIG_ESP32_REV_MAX_FULL=399 +# default: CONFIG_ESP_REV_MAX_FULL=399 CONFIG_ESP_EFUSE_BLOCK_REV_MIN_FULL=0 +# default: CONFIG_ESP_EFUSE_BLOCK_REV_MAX_FULL=99 # @@ -1132,14 +1654,21 @@ CONFIG_ESP_EFUSE_BLOCK_REV_MAX_FULL=99 # # MAC Config # +# default: CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y +# default: CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y +# default: CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y +# default: CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y +# default: CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR=y +# default: CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES=4 # CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y +# default: 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 @@ -1151,6 +1680,7 @@ CONFIG_ESP32_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 +# default: 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 @@ -1167,12 +1697,18 @@ CONFIG_RTC_CLK_SRC_INT_RC=y # CONFIG_RTC_CLK_SRC_EXT_OSC is not set # CONFIG_RTC_CLK_SRC_INT_8MD256 is not set CONFIG_RTC_CLK_CAL_CYCLES=1024 +# default: +CONFIG_RTC_CLK_FUNC_IN_IRAM=y +# default: +CONFIG_RTC_TIME_FUNC_IN_IRAM=y # end of RTC Clock Config # # Peripheral Control # -CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y +CONFIG_ESP_PERIPH_CTRL_FUNC_IN_IRAM=y +# default: +CONFIG_ESP_REGI2C_CTRL_FUNC_IN_IRAM=y # end of Peripheral Control # @@ -1182,10 +1718,37 @@ CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y # CONFIG_XTAL_FREQ_32 is not set CONFIG_XTAL_FREQ_40=y # CONFIG_XTAL_FREQ_AUTO is not set +# default: CONFIG_XTAL_FREQ=40 # end of Main XTAL Config +# +# Power Supplier +# + +# +# Brownout Detector +# +CONFIG_ESP_BROWNOUT_DET=y +CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 is not set +# default: +CONFIG_ESP_BROWNOUT_DET_LVL=0 +# default: +CONFIG_ESP_BROWNOUT_USE_INTR=y +# end of Brownout Detector +# end of Power Supplier + +# default: CONFIG_ESP_SPI_BUS_LOCK_ISR_FUNCS_IN_IRAM=y +# default: +CONFIG_ESP_INTR_IN_IRAM=y # end of Hardware Settings # @@ -1206,6 +1769,7 @@ CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 # CONFIG_ESP_NETIF_PROVIDE_CUSTOM_IMPLEMENTATION is not set CONFIG_ESP_NETIF_TCPIP_LWIP=y # CONFIG_ESP_NETIF_LOOPBACK is not set +# default: CONFIG_ESP_NETIF_USES_TCPIP_WITH_BSD_API=y CONFIG_ESP_NETIF_REPORT_DATA_TRAFFIC=y # CONFIG_ESP_NETIF_RECEIVE_REPORT_ERRORS is not set @@ -1222,24 +1786,37 @@ CONFIG_ESP_NETIF_REPORT_DATA_TRAFFIC=y # # PHY # +# default: CONFIG_ESP_PHY_ENABLED=y CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y # CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 +# default: CONFIG_ESP_PHY_MAX_TX_POWER=20 # CONFIG_ESP_PHY_REDUCE_TX_POWER is not set # CONFIG_ESP_PHY_ENABLE_CERT_TEST is not set CONFIG_ESP_PHY_RF_CAL_PARTIAL=y # CONFIG_ESP_PHY_RF_CAL_NONE is not set # CONFIG_ESP_PHY_RF_CAL_FULL is not set +# default: CONFIG_ESP_PHY_CALIBRATION_MODE=0 +# default: +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 +# default: +CONFIG_ESP_PHY_IRAM_OPT=y +# default: +# CONFIG_ESP_PHY_DEBUG is not set +# default: +CONFIG_ESP_PHY_ENABLE_VERSION_PRINT=y # end of PHY # # Power Management # +# default: +# CONFIG_PM_SLEEP_FUNC_IN_IRAM is not set # CONFIG_PM_ENABLE is not set # CONFIG_PM_SLP_IRAM_OPT is not set # end of Power Management @@ -1256,6 +1833,13 @@ CONFIG_ESP_PHY_CALIBRATION_MODE=0 # CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set # end of ESP Ringbuf +# +# ESP-ROM +# +# default: +CONFIG_ESP_ROM_PRINT_IN_IRAM=y +# end of ESP-ROM + # # ESP Security Specific # @@ -1267,6 +1851,7 @@ CONFIG_ESP_PHY_CALIBRATION_MODE=0 # CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y # CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set +# default: CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 # @@ -1285,9 +1870,12 @@ CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 # Trace memory # # CONFIG_ESP32_TRAX is not set +# default: CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 # end of Trace memory +# default: +CONFIG_ESP_SYSTEM_IN_IRAM=y # CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y # CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set @@ -1305,13 +1893,17 @@ 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 +# default: CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 CONFIG_ESP_CONSOLE_UART_DEFAULT=y # CONFIG_ESP_CONSOLE_UART_CUSTOM is not set # CONFIG_ESP_CONSOLE_NONE is not set +# default: CONFIG_ESP_CONSOLE_UART=y +# default: CONFIG_ESP_CONSOLE_UART_NUM=0 +# default: CONFIG_ESP_CONSOLE_ROM_SERIAL_PORT_NUM=0 CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 CONFIG_ESP_INT_WDT=y @@ -1327,62 +1919,57 @@ CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y # CONFIG_ESP_DEBUG_STUBS_ENABLE is not set CONFIG_ESP_DEBUG_OCDAWARE=y CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5=y - -# -# Brownout Detector -# -CONFIG_ESP_BROWNOUT_DET=y -CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0=y -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 is not set -CONFIG_ESP_BROWNOUT_DET_LVL=0 -# end of Brownout Detector - # CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set -CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y # end of ESP System Settings # # IPC (Inter-Processor Call) # +# default: +CONFIG_ESP_IPC_ENABLE=y CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y +# default: CONFIG_ESP_IPC_ISR_ENABLE=y # end of IPC (Inter-Processor Call) # # ESP Timer (High Resolution Timer) # +# default: +CONFIG_ESP_TIMER_IN_IRAM=y # CONFIG_ESP_TIMER_PROFILING is not set +# default: CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y +# default: CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 # CONFIG_ESP_TIMER_SHOW_EXPERIMENTAL is not set +# default: 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 +# default: CONFIG_ESP_TIMER_IMPL_TG0_LAC=y # end of ESP Timer (High Resolution Timer) # # Wi-Fi # +# default: CONFIG_ESP_WIFI_ENABLED=y CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 # CONFIG_ESP_WIFI_STATIC_TX_BUFFER is not set CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER=y +# default: CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1 CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y # CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set +# default: CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0 CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5 # CONFIG_ESP_WIFI_CSI_ENABLED is not set @@ -1400,10 +1987,14 @@ CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32 # CONFIG_ESP_WIFI_RX_IRAM_OPT is not set CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y CONFIG_ESP_WIFI_ENABLE_SAE_PK=y +# default: +CONFIG_ESP_WIFI_ENABLE_SAE_H2E=y CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y # CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set CONFIG_ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME=50 +# default: +# CONFIG_ESP_WIFI_BSS_MAX_IDLE_SUPPORT is not set CONFIG_ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME=10 CONFIG_ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15 CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE=y @@ -1418,6 +2009,8 @@ CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y # CONFIG_ESP_WIFI_11KV_SUPPORT is not set # CONFIG_ESP_WIFI_MBO_SUPPORT is not set # CONFIG_ESP_WIFI_DPP_SUPPORT is not set +# default: +# CONFIG_ESP_WIFI_P256_ACCEL is not set # CONFIG_ESP_WIFI_11R_SUPPORT is not set # CONFIG_ESP_WIFI_WPS_SOFTAP_REGISTRAR is not set @@ -1426,12 +2019,15 @@ CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y # # CONFIG_ESP_WIFI_WPS_STRICT is not set # CONFIG_ESP_WIFI_WPS_PASSPHRASE is not set +# default: +# CONFIG_ESP_WIFI_WPS_RECONNECT_ON_FAIL is not set # end of WPS Configuration Options # CONFIG_ESP_WIFI_DEBUG_PRINT is not set -# CONFIG_ESP_WIFI_TESTING_OPTIONS is not set CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y # CONFIG_ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER is not set +# default: +# CONFIG_ESP_WIFI_PASSIVE_HIDDEN_AP_SUPPORT is not set # end of Wi-Fi # @@ -1473,6 +2069,7 @@ CONFIG_FATFS_CODEPAGE_437=y # CONFIG_FATFS_CODEPAGE_936 is not set # CONFIG_FATFS_CODEPAGE_949 is not set # CONFIG_FATFS_CODEPAGE_950 is not set +# default: CONFIG_FATFS_CODEPAGE=437 CONFIG_FATFS_FS_LOCK=0 CONFIG_FATFS_TIMEOUT_MS=10000 @@ -1519,6 +2116,7 @@ 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 +# default: CONFIG_FREERTOS_TIMER_SERVICE_TASK_CORE_AFFINITY=0x7FFFFFFF CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 @@ -1538,13 +2136,16 @@ CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=1 CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y # CONFIG_FREERTOS_TASK_PRE_DELETION_HOOK is not set # CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set +# default: CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y CONFIG_FREERTOS_ISR_STACKSIZE=1536 CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y # CONFIG_FREERTOS_FPU_IN_ISR is not set +# default: CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER=y CONFIG_FREERTOS_CORETIMER_0=y # CONFIG_FREERTOS_CORETIMER_1 is not set +# default: CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y # CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set # CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set @@ -1555,13 +2156,22 @@ CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y # # end of Extra +# default: CONFIG_FREERTOS_PORT=y +# default: CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +# default: CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y +# default: CONFIG_FREERTOS_DEBUG_OCDAWARE=y +# default: CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +# default: CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y +# default: CONFIG_FREERTOS_NUMBER_OF_CORES=2 +# default: +CONFIG_FREERTOS_IN_IRAM=y # end of FreeRTOS # @@ -1571,9 +2181,8 @@ CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y # CONFIG_HAL_ASSERTION_DISABLE is not set # CONFIG_HAL_ASSERTION_SILENT is not set # CONFIG_HAL_ASSERTION_ENABLE is not set +# default: CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 -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) # @@ -1594,6 +2203,12 @@ CONFIG_HEAP_TRACING_OFF=y # # Log # +# default: +CONFIG_LOG_VERSION_1=y +# default: +# CONFIG_LOG_VERSION_2 is not set +# default: +CONFIG_LOG_VERSION=1 # # Log Level @@ -1604,6 +2219,7 @@ CONFIG_LOG_DEFAULT_LEVEL_NONE=y # CONFIG_LOG_DEFAULT_LEVEL_INFO is not set # CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set # CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set +# default: CONFIG_LOG_DEFAULT_LEVEL=0 CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y # CONFIG_LOG_MAXIMUM_LEVEL_ERROR is not set @@ -1611,6 +2227,7 @@ CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y # CONFIG_LOG_MAXIMUM_LEVEL_INFO is not set # CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set # CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set +# default: CONFIG_LOG_MAXIMUM_LEVEL=0 # @@ -1634,6 +2251,18 @@ CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_SIZE=31 CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y # CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set # end of Format + +# +# Settings +# +# default: +CONFIG_LOG_MODE_TEXT_EN=y +# default: +CONFIG_LOG_MODE_TEXT=y +# end of Settings + +# default: +CONFIG_LOG_IN_IRAM=y # end of Log # @@ -1641,7 +2270,6 @@ CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y # CONFIG_LWIP_ENABLE=y CONFIG_LWIP_LOCAL_HOSTNAME="espressif" -# CONFIG_LWIP_NETIF_API is not set CONFIG_LWIP_TCPIP_TASK_PRIO=18 # CONFIG_LWIP_TCPIP_CORE_LOCKING is not set # CONFIG_LWIP_CHECK_THREAD_SAFETY is not set @@ -1678,7 +2306,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 @@ -1747,13 +2375,40 @@ 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 +# default: CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 CONFIG_LWIP_IPV6_ND6_NUM_PREFIXES=5 CONFIG_LWIP_IPV6_ND6_NUM_ROUTERS=3 CONFIG_LWIP_IPV6_ND6_NUM_DESTINATIONS=10 -# CONFIG_LWIP_PPP_SUPPORT is not set +# default: +# CONFIG_LWIP_IPV6_ND6_ROUTE_INFO_OPTION_SUPPORT is not set +CONFIG_LWIP_PPP_SUPPORT=y +# default: +CONFIG_LWIP_PPP_ENABLE_IPV4=y +# default: +CONFIG_LWIP_PPP_ENABLE_IPV6=y +# default: +# CONFIG_LWIP_PPP_NOTIFY_PHASE_SUPPORT is not set +# default: +# CONFIG_LWIP_PPP_PAP_SUPPORT is not set +# default: +# CONFIG_LWIP_PPP_CHAP_SUPPORT is not set +# default: +# CONFIG_LWIP_PPP_MSCHAP_SUPPORT is not set +# default: +# CONFIG_LWIP_PPP_MPPE_SUPPORT is not set +# default: +# CONFIG_LWIP_PPP_SERVER_SUPPORT is not set +# default: +CONFIG_LWIP_PPP_VJ_HEADER_COMPRESSION=y +# default: +# CONFIG_LWIP_ENABLE_LCP_ECHO is not set +# default: +# CONFIG_LWIP_PPP_DEBUG_ON is not set +# default: +# CONFIG_LWIP_USE_EXTERNAL_MBEDTLS is not set # CONFIG_LWIP_SLIP_SUPPORT is not set # @@ -1787,6 +2442,8 @@ CONFIG_LWIP_DNS_MAX_HOST_IP=1 CONFIG_LWIP_DNS_MAX_SERVERS=3 # CONFIG_LWIP_FALLBACK_DNS_SERVER_SUPPORT is not set # CONFIG_LWIP_DNS_SETSERVER_WITH_NETIF is not set +# default: +# CONFIG_LWIP_USE_ESP_GETADDRINFO is not set # end of DNS CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 @@ -1807,6 +2464,12 @@ CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_NONE=y # CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT is not set # CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_CUSTOM is not set +# default: +CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_NONE=y +# default: +# CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_DEFAULT is not set +# default: +# CONFIG_LWIP_HOOK_DHCP_EXTRA_OPTION_CUSTOM is not set CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set @@ -1840,6 +2503,8 @@ 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 +# default: +# CONFIG_MBEDTLS_SSL_KEYING_MATERIAL_EXPORT is not set CONFIG_MBEDTLS_PKCS7_C=y # end of mbedTLS v3.x related @@ -1876,8 +2541,11 @@ CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y # CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set # CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set # CONFIG_MBEDTLS_TLS_DISABLED is not set +# default: CONFIG_MBEDTLS_TLS_SERVER=y +# default: CONFIG_MBEDTLS_TLS_CLIENT=y +# default: CONFIG_MBEDTLS_TLS_ENABLED=y # @@ -1973,20 +2641,30 @@ CONFIG_MBEDTLS_FS_IO=y # end of ESP-MQTT Configurations # -# Newlib -# -CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y -# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set -# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set -# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set -# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set -CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y -# CONFIG_NEWLIB_NANO_FORMAT is not set -CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y -# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set -# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set -# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set -# end of Newlib +# LibC +# +# default: +CONFIG_LIBC_NEWLIB=y +# default: +# CONFIG_LIBC_PICOLIBC is not set +# default: +CONFIG_LIBC_MISC_IN_IRAM=y +# default: +CONFIG_LIBC_LOCKS_PLACE_IN_IRAM=y +CONFIG_LIBC_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_LIBC_STDOUT_LINE_ENDING_LF is not set +# CONFIG_LIBC_STDOUT_LINE_ENDING_CR is not set +# CONFIG_LIBC_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_LIBC_STDIN_LINE_ENDING_LF is not set +CONFIG_LIBC_STDIN_LINE_ENDING_CR=y +# CONFIG_LIBC_NEWLIB_NANO_FORMAT is not set +CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT=y +# CONFIG_LIBC_TIME_SYSCALL_USE_RTC is not set +# CONFIG_LIBC_TIME_SYSCALL_USE_HRT is not set +# CONFIG_LIBC_TIME_SYSCALL_USE_NONE is not set +# default: +CONFIG_LIBC_ASSERT_BUFFER_SIZE=200 +# end of LibC # # NVS @@ -2005,6 +2683,9 @@ CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y # # CONFIG_OPENTHREAD_SPINEL_ONLY is not set # end of OpenThread Spinel + +# default: +# CONFIG_OPENTHREAD_DEBUG is not set # end of OpenThread # @@ -2013,6 +2694,7 @@ CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y +# default: CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_PATCH_VERSION=y # end of Protocomm @@ -2025,6 +2707,7 @@ 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 +# default: CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" # end of PThreads @@ -2032,8 +2715,11 @@ CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" # # MMU Config # +# default: CONFIG_MMU_PAGE_SIZE_64KB=y +# default: CONFIG_MMU_PAGE_MODE="64KB" +# default: CONFIG_MMU_PAGE_SIZE=0x10000 # end of MMU Config @@ -2045,6 +2731,7 @@ CONFIG_MMU_PAGE_SIZE=0x10000 # SPI Flash behavior when brownout # CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y +# default: CONFIG_SPI_FLASH_BROWNOUT_RESET=y # end of SPI Flash behavior when brownout @@ -2058,6 +2745,8 @@ CONFIG_SPI_FLASH_BROWNOUT_RESET=y 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 +# default: +CONFIG_SPI_FLASH_PLACE_FUNCTIONS_IN_IRAM=y # end of Optional and Experimental Features (READ DOCS FIRST) # end of Main Flash configuration @@ -2083,11 +2772,16 @@ CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 # # Auto-detect flash chips # -CONFIG_SPI_FLASH_VENDOR_XMC_SUPPORTED=y -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 +# default: +CONFIG_SPI_FLASH_VENDOR_XMC_SUPPORT_ENABLED=y +# default: +CONFIG_SPI_FLASH_VENDOR_GD_SUPPORT_ENABLED=y +# default: +CONFIG_SPI_FLASH_VENDOR_ISSI_SUPPORT_ENABLED=y +# default: +CONFIG_SPI_FLASH_VENDOR_MXIC_SUPPORT_ENABLED=y +# default: +CONFIG_SPI_FLASH_VENDOR_WINBOND_SUPPORT_ENABLED=y CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y @@ -2169,6 +2863,8 @@ CONFIG_UNITY_ENABLE_DOUBLE=y CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y # CONFIG_UNITY_ENABLE_FIXTURE is not set # CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set +# default: +# CONFIG_UNITY_TEST_ORDER_BY_FILE_PATH_AND_LINE is not set # end of Unity unit testing library # @@ -2196,6 +2892,7 @@ CONFIG_VFS_INITIALIZE_DEV_NULL=y # # CONFIG_WL_SECTOR_SIZE_512 is not set CONFIG_WL_SECTOR_SIZE_4096=y +# default: CONFIG_WL_SECTOR_SIZE=4096 # end of Wear Levelling @@ -2225,12 +2922,18 @@ CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y CONFIG_ESP_MODEM_CMUX_DEFRAGMENT_PAYLOAD=y # CONFIG_ESP_MODEM_USE_INFLATABLE_BUFFER_IF_NEEDED is not set CONFIG_ESP_MODEM_CMUX_DELAY_AFTER_DLCI_SETUP=0 +# default: +CONFIG_ESP_MODEM_CMUX_DELAY_AFTER_NETIF_DISCONNECT=0 # CONFIG_ESP_MODEM_CMUX_USE_SHORT_PAYLOADS_ONLY is not set # CONFIG_ESP_MODEM_ADD_CUSTOM_MODULE is not set CONFIG_ESP_MODEM_C_API_STR_MAX=128 # CONFIG_ESP_MODEM_URC_HANDLER is not set # CONFIG_ESP_MODEM_PPP_ESCAPE_BEFORE_EXIT is not set # CONFIG_ESP_MODEM_ADD_DEBUG_LOGS is not set +# default: +# CONFIG_ESP_MODEM_ENABLE_DEVELOPMENT_MODE is not set +# default: +CONFIG_ESP_MODEM_USE_PPP_MODE=y # end of esp-modem # @@ -2244,6 +2947,7 @@ 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 +# default: CONFIG_MDNS_TASK_AFFINITY=0x0 # @@ -2309,6 +3013,7 @@ CONFIG_LITTLEFS_MTIME_USE_SECONDS=y # CONFIG_LITTLEFS_MALLOC_STRATEGY_DISABLE is not set CONFIG_LITTLEFS_MALLOC_STRATEGY_DEFAULT=y # CONFIG_LITTLEFS_MALLOC_STRATEGY_INTERNAL is not set +# CONFIG_LITTLEFS_MALLOC_STRATEGY_SPIRAM_PREFER is not set CONFIG_LITTLEFS_ASSERTS=y # CONFIG_LITTLEFS_MMAP_PARTITION is not set # CONFIG_LITTLEFS_WDT_RESET is not set diff --git a/sdkconfig.s3.defaults b/sdkconfig.s3.defaults new file mode 100644 index 00000000..d9450044 --- /dev/null +++ b/sdkconfig.s3.defaults @@ -0,0 +1,22 @@ +# ESP32-S3 N16R2: 16 MB QIO flash with 2 MB QSPI PSRAM. +CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y +CONFIG_ESPTOOLPY_FLASHSIZE="16MB" +CONFIG_SPIRAM=y +CONFIG_SPIRAM_MODE_QUAD=y +CONFIG_SPIRAM_TYPE_AUTO=y +CONFIG_SPIRAM_SPEED_40M=y +CONFIG_SPIRAM_SPEED=40 +CONFIG_SPIRAM_BOOT_INIT=y +CONFIG_SPIRAM_USE_MALLOC=y +CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=16384 +CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768 +CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY=y + +# SmartSpin2k is simultaneously a NimBLE central and peripheral. +CONFIG_BT_ENABLED=y +CONFIG_BT_NIMBLE_ENABLED=y +CONFIG_BT_NIMBLE_ROLE_BROADCASTER=y +CONFIG_BT_NIMBLE_ROLE_OBSERVER=y +CONFIG_BT_NIMBLE_ROLE_PERIPHERAL=y +CONFIG_BT_NIMBLE_ROLE_CENTRAL=y +CONFIG_BT_NIMBLE_MAX_CONNECTIONS=7 diff --git a/src/BLE_Client.cpp b/src/BLE_Client.cpp index 042c8e73..be616d58 100644 --- a/src/BLE_Client.cpp +++ b/src/BLE_Client.cpp @@ -7,6 +7,7 @@ #include "Main.h" #include "BLE_Common.h" +#include "BLE_Device_Identity.h" #include "BLE_Fitness_Machine_Service.h" #include "SS2KLog.h" @@ -233,8 +234,8 @@ void bleClientTask(void* pvParameters) { ss2k->goHome(true); } else { // Startup Homing ss2k->goHome(false); - rtConfig->setShifterPosition(8); // Set to middle position after homing on startup } + rtConfig->setShifterPosition(8); // Reset to middle position spinBLEServer.spinDownFlag = 0; } } @@ -299,7 +300,7 @@ bool SpinBLEClient::connectToServer() { return false; }; // Always create a brand-new client for each connection attempt. - if (NimBLEDevice::getCreatedClientCount() >= NIMBLE_MAX_CONNECTIONS) { + if (NimBLEDevice::getCreatedClientCount() >= MYNEWT_VAL(BLE_MAX_CONNECTIONS)) { Serial.println("Max clients reached - no more connections available"); return false; } @@ -308,8 +309,8 @@ bool SpinBLEClient::connectToServer() { SS2K_LOG(BLE_CLIENT_LOG_TAG, " - Created new client"); pClient->setClientCallbacks(&myClientCallback, false); pClient->setSelfDelete(true, true); - // Initial connection parameters: 15ms interval, 0 latency, 1000ms timeout (kept from previous logic) - pClient->setConnectionParams(connectionParams[0], connectionParams[1], connectionParams[2], 1000); + // Initial connection parameters: 30-60 ms interval, 0 latency, 5-second supervision timeout. + pClient->setConnectionParams(connectionParams[0], connectionParams[1], connectionParams[2], connectionParams[3]); pClient->setConnectTimeout(10000); // 10 seconds if (!pClient->connect(myDevice, true, false, false)) { return handleFailedClientConnect(); @@ -322,6 +323,7 @@ bool SpinBLEClient::connectToServer() { } // Update the advertised device info + rtConfig->resistance.setSimulate(true); // Mark as simulated data until we get a real value from the device spinBLEClient.myBLEDevices[device_number].doConnect = false; spinBLEClient.myBLEDevices[device_number].set(myDevice, pClient->getConnHandle(), serviceUUID, charUUID); spinBLEClient.myBLEDevices[device_number].peerAddress = pClient->getPeerAddress(); @@ -415,7 +417,7 @@ void ScanCallbacks::onResult(const NimBLEAdvertisedDevice* advertisedDevice) { bool isDuplicateLocal = false; for (JsonPair kv : devices.as()) { JsonObject obj = kv.value().as(); - if (obj["name"] && obj["name"] == aDevName) { + if (obj["name"] && bleDeviceIdentifierEquals(obj["name"].as(), aDevName.c_str())) { isDuplicateLocal = true; break; } @@ -440,7 +442,7 @@ void ScanCallbacks::onResult(const NimBLEAdvertisedDevice* advertisedDevice) { // check to see if we're already connected to this device for (size_t i = 0; i < NUM_BLE_DEVICES; i++) { if (spinBLEClient.myBLEDevices[i].advertisedDevice != nullptr) { - if (aDevName == String(spinBLEClient.myBLEDevices[i].uniqueName.c_str())) { + if (bleDeviceIdentifierEquals(aDevName.c_str(), spinBLEClient.myBLEDevices[i].uniqueName.c_str())) { SS2K_LOG(BLE_CLIENT_LOG_TAG, "%s already connected on slot %d", aDevName.c_str(), i); return; // Already connected to this device } @@ -451,8 +453,8 @@ void ScanCallbacks::onResult(const NimBLEAdvertisedDevice* advertisedDevice) { if (strcmp(userConfig->getConnectedRemote(), ANY) == 0) { SS2K_LOG(BLE_CLIENT_LOG_TAG, "%s %s%s", aDevName.c_str(), REMOTE, STRING_MATCHED_ANY); } else { - bool nameMatched = (aDevName == userConfig->getConnectedRemote()) ? true : false; - bool addrMatched = strcmp(aDevAddr, userConfig->getConnectedRemote()) == 0; + bool nameMatched = bleDeviceIdentifierEquals(aDevName.c_str(), userConfig->getConnectedRemote()); + bool addrMatched = bleDeviceIdentifierEquals(aDevAddr, userConfig->getConnectedRemote()); if (!nameMatched && !addrMatched || strcmp(userConfig->getConnectedRemote(), NONE) == 0) { SS2K_LOG(BLE_CLIENT_LOG_TAG, "%s %s%s%s", REMOTE, aDevName.c_str(), DIDNT_MATCH_THE_SAVED, userConfig->getConnectedRemote()); return; // Ignore this device; @@ -464,8 +466,8 @@ void ScanCallbacks::onResult(const NimBLEAdvertisedDevice* advertisedDevice) { if (strcmp(userConfig->getConnectedHeartMonitor(), ANY) == 0) { SS2K_LOG(BLE_CLIENT_LOG_TAG, "%s %s%s", aDevName.c_str(), HRM, STRING_MATCHED_ANY); } else { - bool nameMatched = (aDevName == userConfig->getConnectedHeartMonitor()) ? true : false; - bool addrMatched = strcmp(aDevAddr, userConfig->getConnectedHeartMonitor()) == 0; + bool nameMatched = bleDeviceIdentifierEquals(aDevName.c_str(), userConfig->getConnectedHeartMonitor()); + bool addrMatched = bleDeviceIdentifierEquals(aDevAddr, userConfig->getConnectedHeartMonitor()); if (!nameMatched && !addrMatched || strcmp(userConfig->getConnectedHeartMonitor(), NONE) == 0) { SS2K_LOG(BLE_CLIENT_LOG_TAG, "%s %s%s%s", HRM, aDevName.c_str(), DIDNT_MATCH_THE_SAVED, userConfig->getConnectedHeartMonitor()); return; // Ignore this device; @@ -478,7 +480,7 @@ void ScanCallbacks::onResult(const NimBLEAdvertisedDevice* advertisedDevice) { if (strcmp(userConfig->getConnectedPowerMeter(), ANY) == 0) { SS2K_LOG(BLE_CLIENT_LOG_TAG, "%s, %s%s", aDevName.c_str(), PM, STRING_MATCHED_ANY); } else { - bool nameMatched = (aDevName == userConfig->getConnectedPowerMeter()) ? true : false; + bool nameMatched = bleDeviceIdentifierEquals(aDevName.c_str(), userConfig->getConnectedPowerMeter()); if (!nameMatched || strcmp(userConfig->getConnectedPowerMeter(), NONE) == 0) { SS2K_LOG(BLE_CLIENT_LOG_TAG, "%s %s%s%s", PM, aDevName.c_str(), DIDNT_MATCH_THE_SAVED, userConfig->getConnectedPowerMeter()); return; // Ignore this device; @@ -499,7 +501,7 @@ void ScanCallbacks::onResult(const NimBLEAdvertisedDevice* advertisedDevice) { // Check if this is the same device using stable identifier if (!spinBLEClient.myBLEDevices[i].uniqueName.empty()) { // Use unique name comparison for stable identification - deviceMatches = (aDevName == String(spinBLEClient.myBLEDevices[i].uniqueName.c_str())); + deviceMatches = bleDeviceIdentifierEquals(aDevName.c_str(), spinBLEClient.myBLEDevices[i].uniqueName.c_str()); } else { // Fall back to address comparison for backward compatibility deviceMatches = (advertisedDevice->getAddress() == spinBLEClient.myBLEDevices[i].peerAddress); @@ -896,7 +898,7 @@ void SpinBLEClient::checkBLEReconnect() { // Helper lambda to check if a device with the given name is currently connected auto isDeviceConnected = [&](const char* configName) -> bool { for (auto& _BLEd : spinBLEClient.myBLEDevices) { - if (_BLEd.isPostConnected && _BLEd.uniqueName == configName) { + if (_BLEd.isPostConnected && bleDeviceIdentifierEquals(_BLEd.uniqueName.c_str(), configName)) { return true; } } @@ -1074,8 +1076,8 @@ void SpinBLEAdvertisedDevice::set(const NimBLEAdvertisedDevice* device, int id, const bool cfgHrmIsNone = (strcmp(cfgHRM, NONE) == 0); const bool cfgHrmIsAny = (strcmp(cfgHRM, ANY) == 0); const std::string addrStr = device->getAddress().toString(); - const bool hrmNameMatch = (adevName == cfgHRM); - const bool hrmAddrMatch = (addrStr == cfgHRM); + const bool hrmNameMatch = bleDeviceIdentifierEquals(adevName.c_str(), cfgHRM); + const bool hrmAddrMatch = bleDeviceIdentifierEquals(addrStr.c_str(), cfgHRM); // Get all services const std::vector& services = pClient->getServices(true); diff --git a/src/BLE_Custom_Characteristic.cpp b/src/BLE_Custom_Characteristic.cpp index 1d9c5f9c..205adf77 100644 --- a/src/BLE_Custom_Characteristic.cpp +++ b/src/BLE_Custom_Characteristic.cpp @@ -89,24 +89,193 @@ This characteristic allows for reading and writing various user configuration pa #include #include #include "BleAppender.h" +#include "DirConManager.h" +#include +#include extern BleAppender bleAppender; +namespace { +constexpr uint8_t SETTINGS_SNAPSHOT_VERSION = 1; +constexpr size_t SETTINGS_SNAPSHOT_HEADER_LENGTH = 7; +constexpr unsigned long SETTINGS_SNAPSHOT_TIMEOUT_MILLIS = 5000; +constexpr size_t DIRCON_SETTINGS_SNAPSHOT_PAYLOAD_LENGTH = 200; + +struct SettingsSnapshotTransfer { + std::string json; + size_t offset = 0; + size_t payloadLength = 0; + uint16_t chunk = 0; + uint16_t chunkCount = 0; + uint16_t connHandle = BLE_HS_CONN_HANDLE_NONE; + unsigned long lastActivity = 0; + bool active = false; +}; + +SettingsSnapshotTransfer settingsSnapshot; +SettingsSnapshotTransfer dirConSettingsSnapshot; + +void resetSettingsSnapshot() { + settingsSnapshot = SettingsSnapshotTransfer(); +} + +std::vector makeSettingsSnapshotChunk(SettingsSnapshotTransfer& snapshot) { + size_t remaining = snapshot.json.length() - snapshot.offset; + size_t payloadSize = std::min(snapshot.payloadLength, remaining); + std::vector packet(SETTINGS_SNAPSHOT_HEADER_LENGTH + payloadSize); + packet[0] = cc_success; + packet[1] = BLE_allSettings; + packet[2] = SETTINGS_SNAPSHOT_VERSION; + packet[3] = static_cast(snapshot.chunk & 0xff); + packet[4] = static_cast(snapshot.chunk >> 8); + packet[5] = static_cast(snapshot.chunkCount & 0xff); + packet[6] = static_cast(snapshot.chunkCount >> 8); + std::copy_n(snapshot.json.data() + snapshot.offset, payloadSize, packet.begin() + SETTINGS_SNAPSHOT_HEADER_LENGTH); + + snapshot.offset += payloadSize; + snapshot.chunk++; + snapshot.lastActivity = millis(); + return packet; +} + +bool sendNextSettingsSnapshotChunk(NimBLECharacteristic* characteristic) { + if (!settingsSnapshot.active || settingsSnapshot.chunk >= settingsSnapshot.chunkCount) return false; + + uint16_t chunkNumber = settingsSnapshot.chunk; + std::vector packet = makeSettingsSnapshotChunk(settingsSnapshot); + + if (!characteristic->indicate(packet.data(), packet.size(), settingsSnapshot.connHandle)) { + SS2K_LOGE(CUSTOM_CHAR_LOG_TAG, "Failed to send settings snapshot chunk %u/%u", static_cast(chunkNumber + 1), + static_cast(settingsSnapshot.chunkCount)); + resetSettingsSnapshot(); + return false; + } + + return true; +} + +void startSettingsSnapshot(NimBLECharacteristic* characteristic, uint16_t connHandle, uint16_t mtu) { + if (settingsSnapshot.active) { + if (millis() - settingsSnapshot.lastActivity <= SETTINGS_SNAPSHOT_TIMEOUT_MILLIS) { + SS2K_LOGW(CUSTOM_CHAR_LOG_TAG, "Ignoring settings snapshot request while another transfer is active"); + return; + } + SS2K_LOGW(CUSTOM_CHAR_LOG_TAG, "Replacing stale settings snapshot transfer"); + resetSettingsSnapshot(); + } + + String json = userConfig->returnJSON(); + size_t attPayload = mtu > 3 ? mtu - 3 : 20; + size_t chunkPayload = attPayload > SETTINGS_SNAPSHOT_HEADER_LENGTH ? attPayload - SETTINGS_SNAPSHOT_HEADER_LENGTH : 1; + size_t chunkCount = (json.length() + chunkPayload - 1) / chunkPayload; + if (chunkCount == 0 || chunkCount > UINT16_MAX) { + SS2K_LOGE(CUSTOM_CHAR_LOG_TAG, "Settings snapshot is too large to send"); + return; + } + + settingsSnapshot.json.assign(json.c_str(), json.length()); + settingsSnapshot.payloadLength = chunkPayload; + settingsSnapshot.chunkCount = static_cast(chunkCount); + settingsSnapshot.connHandle = connHandle; + settingsSnapshot.lastActivity = millis(); + settingsSnapshot.active = true; + SS2K_LOG(CUSTOM_CHAR_LOG_TAG, "Sending %zu-byte settings snapshot in %u chunks (MTU %u)", settingsSnapshot.json.length(), + static_cast(settingsSnapshot.chunkCount), static_cast(mtu)); + sendNextSettingsSnapshotChunk(characteristic); +} + +void handleSettingsSnapshotStatus(NimBLECharacteristic* characteristic, int code) { + if (!settingsSnapshot.active) return; + + if (code != BLE_HS_EDONE) { + SS2K_LOGE(CUSTOM_CHAR_LOG_TAG, "Settings snapshot indication failed with status %d", code); + resetSettingsSnapshot(); + return; + } + + settingsSnapshot.lastActivity = millis(); + + if (settingsSnapshot.chunk >= settingsSnapshot.chunkCount) { + SS2K_LOG(CUSTOM_CHAR_LOG_TAG, "Settings snapshot transfer complete"); + resetSettingsSnapshot(); + return; + } + + sendNextSettingsSnapshotChunk(characteristic); +} + +void startDirConSettingsSnapshot(NimBLECharacteristic* characteristic) { + String json = userConfig->returnJSON(); + size_t chunkCount = (json.length() + DIRCON_SETTINGS_SNAPSHOT_PAYLOAD_LENGTH - 1) / DIRCON_SETTINGS_SNAPSHOT_PAYLOAD_LENGTH; + if (chunkCount == 0 || chunkCount > UINT16_MAX) { + const uint8_t error[] = {cc_error, BLE_allSettings}; + characteristic->setValue(error, sizeof(error)); + return; + } + + dirConSettingsSnapshot = SettingsSnapshotTransfer(); + dirConSettingsSnapshot.json = std::string(json.c_str(), json.length()); + dirConSettingsSnapshot.payloadLength = DIRCON_SETTINGS_SNAPSHOT_PAYLOAD_LENGTH; + dirConSettingsSnapshot.chunkCount = static_cast(chunkCount); + dirConSettingsSnapshot.lastActivity = millis(); + dirConSettingsSnapshot.active = true; + + // The first chunk is returned in the DirCon write response. Remaining chunks + // are sent as notifications from update(), after the client is subscribed. + std::vector packet = makeSettingsSnapshotChunk(dirConSettingsSnapshot); + characteristic->setValue(packet.data(), packet.size()); +} +} // namespace + void BLE_ss2kCustomCharacteristic::setupService(NimBLEServer *pServer) { pSmartSpin2kService = spinBLEServer.pServer->createService(SMARTSPIN2K_SERVICE_UUID); smartSpin2kCharacteristic = pSmartSpin2kService->createCharacteristic(SMARTSPIN2K_CHARACTERISTIC_UUID, NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::INDICATE | NIMBLE_PROPERTY::NOTIFY); smartSpin2kCharacteristic->setValue(ss2kCustomCharacteristicValue, sizeof(ss2kCustomCharacteristicValue)); smartSpin2kCharacteristic->setCallbacks(new ss2kCustomCharacteristicCallbacks()); - pSmartSpin2kService->start(); + + DirConManager::registerService(pSmartSpin2kService->getUUID(), [](NimBLECharacteristic* characteristic, const uint8_t* data, size_t length, DirConWriteResult* result) -> bool { + if (!characteristic->getUUID().equals(SMARTSPIN2K_CHARACTERISTIC_UUID)) return false; + + if (length < 2) { + const uint8_t error[] = {cc_error}; + characteristic->setValue(error, sizeof(error)); + result->updateResponseData = true; + return true; + } + + std::string request(reinterpret_cast(data), length); + BLE_ss2kCustomCharacteristic::process(request, BLE_HS_CONN_HANDLE_NONE, 23, false); + result->updateResponseData = true; + if (length >= 2 && data[0] == cc_read && data[1] == BLE_allSettings) { + result->autoSubscribeUuids[0] = characteristic->getUUID(); + result->autoSubscribeCount = 1; + } + return true; + }); } -void BLE_ss2kCustomCharacteristic::update() {} +void BLE_ss2kCustomCharacteristic::update() { + if (!dirConSettingsSnapshot.active) return; + + if (dirConSettingsSnapshot.chunk >= dirConSettingsSnapshot.chunkCount) { + dirConSettingsSnapshot = SettingsSnapshotTransfer(); + return; + } + + std::vector packet = makeSettingsSnapshotChunk(dirConSettingsSnapshot); + smartSpin2kCharacteristic->setValue(packet.data(), packet.size()); + DirConManager::notifyCharacteristic(pSmartSpin2kService->getUUID(), smartSpin2kCharacteristic->getUUID(), packet.data(), packet.size()); + + if (dirConSettingsSnapshot.chunk >= dirConSettingsSnapshot.chunkCount) { + dirConSettingsSnapshot = SettingsSnapshotTransfer(); + } +} void ss2kCustomCharacteristicCallbacks::onWrite(NimBLECharacteristic *pCharacteristic, NimBLEConnInfo &connInfo) { std::string rxValue = pCharacteristic->getValue(); // SS2K_LOG(CUSTOM_CHAR_LOG_TAG, "Write from %s", connInfo.getAddress().toString().c_str()); - BLE_ss2kCustomCharacteristic::process(rxValue); + BLE_ss2kCustomCharacteristic::process(rxValue, connInfo.getConnHandle(), connInfo.getMTU()); } void ss2kCustomCharacteristicCallbacks::onSubscribe(NimBLECharacteristic *pCharacteristic, NimBLEConnInfo &connInfo, uint16_t subValue) { @@ -125,23 +294,46 @@ void ss2kCustomCharacteristicCallbacks::onStatus(NimBLECharacteristic *pCharacte } SS2K_LOG(CUSTOM_CHAR_LOG_TAG, "%s -> %s", pCharacteristic->getUUID().toString().c_str(), logValue.c_str()); #endif + handleSettingsSnapshotStatus(pCharacteristic, code); } void BLE_ss2kCustomCharacteristic::notify(char _item, int tableRow) { + if (settingsSnapshot.active || dirConSettingsSnapshot.active) return; + // regular non power table update std::string returnValue = {cc_read, _item}; if (tableRow > -1) { returnValue += (uint8_t)tableRow; } process(returnValue); + + NimBLEService* service = NimBLEDevice::getServer()->getServiceByUUID(SMARTSPIN2K_SERVICE_UUID); + if (service == nullptr) return; + NimBLECharacteristic* characteristic = service->getCharacteristic(SMARTSPIN2K_CHARACTERISTIC_UUID); + if (characteristic == nullptr) return; + NimBLEAttValue value = characteristic->getValue(); + DirConManager::notifyCharacteristic(service->getUUID(), characteristic->getUUID(), value.data(), value.size()); } -void BLE_ss2kCustomCharacteristic::process(std::string rxValue) { +void BLE_ss2kCustomCharacteristic::process(std::string rxValue, uint16_t connHandle, uint16_t mtu, bool indicateResponse) { // Find the Characteristic - if (NimBLEDevice::getServer()->getServiceByUUID(SMARTSPIN2K_SERVICE_UUID) == nullptr) { + if (rxValue.length() < 2 || NimBLEDevice::getServer()->getServiceByUUID(SMARTSPIN2K_SERVICE_UUID) == nullptr) { return; } NimBLECharacteristic *pCharacteristic = NimBLEDevice::getServer()->getServiceByUUID(SMARTSPIN2K_SERVICE_UUID)->getCharacteristic(SMARTSPIN2K_CHARACTERISTIC_UUID); + + if (rxValue[0] == cc_read && static_cast(rxValue[1]) == BLE_allSettings) { + if (indicateResponse) { + startSettingsSnapshot(pCharacteristic, connHandle, mtu); + } else { + startDirConSettingsSnapshot(pCharacteristic); + } + return; + } + + // Avoid interleaving legacy responses with an acknowledged snapshot transfer. + if (settingsSnapshot.active) return; + uint8_t *pData = reinterpret_cast(&rxValue[0]); #ifdef CUSTOM_CHAR_DEBUG @@ -155,7 +347,7 @@ void BLE_ss2kCustomCharacteristic::process(std::string rxValue) { #endif size_t returnLength = rxValue.length(); - uint8_t returnValue[returnLength]; + std::vector returnValue(std::max(returnLength + 4, 6), 0); std::string returnString = ""; returnValue[0] = cc_error; for (size_t i = 1; i < returnLength; i++) { @@ -832,6 +1024,14 @@ void BLE_ss2kCustomCharacteristic::process(std::string rxValue) { } break; + case BLE_hardwareVersion: // 0x2F + LOG_BUF_APPEND("<-Hardware Version"); + if (rxValue[0] == cc_read) { + returnValue[0] = cc_success; + returnString = currentBoard.name.c_str(); + } + break; + case BLE_BLELogging: // 0x30 LOG_BUF_APPEND("<-BLELogging"); if (rxValue[0] == cc_read) { @@ -855,7 +1055,7 @@ void BLE_ss2kCustomCharacteristic::process(std::string rxValue) { SS2K_LOG(CUSTOM_CHAR_LOG_TAG, "%s", logBuf); #endif if (returnString == "") { - pCharacteristic->setValue(returnValue, returnLength); + pCharacteristic->setValue(returnValue.data(), returnLength); } else { // Need to send a string instead uint8_t returnChar[returnString.length() + 2]; returnChar[0] = cc_success; @@ -866,7 +1066,9 @@ void BLE_ss2kCustomCharacteristic::process(std::string rxValue) { pCharacteristic->setValue(returnChar, returnString.length() + 2); } - pCharacteristic->indicate(); + if (indicateResponse) { + pCharacteristic->indicate(connHandle); + } } // iterate through all smartspin user parameters and notify the specific one if changed diff --git a/src/BLE_Cycling_Power_Service.cpp b/src/BLE_Cycling_Power_Service.cpp index 3c84661b..7da01ea8 100644 --- a/src/BLE_Cycling_Power_Service.cpp +++ b/src/BLE_Cycling_Power_Service.cpp @@ -27,7 +27,6 @@ void BLE_Cycling_Power_Service::setupService(NimBLEServer *pServer, MyCharacteri cyclingPowerFeatureCharacteristic->setValue(cpFeature, sizeof(cpFeature)); sensorLocationCharacteristic->setValue(cpsLocation, sizeof(cpsLocation)); cyclingPowerMeasurementCharacteristic->setCallbacks(chrCallbacks); - pPowerMonitor->start(); // Register with DirCon for service discovery DirConManager::registerService(pPowerMonitor->getUUID()); diff --git a/src/BLE_Cycling_Speed_Cadence.cpp b/src/BLE_Cycling_Speed_Cadence.cpp index 18a6d15e..da2a2ce0 100644 --- a/src/BLE_Cycling_Speed_Cadence.cpp +++ b/src/BLE_Cycling_Speed_Cadence.cpp @@ -23,7 +23,6 @@ void BLE_Cycling_Speed_Cadence::setupService(NimBLEServer *pServer, MyCharacteri cscFeature->setValue(cscFeatureBytes, sizeof(cscFeatureBytes)); cscMeasurement->setCallbacks(chrCallbacks); - pCyclingSpeedCadenceService->start(); // Register with DirCon for service discovery DirConManager::registerService(pCyclingSpeedCadenceService->getUUID()); diff --git a/src/BLE_Device_Information_Service.cpp b/src/BLE_Device_Information_Service.cpp index afa783f3..597e0267 100644 --- a/src/BLE_Device_Information_Service.cpp +++ b/src/BLE_Device_Information_Service.cpp @@ -73,5 +73,4 @@ void BLE_Device_Information_Service::setupService(NimBLEServer* pServer) { pSystemIDCharacteristic = pDeviceInformationService->createCharacteristic(SYSTEM_ID_UUID, NIMBLE_PROPERTY::READ); pSystemIDCharacteristic->setValue(systemId.data(), systemId.size()); - pDeviceInformationService->start(); } diff --git a/src/BLE_Firmware_Update.cpp b/src/BLE_Firmware_Update.cpp index f92bdb3c..b8a7b6a2 100644 --- a/src/BLE_Firmware_Update.cpp +++ b/src/BLE_Firmware_Update.cpp @@ -8,6 +8,7 @@ #include "Main.h" #include "SS2KLog.h" #include "BLE_Common.h" +#include "FirmwareImageValidation.h" #include #include @@ -47,6 +48,19 @@ class otaCallback : public BLECharacteristicCallbacks { bufferCount++; if (!downloadFlag) { + const FirmwareImageHeaderValidation validation = + validateFirmwareImageHeader(reinterpret_cast(rxData.data()), rxData.length()); + if (validation.result != FirmwareImageHeaderResult::Valid) { + SS2K_LOGE(BLE_OTA_LOG_TAG, "Rejected firmware image: %s (expected chip 0x%04x, image chip 0x%04x)", + firmwareImageHeaderResultName(validation.result), CONFIG_IDF_FIRMWARE_CHIP_ID, static_cast(validation.imageChipId)); + ss2k->isUpdating = false; + downloadFlag = false; + bufferCount = 0; + const uint8_t failureStatus = 0x04; + pTxCharacteristic->notify(&failureStatus, sizeof(failureStatus), connInfo.getConnHandle()); + return; + } + ss2k->isUpdating = true; //----------------------------------------------- // First BLE bytes have arrived @@ -187,9 +201,6 @@ void BLEFirmwareSetup(NimBLEServer *pServer) { pOtaCharacteristic = pService->createCharacteristic(FIRMWARE_CHARACTERISTIC_OTA_UUID, NIMBLE_PROPERTY::WRITE); pOtaCharacteristic->setCallbacks(new otaCallback()); - // 5. Start the service(s) - pService->start(); - // 6. Start advertising // spinBLEServer.pServer->getAdvertising()->addServiceUUID(pService->getUUID()); diff --git a/src/BLE_Fitness_Machine_Service.cpp b/src/BLE_Fitness_Machine_Service.cpp index 1ac61a5b..f5610394 100644 --- a/src/BLE_Fitness_Machine_Service.cpp +++ b/src/BLE_Fitness_Machine_Service.cpp @@ -54,7 +54,6 @@ void BLE_Fitness_Machine_Service::setupService(NimBLEServer *pServer, MyCharacte fitnessMachineInclinationRange->setValue(ftmsInclinationRange, sizeof(ftmsInclinationRange)); fitnessMachineIndoorBikeData->setCallbacks(chrCallbacks); fitnessMachineControlPoint->setCallbacks(chrCallbacks); - pFitnessMachineService->start(); // Register with DirCon for service discovery and write handling DirConManager::registerService(pFitnessMachineService->getUUID(), [](NimBLECharacteristic *characteristic, const uint8_t *data, size_t length, DirConWriteResult *result) -> bool { diff --git a/src/BLE_Heart_Service.cpp b/src/BLE_Heart_Service.cpp index 5346f7b3..6c9b78d5 100644 --- a/src/BLE_Heart_Service.cpp +++ b/src/BLE_Heart_Service.cpp @@ -17,7 +17,6 @@ void BLE_Heart_Service::setupService(NimBLEServer *pServer, MyCharacteristicCall byte heartRateMeasurement[2] = {0x00, 0x00}; heartRateMeasurementCharacteristic->setValue(heartRateMeasurement, 2); heartRateMeasurementCharacteristic->setCallbacks(chrCallbacks); - pHeartService->start(); // Register with DirCon for service discovery DirConManager::registerService(pHeartService->getUUID()); } diff --git a/src/BLE_OpenBikeControl_Service.cpp b/src/BLE_OpenBikeControl_Service.cpp index 7ed4a39d..e6825a33 100644 --- a/src/BLE_OpenBikeControl_Service.cpp +++ b/src/BLE_OpenBikeControl_Service.cpp @@ -130,8 +130,6 @@ void BLE_OpenBikeControl_Service::setupService(NimBLEServer *pServer) { pOpenBikeControlService->createCharacteristic(OPENBIKECONTROL_APP_INFO_CHARACTERISTIC_UUID, NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::WRITE_NR); appInformationCharacteristic->setCallbacks(&obcAppInfoCallbacks); - pOpenBikeControlService->start(); - DirConManager::registerService( pOpenBikeControlService->getUUID(), [](NimBLECharacteristic *characteristic, const uint8_t *data, size_t length, DirConWriteResult *result) -> bool { diff --git a/src/BLE_SB20_Service.cpp b/src/BLE_SB20_Service.cpp index c738e26c..ec54ef8e 100644 --- a/src/BLE_SB20_Service.cpp +++ b/src/BLE_SB20_Service.cpp @@ -18,7 +18,7 @@ BLE_SB20_Service::BLE_SB20_Service() : pService(nullptr), pCharacteristic(nullpt void BLE_SB20_Service::begin() { pService = BLEDevice::createServer()->createService(SB20_SERVICE_UUID); pCharacteristic = pService->createCharacteristic(SB20_CHARACTERISTIC_UUID, NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::NOTIFY); - pService->start(); + SS2K_LOG(SS2K_LOG_TAG, "SB20 Service started\n"); } diff --git a/src/BLE_Server.cpp b/src/BLE_Server.cpp index 883cad81..918fe0cd 100644 --- a/src/BLE_Server.cpp +++ b/src/BLE_Server.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include "BLE_Cycling_Speed_Cadence.h" @@ -38,6 +39,26 @@ BLE_OpenBikeControl_Service openBikeControlService; // BLE_Wattbike_Service wattbikeService; // BLE_SB20_Service sb20Service; +namespace { +constexpr uint8_t SMARTSPIN2K_IP_ADVERTISEMENT_VERSION = 1; + +void addIpAddressToAdvertisement(NimBLEAdvertising* advertising) { + IPAddress ipAddress = WiFi.status() == WL_CONNECTED ? WiFi.localIP() : WiFi.softAPIP(); + const uint8_t manufacturerData[] = { + 0xff, 0xff, // Reserved Bluetooth SIG company identifier for development/testing. + 'S', 'S', // SmartSpin2k payload marker. + SMARTSPIN2K_IP_ADVERTISEMENT_VERSION, + ipAddress[0], ipAddress[1], ipAddress[2], ipAddress[3], + }; + + if (advertising->setManufacturerData(manufacturerData, sizeof(manufacturerData))) { + SS2K_LOG(BLE_SERVER_LOG_TAG, "Advertising WiFi IP address %s", ipAddress.toString().c_str()); + } else { + SS2K_LOGW(BLE_SERVER_LOG_TAG, "Unable to fit WiFi IP address in BLE advertisement data"); + } +} +} // namespace + void startBLEServer() { // Server Setup SS2K_LOG(BLE_SERVER_LOG_TAG, "Starting BLE Server"); @@ -68,9 +89,9 @@ void startBLEServer() { // pAdvertising->addServiceUUID(OPENBIKECONTROL_SERVICE_UUID); // Garmin devices need this in the primary advertisement to recognize the device as a cycling power sensor. pAdvertising->setAppearance(0x0484); // Cycling Power Sensor, per https://www.bluetooth.com/specifications/assigned-numbers/generic-access-profile/ - // Put the device name and SmartSpin2k service UUID in the scan response to avoid - // overflowing the primary ad packet (which already carries manufacturer data + service UUIDs). - pAdvertising->setName(userConfig->getDeviceName()); //Due to cutbacks in other data, adding this to primary advertisement for now as well. + // Keep the name and 128-bit SmartSpin2k UUID in the scan response. The primary + // advertisement uses the space previously occupied by the duplicate name for the IP address. + addIpAddressToAdvertisement(pAdvertising); oScanResponseData.setName(userConfig->getDeviceName()); oScanResponseData.setCompleteServices(SMARTSPIN2K_SERVICE_UUID); pAdvertising->setScanResponseData(oScanResponseData); @@ -96,6 +117,7 @@ void SpinBLEServer::update() { cyclingPowerService.update(); cyclingSpeedCadenceService.update(); fitnessMachineService.update(); + ss2kCustomCharacteristic.update(); // zwiftService.update(); // OpenBikeControl sends event-driven notifications from shift handlers. // wattbikeService.parseNemit(); // Changed from update() to parseNemit() diff --git a/src/BLE_Wattbike_Service.cpp b/src/BLE_Wattbike_Service.cpp index 46adfdcf..fbcf9c6b 100644 --- a/src/BLE_Wattbike_Service.cpp +++ b/src/BLE_Wattbike_Service.cpp @@ -23,7 +23,6 @@ void BLE_Wattbike_Service::setupService(NimBLEServer *pServer) { wattbikeWriteCharacteristic = pWattbikeService->createCharacteristic(WATTBIKE_WRITE_UUID, NIMBLE_PROPERTY::WRITE); // Start the service - pWattbikeService->start(); spinBLEServer.pServer->getAdvertising()->addServiceUUID(pWattbikeService->getUUID()); } diff --git a/src/BLE_Zwift_Service.cpp b/src/BLE_Zwift_Service.cpp index 822e8a1c..676e5deb 100644 --- a/src/BLE_Zwift_Service.cpp +++ b/src/BLE_Zwift_Service.cpp @@ -151,7 +151,6 @@ void BLE_Zwift_Service::setupService(NimBLEServer* pServer) { NimBLECharacteristic* batteryLevelChar = pBatteryService->createCharacteristic(NimBLEUUID((uint16_t)0x2A19), NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::NOTIFY); uint8_t batteryLevel = 100; batteryLevelChar->setValue(&batteryLevel, 1); - pBatteryService->start(); // Zwift Custom Service (use 0xFC82 to match advertisement) pZwiftService = pServer->createService(ZWIFT_RIDE_CUSTOM_SERVICE_UUID); @@ -173,8 +172,6 @@ void BLE_Zwift_Service::setupService(NimBLEServer* pServer) { unknownCharacteristic6 = pZwiftService->createCharacteristic(ZWIFT_UNKNOWN_CHARACTERISTIC6_UUID, NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::WRITE_NR | NIMBLE_PROPERTY::INDICATE); - pZwiftService->start(); - // Register with DirCon for service discovery and write handling DirConManager::registerService(pZwiftService->getUUID(), [](NimBLECharacteristic* characteristic, const uint8_t* data, size_t length, DirConWriteResult* result) -> bool { if (characteristic->getUUID().equals(NimBLEUUID(ZWIFT_SYNC_RX_CHARACTERISTIC_UUID))) { diff --git a/src/DirConManager.cpp b/src/DirConManager.cpp index 01dcd5f5..90313cf4 100644 --- a/src/DirConManager.cpp +++ b/src/DirConManager.cpp @@ -29,6 +29,78 @@ size_t DirConManager::registeredServiceCount = 0; static char uuidListBuffer[128] = ""; static size_t uuidListLength = 0; +namespace { + +const char* dirConMessageName(uint8_t identifier) { + switch (identifier) { + case DIRCON_MSGID_DISCOVER_SERVICES: + return "services"; + case DIRCON_MSGID_DISCOVER_CHARACTERISTICS: + return "chars"; + case DIRCON_MSGID_READ_CHARACTERISTIC: + return "read"; + case DIRCON_MSGID_WRITE_CHARACTERISTIC: + return "write"; + case DIRCON_MSGID_ENABLE_CHARACTERISTIC_NOTIFICATIONS: + return "subscribe"; + default: + return "unknown"; + } +} + +const char* dirConResponseName(uint8_t responseCode) { + switch (responseCode) { + case DIRCON_RESPCODE_SUCCESS_REQUEST: + return "ok"; + case DIRCON_RESPCODE_UNKNOWN_MESSAGE_TYPE: + return "bad-msg"; + case DIRCON_RESPCODE_UNEXPECTED_ERROR: + return "failed"; + case DIRCON_RESPCODE_SERVICE_NOT_FOUND: + return "no-svc"; + case DIRCON_RESPCODE_CHARACTERISTIC_NOT_FOUND: + return "no-char"; + case DIRCON_RESPCODE_CHARACTERISTIC_OPERATION_NOT_SUPPORTED: + return "unsupported"; + case DIRCON_RESPCODE_CHARACTERISTIC_WRITE_FAILED: + return "write-fail"; + case DIRCON_RESPCODE_UNKNOWN_PROTOCOL: + return "bad-proto"; + default: + return "error"; + } +} + +std::string compactDirConUuid(const NimBLEUUID& uuid) { + if (uuid.equals(FITNESSMACHINECONTROLPOINT_UUID)) { + return "ftms-cp"; + } + if (uuid.equals(SMARTSPIN2K_CHARACTERISTIC_UUID)) { + return "ss2k"; + } + + std::string value = uuid.toString(); + if (value.length() <= 8) { + return value; + } + return value.substr(0, 4) + ".." + value.substr(value.length() - 4); +} + +void formatPayloadPreview(const std::vector& data, char* output, size_t outputSize) { + constexpr size_t kPreviewBytes = 4; + const size_t bytesToLog = std::min(data.size(), kPreviewBytes); + size_t offset = 0; + + for (size_t i = 0; i < bytesToLog && offset + 2 < outputSize; i++) { + offset += snprintf(output + offset, outputSize - offset, "%02X", data[i]); + } + if (data.size() > bytesToLog && offset + 3 < outputSize) { + snprintf(output + offset, outputSize - offset, "..."); + } +} + +} // namespace + bool DirConManager::start() { if (started) { return true; @@ -297,7 +369,8 @@ void DirConManager::handleClientData() { size_t parsedBytes = message.parse(receiveBuffer[i] + processedBytes, receiveBufferLength[i] - processedBytes, lastSequenceNumber[i]); if (parsedBytes == 0) { - // Not enough data for a complete message or invalid message + // Keep an incomplete TCP frame buffered until the remaining bytes arrive. + // Complete invalid frames return their frame length so they are discarded. break; } @@ -504,8 +577,6 @@ void DirConManager::sendResponse(DirConMessage* message, size_t clientIndex) { return; } - SS2K_LOG(DIRCON_LOG_TAG, "Sending response message type 0x%02X to client %d", message->Identifier, clientIndex); - if (message->Identifier == DIRCON_MSGID_DISCOVER_SERVICES) { SS2K_LOG(DIRCON_LOG_TAG, "Discover services response contains %d UUIDs", message->AdditionalUUIDs.size()); for (size_t i = 0; i < message->AdditionalUUIDs.size(); i++) { @@ -515,13 +586,29 @@ void DirConManager::sendResponse(DirConMessage* message, size_t clientIndex) { std::vector* encodedMessage = message->encode(lastSequenceNumber[clientIndex]); if (encodedMessage != nullptr && encodedMessage->size() > 0) { + const char* result = dirConResponseName(message->ResponseCode); + if (message->Identifier == DIRCON_MSGID_DISCOVER_SERVICES) { + SS2K_LOG(DIRCON_LOG_TAG, "TX services c%u s%u %s %uU/%uB", static_cast(clientIndex), static_cast(message->SequenceNumber), result, + static_cast(message->AdditionalUUIDs.size()), static_cast(encodedMessage->size())); + } else if (message->Identifier == DIRCON_MSGID_DISCOVER_CHARACTERISTICS) { + const std::string uuid = compactDirConUuid(message->UUID); + SS2K_LOG(DIRCON_LOG_TAG, "TX chars c%u s%u %s %s %uU/%uB", static_cast(clientIndex), static_cast(message->SequenceNumber), uuid.c_str(), result, + static_cast(message->AdditionalUUIDs.size()), static_cast(encodedMessage->size())); + } else { + const std::string uuid = compactDirConUuid(message->UUID); + char payloadPreview[12] = ""; + formatPayloadPreview(message->AdditionalData, payloadPreview, sizeof(payloadPreview)); + SS2K_LOG(DIRCON_LOG_TAG, "TX %s c%u s%u %s %s %uB%s%s", dirConMessageName(message->Identifier), static_cast(clientIndex), + static_cast(message->SequenceNumber), uuid.c_str(), result, static_cast(message->AdditionalData.size()), + message->AdditionalData.empty() ? "" : ":", payloadPreview); + } dirConClients[clientIndex].write(encodedMessage->data(), encodedMessage->size()); } else { SS2K_LOG(DIRCON_LOG_TAG, "Error: No encoded message to send"); } } -void DirConManager::notifyCharacteristic(const NimBLEUUID& serviceUuid, const NimBLEUUID& characteristicUuid, uint8_t* data, size_t length, bool onlySubscribers) { +void DirConManager::notifyCharacteristic(const NimBLEUUID& serviceUuid, const NimBLEUUID& characteristicUuid, const uint8_t* data, size_t length, bool onlySubscribers) { if (!started || !connectedClients()) { return; } @@ -535,7 +622,7 @@ void DirConManager::notifyCharacteristic(const NimBLEUUID& serviceUuid, const Ni static SemaphoreHandle_t s_notifyMutex = xSemaphoreCreateMutex(); -void DirConManager::broadcastNotification(const NimBLEUUID& characteristicUuid, uint8_t* data, size_t length, bool onlySubscribers) { +void DirConManager::broadcastNotification(const NimBLEUUID& characteristicUuid, const uint8_t* data, size_t length, bool onlySubscribers) { DirConMessage notification; // stack-allocated, safe per-call notification.Request = false; diff --git a/src/DirConMessage.cpp b/src/DirConMessage.cpp index 57d24385..1da1bdf0 100644 --- a/src/DirConMessage.cpp +++ b/src/DirConMessage.cpp @@ -186,6 +186,11 @@ size_t DirConMessage::parse(uint8_t* data, size_t len, uint8_t sequenceNumber) { return 0; } + // The complete frame is available. If its contents are invalid or its + // identifier is unsupported, return this length after logging the error so + // the caller can discard only this frame and continue parsing the stream. + const size_t frameLength = DIRCON_MESSAGE_HEADER_LENGTH + this->Length; + size_t parsedBytes = 6; switch (this->Identifier) { case DIRCON_MSGID_DISCOVER_SERVICES: @@ -205,7 +210,7 @@ size_t DirConMessage::parse(uint8_t* data, size_t len, uint8_t sequenceNumber) { } else { SS2K_LOG(DIRCON_LOG_TAG, "Error parsing DirCon message: Length %d isn't a multiple of 16", this->Length); this->Identifier = DIRCON_MSGID_ERROR; - return 0; + return frameLength; } break; @@ -234,7 +239,7 @@ size_t DirConMessage::parse(uint8_t* data, size_t len, uint8_t sequenceNumber) { } else { SS2K_LOG(DIRCON_LOG_TAG, "Error parsing additional UUIDs and data: Length %d isn't a multiple of 17", (this->Length - 16)); this->Identifier = DIRCON_MSGID_ERROR; - return 0; + return frameLength; } break; @@ -256,7 +261,7 @@ size_t DirConMessage::parse(uint8_t* data, size_t len, uint8_t sequenceNumber) { } else { SS2K_LOG(DIRCON_LOG_TAG, "Error parsing DirCon message: Length %d < 16", this->Length); this->Identifier = DIRCON_MSGID_ERROR; - return 0; + return frameLength; } break; @@ -274,7 +279,7 @@ size_t DirConMessage::parse(uint8_t* data, size_t len, uint8_t sequenceNumber) { } else { SS2K_LOG(DIRCON_LOG_TAG, "Error parsing DirCon message: Length %d < 16", this->Length); this->Identifier = DIRCON_MSGID_ERROR; - return 0; + return frameLength; } break; @@ -300,7 +305,7 @@ size_t DirConMessage::parse(uint8_t* data, size_t len, uint8_t sequenceNumber) { } else { SS2K_LOG(DIRCON_LOG_TAG, "Error parsing DirCon message: Length %d < 16 for enable notifications", this->Length); this->Identifier = DIRCON_MSGID_ERROR; - return 0; + return frameLength; } break; @@ -317,20 +322,20 @@ size_t DirConMessage::parse(uint8_t* data, size_t len, uint8_t sequenceNumber) { } else { SS2K_LOG(DIRCON_LOG_TAG, "Error parsing DirCon message: Length %d < 16", this->Length); this->Identifier = DIRCON_MSGID_ERROR; - return 0; + return frameLength; } break; default: char hexBuf[kDirConHexLogMaxBytes * 3 + 1]; - const size_t bytesToLog = (len < kDirConHexLogMaxBytes) ? len : kDirConHexLogMaxBytes; + const size_t bytesToLog = (frameLength < kDirConHexLogMaxBytes) ? frameLength : kDirConHexLogMaxBytes; for (size_t i = 0; i < bytesToLog; i++) { snprintf(hexBuf + i * 3, 4, "%02X ", data[i]); } hexBuf[bytesToLog * 3] = '\0'; - SS2K_LOG(DIRCON_LOG_TAG, "Error parsing DirCon message: Unknown identifier %d. Full message (%zu bytes): %s", this->Identifier, len, hexBuf); + SS2K_LOG(DIRCON_LOG_TAG, "Error parsing DirCon message: Unknown identifier %d. Full message (%zu bytes): %s", this->Identifier, frameLength, hexBuf); this->Identifier = DIRCON_MSGID_ERROR; - return 0; + return frameLength; break; } @@ -339,4 +344,4 @@ size_t DirConMessage::parse(uint8_t* data, size_t len, uint8_t sequenceNumber) { bool DirConMessage::isRequest(int sequenceNumber) { return this->ResponseCode == DIRCON_RESPCODE_SUCCESS_REQUEST && (sequenceNumber <= 0 || sequenceNumber != this->SequenceNumber); -} \ No newline at end of file +} diff --git a/src/ERG_Mode.cpp b/src/ERG_Mode.cpp index a0d22917..442d0224 100644 --- a/src/ERG_Mode.cpp +++ b/src/ERG_Mode.cpp @@ -21,6 +21,53 @@ static unsigned long ergTimer = millis() + ERG_MODE_DELAY; static bool isDelayed = false; +namespace { +constexpr int ERG_SLOPE_SAMPLE_WATTS = POWERTABLE_WATT_INCREMENT; +constexpr int ERG_LOW_GAIN_WATTS = 120; +constexpr int ERG_HIGH_GAIN_WATTS = 400; +constexpr int ERG_MIN_SCHEDULE_WATTS = 30; +constexpr double ERG_SLOPE_CONTROL_DIVISOR = 10.0; +constexpr double ERG_GAIN_MIN_DIVISOR = 4.0; +constexpr double ERG_GAIN_MAX_MULTIPLIER = 4.0; +constexpr int ERG_LOG_INTERVAL_MS = 2000; + +double fallbackErgGain(double sensitivity, int operatingWatts) { + if (operatingWatts < ERG_LOW_GAIN_WATTS) { + return sensitivity * ERG_LOW_GAIN_WATTS / std::max(operatingWatts, ERG_MIN_SCHEDULE_WATTS); + } + if (operatingWatts > ERG_HIGH_GAIN_WATTS) { + return sensitivity * ERG_HIGH_GAIN_WATTS / operatingWatts; + } + return sensitivity; +} + +double scheduledErgGain(double sensitivity, int operatingWatts, int cadence, bool& usedPowerTable) { + usedPowerTable = false; + + const int lowerWatts = std::max(0, operatingWatts - ERG_SLOPE_SAMPLE_WATTS); + const int upperWatts = operatingWatts + ERG_SLOPE_SAMPLE_WATTS; + const int32_t lowerPosition = powerTable->lookup(lowerWatts, cadence); + const int32_t upperPosition = powerTable->lookup(upperWatts, cadence); + + double gain = fallbackErgGain(sensitivity, operatingWatts); + // Sparse linear fits are useful for lookup, but not stable enough to schedule ERG gain from their slope. + if (powerTable->ptHelpers.resistanceModel.getIsValid() && powerTable->ptHelpers.resistanceModel.getIsQuadratic() && lowerPosition != RETURN_ERROR && upperPosition != RETURN_ERROR && + upperPosition > lowerPosition) { + const double localStepsPerWatt = static_cast(upperPosition - lowerPosition) / static_cast(upperWatts - lowerWatts); + gain = localStepsPerWatt * sensitivity / ERG_SLOPE_CONTROL_DIVISOR; + usedPowerTable = true; + } + + return gain; +} + +double clampErgGain(double gain, double sensitivity) { + const double minimumGain = sensitivity / ERG_GAIN_MIN_DIVISOR; + const double maximumGain = sensitivity * ERG_GAIN_MAX_MULTIPLIER; + return std::max(minimumGain, std::min(gain, maximumGain)); +} +} // namespace + void ErgMode::runERG() { static ErgMode ergMode; static PowerBuffer powerBuffer; @@ -159,9 +206,10 @@ void ErgMode::computeErg() { return; } - // set minimum set point to minimum bike watts if app sends set point lower than minimum bike watts. - if (rtConfig->watts.getTarget() < userConfig->getMinWatts()) { - SS2K_LOG(ERG_MODE_LOG_TAG, "ERG Target Below Minumum Value."); + // Without known travel limits, keep ERG above the configured minimum bike watts. + // Once homed, moveStepper() clamps the commanded position to the known min/max step range instead. + if (!rtConfig->getHomed() && rtConfig->watts.getTarget() < userConfig->getMinWatts()) { + SS2K_LOG(ERG_MODE_LOG_TAG, "ERG target below minimum value while unhomed."); rtConfig->watts.setTarget(userConfig->getMinWatts()); } @@ -189,7 +237,7 @@ int32_t ErgMode::_setPointChangeState() { mode = (rtConfig->watts.getTarget() > rtConfig->watts.getValue()) ? Mode::INCREASING : Mode::DECREASING; // It's better to undershoot increasing watts and overshoot decreasing watts, so lets set the lookup target to the nearest side of POWERTABLE_WATT_INCREMENT int adjustedWattTarget = (mode == Mode::INCREASING) ? rtConfig->watts.getTarget() - ERG_MODE_PID_WINDOW : rtConfig->watts.getTarget() + ERG_MODE_PID_WINDOW; - int32_t tableResult = powerTable->lookup(adjustedWattTarget, + int32_t tableResult = powerTable->lookup(adjustedWattTarget, (mode == Mode::INCREASING) ? rtConfig->cad.getValue() + POWERTABLE_CAD_INCREMENT : rtConfig->cad.getValue() - POWERTABLE_CAD_INCREMENT); // Sanity check - with homing enabled, we should never have a negative result. If we do, something went wrong. @@ -241,9 +289,6 @@ int32_t ErgMode::_setPointChangeState() { // PrevError int32_t ErgMode::_inSetpointState() { - // Setting Gains For PID Loop - double Kp = userConfig->getERGSensitivity(); // Proportional gain based on user sensitivity - // retrieves the current Watt output int watts = rtConfig->watts.getValue(); // retrieves target Watt output @@ -251,6 +296,12 @@ int32_t ErgMode::_inSetpointState() { // subtracting target from current watts int error = target - watts; + // Scale the proportional gain to the local power-table slope. This compensates for the eddy-current brake producing fewer watts per step at low resistance + // and more watts per step at high resistance. ERG sensitivity controls how much of the predicted correction is applied and bounds bad model slopes. + const double sensitivity = userConfig->getERGSensitivity(); + bool usedPowerTable = false; + double Kp = scheduledErgGain(sensitivity, target, rtConfig->cad.getValue(), usedPowerTable); + // modifying gains based on error if (abs(error) < 10 || (mode != Mode::MAINTAIN)) { Kp = Kp * 0.25; // decrease further for tiny errors @@ -260,24 +311,19 @@ int32_t ErgMode::_inSetpointState() { Kp = Kp * 1.25; // Aggressive for large errors } + if (watts < userConfig->getMinWatts()) { + Kp = Kp * sensitivity; // Increase gain at very low watts to prevent Zwift from timing out on an initial interval. + } + Kp = clampErgGain(Kp, sensitivity); + mode = Mode::MAINTAIN; // Defining proportional term double proportional = Kp * error; - if (rtConfig->watts.getValue() < userConfig->getMinWatts()) { - proportional = proportional * userConfig->getERGSensitivity(); // increase proportional term when at very low watts. Prevents Zwift from timeout on initial interval. - } // final PID output double PID_output = proportional; - // log proportional every five seconds - static unsigned long lastTime = 0; - if (millis() - lastTime > 5000) { - lastTime = millis(); - SS2K_LOG(ERG_MODE_LOG_TAG, "%dw, Target %dw, Proportional: %f", rtConfig->watts.getValue(), rtConfig->watts.getTarget(), proportional); - } - // Cap the change to no more than we can move until the next reading int maxChange = round((long)((userConfig->getStepperSpeed() * ERG_MODE_DELAY)) / 1000.0f); // max change based on stepper speed and delay if (PID_output > maxChange) { @@ -288,6 +334,15 @@ int32_t ErgMode::_inSetpointState() { // Calculate new incline float newIncline = ss2k->getCurrentPosition() + PID_output; + + // log output every five seconds + static unsigned long lastTime = 0; + if (millis() - lastTime > ERG_LOG_INTERVAL_MS) { + lastTime = millis(); + SS2K_LOG(ERG_MODE_LOG_TAG, "%dw, Target %dw, Kp: %.3f (%s), PID Output: %f, Moving to: %f", rtConfig->watts.getValue(), rtConfig->watts.getTarget(), Kp, + usedPowerTable ? "table" : "fallback", PID_output, newIncline); + } + return newIncline; } diff --git a/src/HTTP_Server_Basic.cpp b/src/HTTP_Server_Basic.cpp index dbb14cc2..46b1c11e 100644 --- a/src/HTTP_Server_Basic.cpp +++ b/src/HTTP_Server_Basic.cpp @@ -12,6 +12,7 @@ #include "cert.h" #include "SS2KLog.h" #include "DirConManager.h" +#include "FirmwareImageValidation.h" #include #include #include @@ -60,8 +61,139 @@ void writeStoredBuildVersion(const String& version) { // NVS guard helpers (one-time recovery per firmware version) namespace { -const char* OTA_REC_NS = "ota_recover"; // namespace -const char* OTA_REC_KEY = "ver"; // key storing last recovered firmware version +const char* OTA_REC_NS = "ota_recover"; // namespace +const char* OTA_REC_KEY = "ver"; // key storing last recovered firmware version +const char* OTA_FS_VER_KEY = "fs_ver"; // key storing the installed web-filesystem version +bool otaUploadRejected = false; +bool otaFilesystemUpload = false; +bool otaFirmwareUpdateBegun = false; +uint8_t otaFirmwareHeader[sizeof(esp_image_header_t)]; +size_t otaFirmwareHeaderLength = 0; +String otaUploadError; + +void resetFirmwareUploadValidation() { + otaFirmwareUpdateBegun = false; + otaFirmwareHeaderLength = 0; + otaUploadError = ""; +} + +bool beginHttpRequest(HTTPClient& request, NetworkClient& client, const String& url) { + if (request.begin(client, url)) return true; + SS2K_LOGE(HTTP_SERVER_LOG_TAG, "Unable to initialize HTTP request for %s", url.c_str()); + return false; +} + +int beginHttpGet(HTTPClient& request, NetworkClient& client, const String& url) { + if (!beginHttpRequest(request, client, url)) return HTTPC_ERROR_CONNECTION_REFUSED; + return request.GET(); +} + +bool validateRemoteFirmwareHeader(HTTPClient& request, NetworkClient& client, const String& firmwareUrl) { + if (!beginHttpRequest(request, client, firmwareUrl)) return false; + // Some custom update servers may ignore Range and return the entire image. + // Close this connection after reading the header so unread image bytes cannot + // contaminate the subsequent HTTPUpdate request on the shared client. + request.setReuse(false); + request.addHeader("Range", String("bytes=0-") + (sizeof(esp_image_header_t) - 1)); + + const int httpCode = request.GET(); + if (httpCode != HTTP_CODE_OK && httpCode != HTTP_CODE_PARTIAL_CONTENT) { + SS2K_LOGE(HTTP_SERVER_LOG_TAG, "Firmware header request failed for %s: HTTP %d", firmwareUrl.c_str(), httpCode); + request.end(); + return false; + } + + uint8_t headerBytes[sizeof(esp_image_header_t)]; + NetworkClient* stream = request.getStreamPtr(); + const size_t bytesRead = stream->readBytes(headerBytes, sizeof(headerBytes)); + request.end(); + + const FirmwareImageHeaderValidation validation = validateFirmwareImageHeader(headerBytes, bytesRead); + if (validation.result != FirmwareImageHeaderResult::Valid) { + SS2K_LOGE(HTTP_SERVER_LOG_TAG, "Rejected remote firmware image: %s (expected chip 0x%04x, image chip 0x%04x)", + firmwareImageHeaderResultName(validation.result), CONFIG_IDF_FIRMWARE_CHIP_ID, static_cast(validation.imageChipId)); + return false; + } + + return true; +} + +bool filesystemIndexExists() { + return LittleFS.exists("/index.html.gz") || LittleFS.exists("/index.html"); +} + +String contentTypeForPath(String path) { + if (path.endsWith(".gz")) { + path.remove(path.length() - 3); + } + if (path.endsWith(".html")) return "text/html"; + if (path.endsWith(".css")) return "text/css"; + if (path.endsWith(".js")) return "application/javascript"; + if (path.endsWith(".json")) return "application/json"; + if (path.endsWith(".ico")) return "image/x-icon"; + return "application/octet-stream"; +} + +String getNVSFilesystemVersion() { + Preferences p; + if (!p.begin(OTA_REC_NS, true)) return ""; + String version = p.getString(OTA_FS_VER_KEY, ""); + p.end(); + return version; +} + +bool setNVSFilesystemVersion(const String& version) { + Preferences p; + if (!p.begin(OTA_REC_NS, false)) return false; + size_t length = p.putString(OTA_FS_VER_KEY, version); + p.end(); + return length > 0; +} + +bool manifestContains(const JsonArray& files, const String& filename) { + for (JsonVariantConst entry : files) { + String manifestName = "/" + entry.as(); + if (manifestName == filename) return true; + } + return false; +} + +bool pruneFilesystem(const JsonArray& files) { + bool success = true; + while (true) { + File root = LittleFS.open("/"); + if (!root || !root.isDirectory()) { + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Failed to inspect filesystem before update"); + return false; + } + + String staleName; + File entry = root.openNextFile(); + while (entry) { + String filename = entry.name(); + if (!filename.startsWith("/")) filename = "/" + filename; + bool preserved = filename == configFILENAME || filename == POWER_TABLE_FILENAME || filename == BUILD_VERSION_FILENAME; + if (!preserved && !manifestContains(files, filename)) { + staleName = filename; + entry.close(); + break; + } + entry = root.openNextFile(); + } + entry.close(); + root.close(); + + if (staleName.isEmpty()) break; + if (LittleFS.remove(staleName)) { + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Removed stale filesystem file: %s", staleName.c_str()); + } else { + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Failed to remove stale filesystem file: %s", staleName.c_str()); + success = false; + break; + } + } + return success; +} String getNVSRecoveryVersion() { Preferences p; @@ -91,6 +223,7 @@ void _staSetup() { WiFi.mode(WIFI_STA); WiFi.begin(userConfig->getSsid(), userConfig->getPassword()); WiFi.setAutoReconnect(true); + WiFi.setSleep(false); } void _APSetup() { @@ -257,8 +390,7 @@ void HTTP_Server::start() { SS2K_LOG(HTTP_SERVER_LOG_TAG, "Scanning from web request"); String response = "Scanning for BLE Devices. Please wait " - "15 seconds."; + "15 seconds."; // spinBLEClient.resetDevices(); spinBLEClient.doScan = true; server.send(200, "text/html", response); @@ -277,7 +409,7 @@ void HTTP_Server::start() { server.on("/reboot.html", []() { SS2K_LOG(HTTP_SERVER_LOG_TAG, "Rebooting from Web Request"); - String response = "Rebooting...."; + String response = "Rebooting...."; server.send(200, "text/html", response); ss2k->rebootFlag = true; }); @@ -406,6 +538,11 @@ void HTTP_Server::start() { // This is the correct and only place to send the final response to the client. []() { server.sendHeader("Connection", "close"); + if (otaUploadRejected) { + server.send(400, "text/plain", otaUploadError.isEmpty() ? String("Wrong image filename. Expected ") + FW_BINFILE + " or " + FS_BINFILE + "." + : otaUploadError); + return; + } // Check if the Update process reported an error and send the final status. if (Update.hasError()) { // You can get more specific error information if you want @@ -413,42 +550,108 @@ void HTTP_Server::start() { // server.send(500, "text/plain", error_string_buffer); server.send(500, "text/plain", "FAIL"); } else { + if (otaFilesystemUpload) { + // Update replaced the mounted partition underneath LittleFS. Remount + // the new image before restoring the in-memory user configuration. + LittleFS.end(); + if (LittleFS.begin(false)) { + userConfig->saveToLittleFS(); + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Settings saved to the uploaded LittleFS image"); + } else { + SS2K_LOGE(HTTP_SERVER_LOG_TAG, "Failed to remount LittleFS before saving settings"); + } + } server.send(200, "text/plain", "OK"); - // It's better to trigger the reboot after successfully notifying the client. - ss2k->rebootFlag = true; + if (otaFilesystemUpload) { + // The filesystem was replaced underneath the running web server. Reboot + // directly after allowing the response to reach the browser. + delay(500); + ESP.restart(); + } else { + // Firmware uploads can use the normal cooperative reboot path. + ss2k->rebootFlag = true; + } } }, // This is the onUpload callback. It handles the file data as it arrives. // It should not send any response to the client. []() { HTTPUpload &upload = server.upload(); - if (upload.filename == String("firmware.bin").c_str()) { + if (upload.status == UPLOAD_FILE_START) { + otaUploadRejected = false; + otaFilesystemUpload = upload.filename == FS_BINFILE; + resetFirmwareUploadValidation(); + } + if (upload.filename == FW_BINFILE) { if (upload.status == UPLOAD_FILE_START) { ss2k->isUpdating = true; // Set the updating flag to true SS2K_LOG(HTTP_SERVER_LOG_TAG, "Update Start: %s", upload.filename.c_str()); - if (!Update.begin(UPDATE_SIZE_UNKNOWN, U_FLASH)) { - Update.printError(Serial); - } } else if (upload.status == UPLOAD_FILE_WRITE) { - /* flashing firmware to ESP*/ - if (Update.write(upload.buf, upload.currentSize) != upload.currentSize) { + size_t chunkOffset = 0; + if (!otaFirmwareUpdateBegun && !otaUploadRejected) { + const size_t headerBytesNeeded = sizeof(otaFirmwareHeader) - otaFirmwareHeaderLength; + const size_t headerBytesInChunk = min(headerBytesNeeded, upload.currentSize); + memcpy(otaFirmwareHeader + otaFirmwareHeaderLength, upload.buf, headerBytesInChunk); + otaFirmwareHeaderLength += headerBytesInChunk; + chunkOffset += headerBytesInChunk; + + if (otaFirmwareHeaderLength == sizeof(otaFirmwareHeader)) { + const FirmwareImageHeaderValidation validation = validateFirmwareImageHeader(otaFirmwareHeader, otaFirmwareHeaderLength); + if (validation.result != FirmwareImageHeaderResult::Valid) { + otaUploadRejected = true; + otaUploadError = String("Rejected firmware image: ") + firmwareImageHeaderResultName(validation.result) + "."; + ss2k->isUpdating = false; + SS2K_LOGE(HTTP_SERVER_LOG_TAG, "Rejected uploaded firmware image: %s (expected chip 0x%04x, image chip 0x%04x)", + firmwareImageHeaderResultName(validation.result), CONFIG_IDF_FIRMWARE_CHIP_ID, static_cast(validation.imageChipId)); + return; + } + + if (!Update.begin(UPDATE_SIZE_UNKNOWN, U_FLASH)) { + otaUploadRejected = true; + otaUploadError = "Unable to start firmware update."; + ss2k->isUpdating = false; + Update.printError(Serial); + return; + } + otaFirmwareUpdateBegun = true; + + if (Update.write(otaFirmwareHeader, sizeof(otaFirmwareHeader)) != sizeof(otaFirmwareHeader)) { + otaUploadRejected = true; + otaUploadError = "Failed to write firmware image header."; + Update.printError(Serial); + return; + } + } + } + + if (!otaUploadRejected && otaFirmwareUpdateBegun && chunkOffset < upload.currentSize && + Update.write(upload.buf + chunkOffset, upload.currentSize - chunkOffset) != upload.currentSize - chunkOffset) { + otaUploadRejected = true; + otaUploadError = "Firmware upload write failed."; Update.printError(Serial); SS2K_LOG(HTTP_SERVER_LOG_TAG, "Upload Write Failed."); } } else if (upload.status == UPLOAD_FILE_END) { // Finalize the update. The true parameter tells it to flash the remaining buffer. // DO NOT send a response here. - if (Update.end(true)) { + if (otaUploadRejected) { + if (otaFirmwareUpdateBegun) Update.abort(); + ss2k->isUpdating = false; + } else if (!otaFirmwareUpdateBegun) { + otaUploadRejected = true; + if (otaUploadError.isEmpty()) otaUploadError = "Firmware image header is incomplete."; + ss2k->isUpdating = false; + } else if (Update.end(true)) { SS2K_LOG(HTTP_SERVER_LOG_TAG, "Firmware Upload Finished Successfully."); } else { + otaUploadRejected = true; + otaUploadError = "Firmware image validation failed."; Update.printError(Serial); SS2K_LOG(HTTP_SERVER_LOG_TAG, "Unknown OTA issue on end."); } // The reboot will be triggered in the onComplete handler after the response. - // Setting this to reboot, even if upload fails. - ss2k->rebootFlag = true; } - } else if (upload.filename == String("littlefs.bin").c_str()) { + } else if (upload.filename == FS_BINFILE) { if (upload.status == UPLOAD_FILE_START) { SS2K_LOG(HTTP_SERVER_LOG_TAG, "Update Start: %s", upload.filename.c_str()); if (!Update.begin(UPDATE_SIZE_UNKNOWN, U_SPIFFS)) { @@ -463,11 +666,16 @@ void HTTP_Server::start() { // DO NOT send a response here. if (Update.end(true)) { SS2K_LOG(HTTP_SERVER_LOG_TAG, "Littlefs Upload Finished Successfully."); - userConfig->saveToLittleFS(); } else { Update.printError(Serial); } } + } else if (upload.filename.endsWith(".bin")) { + if (upload.status == UPLOAD_FILE_START) { + otaUploadRejected = true; + otaUploadError = String("Wrong image filename. Expected ") + FW_BINFILE + " or " + FS_BINFILE + "."; + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Rejected image %s; expected %s or %s", upload.filename.c_str(), FW_BINFILE, FS_BINFILE); + } } else { // Handles other file uploads to LittleFS if (upload.status == UPLOAD_FILE_START) { String filename = upload.filename; @@ -525,7 +733,7 @@ void HTTP_Server::handleBTScanner() { } void HTTP_Server::handleIndexFile() { - String filename = "/index.html"; + String filename = LittleFS.exists("/index.html.gz") ? "/index.html.gz" : "/index.html"; if (LittleFS.exists(filename)) { File file = LittleFS.open(filename, FILE_READ); server.streamFile(file, "text/html"); @@ -539,17 +747,15 @@ void HTTP_Server::handleIndexFile() { void HTTP_Server::handleLittleFSFile() { String filename = server.uri(); - int dotPosition = filename.lastIndexOf("."); - String fileType = filename.substring((dotPosition + 1), filename.length()); + if (!LittleFS.exists(filename) && LittleFS.exists(filename + ".gz")) { + filename += ".gz"; + } if (LittleFS.exists(filename)) { File file = LittleFS.open(filename, FILE_READ); - if (fileType == "gz") { - fileType = "html"; // no need to change content type as it's done automatically by .streamfile below VV - } - server.streamFile(file, "text/" + fileType); + server.streamFile(file, contentTypeForPath(filename)); file.close(); SS2K_LOG(HTTP_SERVER_LOG_TAG, "Served %s", filename.c_str()); - } else if (!LittleFS.exists("/index.html")) { + } else if (!filesystemIndexExists()) { SS2K_LOG(HTTP_SERVER_LOG_TAG, "%s not found and no filesystem. Sending builtin index.html", filename.c_str()); handleIndexFile(); } else { @@ -699,28 +905,24 @@ void HTTP_Server::settingsProcessor() { if (wasBTUpdate) { // Special BT page update response response += "Selections Saved!"; + "= '/bluetoothscanner.html';\",1000);"; } else if (wasSettingsUpdate) { // Special Settings Page update response response += "Network settings will be applied at next reboot.
Everything " "else is available immediately."; + "setTimeout(\"location.href = '/settings.html';\",1000);"; } else { // Normal response response += "Network settings will be applied at next reboot.
Everything " "else is available immediately."; + "setTimeout(\"location.href = '/index.html';\",1000);"; } SS2K_LOG(HTTP_SERVER_LOG_TAG, "Config Updated From Web"); ss2k->saveFlag = true; if (reboot) { response += "Please wait while your settings are saved and SmartSpin2k reboots."; + "setTimeout(\"location.href = '/bluetoothscanner.html';\",5000);"; server.send(200, "text/html", response); ss2k->rebootFlag = true; } @@ -741,11 +943,7 @@ void HTTP_Server::FirmwareUpdate() { WiFiClientSecure localClient; localClient.setCACert(rootCACertificate); SS2K_LOG(HTTP_SERVER_LOG_TAG, "Checking for newer firmware:"); - http.begin(userConfig->getFirmwareUpdateURL() + String(FW_VERSIONFILE), - rootCACertificate); // check version URL - delay(100); - int httpCode = http.GET(); // get data from version file - delay(100); + int httpCode = beginHttpGet(http, localClient, userConfig->getFirmwareUpdateURL() + String(FW_VERSIONFILE)); String payload; if (httpCode == HTTP_CODE_OK) { // if version received payload = http.getString(); // save received version @@ -759,28 +957,35 @@ void HTTP_Server::FirmwareUpdate() { http.end(); if (httpCode == HTTP_CODE_OK) { // if version received + const String serverVersion = payload; + const String filesystemVersion = getNVSFilesystemVersion(); bool updateAnyway = false; - if (!LittleFS.exists("/index.html")) { + if (!filesystemIndexExists()) { // force firmware update if index.html is missing // updateAnyway = true; SS2K_LOG(HTTP_SERVER_LOG_TAG, " -index.html not found."); } Version availableVer(payload.c_str()); Version currentVer(FIRMWARE_VERSION); + // Development builds append branch/commit data to the release they follow. + // Treat that suffix as newer when the numeric date components are equal. + bool firmwareIsAhead = currentVer > availableVer || (currentVer == availableVer && serverVersion != FIRMWARE_VERSION); + bool filesystemUpgradeAvailable = !firmwareIsAhead && + (filesystemVersion.isEmpty() || availableVer > Version(filesystemVersion.c_str())); + bool filesystemNeedsUpdate = !filesystemIndexExists() || filesystemUpgradeAvailable; + SS2K_LOG(HTTP_SERVER_LOG_TAG, " - Filesystem version: %s%s", filesystemVersion.isEmpty() ? "not recorded" : filesystemVersion.c_str(), + filesystemNeedsUpdate ? " (update required)" : ""); + if (firmwareIsAhead && filesystemIndexExists()) { + SS2K_LOG(HTTP_SERVER_LOG_TAG, " - Firmware is ahead of the server; not installing older release files"); + } - if (((availableVer > currentVer) && (userConfig->getAutoUpdate())) || (!LittleFS.exists("/index.html"))) { + if (filesystemNeedsUpdate) { //////////////// Update LittleFS////////////// SS2K_LOG(HTTP_SERVER_LOG_TAG, "Updating FileSystem"); - http.begin(DATA_UPDATEURL DATA_FILELIST, rootCACertificate); // check version URL - delay(100); - httpCode = http.GET(); // get data from version file - delay(100); + httpCode = beginHttpGet(http, localClient, DATA_UPDATEURL DATA_FILELIST); JsonDocument doc; if (httpCode == HTTP_CODE_OK) { // if version received - payload = http.getString(); // save received version - payload.trim(); - // Deserialize the JSON document - DeserializationError error = deserializeJson(doc, payload); + DeserializationError error = deserializeJson(doc, http.getStream()); if (error) { SS2K_LOG(HTTP_SERVER_LOG_TAG, "Failed to read file list"); http.end(); // Make sure to end HTTP before returning @@ -793,56 +998,84 @@ void HTTP_Server::FirmwareUpdate() { } // End HTTP connection after file list download http.end(); + if (httpCode != HTTP_CODE_OK) return; JsonArray files = doc.as(); + if (files.isNull() || (!manifestContains(files, "/index.html.gz") && !manifestContains(files, "/index.html"))) { + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Filesystem file list is invalid or has no index page"); + return; + } + bool filesystemUpdateSucceeded = pruneFilesystem(files); // iterate through file list and download files individually for (JsonVariant v : files) { String fileName = "/" + v.as(); - http.begin(DATA_UPDATEURL + fileName, - rootCACertificate); // check version URL - delay(100); - httpCode = http.GET(); - delay(100); + httpCode = beginHttpGet(http, localClient, DATA_UPDATEURL + fileName); if (httpCode == HTTP_CODE_OK) { - payload = http.getString(); - payload.trim(); LittleFS.remove(fileName); File file = LittleFS.open(fileName, FILE_WRITE, true); if (!file) { - SS2K_LOG(HTTP_SERVER_LOG_TAG, "Failed to create file, %s", fileName); + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Failed to create file, %s", fileName.c_str()); + filesystemUpdateSucceeded = false; http.end(); // End HTTP before returning return; } - file.print(payload); + int bytesWritten = http.writeToStream(&file); file.close(); - SS2K_LOG(HTTP_SERVER_LOG_TAG, "Created: %s", fileName); - httpServer.internetConnection = true; + if (bytesWritten < 0) { + LittleFS.remove(fileName); + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Error writing %s (%d)", fileName.c_str(), bytesWritten); + httpServer.internetConnection = false; + filesystemUpdateSucceeded = false; + } else { + if (fileName.endsWith(".gz")) { + String uncompressedName = fileName.substring(0, fileName.length() - 3); + LittleFS.remove(uncompressedName); + } + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Created: %s (%d bytes)", fileName.c_str(), bytesWritten); + httpServer.internetConnection = true; + } } else { - SS2K_LOG(HTTP_SERVER_LOG_TAG, "Error downloading %s %d", fileName, httpCode); + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Error downloading %s %d", fileName.c_str(), httpCode); httpServer.internetConnection = false; + filesystemUpdateSucceeded = false; } // End HTTP connection after each file download http.end(); } - //////// Update Firmware ///////// - if (((availableVer > currentVer) || updateAnyway) && (userConfig->getAutoUpdate())) { - SS2K_LOG(HTTP_SERVER_LOG_TAG, "New firmware detected!"); - SS2K_LOG(HTTP_SERVER_LOG_TAG, "Upgrading from %s to %s", FIRMWARE_VERSION, payload.c_str()); - t_httpUpdate_return ret = httpUpdate.update(localClient, userConfig->getFirmwareUpdateURL() + String(FW_BINFILE)); - switch (ret) { - case HTTP_UPDATE_FAILED: - SS2K_LOG(HTTP_SERVER_LOG_TAG, "HTTP_UPDATE_FAILED Error %d : %s", httpUpdate.getLastError(), httpUpdate.getLastErrorString().c_str()); - break; - - case HTTP_UPDATE_NO_UPDATES: - SS2K_LOG(HTTP_SERVER_LOG_TAG, "HTTP_UPDATE_NO_UPDATES"); - break; - - case HTTP_UPDATE_OK: - SS2K_LOG(HTTP_SERVER_LOG_TAG, "HTTP_UPDATE_OK"); - break; + if (filesystemUpdateSucceeded && filesystemIndexExists()) { + if (setNVSFilesystemVersion(serverVersion)) { + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Filesystem updated to version %s", serverVersion.c_str()); + } else { + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Failed to save filesystem version %s", serverVersion.c_str()); } + } else { + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Filesystem update incomplete; version was not changed"); + } + } + + //////// Update Firmware ///////// + if (((availableVer > currentVer) || updateAnyway) && (userConfig->getAutoUpdate())) { + SS2K_LOG(HTTP_SERVER_LOG_TAG, "New firmware detected!"); + SS2K_LOG(HTTP_SERVER_LOG_TAG, "Upgrading from %s to %s", FIRMWARE_VERSION, serverVersion.c_str()); + const String firmwareUrl = userConfig->getFirmwareUpdateURL() + String(FW_BINFILE); + if (!validateRemoteFirmwareHeader(http, localClient, firmwareUrl)) { + SS2K_LOGE(HTTP_SERVER_LOG_TAG, "Firmware update cancelled before flashing because image validation failed"); + return; + } + t_httpUpdate_return ret = httpUpdate.update(localClient, firmwareUrl); + switch (ret) { + case HTTP_UPDATE_FAILED: + SS2K_LOG(HTTP_SERVER_LOG_TAG, "HTTP_UPDATE_FAILED Error %d : %s", httpUpdate.getLastError(), httpUpdate.getLastErrorString().c_str()); + break; + + case HTTP_UPDATE_NO_UPDATES: + SS2K_LOG(HTTP_SERVER_LOG_TAG, "HTTP_UPDATE_NO_UPDATES"); + break; + + case HTTP_UPDATE_OK: + SS2K_LOG(HTTP_SERVER_LOG_TAG, "HTTP_UPDATE_OK"); + break; } } else { // don't update SS2K_LOG(HTTP_SERVER_LOG_TAG, " - Current Version: %s", FIRMWARE_VERSION); diff --git a/src/Main.cpp b/src/Main.cpp index b22e7950..e6393569 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -83,19 +83,48 @@ extern "C" void app_main() { initArduino(); // Serial port for debugging purposes Serial.begin(115200); + + BaseType_t taskCreated = xTaskCreatePinnedToCore(SS2K::maintenanceLoop, /* Task function. */ + "maintenanceLoopFunction", /* name of task. */ + MAIN_STACK, /* Stack size of task */ + NULL, /* parameter of the task */ + 10, /* priority of the task */ + &maintenanceLoopTask, /* task handle */ + 1); /* pin task to core */ + if (taskCreated != pdPASS) { + Serial.println("Failed to create maintenance task; restarting"); + ESP.restart(); + } +} + +void SS2K::finishSetup() { SS2K_LOG(MAIN_LOG_TAG, "Compiled %s%s", __DATE__, __TIME__); - pinMode(REV_PIN, INPUT); - int actualVoltage = analogRead(REV_PIN); +#if defined(SMARTSPIN2K_S3) + currentBoard = boards.rev3; +#else + // Revisions one and two share the same hardware-detection pin. + currentBoard = boards.rev1; +#endif + pinMode(currentBoard.revisionPin, INPUT); + int actualVoltage = analogRead(currentBoard.revisionPin); +#if defined(SMARTSPIN2K_S3) + SS2K_LOG(MAIN_LOG_TAG, "Board ID ADC on GPIO%d: %d (expected %d +/- %d)", currentBoard.revisionPin, actualVoltage, currentBoard.versionVoltage, + currentBoard.versionTolerance); + if (abs(actualVoltage - currentBoard.versionVoltage) > currentBoard.versionTolerance) { + SS2K_LOG(MAIN_LOG_TAG, "WARNING: Board ID resistor does not match the ESP32-S3 hardware revision"); + } +#else if (actualVoltage - boards.rev1.versionVoltage >= boards.rev2.versionVoltage - actualVoltage) { currentBoard = boards.rev2; } else { currentBoard = boards.rev1; } - SS2K_LOG(MAIN_LOG_TAG, "Current Board Revision is: %s", currentBoard.name); +#endif + SS2K_LOG(MAIN_LOG_TAG, "Current Board Revision is: %s", currentBoard.name.c_str()); // initialize Stepper serial port - stepperSerial.begin(57600, SERIAL_8N2, currentBoard.stepperSerialRxPin, currentBoard.stepperSerialTxPin); + initializeStepperSerial(); // initialize aux serial port (Peloton) if (currentBoard.auxSerialTxPin) { auxSerial.begin(19200, SERIAL_8N1, currentBoard.auxSerialRxPin, currentBoard.auxSerialTxPin, false); @@ -125,6 +154,12 @@ extern "C" void app_main() { // print littleFS free space and all file sizes on partition Serial.printf("LittleFS Total Bytes:%lu, Used Bytes:%lu\n", LittleFS.totalBytes(), LittleFS.usedBytes()); +#if defined(SMARTSPIN2K_S3) + SS2K_LOG(MAIN_LOG_TAG, "S3 heap: %u bytes, PSRAM: %u bytes", ESP.getHeapSize(), ESP.getPsramSize()); + if (!psramFound()) { + SS2K_LOG(MAIN_LOG_TAG, "WARNING: ESP32-S3 QSPI PSRAM was not detected"); + } +#endif // Check for firmware update. It's important that this stays before BLE & // HTTP setup because otherwise they use too much traffic and the device @@ -134,7 +169,7 @@ extern "C" void app_main() { pinMode(currentBoard.shiftUpPin, INPUT_PULLUP); // Push-Button with input Pullup pinMode(currentBoard.shiftDownPin, INPUT_PULLUP); // Push-Button with input Pullup - pinMode(LED_PIN, OUTPUT); + pinMode(currentBoard.ledPin, OUTPUT); pinMode(currentBoard.enablePin, OUTPUT); pinMode(currentBoard.dirPin, OUTPUT); // Stepper Direction Pin pinMode(currentBoard.stepPin, OUTPUT); // Stepper Step Pin @@ -142,7 +177,7 @@ extern "C" void app_main() { HIGH); // Should be called a disable Pin - High Disables FETs digitalWrite(currentBoard.dirPin, LOW); digitalWrite(currentBoard.stepPin, LOW); - digitalWrite(LED_PIN, LOW); + digitalWrite(currentBoard.ledPin, LOW); ss2k->setLEDEnabled(shouldStartWithLedEnabled()); ss2k->setupTMCStepperDriver(); @@ -152,7 +187,7 @@ extern "C" void app_main() { // disableCore0WDT(); // Disable the watchdog timer on core 0 (so long stepper // moves don't cause problems) - digitalWrite(LED_PIN, LOW); + digitalWrite(currentBoard.ledPin, LOW); // Configure and Initialize Logger logHandler.addAppender(&webSocketAppender); logHandler.addAppender(&udpAppender); @@ -180,15 +215,7 @@ extern "C" void app_main() { #endif ss2k->resetIfShiftersHeld(); - digitalWrite(LED_PIN, LOW); - - xTaskCreatePinnedToCore(SS2K::maintenanceLoop, /* Task function. */ - "maintenanceLoopFunction", /* name of task. */ - MAIN_STACK, /* Stack size of task */ - NULL, /* parameter of the task */ - 10, /* priority of the task */ - &maintenanceLoopTask, /* Task handle to keep track of created task */ - 1); /* pin task to core */ + digitalWrite(currentBoard.ledPin, LOW); } void loop() { // Delete this task so we can make one that's more memory efficient. @@ -196,6 +223,8 @@ void loop() { // Delete this task so we can make one that's more memory efficie } void SS2K::maintenanceLoop(void* pvParameters) { + finishSetup(); + static unsigned long intervalTimer2 = millis(); static unsigned long rebootTimer = millis(); @@ -307,13 +336,19 @@ void SS2K::maintenanceLoop(void* pvParameters) { // Things to do every 6 seconds if ((millis() - intervalTimer2) > 6007) { - // reboot every half hour if not in use. - static int _oldHR = 0; - static int _oldWatts = 0; - static float _oldTargetIncline = 0.0f; - if (_oldHR == rtConfig->hr.getValue() && _oldWatts == rtConfig->watts.getValue() && _oldTargetIncline == rtConfig->getTargetIncline()) { - // Inactivity detected - if (((millis() - rebootTimer) > 1800000)) { + // Reboot after half an hour without meaningful pedaling. Also treat unchanged values as inactive because disconnected servers can leave stale readings behind. + constexpr int inactivityThreshold = 10; + constexpr unsigned long inactivityRebootDelay = 1800000; + static int oldHR = 0; + static int oldWatts = 0; + static int oldCadence = 0; + static float oldTargetIncline = 0.0f; + bool powerAndCadenceAreLow = rtConfig->watts.getValue() < inactivityThreshold && rtConfig->cad.getValue() < inactivityThreshold; + bool readingsAreUnchanged = oldHR == rtConfig->hr.getValue() && oldWatts == rtConfig->watts.getValue() && oldCadence == rtConfig->cad.getValue() && + oldTargetIncline == rtConfig->getTargetIncline(); + bool riderIsInactive = powerAndCadenceAreLow || readingsAreUnchanged; + if (riderIsInactive) { + if ((millis() - rebootTimer) > inactivityRebootDelay) { // Timer expired SS2K_LOG(MAIN_LOG_TAG, "Rebooting due to inactivity."); keepLedOffAfterReboot(); @@ -321,19 +356,19 @@ void SS2K::maintenanceLoop(void* pvParameters) { logHandler.writeLogs(); webSocketAppender.Loop(); } - } else { - // We have activity, update monitored values - _oldHR = rtConfig->hr.getValue(); - _oldWatts = rtConfig->watts.getValue(); - _oldTargetIncline = rtConfig->getTargetIncline(); - rebootTimer = millis(); - ss2k->setLEDEnabled(true); + // Fresh active readings restart the full inactivity window. + oldHR = rtConfig->hr.getValue(); + oldWatts = rtConfig->watts.getValue(); + oldCadence = rtConfig->cad.getValue(); + oldTargetIncline = rtConfig->getTargetIncline(); + rebootTimer = millis(); + ss2k->setLEDEnabled(true); } #ifdef DEBUG_STACK if (!ss2k->isUpdating) { - SS2K_LOG(MAIN_LOG_TAG, "Main Task: %d", uxTaskGetStackHighWaterMark(maintenanceLoopTask)); + SS2K_LOG(MAIN_LOG_TAG, "Maintenance Task: %d", uxTaskGetStackHighWaterMark(maintenanceLoopTask)); SS2K_LOG(MAIN_LOG_TAG, "BLEClient: %d", uxTaskGetStackHighWaterMark(BLEClientTask)); SS2K_LOG(MAIN_LOG_TAG, "Min Heap: %d", esp_get_minimum_free_heap_size()); SS2K_LOG(MAIN_LOG_TAG, "Free Heap: %d", esp_get_free_heap_size()); @@ -355,20 +390,20 @@ void SS2K::maintenanceLoop(void* pvParameters) { void SS2K::setLEDEnabled(bool enabled) { ledEnabled = enabled; if (!enabled) { - digitalWrite(LED_PIN, LOW); + digitalWrite(currentBoard.ledPin, LOW); } } void SS2K::updateLED() { if (!ledEnabled) { - digitalWrite(LED_PIN, LOW); + digitalWrite(currentBoard.ledPin, LOW); return; } int currentCount = spinBLEServer.connectedClientCount(); if (currentCount == 0) { // No app/client connected yet: simple idle blink. - digitalWrite(LED_PIN, (millis() / 500) % 2 == 0 ? LOW : HIGH); + digitalWrite(currentBoard.ledPin, (millis() / 500) % 2 == 0 ? LOW : HIGH); return; } @@ -382,12 +417,12 @@ void SS2K::updateLED() { // After the diagnostic pulses, return to solid-on connected status. if (cyclePosition >= currentCount * pulsePeriod) { - digitalWrite(LED_PIN, HIGH); + digitalWrite(currentBoard.ledPin, HIGH); return; } // Each pulse starts with a short off dip, followed by on-time between dips. - digitalWrite(LED_PIN, (cyclePosition % pulsePeriod) < pulseOffTime ? LOW : HIGH); + digitalWrite(currentBoard.ledPin, (cyclePosition % pulsePeriod) < pulseOffTime ? LOW : HIGH); } void SS2K::FTMSModeShiftModifier() { @@ -423,12 +458,13 @@ void SS2K::FTMSModeShiftModifier() { case FitnessMachineControlPointProcedure::SetTargetPower: // ERG Mode { rtConfig->setShifterPosition(ss2k->lastShifterPosition); // reset shifter position because we're remapping it to ERG target - if ((rtConfig->watts.getTarget() + (shiftDelta * ERG_PER_SHIFT) < userConfig->getMinWatts()) || - (rtConfig->watts.getTarget() + (shiftDelta * ERG_PER_SHIFT) > userConfig->getMaxWatts())) { - SS2K_LOG(MAIN_LOG_TAG, "Shift to %dw blocked", rtConfig->watts.getTarget() + shiftDelta); + const int proposedTarget = rtConfig->watts.getTarget() + (shiftDelta * ERG_PER_SHIFT); + const int minimumTarget = rtConfig->getHomed() ? 0 : userConfig->getMinWatts(); + if (proposedTarget < minimumTarget || proposedTarget > userConfig->getMaxWatts()) { + SS2K_LOG(MAIN_LOG_TAG, "Shift to %dw blocked", proposedTarget); break; } - rtConfig->watts.setTarget(rtConfig->watts.getTarget() + (ERG_PER_SHIFT * shiftDelta)); + rtConfig->watts.setTarget(proposedTarget); SS2K_LOG(MAIN_LOG_TAG, "ERG Shift. New Target: %dw", rtConfig->watts.getTarget()); // Format output for FTMS passthrough #ifndef INTERNAL_ERG_4EXT_FTMS @@ -535,9 +571,9 @@ void SS2K::resetIfShiftersHeld() { if ((digitalRead(currentBoard.shiftUpPin) == LOW) && (digitalRead(currentBoard.shiftDownPin) == LOW)) { SS2K_LOG(MAIN_LOG_TAG, "Resetting to defaults via shifter buttons."); for (int x = 0; x < 10; x++) { // blink fast to acknowledge - digitalWrite(LED_PIN, HIGH); + digitalWrite(currentBoard.ledPin, HIGH); delay(200); - digitalWrite(LED_PIN, LOW); + digitalWrite(currentBoard.ledPin, LOW); } for (int i = 0; i < 20; i++) { LittleFS.format(); diff --git a/src/SensorCollector.cpp b/src/SensorCollector.cpp index a18befe3..73d25260 100644 --- a/src/SensorCollector.cpp +++ b/src/SensorCollector.cpp @@ -93,13 +93,13 @@ void collectAndSet(NimBLEUUID charUUID, NimBLEUUID serviceUUID, std::string& uni logBufLength += snprintf(logBuf + logBufLength, kLogBufMaxLength - logBufLength, " SD(%.2f)", fmodf(sensorData->getSpeed(), 1000.0)); } - if (sensorData->hasResistance() && !uniqueName.starts_with("IC Bike")) { // Blacklist IC Bike resistance due to non-standard compliance - rtConfig->resistance.setSimulate(false); // Mark as real data - if ((ss2k->pelotonIsConnected) && (charUUID != PELOTON_DATA_UUID)) { + if (sensorData->hasResistance() && uniqueName.starts_with("Grupetto")) { // Blacklist everything not Grupetto. + if (charUUID == PELOTON_DATA_UUID) { // Peloton connected but using BLE Power Meter. So skip resistance for UUID's that aren't Peloton. } else { rtConfig->resistance.setValue(sensorData->getResistance()); logBufLength += snprintf(logBuf + logBufLength, kLogBufMaxLength - logBufLength, " RS(%d)", sensorData->getResistance() % 1000); + rtConfig->resistance.setSimulate(false); // Mark as real data } } diff --git a/src/Stepper.cpp b/src/Stepper.cpp index 8949cb04..bbccf560 100644 --- a/src/Stepper.cpp +++ b/src/Stepper.cpp @@ -14,12 +14,111 @@ #include HardwareSerial stepperSerial(2); -TMC2209Stepper driver(&SERIAL_PORT, R_SENSE, 0b00); // Hardware Serial +// Construct after hardware detection so the selected board's sense resistor is used. +static TMC2209Stepper* driver = nullptr; FastAccelStepperEngine engine = FastAccelStepperEngine(); FastAccelStepper* stepper = NULL; extern Board currentBoard; +void initializeStepperSerial(bool restart) { + if (restart) { + stepperSerial.end(); + } + + // The TMC2209 requires an idle-high interval to reset and resynchronize its + // UART receiver after an incomplete or invalid datagram. Drive TX manually + // before handing the pin to the UART peripheral so boot state is deterministic. + digitalWrite(currentBoard.stepperSerialTxPin, HIGH); + pinMode(currentBoard.stepperSerialTxPin, OUTPUT); + delay(20); + + stepperSerial.begin(57600, SERIAL_8N1, currentBoard.stepperSerialRxPin, currentBoard.stepperSerialTxPin); +} + +namespace { + +constexpr uint8_t TMC2209_OTP_IHOLD_SHIFT = 21; +constexpr uint32_t TMC2209_OTP_IHOLD_MASK = 0x03UL << TMC2209_OTP_IHOLD_SHIFT; +constexpr uint32_t TMC2209_OTP_IHOLD_9_PERCENT = 0x01UL << TMC2209_OTP_IHOLD_SHIFT; +constexpr uint16_t TMC2209_OTP_PROGRAM_IHOLD_9 = 0xBD25; // Magic 0xBD, OTP byte 2, bit 5. + +bool recoverTmc2209Connection(TMC2209Stepper* tmcDriver) { + static uint8_t lastInterfaceCounter = 0; + static bool interfaceCounterValid = false; + + uint8_t connectionStatus = tmcDriver->test_connection(); + if (connectionStatus == 0) { + const uint8_t interfaceCounter = tmcDriver->IFCNT(); + if (tmcDriver->CRCerror) { + SS2K_LOG(MAIN_LOG_TAG, "TMC IFCNT read failed CRC; forcing idle-high recovery"); + } else if (!interfaceCounterValid) { + lastInterfaceCounter = interfaceCounter; + interfaceCounterValid = true; + return true; + } else if (interfaceCounter != lastInterfaceCounter) { + lastInterfaceCounter = interfaceCounter; + return true; + } else { + SS2K_LOG(MAIN_LOG_TAG, "TMC IFCNT did not increment from %u; forcing idle-high recovery", static_cast(interfaceCounter)); + } + } else { + SS2K_LOG(MAIN_LOG_TAG, "TMC UART test failed (%u); forcing idle-high recovery", static_cast(connectionStatus)); + } + + initializeStepperSerial(true); + connectionStatus = tmcDriver->test_connection(); + + if (connectionStatus != 0) { + SS2K_LOG(MAIN_LOG_TAG, "TMC UART recovery failed (%u)", static_cast(connectionStatus)); + return false; + } + + lastInterfaceCounter = tmcDriver->IFCNT(); + if (tmcDriver->CRCerror) { + SS2K_LOG(MAIN_LOG_TAG, "TMC UART recovered, but IFCNT read failed CRC"); + interfaceCounterValid = false; + return false; + } + interfaceCounterValid = true; + SS2K_LOG(MAIN_LOG_TAG, "TMC UART recovered"); + return true; +} + +void programTmc2209LowHoldCurrentOtp(TMC2209Stepper* tmcDriver) { + uint32_t otpRead = tmcDriver->OTP_READ(); + const uint32_t otpIhold = otpRead & TMC2209_OTP_IHOLD_MASK; + if (otpIhold == TMC2209_OTP_IHOLD_9_PERCENT) { + SS2K_LOG(MAIN_LOG_TAG, "TMC OTP hold current is already programmed to 9%%"); + return; + } + if (otpIhold != 0) { + const uint8_t otpIholdSetting = static_cast(otpIhold >> TMC2209_OTP_IHOLD_SHIFT); + SS2K_LOG(MAIN_LOG_TAG, "TMC OTP hold current is already programmed (setting %u); leaving irreversible OTP unchanged", static_cast(otpIholdSetting)); + return; + } + + SS2K_LOG(MAIN_LOG_TAG, "Programming TMC OTP hold current to 9%%"); + tmcDriver->OTP_PROG(TMC2209_OTP_PROGRAM_IHOLD_9); + delay(10); + otpRead = tmcDriver->OTP_READ(); + + if ((otpRead & TMC2209_OTP_IHOLD_MASK) != TMC2209_OTP_IHOLD_9_PERCENT) { + // The datasheet recommends retrying a missing OTP bit with a 100 ms programming time. + tmcDriver->OTP_PROG(TMC2209_OTP_PROGRAM_IHOLD_9); + delay(100); + otpRead = tmcDriver->OTP_READ(); + } + + if ((otpRead & TMC2209_OTP_IHOLD_MASK) == TMC2209_OTP_IHOLD_9_PERCENT) { + SS2K_LOG(MAIN_LOG_TAG, "TMC OTP hold current programmed and verified at 9%%"); + } else { + SS2K_LOG(MAIN_LOG_TAG, "TMC OTP hold-current programming failed verification (OTP_READ=0x%06lX)", static_cast(otpRead & 0xFFFFFFUL)); + } +} + +} // namespace + void SS2K::moveStepper() { static bool _stepperDir = userConfig->getStepperDir(); if (stepper) { @@ -150,8 +249,20 @@ void SS2K::_resistanceMove() { } void SS2K::setupTMCStepperDriver(bool reset) { + if (!driver) { + driver = new TMC2209Stepper(&stepperSerial, currentBoard.rSense, 0b00); + } + const bool initializeFastAccel = !reset || stepper == nullptr; + + // Verify communication before issuing any driver configuration writes. A + // failed recovery leaves the existing hardware state untouched. + if (!recoverTmc2209Connection(driver)) { + SS2K_LOG(MAIN_LOG_TAG, "Skipping TMC driver setup because UART is unavailable"); + return; + } + // FastAccel setup - if (!reset) { + if (initializeFastAccel) { engine.init(); stepper = engine.stepperConnectToPin(currentBoard.stepPin); stepper->setDirectionPin(currentBoard.dirPin, userConfig->getStepperDir()); @@ -161,15 +272,16 @@ void SS2K::setupTMCStepperDriver(bool reset) { stepper->setAcceleration(STEPPER_ACCELERATION); stepper->setDelayToDisable(65535); // TMC Driver Setup - driver.begin(); + driver->begin(); + programTmc2209LowHoldCurrentOtp(driver); } - driver.pdn_disable(true); // Use PDN pin to enable UART communication instead of grounding signal - driver.mstep_reg_select(true); // Use register instead of ms1&ms2 pins for microstep selection - driver.microsteps(4); // Set microsteps to 1/4 - driver.iholddelay(5); // Controls the number of clock cycles for motor power down after standstill is detected - driver.TPOWERDOWN(16); // delay until hold current (0-255). 255 = 5.6s, 2 is minimum for StealthChop. - driver.toff(5); // needs >0 for driver enable. 1-15 controls duration of slow decay phase of pwm. + driver->pdn_disable(true); // Use PDN pin to enable UART communication instead of grounding signal + driver->mstep_reg_select(true); // Use register instead of ms1&ms2 pins for microstep selection + driver->microsteps(4); // Set microsteps to 1/4 + driver->iholddelay(5); // Controls the number of clock cycles for motor power down after standstill is detected + driver->TPOWERDOWN(16); // delay until hold current (0-255). 255 = 5.6s, 2 is minimum for StealthChop. + driver->toff(5); // needs >0 for driver enable. 1-15 controls duration of slow decay phase of pwm. this->updateStealthChop(); this->updateStepperSpeed(); this->updateStepperPower(); @@ -178,6 +290,10 @@ void SS2K::setupTMCStepperDriver(bool reset) { static int lastHomingSgThreshold = 0; +static int getScaledHomingSensitivity() { + return round(userConfig->getHomingSensitivity() * currentBoard.homingSensitivityScaler); +} + static HomingSgBaseline getHomingSgBaseline() { int samples[HOMING_SG_SAMPLE_COUNT]; int totalSgResult = 0; @@ -185,10 +301,10 @@ static HomingSgBaseline getHomingSgBaseline() { int maxSampleIndex = 0; for (int i = 0; i < HOMING_SG_SAMPLE_COUNT; i++) { - samples[i] = driver.SG_RESULT(); + samples[i] = driver->SG_RESULT(); if (samples[i] == 0) { delay(30); - samples[i] = driver.SG_RESULT(); + samples[i] = driver->SG_RESULT(); } totalSgResult += samples[i]; if (samples[i] < samples[minSampleIndex]) minSampleIndex = i; @@ -207,9 +323,10 @@ static HomingSgBaseline getHomingSgBaseline() { if (samples[i] > trimmedMax) trimmedMax = samples[i]; } - int threshold = round(trimmedTotal / (float)trimmedCount); - int normalLowDrop = threshold - trimmedMin; - int measuredSensitivity = max(userConfig->getHomingSensitivity(), normalLowDrop + max(userConfig->getHomingSensitivity() / 2, HOMING_SG_MIN_SAMPLE_MARGIN)); + int configuredSensitivity = getScaledHomingSensitivity(); + int threshold = round(trimmedTotal / (float)trimmedCount); + int normalLowDrop = threshold - trimmedMin; + int measuredSensitivity = max(configuredSensitivity, normalLowDrop + max(configuredSensitivity / 2, HOMING_SG_MIN_SAMPLE_MARGIN)); int maxSensitivity = min(HOMING_MAX_SENSITIVITY, max(threshold, 1)); measuredSensitivity = constrain(measuredSensitivity + 10, 1, maxSensitivity); SS2K_LOG(MAIN_LOG_TAG, "Homing SG baseline used %d/%d trimmed samples. Dropped: %d/%d, Spread: %d-%d, measured sensitivity: %d", trimmedCount, HOMING_SG_SAMPLE_COUNT, @@ -223,7 +340,7 @@ static HomingSgBaseline getHomingSgBaseline() { */ bool SS2K::_findEndStop(bool moveForward) { unsigned long timeoutTimer = millis(); - HomingSgBaseline baseline = {0, userConfig->getHomingSensitivity()}; + HomingSgBaseline baseline = {0, getScaledHomingSensitivity()}; // --- SETUP DRIVER FOR SENSORLESS HOMING --- // Use very low power for sensitive stall detection @@ -258,11 +375,11 @@ bool SS2K::_findEndStop(bool moveForward) { return false; } - currentSgResult = driver.SG_RESULT(); + currentSgResult = driver->SG_RESULT(); // if zero detected, wait 10ms and sample again. if (currentSgResult == 0) { delay(10); - currentSgResult = driver.SG_RESULT(); + currentSgResult = driver->SG_RESULT(); } // Periodically log the status for tuning @@ -394,7 +511,7 @@ void SS2K::goHome(bool bothDirections) { } } - if (!stepper || currentBoard.name == r1_NAME) { + if (!stepper || !currentBoard.homingSupported) { SS2K_LOG(MAIN_LOG_TAG, "Homing not supported or stepper not initialized."); fitnessMachineService.spinDown(FitnessMachineStatus::SpinDown_Error); return; @@ -522,30 +639,35 @@ void SS2K::goHome(bool bothDirections) { // Applies current power to driver void SS2K::updateStepperPower(int pwr) { + if (driver == nullptr || !recoverTmc2209Connection(driver)) { + SS2K_LOG(MAIN_LOG_TAG, "Skipping stepper power update because TMC UART is unavailable"); + return; + } + uint16_t rmsPwr = (pwr == 0) ? userConfig->getStepperPower() : pwr; - driver.rms_current(rmsPwr, HOLD_PWR_SCALER); - SS2K_LOG(MAIN_LOG_TAG, "Stepper power is now %d mA (driver setpoint %d mA)", rmsPwr, driver.rms_current()); + driver->rms_current(rmsPwr, HOLD_PWR_SCALER); + SS2K_LOG(MAIN_LOG_TAG, "Stepper power is now %d mA (driver setpoint %d mA)", rmsPwr, driver->rms_current()); } // Applies current StealthChop to driver void SS2K::updateStealthChop(bool coolStepEnabled) { bool stealthChopEnabled = userConfig->getStealthChop(); - driver.en_spreadCycle(!stealthChopEnabled); - driver.pwm_autoscale(stealthChopEnabled); - driver.pwm_autograd(stealthChopEnabled); + driver->en_spreadCycle(!stealthChopEnabled); + driver->pwm_autoscale(stealthChopEnabled); + driver->pwm_autograd(stealthChopEnabled); // Reuse homing sensitivity as CoolStep load tolerance when StealthChop is active. uint8_t coolstepTolerance = (uint8_t)constrain(userConfig->getHomingSensitivity(), 0, 255); if (stealthChopEnabled && coolStepEnabled) { - driver.SGTHRS(coolstepTolerance); - driver.semin(1); // Enable CoolStep - driver.seup(1); - driver.sedn(1); - driver.semax((uint8_t)constrain((coolstepTolerance / 16) + 1, 1, 15)); - driver.seimin(false); + driver->SGTHRS(coolstepTolerance); + driver->semin(1); // Enable CoolStep + driver->seup(1); + driver->sedn(1); + driver->semax((uint8_t)constrain((coolstepTolerance / 16) + 1, 1, 15)); + driver->seimin(false); } else { - driver.semin(0); // Disable CoolStep - driver.SGTHRS(0); + driver->semin(0); // Disable CoolStep + driver->SGTHRS(0); } SS2K_LOG(MAIN_LOG_TAG, "StealthChop:%d CoolStep:%d SGTHRS:%d", stealthChopEnabled, stealthChopEnabled && coolStepEnabled, coolstepTolerance); diff --git a/test/test.h b/test/test.h index 54a45ddc..428a32d0 100644 --- a/test/test.h +++ b/test/test.h @@ -55,4 +55,5 @@ class TestAdevName2UniqueName { static void test_null_device_handling(void); static void test_device_without_name(void); static void test_backward_compatibility(void); + static void test_case_insensitive_device_matching(void); }; diff --git a/test/test_adevName2UniqueName.cpp b/test/test_adevName2UniqueName.cpp index 7816a758..b3124ba3 100644 --- a/test/test_adevName2UniqueName.cpp +++ b/test/test_adevName2UniqueName.cpp @@ -7,6 +7,7 @@ #include #include +#include "BLE_Device_Identity.h" #include "test.h" #include "settings.h" #include @@ -204,4 +205,12 @@ void TestAdevName2UniqueName::test_backward_compatibility() { TEST_ASSERT_EQUAL_STRING("TraditionalDevice 55", devices[0].uniqueName.c_str()); TEST_ASSERT_EQUAL_STRING("AndroidDevice", devices[1].uniqueName.c_str()); TEST_ASSERT_EQUAL_STRING("", devices[2].uniqueName.c_str()); // Empty slot -} \ No newline at end of file +} + +void TestAdevName2UniqueName::test_case_insensitive_device_matching() { + TEST_ASSERT_TRUE(bleDeviceIdentifierEquals("IC BIKE D0", "IC BIKE d0")); + TEST_ASSERT_TRUE(bleDeviceIdentifierEquals("aa:bb:cc:dd:ee:d0", "AA:BB:CC:DD:EE:D0")); + TEST_ASSERT_FALSE(bleDeviceIdentifierEquals("IC BIKE D0", "IC BIKE D1")); + TEST_ASSERT_FALSE(bleDeviceIdentifierEquals("IC BIKE D0", "OTHER BIKE d0")); + TEST_ASSERT_FALSE(bleDeviceIdentifierEquals("IC BIKE D0", nullptr)); +} diff --git a/test/test_unity.cpp b/test/test_unity.cpp index 31f43996..f32de69b 100644 --- a/test/test_unity.cpp +++ b/test/test_unity.cpp @@ -82,6 +82,7 @@ void setup() { RUN_TEST(test.test_null_device_handling); RUN_TEST(test.test_device_without_name); RUN_TEST(test.test_backward_compatibility); + RUN_TEST(test.test_case_insensitive_device_matching); } UNITY_END(); @@ -123,4 +124,4 @@ int main(int argc, char** argv) { setup(); return 0; } -#endif \ No newline at end of file +#endif