upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYour Name <you@example.com>2026-05-15 17:03:40 +0530
committerYour Name <you@example.com>2026-05-15 17:03:40 +0530
commita7d0a672d59bf8985a6fc0e61b49015fabd96513 (patch)
tree46814d1757649a640f53805a8d9dfc1b0f354289
parent8a2307a5ced6da94cc674602219d5a68a1246264 (diff)
Phase 1 working: captive portal, DNS hijack, NAT-based access control
- Fix WiFi init order: netif creation before esp_wifi_init, set mode before set_config - Replace broken netif input filter with NAPT on/off per authentication state - NAPT disabled by default, enabled when client granted, disabled on revoke - Fix test helpers: use -I wlp59s0 for ping, handle nslookup exit code 1 - All 20 API tests pass, all 6 smoke tests pass
-rw-r--r--CMakeLists.txt2
-rw-r--r--Makefile206
-rw-r--r--main/CMakeLists.txt6
-rw-r--r--main/captive_portal.c224
-rw-r--r--main/captive_portal.h11
-rw-r--r--main/dns_server.c3
-rw-r--r--main/firewall.c17
-rw-r--r--main/tollgate_main.c221
-rw-r--r--package-lock.json74
-rw-r--r--package.json15
-rw-r--r--partitions.csv5
-rw-r--r--sdkconfig2262
-rw-r--r--sdkconfig.defaults9
-rw-r--r--tests/api.mjs79
-rw-r--r--tests/captive-portal.spec.mjs75
-rw-r--r--tests/helpers/network.mjs89
-rw-r--r--tests/helpers/serial.mjs82
-rw-r--r--tests/network.mjs66
-rw-r--r--tests/playwright.config.mjs16
-rw-r--r--tests/smoke.mjs52
20 files changed, 3508 insertions, 6 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ae5284d..d93e479 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
1cmake_minimum_required(VERSION 3.16) 1cmake_minimum_required(VERSION 3.16)
2set(EXTRA_COMPONENT_DIRS "components") 2set(PARTITION_CSV_PATH "${CMAKE_SOURCE_DIR}/partitions.csv")
3include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3include($ENV{IDF_PATH}/tools/cmake/project.cmake)
4project(esp32-tollgate) 4project(esp32-tollgate)
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..7de799e
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,206 @@
1SHELL := /bin/bash
2.DEFAULT_GOAL := help
3
4-include .env
5export
6
7IDF_PATH ?= $(HOME)/esp/esp-idf
8PROJECT_DIR := $(shell pwd)
9BUILD_DIR := $(PROJECT_DIR)/build
10PORT_A ?= /dev/ttyACM0
11PORT_B ?= /dev/ttyACM1
12PORT ?= $(PORT_A)
13BAUD ?= 460800
14TARGET ?= esp32s3
15
16NODE ?= node
17NPM ?= npm
18PYTHON ?= python3
19
20.PHONY: help setup detect-ports detect-chip detect-all
21.PHONY: flash flash-a flash-b monitor monitor-a monitor-b
22.PHONY: test smoke test-api test-portal test-network test-full
23.PHONY: tokens test-payment
24.PHONY: clean erase-nvs reset serial-log
25.PHONY: bootstrap-config
26
27help:
28 @echo "TollGate ESP32 — Makefile"
29 @echo ""
30 @echo "Discovery:"
31 @echo " detect-ports List connected ESP32 serial ports"
32 @echo " detect-chip Identify chip type on PORT"
33 @echo " detect-all Full device inventory"
34 @echo ""
35 @echo "Build & Flash:"
36 @echo " flash Build + flash to PORT (default: PORT_A)"
37 @echo " flash-a Flash to PORT_A"
38 @echo " flash-b Flash to PORT_B"
39 @echo " monitor Serial monitor on PORT"
40 @echo ""
41 @echo "Test (Phase 1):"
42 @echo " test Run all Phase 1 tests"
43 @echo " smoke Quick 30s smoke test"
44 @echo " test-api curl API endpoint tests"
45 @echo " test-portal Playwright captive portal tests"
46 @echo " test-network DNS/NAT connectivity tests"
47 @echo " test-full All 14 Phase 1 tests"
48 @echo ""
49 @echo "Test (Phase 2):"
50 @echo " tokens Mint test Cashu tokens (AMOUNT=21)"
51 @echo " test-payment Payment flow tests"
52 @echo ""
53 @echo "Utilities:"
54 @echo " setup One-time: install esptool, deps"
55 @echo " clean Clean build"
56 @echo " erase-nvs Erase NVS partition on PORT"
57 @echo " reset Hardware reset on PORT"
58 @echo " bootstrap-config Write .env values to SPIFFS config.json"
59 @echo " serial-log Capture serial output"
60
61# ──────────────────────────────────────────────
62# Discovery
63# ──────────────────────────────────────────────
64
65detect-ports:
66 @echo "=== Serial Ports ==="
67 @ls /dev/ttyACM* /dev/ttyUSB* 2>/dev/null || echo "No serial ports found"
68 @echo ""
69 @echo "=== USB Devices ==="
70 @lsusb 2>/dev/null | grep -i -E "serial|uart|cp210|ch340|ftdi|esp" || true
71 @echo ""
72 @echo "=== By ID ==="
73 @ls -la /dev/serial/by-id/ 2>/dev/null || true
74
75detect-chip:
76 @echo "=== Detecting chip on $(PORT) ==="
77 @python3 -m esptool --port $(PORT) chip_id 2>&1 || \
78 $(PYTHON) -c "import esptool; esptool.main(['--port','$(PORT)','chip_id'])" 2>&1 || \
79 echo "esptool not found. Run: pip install esptool"
80 @echo ""
81 @python3 -m esptool --port $(PORT) flash_id 2>&1 || true
82
83detect-all: detect-ports
84 @for port in /dev/ttyACM* /dev/ttyUSB*; do \
85 [ -e "$$port" ] || continue; \
86 echo ""; \
87 echo "=== Device at $$port ==="; \
88 python3 -m esptool --port $$port chip_id 2>&1 | head -5 || true; \
89 python3 -m esptool --port $$port flash_id 2>&1 | head -5 || true; \
90 done
91
92# ──────────────────────────────────────────────
93# Setup
94# ──────────────────────────────────────────────
95
96setup:
97 @echo "=== Installing esptool ==="
98 pip install esptool 2>/dev/null || pip3 install esptool
99 @echo ""
100 @echo "=== Checking ESP-IDF ==="
101 @test -d $(IDF_PATH) && echo "ESP-IDF found at $(IDF_PATH)" || \
102 echo "ESP-IDF not found at $(IDF_PATH). Install from https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/"
103 @echo ""
104 @echo "=== Installing Node deps ==="
105 $(NPM) install
106 @echo ""
107 @echo "=== Installing Python deps ==="
108 pip install pyserial 2>/dev/null || pip3 install pyserial
109 @echo ""
110 @echo "Setup complete!"
111
112# ──────────────────────────────────────────────
113# Build & Flash
114# ──────────────────────────────────────────────
115
116flash: build
117 @echo "=== Flashing to $(PORT) ==="
118 . $(IDF_PATH)/export.sh && idf.py -p $(PORT) -b $(BAUD) flash
119
120flash-a: PORT=$(PORT_A)
121flash-a: flash
122
123flash-b: PORT=$(PORT_B)
124flash-b: flash
125
126build:
127 @echo "=== Building $(TARGET) ==="
128 . $(IDF_PATH)/export.sh && \
129 idf.py set-target $(TARGET) 2>/dev/null; \
130 idf.py build
131
132monitor:
133 . $(IDF_PATH)/export.sh && idf.py -p $(PORT) monitor
134
135monitor-a: PORT=$(PORT_A)
136monitor-a: monitor
137
138monitor-b: PORT=$(PORT_B)
139monitor-b: monitor
140
141# ──────────────────────────────────────────────
142# Test Infrastructure
143# ──────────────────────────────────────────────
144
145test: test-api test-network
146 @echo "=== All tests passed ==="
147
148smoke:
149 @echo "=== Running smoke test (30s) ==="
150 $(NODE) tests/smoke.mjs $(PORT)
151
152test-api:
153 @echo "=== Running API tests ==="
154 $(NODE) tests/api.mjs
155
156test-portal:
157 @echo "=== Running Playwright portal tests ==="
158 npx playwright test tests/captive-portal.spec.mjs
159
160test-network:
161 @echo "=== Running network tests ==="
162 $(NODE) tests/network.mjs
163
164test-full: test-api test-portal test-network
165 @echo "=== Full test suite passed ==="
166
167# ──────────────────────────────────────────────
168# Phase 2: Payment Testing
169# ──────────────────────────────────────────────
170
171tokens:
172 @echo "=== Minting test tokens from $(TEST_MINT) ==="
173 @AMOUNT=$${AMOUNT:-21}; \
174 cd scripts/mint-token && go run main.go -mint https://$(TEST_MINT) -amount $$AMOUNT
175
176test-payment:
177 @echo "=== Running payment tests ==="
178 $(NODE) tests/payment.mjs
179
180# ──────────────────────────────────────────────
181# Utilities
182# ──────────────────────────────────────────────
183
184clean:
185 rm -rf $(BUILD_DIR) sdkconfig sdkconfig.old
186 . $(IDF_PATH)/export.sh && idf.py fullclean
187
188erase-nvs:
189 @echo "=== Erasing NVS on $(PORT) ==="
190 . $(IDF_PATH)/export.sh && \
191 partition_offset=$$(idf.py partition-table 2>/dev/null | grep nvs | awk '{print $$2}'); \
192 python3 -m esptool --port $(PORT) erase_region $$partition_offset 0x6000
193
194reset:
195 @echo "=== Resetting device on $(PORT) ==="
196 python3 -m esptool --port $(PORT) run 2>/dev/null || true
197
198serial-log:
199 @echo "=== Capturing serial output from $(PORT) ==="
200 python3 -c "import serial; s=serial.Serial('$(PORT)',115200,timeout=1); \
201 [print(s.readline().decode(errors='replace'),end='') for _ in iter(lambda: s.readline(), b'')]"
202
203bootstrap-config:
204 @echo "=== Bootstrapping config.json ==="
205 @echo '{"wifi_networks":[{"ssid":"$(WIFI_SSID)","password":"$(WIFI_PASSWORD)"}],"ap_ssid":"$(AP_SSID)","ap_password":"$(AP_PASSWORD)","mint_url":"$(MINT_URL)","lnurl_url":"$(LNURL_URL)","price_per_step":$(PRICE_PER_STEP),"step_size_ms":$(STEP_SIZE)}' > main/config.json
206 @echo "Config written to main/config.json"
diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt
index 2c94ff1..a21a53f 100644
--- a/main/CMakeLists.txt
+++ b/main/CMakeLists.txt
@@ -3,7 +3,7 @@ idf_component_register(SRCS "tollgate_main.c"
3 "dns_server.c" 3 "dns_server.c"
4 "captive_portal.c" 4 "captive_portal.c"
5 "firewall.c" 5 "firewall.c"
6 INCLUDE_DIRS "." 6 INCLUDE_DIRS "." "${IDF_PATH}/components/lwip/include/apps"
7 REQUIRES esp_wifi esp_event esp_netif nvs_flash esp_http_server 7 REQUIRES esp_wifi esp_event esp_netif nvs_flash esp_http_server
8 lwip json esp_http_client esp_tls log 8 lwip json esp_http_client mbedtls log spiffs
9 PRIV_REQUIRES lwip) 9 PRIV_REQUIRES esp-tls)
diff --git a/main/captive_portal.c b/main/captive_portal.c
new file mode 100644
index 0000000..acff9c2
--- /dev/null
+++ b/main/captive_portal.c
@@ -0,0 +1,224 @@
1#include "captive_portal.h"
2#include "firewall.h"
3#include "config.h"
4#include "esp_log.h"
5#include "esp_wifi.h"
6#include "cJSON.h"
7#include "lwip/sockets.h"
8#include "lwip/netdb.h"
9#include <string.h>
10#include <sys/param.h>
11
12static const char *TAG = "captive_portal";
13static httpd_handle_t s_server = NULL;
14
15static const char PORTAL_HTML[] = \
16"<!DOCTYPE html>"
17"<html><head>"
18"<meta charset='utf-8'>"
19"<meta name='viewport' content='width=device-width, initial-scale=1'>"
20"<title>TollGate</title>"
21"<style>"
22"*{box-sizing:border-box;margin:0;padding:0}"
23"body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;"
24"background:#0a0a0a;color:#fff;display:flex;align-items:center;justify-content:center;"
25"min-height:100vh;padding:20px}"
26".card{background:#1a1a1a;border:1px solid #333;border-radius:16px;padding:32px;"
27"max-width:400px;width:100%;text-align:center}"
28"h1{font-size:28px;margin-bottom:8px;color:#f7931a}"
29".subtitle{color:#888;margin-bottom:24px;font-size:14px}"
30".price{background:#252525;border-radius:12px;padding:16px;margin-bottom:24px}"
31".price-amount{font-size:36px;font-weight:bold;color:#f7931a}"
32".price-unit{color:#888;font-size:14px}"
33"#status{margin-top:16px;padding:12px;border-radius:8px;display:none;font-size:14px}"
34"#status.success{display:block;background:#1a472a;color:#4caf50}"
35"#status.error{display:block;background:#471a1a;color:#f44336}"
36"#status.processing{display:block;background:#1a3a47;color:#2196f3}"
37".btn{background:#f7931a;color:#000;border:none;border-radius:8px;padding:14px 28px;"
38"font-size:16px;font-weight:bold;cursor:pointer;width:100%;margin-top:8px}"
39".btn:hover{background:#e8850f}"
40".btn:disabled{background:#333;color:#666;cursor:not-allowed}"
41"</style>"
42"</head><body>"
43"<div class='card'>"
44"<h1>TollGate</h1>"
45"<p class='subtitle'>Pay for internet access with ecash</p>"
46"<div class='price'>"
47"<div class='price-amount' id='price'>Loading...</div>"
48"<div class='price-unit'>sats per minute</div>"
49"</div>"
50"<button class='btn' id='grantBtn' onclick='grantAccess()'>Grant Free Access</button>"
51"<div id='status'></div>"
52"</div>"
53"<script>"
54"const priceEl=document.getElementById('price');"
55"const statusEl=document.getElementById('status');"
56"const grantBtn=document.getElementById('grantBtn');"
57"fetch('/api/status').then(r=>r.json()).then(d=>{priceEl.textContent=d.price||'21';}).catch(()=>{priceEl.textContent='21';});"
58"function showStatus(msg,type){statusEl.textContent=msg;statusEl.className=type;}"
59"function grantAccess(){"
60" grantBtn.disabled=true;"
61" showStatus('Connecting...','processing');"
62" fetch('/grant_access').then(r=>r.json()).then(d=>{"
63" if(d.status==='granted'){"
64" showStatus('Connected! You have internet access.','success');"
65" grantBtn.textContent='Connected!';"
66" setTimeout(()=>{window.location.href='http://detectportal.firefox.com/success.txt';},2000);"
67" }else{showStatus('Error: '+d.message,'error');grantBtn.disabled=false;}"
68" }).catch(e=>{showStatus('Connection error','error');grantBtn.disabled=false;});"
69"}"
70"</script>"
71"</body></html>";
72
73static esp_err_t get_client_ip(httpd_req_t *req, uint32_t *ip_out)
74{
75 int sockfd = httpd_req_to_sockfd(req);
76 struct sockaddr_in addr;
77 socklen_t addr_len = sizeof(addr);
78 if (getpeername(sockfd, (struct sockaddr *)&addr, &addr_len) == 0) {
79 *ip_out = addr.sin_addr.s_addr;
80 return ESP_OK;
81 }
82 return ESP_FAIL;
83}
84
85static bool is_captive_detection_uri(const char *uri)
86{
87 return strcmp(uri, "/generate_204") == 0 ||
88 strcmp(uri, "/hotspot-detect.html") == 0 ||
89 strcmp(uri, "/canonical.html") == 0 ||
90 strcmp(uri, "/success.txt") == 0 ||
91 strcmp(uri, "/ncsi.txt") == 0 ||
92 strcmp(uri, "/connecttest.txt") == 0 ||
93 strcmp(uri, "/wpad.dat") == 0 ||
94 strcmp(uri, "/redirect") == 0;
95}
96
97static esp_err_t portal_handler(httpd_req_t *req)
98{
99 httpd_resp_set_type(req, "text/html");
100 httpd_resp_send(req, PORTAL_HTML, strlen(PORTAL_HTML));
101 return ESP_OK;
102}
103
104static esp_err_t grant_access_handler(httpd_req_t *req)
105{
106 uint32_t client_ip;
107 if (get_client_ip(req, &client_ip) == ESP_OK) {
108 firewall_grant_access(client_ip);
109 }
110 const char *resp = "{\"status\":\"granted\"}";
111 httpd_resp_set_type(req, "application/json");
112 httpd_resp_send(req, resp, strlen(resp));
113 return ESP_OK;
114}
115
116static esp_err_t status_handler(httpd_req_t *req)
117{
118 const tollgate_config_t *cfg = tollgate_config_get();
119 cJSON *root = cJSON_CreateObject();
120 cJSON_AddBoolToObject(root, "connected", true);
121 cJSON_AddNumberToObject(root, "price", cfg->price_per_step);
122 char *json = cJSON_PrintUnformatted(root);
123 httpd_resp_set_type(req, "application/json");
124 httpd_resp_send(req, json, strlen(json));
125 cJSON_free(json);
126 cJSON_Delete(root);
127 return ESP_OK;
128}
129
130static esp_err_t whoami_handler(httpd_req_t *req)
131{
132 uint32_t client_ip;
133 char resp[64];
134 if (get_client_ip(req, &client_ip) == ESP_OK) {
135 esp_ip4_addr_t ip = { .addr = client_ip };
136 snprintf(resp, sizeof(resp), "mac=" IPSTR, IP2STR(&ip));
137 } else {
138 snprintf(resp, sizeof(resp), "mac=unknown");
139 }
140 httpd_resp_set_type(req, "text/plain");
141 httpd_resp_send(req, resp, strlen(resp));
142 return ESP_OK;
143}
144
145static esp_err_t usage_handler(httpd_req_t *req)
146{
147 uint32_t client_ip;
148 char resp[32];
149 if (get_client_ip(req, &client_ip) == ESP_OK && firewall_is_client_allowed(client_ip)) {
150 snprintf(resp, sizeof(resp), "0/0");
151 } else {
152 snprintf(resp, sizeof(resp), "-1/-1");
153 }
154 httpd_resp_set_type(req, "text/plain");
155 httpd_resp_send(req, resp, strlen(resp));
156 return ESP_OK;
157}
158
159static esp_err_t reset_auth_handler(httpd_req_t *req)
160{
161 firewall_revoke_all();
162 const char *resp = "{\"status\":\"reset\"}";
163 httpd_resp_set_type(req, "application/json");
164 httpd_resp_send(req, resp, strlen(resp));
165 return ESP_OK;
166}
167
168static esp_err_t catchall_handler(httpd_req_t *req)
169{
170 if (is_captive_detection_uri(req->uri)) {
171 return portal_handler(req);
172 }
173 httpd_resp_set_status(req, "302 Found");
174 httpd_resp_set_hdr(req, "Location", "http://192.168.4.1/");
175 httpd_resp_send(req, NULL, 0);
176 return ESP_OK;
177}
178
179static const httpd_uri_t uri_portal = { .uri = "/", .method = HTTP_GET, .handler = portal_handler };
180static const httpd_uri_t uri_grant = { .uri = "/grant_access", .method = HTTP_GET, .handler = grant_access_handler };
181static const httpd_uri_t uri_status = { .uri = "/api/status", .method = HTTP_GET, .handler = status_handler };
182static const httpd_uri_t uri_whoami = { .uri = "/whoami", .method = HTTP_GET, .handler = whoami_handler };
183static const httpd_uri_t uri_usage = { .uri = "/usage", .method = HTTP_GET, .handler = usage_handler };
184static const httpd_uri_t uri_reset = { .uri = "/reset_authentication", .method = HTTP_GET, .handler = reset_auth_handler };
185static const httpd_uri_t uri_catchall = { .uri = "/*", .method = HTTP_GET, .handler = catchall_handler };
186
187esp_err_t captive_portal_start(void)
188{
189 if (s_server) return ESP_OK;
190
191 httpd_config_t config = HTTPD_DEFAULT_CONFIG();
192 config.max_uri_handlers = 10;
193 config.uri_match_fn = httpd_uri_match_wildcard;
194
195 esp_err_t ret = httpd_start(&s_server, &config);
196 if (ret != ESP_OK) {
197 ESP_LOGE(TAG, "Failed to start HTTP server: %s", esp_err_to_name(ret));
198 return ret;
199 }
200
201 httpd_register_uri_handler(s_server, &uri_portal);
202 httpd_register_uri_handler(s_server, &uri_grant);
203 httpd_register_uri_handler(s_server, &uri_status);
204 httpd_register_uri_handler(s_server, &uri_whoami);
205 httpd_register_uri_handler(s_server, &uri_usage);
206 httpd_register_uri_handler(s_server, &uri_reset);
207 httpd_register_uri_handler(s_server, &uri_catchall);
208
209 ESP_LOGI(TAG, "Captive portal started on port 80");
210 return ESP_OK;
211}
212
213void captive_portal_stop(void)
214{
215 if (s_server) {
216 httpd_stop(s_server);
217 s_server = NULL;
218 }
219}
220
221httpd_handle_t captive_portal_get_server(void)
222{
223 return s_server;
224}
diff --git a/main/captive_portal.h b/main/captive_portal.h
new file mode 100644
index 0000000..30d8c3e
--- /dev/null
+++ b/main/captive_portal.h
@@ -0,0 +1,11 @@
1#ifndef CAPTIVE_PORTAL_H
2#define CAPTIVE_PORTAL_H
3
4#include "esp_http_server.h"
5#include "esp_err.h"
6
7esp_err_t captive_portal_start(void);
8void captive_portal_stop(void);
9httpd_handle_t captive_portal_get_server(void);
10
11#endif
diff --git a/main/dns_server.c b/main/dns_server.c
index f7977c6..733e771 100644
--- a/main/dns_server.c
+++ b/main/dns_server.c
@@ -85,7 +85,6 @@ static void parse_dns_name(const uint8_t *buf, int buf_len, int offset, char *ou
85 85
86static int build_nxdomain(uint8_t *response, int req_len) 86static int build_nxdomain(uint8_t *response, int req_len)
87{ 87{
88 memcpy(response, response, req_len);
89 dns_header_t *hdr = (dns_header_t *)response; 88 dns_header_t *hdr = (dns_header_t *)response;
90 hdr->flags = htons(0x8403); 89 hdr->flags = htons(0x8403);
91 hdr->ancount = 0; 90 hdr->ancount = 0;
@@ -96,7 +95,7 @@ static int build_nxdomain(uint8_t *response, int req_len)
96 95
97static int build_redirect_response(uint8_t *response, int req_len) 96static int build_redirect_response(uint8_t *response, int req_len)
98{ 97{
99 memcpy(response, response, req_len); 98 memmove(response, response, req_len);
100 dns_header_t *hdr = (dns_header_t *)response; 99 dns_header_t *hdr = (dns_header_t *)response;
101 hdr->flags = htons(0x8180); 100 hdr->flags = htons(0x8180);
102 hdr->ancount = htons(1); 101 hdr->ancount = htons(1);
diff --git a/main/firewall.c b/main/firewall.c
index 9ef3be0..8087b54 100644
--- a/main/firewall.c
+++ b/main/firewall.c
@@ -26,6 +26,20 @@ esp_err_t firewall_init(esp_ip4_addr_t ap_ip)
26 return ESP_OK; 26 return ESP_OK;
27} 27}
28 28
29static void update_nat(void)
30{
31 bool should_enable = (s_client_count > 0);
32 if (should_enable && !s_nat_enabled) {
33 ip_napt_enable(s_ap_ip.addr, 1);
34 s_nat_enabled = true;
35 ESP_LOGI(TAG, "NAT enabled (client authenticated)");
36 } else if (!should_enable && s_nat_enabled) {
37 ip_napt_enable(s_ap_ip.addr, 0);
38 s_nat_enabled = false;
39 ESP_LOGI(TAG, "NAT disabled (no authenticated clients)");
40 }
41}
42
29void firewall_enable_nat(void) 43void firewall_enable_nat(void)
30{ 44{
31 if (s_nat_enabled) return; 45 if (s_nat_enabled) return;
@@ -54,6 +68,7 @@ void firewall_grant_access(uint32_t client_ip)
54 s_clients[s_client_count].ip = client_ip; 68 s_clients[s_client_count].ip = client_ip;
55 s_client_count++; 69 s_client_count++;
56 dns_server_set_client_authenticated(client_ip, true); 70 dns_server_set_client_authenticated(client_ip, true);
71 update_nat();
57 72
58 esp_ip4_addr_t ip_addr = { .addr = client_ip }; 73 esp_ip4_addr_t ip_addr = { .addr = client_ip };
59 ESP_LOGI(TAG, "Access granted to " IPSTR, IP2STR(&ip_addr)); 74 ESP_LOGI(TAG, "Access granted to " IPSTR, IP2STR(&ip_addr));
@@ -66,6 +81,7 @@ void firewall_revoke_access(uint32_t client_ip)
66 s_clients[i] = s_clients[s_client_count - 1]; 81 s_clients[i] = s_clients[s_client_count - 1];
67 s_client_count--; 82 s_client_count--;
68 dns_server_set_client_authenticated(client_ip, false); 83 dns_server_set_client_authenticated(client_ip, false);
84 update_nat();
69 esp_ip4_addr_t ip_addr = { .addr = client_ip }; 85 esp_ip4_addr_t ip_addr = { .addr = client_ip };
70 ESP_LOGI(TAG, "Access revoked for " IPSTR, IP2STR(&ip_addr)); 86 ESP_LOGI(TAG, "Access revoked for " IPSTR, IP2STR(&ip_addr));
71 return; 87 return;
@@ -79,6 +95,7 @@ void firewall_revoke_all(void)
79 dns_server_set_client_authenticated(s_clients[i].ip, false); 95 dns_server_set_client_authenticated(s_clients[i].ip, false);
80 } 96 }
81 s_client_count = 0; 97 s_client_count = 0;
98 update_nat();
82 ESP_LOGI(TAG, "All client access revoked"); 99 ESP_LOGI(TAG, "All client access revoked");
83} 100}
84 101
diff --git a/main/tollgate_main.c b/main/tollgate_main.c
new file mode 100644
index 0000000..9eba61f
--- /dev/null
+++ b/main/tollgate_main.c
@@ -0,0 +1,221 @@
1#include <string.h>
2#include "freertos/FreeRTOS.h"
3#include "freertos/task.h"
4#include "freertos/event_groups.h"
5#include "esp_wifi.h"
6#include "esp_event.h"
7#include "esp_log.h"
8#include "nvs_flash.h"
9#include "esp_netif.h"
10#include "lwip/netif.h"
11#include "lwip/dns.h"
12#include "dhcpserver/dhcpserver.h"
13#include "config.h"
14#include "dns_server.h"
15#include "captive_portal.h"
16#include "firewall.h"
17
18#define MAX_STA_RETRY 5
19#define AP_IP_ADDR "192.168.4.1"
20#define AP_SUBNET "255.255.255.0"
21
22static const char *TAG = "tollgate_main";
23
24static EventGroupHandle_t s_wifi_event_group;
25static const int WIFI_CONNECTED_BIT = BIT0;
26
27static esp_netif_t *s_sta_netif = NULL;
28static esp_netif_t *s_ap_netif = NULL;
29static int s_retry_count = 0;
30static bool s_services_running = false;
31static SemaphoreHandle_t s_services_mutex = NULL;
32
33static void start_services(void);
34static void stop_services(void);
35
36static void wifi_event_handler(void *arg, esp_event_base_t event_base,
37 int32_t event_id, void *event_data)
38{
39 if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) {
40 wifi_config_t wifi_cfg;
41 if (tollgate_config_get_wifi(&wifi_cfg) == ESP_OK) {
42 esp_wifi_set_config(WIFI_IF_STA, &wifi_cfg);
43 }
44 esp_wifi_connect();
45 } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) {
46 s_retry_count++;
47 ESP_LOGW(TAG, "WiFi disconnected, retry %d/%d", s_retry_count, MAX_STA_RETRY);
48 if (s_services_running) stop_services();
49 if (s_retry_count < MAX_STA_RETRY) {
50 esp_wifi_connect();
51 } else {
52 wifi_config_t wifi_cfg;
53 if (tollgate_config_get_next_wifi(&wifi_cfg) == ESP_OK) {
54 esp_wifi_set_config(WIFI_IF_STA, &wifi_cfg);
55 const tollgate_config_t *cfg = tollgate_config_get();
56 int idx = cfg->current_network;
57 ESP_LOGI(TAG, "Trying WiFi network %d: %s", idx, cfg->networks[idx].ssid);
58 s_retry_count = 0;
59 esp_wifi_connect();
60 }
61 }
62 } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_AP_STACONNECTED) {
63 wifi_event_ap_staconnected_t *event = (wifi_event_ap_staconnected_t *)event_data;
64 ESP_LOGI(TAG, "Station connected: MAC=%02x:%02x:%02x:%02x:%02x:%02x",
65 event->mac[0], event->mac[1], event->mac[2],
66 event->mac[3], event->mac[4], event->mac[5]);
67 } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_AP_STADISCONNECTED) {
68 wifi_event_ap_stadisconnected_t *event = (wifi_event_ap_stadisconnected_t *)event_data;
69 ESP_LOGI(TAG, "Station disconnected: MAC=%02x:%02x:%02x:%02x:%02x:%02x",
70 event->mac[0], event->mac[1], event->mac[2],
71 event->mac[3], event->mac[4], event->mac[5]);
72 }
73}
74
75static void ip_event_handler(void *arg, esp_event_base_t event_base,
76 int32_t event_id, void *event_data)
77{
78 if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) {
79 ip_event_got_ip_t *event = (ip_event_got_ip_t *)event_data;
80 ESP_LOGI(TAG, "Got IP:" IPSTR, IP2STR(&event->ip_info.ip));
81 s_retry_count = 0;
82 xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT);
83 start_services();
84 } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_LOST_IP) {
85 ESP_LOGW(TAG, "Lost IP address");
86 xEventGroupClearBits(s_wifi_event_group, WIFI_CONNECTED_BIT);
87 stop_services();
88 }
89}
90
91static void start_services(void)
92{
93 if (s_services_mutex) xSemaphoreTake(s_services_mutex, portMAX_DELAY);
94 if (s_services_running) {
95 if (s_services_mutex) xSemaphoreGive(s_services_mutex);
96 return;
97 }
98
99 esp_netif_get_ip_info(s_ap_netif, &(esp_netif_ip_info_t){0});
100 esp_netif_ip_info_t ap_ip_info;
101 esp_netif_get_ip_info(s_ap_netif, &ap_ip_info);
102
103 esp_ip4_addr_t upstream_dns;
104 const ip_addr_t *dns_addr = dns_getserver(0);
105 upstream_dns.addr = dns_addr->addr;
106
107 firewall_init(ap_ip_info.ip);
108
109 dns_server_start(ap_ip_info.ip, upstream_dns);
110 captive_portal_start();
111
112 s_services_running = true;
113 if (s_services_mutex) xSemaphoreGive(s_services_mutex);
114 ESP_LOGI(TAG, "=== TollGate services started ===");
115}
116
117static void stop_services(void)
118{
119 if (s_services_mutex) xSemaphoreTake(s_services_mutex, portMAX_DELAY);
120 if (!s_services_running) {
121 if (s_services_mutex) xSemaphoreGive(s_services_mutex);
122 return;
123 }
124
125 captive_portal_stop();
126 dns_server_stop();
127 firewall_disable_nat();
128 firewall_revoke_all();
129 s_services_running = false;
130 if (s_services_mutex) xSemaphoreGive(s_services_mutex);
131 ESP_LOGI(TAG, "=== TollGate services stopped ===");
132}
133
134static void wifi_create_ap_netif(void)
135{
136 s_ap_netif = esp_netif_create_default_wifi_ap();
137
138 esp_netif_ip_info_t ip_info = {
139 .ip.addr = esp_ip4addr_aton(AP_IP_ADDR),
140 .gw.addr = esp_ip4addr_aton(AP_IP_ADDR),
141 .netmask.addr = esp_ip4addr_aton(AP_SUBNET),
142 };
143 ESP_ERROR_CHECK(esp_netif_dhcps_stop(s_ap_netif));
144 ESP_ERROR_CHECK(esp_netif_set_ip_info(s_ap_netif, &ip_info));
145 ESP_ERROR_CHECK(esp_netif_dhcps_start(s_ap_netif));
146
147 dhcps_offer_t offer_dns = true;
148 esp_netif_dhcps_option(s_ap_netif, ESP_NETIF_OP_SET, ESP_NETIF_DOMAIN_NAME_SERVER,
149 &offer_dns, sizeof(offer_dns));
150}
151
152static void wifi_configure_ap(void)
153{
154 const tollgate_config_t *cfg = tollgate_config_get();
155 wifi_config_t ap_config = {0};
156 strncpy((char *)ap_config.ap.ssid, cfg->ap_ssid, sizeof(ap_config.ap.ssid) - 1);
157 if (strlen(cfg->ap_password) > 0) {
158 strncpy((char *)ap_config.ap.password, cfg->ap_password, sizeof(ap_config.ap.password) - 1);
159 ap_config.ap.authmode = WIFI_AUTH_WPA2_PSK;
160 } else {
161 ap_config.ap.authmode = WIFI_AUTH_OPEN;
162 }
163 ap_config.ap.channel = cfg->ap_channel;
164 ap_config.ap.max_connection = cfg->ap_max_conn;
165 ap_config.ap.ssid_hidden = 0;
166
167 ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &ap_config));
168 ESP_LOGI(TAG, "AP configured: SSID='%s', channel=%d", cfg->ap_ssid, cfg->ap_channel);
169}
170
171static void wifi_init_sta(void)
172{
173 s_sta_netif = esp_netif_create_default_wifi_sta();
174}
175
176void app_main(void)
177{
178 ESP_LOGI(TAG, "=== TollGate ESP32 Starting ===");
179
180 esp_err_t ret = nvs_flash_init();
181 if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
182 ESP_ERROR_CHECK(nvs_flash_erase());
183 ret = nvs_flash_init();
184 }
185 ESP_ERROR_CHECK(ret);
186
187 ESP_ERROR_CHECK(tollgate_config_init());
188 ESP_ERROR_CHECK(esp_netif_init());
189 ESP_ERROR_CHECK(esp_event_loop_create_default());
190
191 s_wifi_event_group = xEventGroupCreate();
192 s_services_mutex = xSemaphoreCreateMutex();
193
194 wifi_init_sta();
195 wifi_create_ap_netif();
196
197 wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
198 ESP_ERROR_CHECK(esp_wifi_init(&cfg));
199
200 ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, ESP_EVENT_ANY_ID,
201 &wifi_event_handler, NULL, NULL));
202 ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT, IP_EVENT_STA_GOT_IP,
203 &ip_event_handler, NULL, NULL));
204 ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT, IP_EVENT_STA_LOST_IP,
205 &ip_event_handler, NULL, NULL));
206
207 ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_APSTA));
208
209 wifi_configure_ap();
210
211 wifi_config_t sta_config;
212 if (tollgate_config_get_wifi(&sta_config) == ESP_OK) {
213 ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &sta_config));
214 const tollgate_config_t *tcfg = tollgate_config_get();
215 ESP_LOGI(TAG, "STA configured for SSID: %s", tcfg->networks[tcfg->current_network].ssid);
216 }
217
218 ESP_ERROR_CHECK(esp_wifi_start());
219
220 ESP_LOGI(TAG, "WiFi AP+STA started, waiting for connection...");
221}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..0de11d2
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,74 @@
1{
2 "name": "esp32-tollgate-tests",
3 "version": "1.0.0",
4 "lockfileVersion": 3,
5 "requires": true,
6 "packages": {
7 "": {
8 "name": "esp32-tollgate-tests",
9 "version": "1.0.0",
10 "devDependencies": {
11 "@playwright/test": "^1.52.0"
12 }
13 },
14 "node_modules/@playwright/test": {
15 "version": "1.60.0",
16 "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.60.0.tgz",
17 "integrity": "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==",
18 "dev": true,
19 "dependencies": {
20 "playwright": "1.60.0"
21 },
22 "bin": {
23 "playwright": "cli.js"
24 },
25 "engines": {
26 "node": ">=18"
27 }
28 },
29 "node_modules/fsevents": {
30 "version": "2.3.2",
31 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
32 "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
33 "dev": true,
34 "hasInstallScript": true,
35 "optional": true,
36 "os": [
37 "darwin"
38 ],
39 "engines": {
40 "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
41 }
42 },
43 "node_modules/playwright": {
44 "version": "1.60.0",
45 "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.60.0.tgz",
46 "integrity": "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==",
47 "dev": true,
48 "dependencies": {
49 "playwright-core": "1.60.0"
50 },
51 "bin": {
52 "playwright": "cli.js"
53 },
54 "engines": {
55 "node": ">=18"
56 },
57 "optionalDependencies": {
58 "fsevents": "2.3.2"
59 }
60 },
61 "node_modules/playwright-core": {
62 "version": "1.60.0",
63 "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.60.0.tgz",
64 "integrity": "sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==",
65 "dev": true,
66 "bin": {
67 "playwright-core": "cli.js"
68 },
69 "engines": {
70 "node": ">=18"
71 }
72 }
73 }
74}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..d6e270b
--- /dev/null
+++ b/package.json
@@ -0,0 +1,15 @@
1{
2 "name": "esp32-tollgate-tests",
3 "version": "1.0.0",
4 "private": true,
5 "scripts": {
6 "test": "node tests/api.mjs && node tests/network.mjs",
7 "test:api": "node tests/api.mjs",
8 "test:network": "node tests/network.mjs",
9 "test:portal": "npx playwright test tests/captive-portal.spec.mjs",
10 "test:smoke": "node tests/smoke.mjs"
11 },
12 "devDependencies": {
13 "@playwright/test": "^1.52.0"
14 }
15}
diff --git a/partitions.csv b/partitions.csv
new file mode 100644
index 0000000..8998d84
--- /dev/null
+++ b/partitions.csv
@@ -0,0 +1,5 @@
1# Name, Type, SubType, Offset, Size, Flags
2nvs, data, nvs, 0x9000, 0x6000,
3phy_init, data, phy, 0xf000, 0x1000,
4factory, app, factory, 0x10000, 0x3F0000,
5storage, data, spiffs, 0x410000,0xF0000,
diff --git a/sdkconfig b/sdkconfig
new file mode 100644
index 0000000..0b024cd
--- /dev/null
+++ b/sdkconfig
@@ -0,0 +1,2262 @@
1#
2# Automatically generated file. DO NOT EDIT.
3# Espressif IoT Development Framework (ESP-IDF) 5.4.1 Project Configuration
4#
5CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000
6CONFIG_SOC_MPU_REGIONS_MAX_NUM=8
7CONFIG_SOC_ADC_SUPPORTED=y
8CONFIG_SOC_UART_SUPPORTED=y
9CONFIG_SOC_PCNT_SUPPORTED=y
10CONFIG_SOC_PHY_SUPPORTED=y
11CONFIG_SOC_WIFI_SUPPORTED=y
12CONFIG_SOC_TWAI_SUPPORTED=y
13CONFIG_SOC_GDMA_SUPPORTED=y
14CONFIG_SOC_AHB_GDMA_SUPPORTED=y
15CONFIG_SOC_GPTIMER_SUPPORTED=y
16CONFIG_SOC_LCDCAM_SUPPORTED=y
17CONFIG_SOC_LCDCAM_I80_LCD_SUPPORTED=y
18CONFIG_SOC_LCDCAM_RGB_LCD_SUPPORTED=y
19CONFIG_SOC_MCPWM_SUPPORTED=y
20CONFIG_SOC_DEDICATED_GPIO_SUPPORTED=y
21CONFIG_SOC_CACHE_SUPPORT_WRAP=y
22CONFIG_SOC_ULP_SUPPORTED=y
23CONFIG_SOC_ULP_FSM_SUPPORTED=y
24CONFIG_SOC_RISCV_COPROC_SUPPORTED=y
25CONFIG_SOC_BT_SUPPORTED=y
26CONFIG_SOC_USB_OTG_SUPPORTED=y
27CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=y
28CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y
29CONFIG_SOC_ASYNC_MEMCPY_SUPPORTED=y
30CONFIG_SOC_SUPPORTS_SECURE_DL_MODE=y
31CONFIG_SOC_EFUSE_KEY_PURPOSE_FIELD=y
32CONFIG_SOC_EFUSE_SUPPORTED=y
33CONFIG_SOC_SDMMC_HOST_SUPPORTED=y
34CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y
35CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y
36CONFIG_SOC_RTC_MEM_SUPPORTED=y
37CONFIG_SOC_PSRAM_DMA_CAPABLE=y
38CONFIG_SOC_XT_WDT_SUPPORTED=y
39CONFIG_SOC_I2S_SUPPORTED=y
40CONFIG_SOC_RMT_SUPPORTED=y
41CONFIG_SOC_SDM_SUPPORTED=y
42CONFIG_SOC_GPSPI_SUPPORTED=y
43CONFIG_SOC_LEDC_SUPPORTED=y
44CONFIG_SOC_I2C_SUPPORTED=y
45CONFIG_SOC_SYSTIMER_SUPPORTED=y
46CONFIG_SOC_SUPPORT_COEXISTENCE=y
47CONFIG_SOC_TEMP_SENSOR_SUPPORTED=y
48CONFIG_SOC_AES_SUPPORTED=y
49CONFIG_SOC_MPI_SUPPORTED=y
50CONFIG_SOC_SHA_SUPPORTED=y
51CONFIG_SOC_HMAC_SUPPORTED=y
52CONFIG_SOC_DIG_SIGN_SUPPORTED=y
53CONFIG_SOC_FLASH_ENC_SUPPORTED=y
54CONFIG_SOC_SECURE_BOOT_SUPPORTED=y
55CONFIG_SOC_MEMPROT_SUPPORTED=y
56CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y
57CONFIG_SOC_BOD_SUPPORTED=y
58CONFIG_SOC_CLK_TREE_SUPPORTED=y
59CONFIG_SOC_MPU_SUPPORTED=y
60CONFIG_SOC_WDT_SUPPORTED=y
61CONFIG_SOC_SPI_FLASH_SUPPORTED=y
62CONFIG_SOC_RNG_SUPPORTED=y
63CONFIG_SOC_LIGHT_SLEEP_SUPPORTED=y
64CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y
65CONFIG_SOC_LP_PERIPH_SHARE_INTERRUPT=y
66CONFIG_SOC_PM_SUPPORTED=y
67CONFIG_SOC_SIMD_INSTRUCTION_SUPPORTED=y
68CONFIG_SOC_XTAL_SUPPORT_40M=y
69CONFIG_SOC_APPCPU_HAS_CLOCK_GATING_BUG=y
70CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y
71CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y
72CONFIG_SOC_ADC_ARBITER_SUPPORTED=y
73CONFIG_SOC_ADC_DIG_IIR_FILTER_SUPPORTED=y
74CONFIG_SOC_ADC_MONITOR_SUPPORTED=y
75CONFIG_SOC_ADC_DMA_SUPPORTED=y
76CONFIG_SOC_ADC_PERIPH_NUM=2
77CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10
78CONFIG_SOC_ADC_ATTEN_NUM=4
79CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2
80CONFIG_SOC_ADC_PATT_LEN_MAX=24
81CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=12
82CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12
83CONFIG_SOC_ADC_DIGI_RESULT_BYTES=4
84CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4
85CONFIG_SOC_ADC_DIGI_IIR_FILTER_NUM=2
86CONFIG_SOC_ADC_DIGI_MONITOR_NUM=2
87CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=83333
88CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=611
89CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=12
90CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12
91CONFIG_SOC_ADC_CALIBRATION_V1_SUPPORTED=y
92CONFIG_SOC_ADC_SELF_HW_CALI_SUPPORTED=y
93CONFIG_SOC_ADC_SHARED_POWER=y
94CONFIG_SOC_APB_BACKUP_DMA=y
95CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y
96CONFIG_SOC_CACHE_WRITEBACK_SUPPORTED=y
97CONFIG_SOC_CACHE_FREEZE_SUPPORTED=y
98CONFIG_SOC_CPU_CORES_NUM=2
99CONFIG_SOC_CPU_INTR_NUM=32
100CONFIG_SOC_CPU_HAS_FPU=y
101CONFIG_SOC_HP_CPU_HAS_MULTIPLE_CORES=y
102CONFIG_SOC_CPU_BREAKPOINTS_NUM=2
103CONFIG_SOC_CPU_WATCHPOINTS_NUM=2
104CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=64
105CONFIG_SOC_SIMD_PREFERRED_DATA_ALIGNMENT=16
106CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=4096
107CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16
108CONFIG_SOC_DS_KEY_CHECK_MAX_WAIT_US=1100
109CONFIG_SOC_AHB_GDMA_VERSION=1
110CONFIG_SOC_GDMA_NUM_GROUPS_MAX=1
111CONFIG_SOC_GDMA_PAIRS_PER_GROUP=5
112CONFIG_SOC_GDMA_PAIRS_PER_GROUP_MAX=5
113CONFIG_SOC_AHB_GDMA_SUPPORT_PSRAM=y
114CONFIG_SOC_GPIO_PORT=1
115CONFIG_SOC_GPIO_PIN_COUNT=49
116CONFIG_SOC_GPIO_SUPPORT_PIN_GLITCH_FILTER=y
117CONFIG_SOC_GPIO_FILTER_CLK_SUPPORT_APB=y
118CONFIG_SOC_GPIO_SUPPORT_RTC_INDEPENDENT=y
119CONFIG_SOC_GPIO_SUPPORT_FORCE_HOLD=y
120CONFIG_SOC_GPIO_VALID_GPIO_MASK=0x1FFFFFFFFFFFF
121CONFIG_SOC_GPIO_IN_RANGE_MAX=48
122CONFIG_SOC_GPIO_OUT_RANGE_MAX=48
123CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0x0001FFFFFC000000
124CONFIG_SOC_GPIO_CLOCKOUT_BY_IO_MUX=y
125CONFIG_SOC_GPIO_CLOCKOUT_CHANNEL_NUM=3
126CONFIG_SOC_GPIO_SUPPORT_HOLD_IO_IN_DSLP=y
127CONFIG_SOC_DEDIC_GPIO_OUT_CHANNELS_NUM=8
128CONFIG_SOC_DEDIC_GPIO_IN_CHANNELS_NUM=8
129CONFIG_SOC_DEDIC_GPIO_OUT_AUTO_ENABLE=y
130CONFIG_SOC_I2C_NUM=2
131CONFIG_SOC_HP_I2C_NUM=2
132CONFIG_SOC_I2C_FIFO_LEN=32
133CONFIG_SOC_I2C_CMD_REG_NUM=8
134CONFIG_SOC_I2C_SUPPORT_SLAVE=y
135CONFIG_SOC_I2C_SUPPORT_HW_CLR_BUS=y
136CONFIG_SOC_I2C_SUPPORT_XTAL=y
137CONFIG_SOC_I2C_SUPPORT_RTC=y
138CONFIG_SOC_I2C_SUPPORT_10BIT_ADDR=y
139CONFIG_SOC_I2C_SLAVE_SUPPORT_BROADCAST=y
140CONFIG_SOC_I2C_SLAVE_SUPPORT_I2CRAM_ACCESS=y
141CONFIG_SOC_I2C_SLAVE_CAN_GET_STRETCH_CAUSE=y
142CONFIG_SOC_I2S_NUM=2
143CONFIG_SOC_I2S_HW_VERSION_2=y
144CONFIG_SOC_I2S_SUPPORTS_XTAL=y
145CONFIG_SOC_I2S_SUPPORTS_PLL_F160M=y
146CONFIG_SOC_I2S_SUPPORTS_PCM=y
147CONFIG_SOC_I2S_SUPPORTS_PDM=y
148CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y
149CONFIG_SOC_I2S_PDM_MAX_TX_LINES=2
150CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y
151CONFIG_SOC_I2S_PDM_MAX_RX_LINES=4
152CONFIG_SOC_I2S_SUPPORTS_TDM=y
153CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y
154CONFIG_SOC_LEDC_SUPPORT_XTAL_CLOCK=y
155CONFIG_SOC_LEDC_TIMER_NUM=4
156CONFIG_SOC_LEDC_CHANNEL_NUM=8
157CONFIG_SOC_LEDC_TIMER_BIT_WIDTH=14
158CONFIG_SOC_LEDC_SUPPORT_FADE_STOP=y
159CONFIG_SOC_MCPWM_GROUPS=2
160CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3
161CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3
162CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2
163CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2
164CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2
165CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3
166CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y
167CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3
168CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3
169CONFIG_SOC_MCPWM_SWSYNC_CAN_PROPAGATE=y
170CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=1
171CONFIG_SOC_MMU_PERIPH_NUM=1
172CONFIG_SOC_PCNT_GROUPS=1
173CONFIG_SOC_PCNT_UNITS_PER_GROUP=4
174CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2
175CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2
176CONFIG_SOC_RMT_GROUPS=1
177CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=4
178CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=4
179CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8
180CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=48
181CONFIG_SOC_RMT_SUPPORT_RX_PINGPONG=y
182CONFIG_SOC_RMT_SUPPORT_RX_DEMODULATION=y
183CONFIG_SOC_RMT_SUPPORT_TX_ASYNC_STOP=y
184CONFIG_SOC_RMT_SUPPORT_TX_LOOP_COUNT=y
185CONFIG_SOC_RMT_SUPPORT_TX_LOOP_AUTO_STOP=y
186CONFIG_SOC_RMT_SUPPORT_TX_SYNCHRO=y
187CONFIG_SOC_RMT_SUPPORT_TX_CARRIER_DATA_ONLY=y
188CONFIG_SOC_RMT_SUPPORT_XTAL=y
189CONFIG_SOC_RMT_SUPPORT_RC_FAST=y
190CONFIG_SOC_RMT_SUPPORT_APB=y
191CONFIG_SOC_RMT_SUPPORT_DMA=y
192CONFIG_SOC_LCD_I80_SUPPORTED=y
193CONFIG_SOC_LCD_RGB_SUPPORTED=y
194CONFIG_SOC_LCD_I80_BUSES=1
195CONFIG_SOC_LCD_RGB_PANELS=1
196CONFIG_SOC_LCD_I80_BUS_WIDTH=16
197CONFIG_SOC_LCD_RGB_DATA_WIDTH=16
198CONFIG_SOC_LCD_SUPPORT_RGB_YUV_CONV=y
199CONFIG_SOC_LCDCAM_I80_NUM_BUSES=1
200CONFIG_SOC_LCDCAM_I80_BUS_WIDTH=16
201CONFIG_SOC_LCDCAM_RGB_NUM_PANELS=1
202CONFIG_SOC_LCDCAM_RGB_DATA_WIDTH=16
203CONFIG_SOC_RTC_CNTL_CPU_PD_DMA_BUS_WIDTH=128
204CONFIG_SOC_RTC_CNTL_CPU_PD_REG_FILE_NUM=549
205CONFIG_SOC_RTC_CNTL_TAGMEM_PD_DMA_BUS_WIDTH=128
206CONFIG_SOC_RTCIO_PIN_COUNT=22
207CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y
208CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y
209CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y
210CONFIG_SOC_LP_IO_CLOCK_IS_INDEPENDENT=y
211CONFIG_SOC_SDM_GROUPS=y
212CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8
213CONFIG_SOC_SDM_CLK_SUPPORT_APB=y
214CONFIG_SOC_SPI_PERIPH_NUM=3
215CONFIG_SOC_SPI_MAX_CS_NUM=6
216CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64
217CONFIG_SOC_SPI_SUPPORT_DDRCLK=y
218CONFIG_SOC_SPI_SLAVE_SUPPORT_SEG_TRANS=y
219CONFIG_SOC_SPI_SUPPORT_CD_SIG=y
220CONFIG_SOC_SPI_SUPPORT_CONTINUOUS_TRANS=y
221CONFIG_SOC_SPI_SUPPORT_SLAVE_HD_VER2=y
222CONFIG_SOC_SPI_SUPPORT_CLK_APB=y
223CONFIG_SOC_SPI_SUPPORT_CLK_XTAL=y
224CONFIG_SOC_SPI_PERIPH_SUPPORT_CONTROL_DUMMY_OUT=y
225CONFIG_SOC_MEMSPI_IS_INDEPENDENT=y
226CONFIG_SOC_SPI_MAX_PRE_DIVIDER=16
227CONFIG_SOC_SPI_SUPPORT_OCT=y
228CONFIG_SOC_SPI_SCT_SUPPORTED=y
229CONFIG_SOC_SPI_SCT_REG_NUM=14
230CONFIG_SOC_SPI_SCT_BUFFER_NUM_MAX=y
231CONFIG_SOC_SPI_SCT_CONF_BITLEN_MAX=0x3FFFA
232CONFIG_SOC_MEMSPI_SRC_FREQ_120M=y
233CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y
234CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y
235CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y
236CONFIG_SOC_SPIRAM_SUPPORTED=y
237CONFIG_SOC_SPIRAM_XIP_SUPPORTED=y
238CONFIG_SOC_SYSTIMER_COUNTER_NUM=2
239CONFIG_SOC_SYSTIMER_ALARM_NUM=3
240CONFIG_SOC_SYSTIMER_BIT_WIDTH_LO=32
241CONFIG_SOC_SYSTIMER_BIT_WIDTH_HI=20
242CONFIG_SOC_SYSTIMER_FIXED_DIVIDER=y
243CONFIG_SOC_SYSTIMER_INT_LEVEL=y
244CONFIG_SOC_SYSTIMER_ALARM_MISS_COMPENSATE=y
245CONFIG_SOC_TIMER_GROUPS=2
246CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2
247CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=54
248CONFIG_SOC_TIMER_GROUP_SUPPORT_XTAL=y
249CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y
250CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4
251CONFIG_SOC_LP_TIMER_BIT_WIDTH_LO=32
252CONFIG_SOC_LP_TIMER_BIT_WIDTH_HI=16
253CONFIG_SOC_TOUCH_SENSOR_VERSION=2
254CONFIG_SOC_TOUCH_SENSOR_NUM=15
255CONFIG_SOC_TOUCH_SUPPORT_SLEEP_WAKEUP=y
256CONFIG_SOC_TOUCH_SUPPORT_WATERPROOF=y
257CONFIG_SOC_TOUCH_SUPPORT_PROX_SENSING=y
258CONFIG_SOC_TOUCH_PROXIMITY_CHANNEL_NUM=3
259CONFIG_SOC_TOUCH_PROXIMITY_MEAS_DONE_SUPPORTED=y
260CONFIG_SOC_TOUCH_SAMPLE_CFG_NUM=1
261CONFIG_SOC_TWAI_CONTROLLER_NUM=1
262CONFIG_SOC_TWAI_CLK_SUPPORT_APB=y
263CONFIG_SOC_TWAI_BRP_MIN=2
264CONFIG_SOC_TWAI_BRP_MAX=16384
265CONFIG_SOC_TWAI_SUPPORTS_RX_STATUS=y
266CONFIG_SOC_UART_NUM=3
267CONFIG_SOC_UART_HP_NUM=3
268CONFIG_SOC_UART_FIFO_LEN=128
269CONFIG_SOC_UART_BITRATE_MAX=5000000
270CONFIG_SOC_UART_SUPPORT_FSM_TX_WAIT_SEND=y
271CONFIG_SOC_UART_SUPPORT_WAKEUP_INT=y
272CONFIG_SOC_UART_SUPPORT_APB_CLK=y
273CONFIG_SOC_UART_SUPPORT_RTC_CLK=y
274CONFIG_SOC_UART_SUPPORT_XTAL_CLK=y
275CONFIG_SOC_USB_OTG_PERIPH_NUM=1
276CONFIG_SOC_SHA_DMA_MAX_BUFFER_SIZE=3968
277CONFIG_SOC_SHA_SUPPORT_DMA=y
278CONFIG_SOC_SHA_SUPPORT_RESUME=y
279CONFIG_SOC_SHA_GDMA=y
280CONFIG_SOC_SHA_SUPPORT_SHA1=y
281CONFIG_SOC_SHA_SUPPORT_SHA224=y
282CONFIG_SOC_SHA_SUPPORT_SHA256=y
283CONFIG_SOC_SHA_SUPPORT_SHA384=y
284CONFIG_SOC_SHA_SUPPORT_SHA512=y
285CONFIG_SOC_SHA_SUPPORT_SHA512_224=y
286CONFIG_SOC_SHA_SUPPORT_SHA512_256=y
287CONFIG_SOC_SHA_SUPPORT_SHA512_T=y
288CONFIG_SOC_MPI_MEM_BLOCKS_NUM=4
289CONFIG_SOC_MPI_OPERATIONS_NUM=3
290CONFIG_SOC_RSA_MAX_BIT_LEN=4096
291CONFIG_SOC_AES_SUPPORT_DMA=y
292CONFIG_SOC_AES_GDMA=y
293CONFIG_SOC_AES_SUPPORT_AES_128=y
294CONFIG_SOC_AES_SUPPORT_AES_256=y
295CONFIG_SOC_PM_SUPPORT_EXT0_WAKEUP=y
296CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP=y
297CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y
298CONFIG_SOC_PM_SUPPORT_WIFI_WAKEUP=y
299CONFIG_SOC_PM_SUPPORT_BT_WAKEUP=y
300CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y
301CONFIG_SOC_PM_SUPPORT_CPU_PD=y
302CONFIG_SOC_PM_SUPPORT_TAGMEM_PD=y
303CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y
304CONFIG_SOC_PM_SUPPORT_RC_FAST_PD=y
305CONFIG_SOC_PM_SUPPORT_VDDSDIO_PD=y
306CONFIG_SOC_PM_SUPPORT_MAC_BB_PD=y
307CONFIG_SOC_PM_SUPPORT_MODEM_PD=y
308CONFIG_SOC_CONFIGURABLE_VDDSDIO_SUPPORTED=y
309CONFIG_SOC_PM_SUPPORT_DEEPSLEEP_CHECK_STUB_ONLY=y
310CONFIG_SOC_PM_CPU_RETENTION_BY_RTCCNTL=y
311CONFIG_SOC_PM_MODEM_RETENTION_BY_BACKUPDMA=y
312CONFIG_SOC_PM_MODEM_PD_BY_SW=y
313CONFIG_SOC_CLK_RC_FAST_D256_SUPPORTED=y
314CONFIG_SOC_RTC_SLOW_CLK_SUPPORT_RC_FAST_D256=y
315CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y
316CONFIG_SOC_CLK_XTAL32K_SUPPORTED=y
317CONFIG_SOC_EFUSE_DIS_DOWNLOAD_ICACHE=y
318CONFIG_SOC_EFUSE_DIS_DOWNLOAD_DCACHE=y
319CONFIG_SOC_EFUSE_HARD_DIS_JTAG=y
320CONFIG_SOC_EFUSE_DIS_USB_JTAG=y
321CONFIG_SOC_EFUSE_SOFT_DIS_JTAG=y
322CONFIG_SOC_EFUSE_DIS_DIRECT_BOOT=y
323CONFIG_SOC_EFUSE_DIS_ICACHE=y
324CONFIG_SOC_EFUSE_BLOCK9_KEY_PURPOSE_QUIRK=y
325CONFIG_SOC_SECURE_BOOT_V2_RSA=y
326CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=3
327CONFIG_SOC_EFUSE_REVOKE_BOOT_KEY_DIGESTS=y
328CONFIG_SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY=y
329CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=64
330CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES=y
331CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_OPTIONS=y
332CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_128=y
333CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_256=y
334CONFIG_SOC_MEMPROT_CPU_PREFETCH_PAD_SIZE=16
335CONFIG_SOC_MEMPROT_MEM_ALIGN_SIZE=256
336CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21
337CONFIG_SOC_MAC_BB_PD_MEM_SIZE=192
338CONFIG_SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH=12
339CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE=y
340CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND=y
341CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_RESUME=y
342CONFIG_SOC_SPI_MEM_SUPPORT_SW_SUSPEND=y
343CONFIG_SOC_SPI_MEM_SUPPORT_OPI_MODE=y
344CONFIG_SOC_SPI_MEM_SUPPORT_TIMING_TUNING=y
345CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y
346CONFIG_SOC_SPI_MEM_SUPPORT_WRAP=y
347CONFIG_SOC_MEMSPI_TIMING_TUNING_BY_MSPI_DELAY=y
348CONFIG_SOC_MEMSPI_CORE_CLK_SHARED_WITH_PSRAM=y
349CONFIG_SOC_SPI_MEM_SUPPORT_CACHE_32BIT_ADDR_MAP=y
350CONFIG_SOC_COEX_HW_PTI=y
351CONFIG_SOC_EXTERNAL_COEX_LEADER_TX_LINE=y
352CONFIG_SOC_SDMMC_USE_GPIO_MATRIX=y
353CONFIG_SOC_SDMMC_NUM_SLOTS=2
354CONFIG_SOC_SDMMC_SUPPORT_XTAL_CLOCK=y
355CONFIG_SOC_SDMMC_DELAY_PHASE_NUM=4
356CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_FAST_RC=y
357CONFIG_SOC_WIFI_HW_TSF=y
358CONFIG_SOC_WIFI_FTM_SUPPORT=y
359CONFIG_SOC_WIFI_GCMP_SUPPORT=y
360CONFIG_SOC_WIFI_WAPI_SUPPORT=y
361CONFIG_SOC_WIFI_CSI_SUPPORT=y
362CONFIG_SOC_WIFI_MESH_SUPPORT=y
363CONFIG_SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW=y
364CONFIG_SOC_WIFI_PHY_NEEDS_USB_WORKAROUND=y
365CONFIG_SOC_BLE_SUPPORTED=y
366CONFIG_SOC_BLE_MESH_SUPPORTED=y
367CONFIG_SOC_BLE_50_SUPPORTED=y
368CONFIG_SOC_BLE_DEVICE_PRIVACY_SUPPORTED=y
369CONFIG_SOC_BLUFI_SUPPORTED=y
370CONFIG_SOC_ULP_HAS_ADC=y
371CONFIG_SOC_PHY_COMBO_MODULE=y
372CONFIG_IDF_CMAKE=y
373CONFIG_IDF_TOOLCHAIN="gcc"
374CONFIG_IDF_TOOLCHAIN_GCC=y
375CONFIG_IDF_TARGET_ARCH_XTENSA=y
376CONFIG_IDF_TARGET_ARCH="xtensa"
377CONFIG_IDF_TARGET="esp32s3"
378CONFIG_IDF_INIT_VERSION="5.4.1"
379CONFIG_IDF_TARGET_ESP32S3=y
380CONFIG_IDF_FIRMWARE_CHIP_ID=0x0009
381
382#
383# Build type
384#
385CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y
386# CONFIG_APP_BUILD_TYPE_RAM is not set
387CONFIG_APP_BUILD_GENERATE_BINARIES=y
388CONFIG_APP_BUILD_BOOTLOADER=y
389CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y
390# CONFIG_APP_REPRODUCIBLE_BUILD is not set
391# CONFIG_APP_NO_BLOBS is not set
392# end of Build type
393
394#
395# Bootloader config
396#
397
398#
399# Bootloader manager
400#
401CONFIG_BOOTLOADER_COMPILE_TIME_DATE=y
402CONFIG_BOOTLOADER_PROJECT_VER=1
403# end of Bootloader manager
404
405CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x0
406CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y
407# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set
408# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set
409# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set
410
411#
412# Log
413#
414# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set
415# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set
416# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set
417CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y
418# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set
419# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set
420CONFIG_BOOTLOADER_LOG_LEVEL=3
421
422#
423# Format
424#
425# CONFIG_BOOTLOADER_LOG_COLORS is not set
426CONFIG_BOOTLOADER_LOG_TIMESTAMP_SOURCE_CPU_TICKS=y
427# end of Format
428# end of Log
429
430#
431# Serial Flash Configurations
432#
433# CONFIG_BOOTLOADER_FLASH_DC_AWARE is not set
434CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y
435# end of Serial Flash Configurations
436
437CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y
438# CONFIG_BOOTLOADER_FACTORY_RESET is not set
439# CONFIG_BOOTLOADER_APP_TEST is not set
440CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y
441CONFIG_BOOTLOADER_WDT_ENABLE=y
442# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set
443CONFIG_BOOTLOADER_WDT_TIME_MS=9000
444# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set
445# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set
446# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set
447# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set
448CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0
449# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set
450# end of Bootloader config
451
452#
453# Security features
454#
455CONFIG_SECURE_BOOT_V2_RSA_SUPPORTED=y
456CONFIG_SECURE_BOOT_V2_PREFERRED=y
457# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set
458# CONFIG_SECURE_BOOT is not set
459# CONFIG_SECURE_FLASH_ENC_ENABLED is not set
460CONFIG_SECURE_ROM_DL_MODE_ENABLED=y
461# end of Security features
462
463#
464# Application manager
465#
466CONFIG_APP_COMPILE_TIME_DATE=y
467# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set
468# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set
469# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set
470CONFIG_APP_RETRIEVE_LEN_ELF_SHA=9
471# end of Application manager
472
473CONFIG_ESP_ROM_HAS_CRC_LE=y
474CONFIG_ESP_ROM_HAS_CRC_BE=y
475CONFIG_ESP_ROM_HAS_MZ_CRC32=y
476CONFIG_ESP_ROM_HAS_JPEG_DECODE=y
477CONFIG_ESP_ROM_UART_CLK_IS_XTAL=y
478CONFIG_ESP_ROM_HAS_RETARGETABLE_LOCKING=y
479CONFIG_ESP_ROM_USB_OTG_NUM=3
480CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=4
481CONFIG_ESP_ROM_HAS_ERASE_0_REGION_BUG=y
482CONFIG_ESP_ROM_HAS_ENCRYPTED_WRITES_USING_LEGACY_DRV=y
483CONFIG_ESP_ROM_GET_CLK_FREQ=y
484CONFIG_ESP_ROM_HAS_HAL_WDT=y
485CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y
486CONFIG_ESP_ROM_HAS_LAYOUT_TABLE=y
487CONFIG_ESP_ROM_HAS_SPI_FLASH=y
488CONFIG_ESP_ROM_HAS_ETS_PRINTF_BUG=y
489CONFIG_ESP_ROM_HAS_NEWLIB=y
490CONFIG_ESP_ROM_HAS_NEWLIB_NANO_FORMAT=y
491CONFIG_ESP_ROM_HAS_NEWLIB_32BIT_TIME=y
492CONFIG_ESP_ROM_NEEDS_SET_CACHE_MMU_SIZE=y
493CONFIG_ESP_ROM_RAM_APP_NEEDS_MMU_INIT=y
494CONFIG_ESP_ROM_HAS_FLASH_COUNT_PAGES_BUG=y
495CONFIG_ESP_ROM_HAS_CACHE_SUSPEND_WAITI_BUG=y
496CONFIG_ESP_ROM_HAS_CACHE_WRITEBACK_BUG=y
497CONFIG_ESP_ROM_HAS_SW_FLOAT=y
498CONFIG_ESP_ROM_HAS_VERSION=y
499CONFIG_ESP_ROM_SUPPORT_DEEP_SLEEP_WAKEUP_STUB=y
500CONFIG_ESP_ROM_HAS_OUTPUT_PUTC_FUNC=y
501
502#
503# Boot ROM Behavior
504#
505CONFIG_BOOT_ROM_LOG_ALWAYS_ON=y
506# CONFIG_BOOT_ROM_LOG_ALWAYS_OFF is not set
507# CONFIG_BOOT_ROM_LOG_ON_GPIO_HIGH is not set
508# CONFIG_BOOT_ROM_LOG_ON_GPIO_LOW is not set
509# end of Boot ROM Behavior
510
511#
512# Serial flasher config
513#
514# CONFIG_ESPTOOLPY_NO_STUB is not set
515# CONFIG_ESPTOOLPY_OCT_FLASH is not set
516CONFIG_ESPTOOLPY_FLASH_MODE_AUTO_DETECT=y
517# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set
518# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set
519CONFIG_ESPTOOLPY_FLASHMODE_DIO=y
520# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set
521CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y
522CONFIG_ESPTOOLPY_FLASHMODE="dio"
523# CONFIG_ESPTOOLPY_FLASHFREQ_120M is not set
524CONFIG_ESPTOOLPY_FLASHFREQ_80M=y
525# CONFIG_ESPTOOLPY_FLASHFREQ_40M is not set
526# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set
527CONFIG_ESPTOOLPY_FLASHFREQ="80m"
528# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set
529# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set
530# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set
531# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set
532CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
533# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set
534# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set
535# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set
536CONFIG_ESPTOOLPY_FLASHSIZE="16MB"
537# CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set
538CONFIG_ESPTOOLPY_BEFORE_RESET=y
539# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set
540CONFIG_ESPTOOLPY_BEFORE="default_reset"
541CONFIG_ESPTOOLPY_AFTER_RESET=y
542# CONFIG_ESPTOOLPY_AFTER_NORESET is not set
543CONFIG_ESPTOOLPY_AFTER="hard_reset"
544CONFIG_ESPTOOLPY_MONITOR_BAUD=115200
545# end of Serial flasher config
546
547#
548# Partition Table
549#
550# CONFIG_PARTITION_TABLE_SINGLE_APP is not set
551# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set
552# CONFIG_PARTITION_TABLE_TWO_OTA is not set
553# CONFIG_PARTITION_TABLE_TWO_OTA_LARGE is not set
554CONFIG_PARTITION_TABLE_CUSTOM=y
555CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
556CONFIG_PARTITION_TABLE_FILENAME="partitions.csv"
557CONFIG_PARTITION_TABLE_OFFSET=0x8000
558CONFIG_PARTITION_TABLE_MD5=y
559# end of Partition Table
560
561#
562# Compiler options
563#
564CONFIG_COMPILER_OPTIMIZATION_DEBUG=y
565# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set
566# CONFIG_COMPILER_OPTIMIZATION_PERF is not set
567# CONFIG_COMPILER_OPTIMIZATION_NONE is not set
568CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
569# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set
570# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set
571CONFIG_COMPILER_ASSERT_NDEBUG_EVALUATE=y
572CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y
573CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2
574# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set
575CONFIG_COMPILER_HIDE_PATHS_MACROS=y
576# CONFIG_COMPILER_CXX_EXCEPTIONS is not set
577# CONFIG_COMPILER_CXX_RTTI is not set
578CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y
579# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set
580# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set
581# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set
582# CONFIG_COMPILER_NO_MERGE_CONSTANTS is not set
583# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set
584CONFIG_COMPILER_DISABLE_DEFAULT_ERRORS=y
585# CONFIG_COMPILER_DISABLE_GCC12_WARNINGS is not set
586# CONFIG_COMPILER_DISABLE_GCC13_WARNINGS is not set
587# CONFIG_COMPILER_DISABLE_GCC14_WARNINGS is not set
588# CONFIG_COMPILER_DUMP_RTL_FILES is not set
589CONFIG_COMPILER_RT_LIB_GCCLIB=y
590CONFIG_COMPILER_RT_LIB_NAME="gcc"
591CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING=y
592# CONFIG_COMPILER_ORPHAN_SECTIONS_PLACE is not set
593# CONFIG_COMPILER_STATIC_ANALYZER is not set
594# end of Compiler options
595
596#
597# Component config
598#
599
600#
601# Application Level Tracing
602#
603# CONFIG_APPTRACE_DEST_JTAG is not set
604CONFIG_APPTRACE_DEST_NONE=y
605# CONFIG_APPTRACE_DEST_UART1 is not set
606# CONFIG_APPTRACE_DEST_UART2 is not set
607# CONFIG_APPTRACE_DEST_USB_CDC is not set
608CONFIG_APPTRACE_DEST_UART_NONE=y
609CONFIG_APPTRACE_UART_TASK_PRIO=1
610CONFIG_APPTRACE_LOCK_ENABLE=y
611# end of Application Level Tracing
612
613#
614# Bluetooth
615#
616# CONFIG_BT_ENABLED is not set
617CONFIG_BT_ALARM_MAX_NUM=50
618# end of Bluetooth
619
620#
621# Console Library
622#
623# CONFIG_CONSOLE_SORTED_HELP is not set
624# end of Console Library
625
626#
627# Driver Configurations
628#
629
630#
631# TWAI Configuration
632#
633# CONFIG_TWAI_ISR_IN_IRAM is not set
634CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y
635# end of TWAI Configuration
636
637#
638# Legacy ADC Driver Configuration
639#
640# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set
641# CONFIG_ADC_SKIP_LEGACY_CONFLICT_CHECK is not set
642
643#
644# Legacy ADC Calibration Configuration
645#
646# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set
647# end of Legacy ADC Calibration Configuration
648# end of Legacy ADC Driver Configuration
649
650#
651# Legacy MCPWM Driver Configurations
652#
653# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set
654# CONFIG_MCPWM_SKIP_LEGACY_CONFLICT_CHECK is not set
655# end of Legacy MCPWM Driver Configurations
656
657#
658# Legacy Timer Group Driver Configurations
659#
660# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set
661# CONFIG_GPTIMER_SKIP_LEGACY_CONFLICT_CHECK is not set
662# end of Legacy Timer Group Driver Configurations
663
664#
665# Legacy RMT Driver Configurations
666#
667# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set
668# CONFIG_RMT_SKIP_LEGACY_CONFLICT_CHECK is not set
669# end of Legacy RMT Driver Configurations
670
671#
672# Legacy I2S Driver Configurations
673#
674# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set
675# CONFIG_I2S_SKIP_LEGACY_CONFLICT_CHECK is not set
676# end of Legacy I2S Driver Configurations
677
678#
679# Legacy PCNT Driver Configurations
680#
681# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set
682# CONFIG_PCNT_SKIP_LEGACY_CONFLICT_CHECK is not set
683# end of Legacy PCNT Driver Configurations
684
685#
686# Legacy SDM Driver Configurations
687#
688# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set
689# CONFIG_SDM_SKIP_LEGACY_CONFLICT_CHECK is not set
690# end of Legacy SDM Driver Configurations
691
692#
693# Legacy Temperature Sensor Driver Configurations
694#
695# CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set
696# CONFIG_TEMP_SENSOR_SKIP_LEGACY_CONFLICT_CHECK is not set
697# end of Legacy Temperature Sensor Driver Configurations
698# end of Driver Configurations
699
700#
701# eFuse Bit Manager
702#
703# CONFIG_EFUSE_CUSTOM_TABLE is not set
704# CONFIG_EFUSE_VIRTUAL is not set
705CONFIG_EFUSE_MAX_BLK_LEN=256
706# end of eFuse Bit Manager
707
708#
709# ESP-TLS
710#
711CONFIG_ESP_TLS_USING_MBEDTLS=y
712CONFIG_ESP_TLS_USE_DS_PERIPHERAL=y
713# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set
714# CONFIG_ESP_TLS_SERVER_SESSION_TICKETS is not set
715# CONFIG_ESP_TLS_SERVER_CERT_SELECT_HOOK is not set
716# CONFIG_ESP_TLS_SERVER_MIN_AUTH_MODE_OPTIONAL is not set
717# CONFIG_ESP_TLS_PSK_VERIFICATION is not set
718# CONFIG_ESP_TLS_INSECURE is not set
719# end of ESP-TLS
720
721#
722# ADC and ADC Calibration
723#
724# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set
725# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set
726# CONFIG_ADC_CONTINUOUS_FORCE_USE_ADC2_ON_C3_S3 is not set
727# CONFIG_ADC_ENABLE_DEBUG_LOG is not set
728# end of ADC and ADC Calibration
729
730#
731# Wireless Coexistence
732#
733CONFIG_ESP_COEX_ENABLED=y
734# CONFIG_ESP_COEX_EXTERNAL_COEXIST_ENABLE is not set
735# CONFIG_ESP_COEX_GPIO_DEBUG is not set
736# end of Wireless Coexistence
737
738#
739# Common ESP-related
740#
741CONFIG_ESP_ERR_TO_NAME_LOOKUP=y
742# end of Common ESP-related
743
744#
745# ESP-Driver:GPIO Configurations
746#
747# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set
748# end of ESP-Driver:GPIO Configurations
749
750#
751# ESP-Driver:GPTimer Configurations
752#
753CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y
754# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set
755# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set
756# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set
757# end of ESP-Driver:GPTimer Configurations
758
759#
760# ESP-Driver:I2C Configurations
761#
762# CONFIG_I2C_ISR_IRAM_SAFE is not set
763# CONFIG_I2C_ENABLE_DEBUG_LOG is not set
764# CONFIG_I2C_ENABLE_SLAVE_DRIVER_VERSION_2 is not set
765# end of ESP-Driver:I2C Configurations
766
767#
768# ESP-Driver:I2S Configurations
769#
770# CONFIG_I2S_ISR_IRAM_SAFE is not set
771# CONFIG_I2S_ENABLE_DEBUG_LOG is not set
772# end of ESP-Driver:I2S Configurations
773
774#
775# ESP-Driver:LEDC Configurations
776#
777# CONFIG_LEDC_CTRL_FUNC_IN_IRAM is not set
778# end of ESP-Driver:LEDC Configurations
779
780#
781# ESP-Driver:MCPWM Configurations
782#
783# CONFIG_MCPWM_ISR_IRAM_SAFE is not set
784# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set
785# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set
786# end of ESP-Driver:MCPWM Configurations
787
788#
789# ESP-Driver:PCNT Configurations
790#
791# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set
792# CONFIG_PCNT_ISR_IRAM_SAFE is not set
793# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set
794# end of ESP-Driver:PCNT Configurations
795
796#
797# ESP-Driver:RMT Configurations
798#
799# CONFIG_RMT_ISR_IRAM_SAFE is not set
800# CONFIG_RMT_RECV_FUNC_IN_IRAM is not set
801# CONFIG_RMT_ENABLE_DEBUG_LOG is not set
802# end of ESP-Driver:RMT Configurations
803
804#
805# ESP-Driver:Sigma Delta Modulator Configurations
806#
807# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set
808# CONFIG_SDM_ENABLE_DEBUG_LOG is not set
809# end of ESP-Driver:Sigma Delta Modulator Configurations
810
811#
812# ESP-Driver:SPI Configurations
813#
814# CONFIG_SPI_MASTER_IN_IRAM is not set
815CONFIG_SPI_MASTER_ISR_IN_IRAM=y
816# CONFIG_SPI_SLAVE_IN_IRAM is not set
817CONFIG_SPI_SLAVE_ISR_IN_IRAM=y
818# end of ESP-Driver:SPI Configurations
819
820#
821# ESP-Driver:Touch Sensor Configurations
822#
823# CONFIG_TOUCH_CTRL_FUNC_IN_IRAM is not set
824# CONFIG_TOUCH_ISR_IRAM_SAFE is not set
825# CONFIG_TOUCH_ENABLE_DEBUG_LOG is not set
826# end of ESP-Driver:Touch Sensor Configurations
827
828#
829# ESP-Driver:Temperature Sensor Configurations
830#
831# CONFIG_TEMP_SENSOR_ENABLE_DEBUG_LOG is not set
832# end of ESP-Driver:Temperature Sensor Configurations
833
834#
835# ESP-Driver:UART Configurations
836#
837# CONFIG_UART_ISR_IN_IRAM is not set
838# end of ESP-Driver:UART Configurations
839
840#
841# ESP-Driver:USB Serial/JTAG Configuration
842#
843CONFIG_USJ_ENABLE_USB_SERIAL_JTAG=y
844# end of ESP-Driver:USB Serial/JTAG Configuration
845
846#
847# Ethernet
848#
849CONFIG_ETH_ENABLED=y
850CONFIG_ETH_USE_SPI_ETHERNET=y
851# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set
852# CONFIG_ETH_SPI_ETHERNET_W5500 is not set
853# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set
854# CONFIG_ETH_USE_OPENETH is not set
855# CONFIG_ETH_TRANSMIT_MUTEX is not set
856# end of Ethernet
857
858#
859# Event Loop Library
860#
861# CONFIG_ESP_EVENT_LOOP_PROFILING is not set
862CONFIG_ESP_EVENT_POST_FROM_ISR=y
863CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y
864# end of Event Loop Library
865
866#
867# GDB Stub
868#
869CONFIG_ESP_GDBSTUB_ENABLED=y
870# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set
871CONFIG_ESP_GDBSTUB_SUPPORT_TASKS=y
872CONFIG_ESP_GDBSTUB_MAX_TASKS=32
873# end of GDB Stub
874
875#
876# ESP HID
877#
878CONFIG_ESPHID_TASK_SIZE_BT=2048
879CONFIG_ESPHID_TASK_SIZE_BLE=4096
880# end of ESP HID
881
882#
883# ESP HTTP client
884#
885CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y
886# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set
887# CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set
888# CONFIG_ESP_HTTP_CLIENT_ENABLE_CUSTOM_TRANSPORT is not set
889CONFIG_ESP_HTTP_CLIENT_EVENT_POST_TIMEOUT=2000
890# end of ESP HTTP client
891
892#
893# HTTP Server
894#
895CONFIG_HTTPD_MAX_REQ_HDR_LEN=1024
896CONFIG_HTTPD_MAX_URI_LEN=512
897CONFIG_HTTPD_ERR_RESP_NO_DELAY=y
898CONFIG_HTTPD_PURGE_BUF_LEN=32
899# CONFIG_HTTPD_LOG_PURGE_DATA is not set
900# CONFIG_HTTPD_WS_SUPPORT is not set
901# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set
902CONFIG_HTTPD_SERVER_EVENT_POST_TIMEOUT=2000
903# end of HTTP Server
904
905#
906# ESP HTTPS OTA
907#
908# CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set
909# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set
910CONFIG_ESP_HTTPS_OTA_EVENT_POST_TIMEOUT=2000
911# end of ESP HTTPS OTA
912
913#
914# ESP HTTPS server
915#
916# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set
917CONFIG_ESP_HTTPS_SERVER_EVENT_POST_TIMEOUT=2000
918# end of ESP HTTPS server
919
920#
921# Hardware Settings
922#
923
924#
925# Chip revision
926#
927CONFIG_ESP32S3_REV_MIN_0=y
928# CONFIG_ESP32S3_REV_MIN_1 is not set
929# CONFIG_ESP32S3_REV_MIN_2 is not set
930CONFIG_ESP32S3_REV_MIN_FULL=0
931CONFIG_ESP_REV_MIN_FULL=0
932
933#
934# Maximum Supported ESP32-S3 Revision (Rev v0.99)
935#
936CONFIG_ESP32S3_REV_MAX_FULL=99
937CONFIG_ESP_REV_MAX_FULL=99
938CONFIG_ESP_EFUSE_BLOCK_REV_MIN_FULL=0
939CONFIG_ESP_EFUSE_BLOCK_REV_MAX_FULL=199
940
941#
942# Maximum Supported ESP32-S3 eFuse Block Revision (eFuse Block Rev v1.99)
943#
944# end of Chip revision
945
946#
947# MAC Config
948#
949CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y
950CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y
951CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y
952CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y
953CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR=y
954CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES=4
955# CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_TWO is not set
956CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES_FOUR=y
957CONFIG_ESP32S3_UNIVERSAL_MAC_ADDRESSES=4
958# CONFIG_ESP_MAC_USE_CUSTOM_MAC_AS_BASE_MAC is not set
959# end of MAC Config
960
961#
962# Sleep Config
963#
964# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set
965CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y
966CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU=y
967CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y
968CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y
969CONFIG_ESP_SLEEP_WAIT_FLASH_READY_EXTRA_DELAY=2000
970# CONFIG_ESP_SLEEP_CACHE_SAFE_ASSERTION is not set
971# CONFIG_ESP_SLEEP_DEBUG is not set
972CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y
973# end of Sleep Config
974
975#
976# RTC Clock Config
977#
978CONFIG_RTC_CLK_SRC_INT_RC=y
979# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set
980# CONFIG_RTC_CLK_SRC_EXT_OSC is not set
981# CONFIG_RTC_CLK_SRC_INT_8MD256 is not set
982CONFIG_RTC_CLK_CAL_CYCLES=1024
983# end of RTC Clock Config
984
985#
986# Peripheral Control
987#
988CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
989# end of Peripheral Control
990
991#
992# GDMA Configurations
993#
994CONFIG_GDMA_CTRL_FUNC_IN_IRAM=y
995# CONFIG_GDMA_ISR_IRAM_SAFE is not set
996# CONFIG_GDMA_ENABLE_DEBUG_LOG is not set
997# end of GDMA Configurations
998
999#
1000# Main XTAL Config
1001#
1002CONFIG_XTAL_FREQ_40=y
1003CONFIG_XTAL_FREQ=40
1004# end of Main XTAL Config
1005
1006CONFIG_ESP_SPI_BUS_LOCK_ISR_FUNCS_IN_IRAM=y
1007# end of Hardware Settings
1008
1009#
1010# ESP-Driver:LCD Controller Configurations
1011#
1012# CONFIG_LCD_ENABLE_DEBUG_LOG is not set
1013# CONFIG_LCD_RGB_ISR_IRAM_SAFE is not set
1014# CONFIG_LCD_RGB_RESTART_IN_VSYNC is not set
1015# end of ESP-Driver:LCD Controller Configurations
1016
1017#
1018# ESP-MM: Memory Management Configurations
1019#
1020# CONFIG_ESP_MM_CACHE_MSYNC_C2M_CHUNKED_OPS is not set
1021# end of ESP-MM: Memory Management Configurations
1022
1023#
1024# ESP NETIF Adapter
1025#
1026CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120
1027# CONFIG_ESP_NETIF_PROVIDE_CUSTOM_IMPLEMENTATION is not set
1028CONFIG_ESP_NETIF_TCPIP_LWIP=y
1029# CONFIG_ESP_NETIF_LOOPBACK is not set
1030CONFIG_ESP_NETIF_USES_TCPIP_WITH_BSD_API=y
1031CONFIG_ESP_NETIF_REPORT_DATA_TRAFFIC=y
1032# CONFIG_ESP_NETIF_RECEIVE_REPORT_ERRORS is not set
1033# CONFIG_ESP_NETIF_L2_TAP is not set
1034# CONFIG_ESP_NETIF_BRIDGE_EN is not set
1035# CONFIG_ESP_NETIF_SET_DNS_PER_DEFAULT_NETIF is not set
1036# end of ESP NETIF Adapter
1037
1038#
1039# Partition API Configuration
1040#
1041# end of Partition API Configuration
1042
1043#
1044# PHY
1045#
1046CONFIG_ESP_PHY_ENABLED=y
1047CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y
1048# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set
1049CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20
1050CONFIG_ESP_PHY_MAX_TX_POWER=20
1051# CONFIG_ESP_PHY_REDUCE_TX_POWER is not set
1052CONFIG_ESP_PHY_ENABLE_USB=y
1053# CONFIG_ESP_PHY_ENABLE_CERT_TEST is not set
1054CONFIG_ESP_PHY_RF_CAL_PARTIAL=y
1055# CONFIG_ESP_PHY_RF_CAL_NONE is not set
1056# CONFIG_ESP_PHY_RF_CAL_FULL is not set
1057CONFIG_ESP_PHY_CALIBRATION_MODE=0
1058# CONFIG_ESP_PHY_PLL_TRACK_DEBUG is not set
1059# CONFIG_ESP_PHY_RECORD_USED_TIME is not set
1060# end of PHY
1061
1062#
1063# Power Management
1064#
1065# CONFIG_PM_ENABLE is not set
1066# CONFIG_PM_SLP_IRAM_OPT is not set
1067CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y
1068CONFIG_PM_RESTORE_CACHE_TAGMEM_AFTER_LIGHT_SLEEP=y
1069# end of Power Management
1070
1071#
1072# ESP PSRAM
1073#
1074# CONFIG_SPIRAM is not set
1075# end of ESP PSRAM
1076
1077#
1078# ESP Ringbuf
1079#
1080# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set
1081# end of ESP Ringbuf
1082
1083#
1084# ESP Security Specific
1085#
1086# end of ESP Security Specific
1087
1088#
1089# ESP System Settings
1090#
1091# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set
1092CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y
1093# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set
1094CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160
1095
1096#
1097# Cache config
1098#
1099CONFIG_ESP32S3_INSTRUCTION_CACHE_16KB=y
1100# CONFIG_ESP32S3_INSTRUCTION_CACHE_32KB is not set
1101CONFIG_ESP32S3_INSTRUCTION_CACHE_SIZE=0x4000
1102# CONFIG_ESP32S3_INSTRUCTION_CACHE_4WAYS is not set
1103CONFIG_ESP32S3_INSTRUCTION_CACHE_8WAYS=y
1104CONFIG_ESP32S3_ICACHE_ASSOCIATED_WAYS=8
1105# CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_16B is not set
1106CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_32B=y
1107CONFIG_ESP32S3_INSTRUCTION_CACHE_LINE_SIZE=32
1108# CONFIG_ESP32S3_DATA_CACHE_16KB is not set
1109CONFIG_ESP32S3_DATA_CACHE_32KB=y
1110# CONFIG_ESP32S3_DATA_CACHE_64KB is not set
1111CONFIG_ESP32S3_DATA_CACHE_SIZE=0x8000
1112# CONFIG_ESP32S3_DATA_CACHE_4WAYS is not set
1113CONFIG_ESP32S3_DATA_CACHE_8WAYS=y
1114CONFIG_ESP32S3_DCACHE_ASSOCIATED_WAYS=8
1115# CONFIG_ESP32S3_DATA_CACHE_LINE_16B is not set
1116CONFIG_ESP32S3_DATA_CACHE_LINE_32B=y
1117# CONFIG_ESP32S3_DATA_CACHE_LINE_64B is not set
1118CONFIG_ESP32S3_DATA_CACHE_LINE_SIZE=32
1119# end of Cache config
1120
1121#
1122# Memory
1123#
1124# CONFIG_ESP32S3_RTCDATA_IN_FAST_MEM is not set
1125# CONFIG_ESP32S3_USE_FIXED_STATIC_RAM_SIZE is not set
1126# end of Memory
1127
1128#
1129# Trace memory
1130#
1131# CONFIG_ESP32S3_TRAX is not set
1132CONFIG_ESP32S3_TRACEMEM_RESERVE_DRAM=0x0
1133# end of Trace memory
1134
1135# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set
1136CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y
1137# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set
1138# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set
1139CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0
1140CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK=y
1141CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP=y
1142
1143#
1144# Memory protection
1145#
1146CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=y
1147CONFIG_ESP_SYSTEM_MEMPROT_FEATURE_LOCK=y
1148# end of Memory protection
1149
1150CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32
1151CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304
1152CONFIG_ESP_MAIN_TASK_STACK_SIZE=8192
1153CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y
1154# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set
1155# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set
1156CONFIG_ESP_MAIN_TASK_AFFINITY=0x0
1157CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048
1158CONFIG_ESP_CONSOLE_UART_DEFAULT=y
1159# CONFIG_ESP_CONSOLE_USB_CDC is not set
1160# CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set
1161# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set
1162# CONFIG_ESP_CONSOLE_NONE is not set
1163# CONFIG_ESP_CONSOLE_SECONDARY_NONE is not set
1164CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG=y
1165CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG_ENABLED=y
1166CONFIG_ESP_CONSOLE_UART=y
1167CONFIG_ESP_CONSOLE_UART_NUM=0
1168CONFIG_ESP_CONSOLE_ROM_SERIAL_PORT_NUM=0
1169CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
1170CONFIG_ESP_INT_WDT=y
1171CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
1172CONFIG_ESP_INT_WDT_CHECK_CPU1=y
1173CONFIG_ESP_TASK_WDT_EN=y
1174CONFIG_ESP_TASK_WDT_INIT=y
1175# CONFIG_ESP_TASK_WDT_PANIC is not set
1176CONFIG_ESP_TASK_WDT_TIMEOUT_S=5
1177CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y
1178CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
1179# CONFIG_ESP_PANIC_HANDLER_IRAM is not set
1180# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set
1181CONFIG_ESP_DEBUG_OCDAWARE=y
1182CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y
1183
1184#
1185# Brownout Detector
1186#
1187CONFIG_ESP_BROWNOUT_DET=y
1188CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7=y
1189# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set
1190# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set
1191# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set
1192# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set
1193# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set
1194# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set
1195CONFIG_ESP_BROWNOUT_DET_LVL=7
1196# end of Brownout Detector
1197
1198CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y
1199CONFIG_ESP_SYSTEM_BBPLL_RECALIB=y
1200# end of ESP System Settings
1201
1202#
1203# IPC (Inter-Processor Call)
1204#
1205CONFIG_ESP_IPC_TASK_STACK_SIZE=1280
1206CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y
1207CONFIG_ESP_IPC_ISR_ENABLE=y
1208# end of IPC (Inter-Processor Call)
1209
1210#
1211# ESP Timer (High Resolution Timer)
1212#
1213# CONFIG_ESP_TIMER_PROFILING is not set
1214CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y
1215CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y
1216CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584
1217CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1
1218# CONFIG_ESP_TIMER_SHOW_EXPERIMENTAL is not set
1219CONFIG_ESP_TIMER_TASK_AFFINITY=0x0
1220CONFIG_ESP_TIMER_TASK_AFFINITY_CPU0=y
1221CONFIG_ESP_TIMER_ISR_AFFINITY_CPU0=y
1222# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set
1223CONFIG_ESP_TIMER_IMPL_SYSTIMER=y
1224# end of ESP Timer (High Resolution Timer)
1225
1226#
1227# Wi-Fi
1228#
1229CONFIG_ESP_WIFI_ENABLED=y
1230CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10
1231CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32
1232# CONFIG_ESP_WIFI_STATIC_TX_BUFFER is not set
1233CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER=y
1234CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1
1235CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32
1236CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y
1237# CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set
1238CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0
1239CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5
1240# CONFIG_ESP_WIFI_CSI_ENABLED is not set
1241CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y
1242CONFIG_ESP_WIFI_TX_BA_WIN=6
1243CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y
1244CONFIG_ESP_WIFI_RX_BA_WIN=6
1245CONFIG_ESP_WIFI_NVS_ENABLED=y
1246CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_0=y
1247# CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_1 is not set
1248CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752
1249CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32
1250CONFIG_ESP_WIFI_IRAM_OPT=y
1251# CONFIG_ESP_WIFI_EXTRA_IRAM_OPT is not set
1252CONFIG_ESP_WIFI_RX_IRAM_OPT=y
1253CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y
1254CONFIG_ESP_WIFI_ENABLE_SAE_PK=y
1255CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y
1256CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y
1257# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set
1258CONFIG_ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME=50
1259CONFIG_ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME=10
1260CONFIG_ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15
1261# CONFIG_ESP_WIFI_FTM_ENABLE is not set
1262CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE=y
1263# CONFIG_ESP_WIFI_GCMP_SUPPORT is not set
1264CONFIG_ESP_WIFI_GMAC_SUPPORT=y
1265CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y
1266# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set
1267CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7
1268CONFIG_ESP_WIFI_MBEDTLS_CRYPTO=y
1269CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y
1270# CONFIG_ESP_WIFI_WAPI_PSK is not set
1271# CONFIG_ESP_WIFI_SUITE_B_192 is not set
1272# CONFIG_ESP_WIFI_11KV_SUPPORT is not set
1273# CONFIG_ESP_WIFI_MBO_SUPPORT is not set
1274# CONFIG_ESP_WIFI_DPP_SUPPORT is not set
1275# CONFIG_ESP_WIFI_11R_SUPPORT is not set
1276# CONFIG_ESP_WIFI_WPS_SOFTAP_REGISTRAR is not set
1277
1278#
1279# WPS Configuration Options
1280#
1281# CONFIG_ESP_WIFI_WPS_STRICT is not set
1282# CONFIG_ESP_WIFI_WPS_PASSPHRASE is not set
1283# end of WPS Configuration Options
1284
1285# CONFIG_ESP_WIFI_DEBUG_PRINT is not set
1286# CONFIG_ESP_WIFI_TESTING_OPTIONS is not set
1287CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y
1288# CONFIG_ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER is not set
1289# end of Wi-Fi
1290
1291#
1292# Core dump
1293#
1294# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set
1295# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set
1296CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y
1297# end of Core dump
1298
1299#
1300# FAT Filesystem support
1301#
1302CONFIG_FATFS_VOLUME_COUNT=2
1303CONFIG_FATFS_LFN_NONE=y
1304# CONFIG_FATFS_LFN_HEAP is not set
1305# CONFIG_FATFS_LFN_STACK is not set
1306# CONFIG_FATFS_SECTOR_512 is not set
1307CONFIG_FATFS_SECTOR_4096=y
1308# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set
1309CONFIG_FATFS_CODEPAGE_437=y
1310# CONFIG_FATFS_CODEPAGE_720 is not set
1311# CONFIG_FATFS_CODEPAGE_737 is not set
1312# CONFIG_FATFS_CODEPAGE_771 is not set
1313# CONFIG_FATFS_CODEPAGE_775 is not set
1314# CONFIG_FATFS_CODEPAGE_850 is not set
1315# CONFIG_FATFS_CODEPAGE_852 is not set
1316# CONFIG_FATFS_CODEPAGE_855 is not set
1317# CONFIG_FATFS_CODEPAGE_857 is not set
1318# CONFIG_FATFS_CODEPAGE_860 is not set
1319# CONFIG_FATFS_CODEPAGE_861 is not set
1320# CONFIG_FATFS_CODEPAGE_862 is not set
1321# CONFIG_FATFS_CODEPAGE_863 is not set
1322# CONFIG_FATFS_CODEPAGE_864 is not set
1323# CONFIG_FATFS_CODEPAGE_865 is not set
1324# CONFIG_FATFS_CODEPAGE_866 is not set
1325# CONFIG_FATFS_CODEPAGE_869 is not set
1326# CONFIG_FATFS_CODEPAGE_932 is not set
1327# CONFIG_FATFS_CODEPAGE_936 is not set
1328# CONFIG_FATFS_CODEPAGE_949 is not set
1329# CONFIG_FATFS_CODEPAGE_950 is not set
1330CONFIG_FATFS_CODEPAGE=437
1331CONFIG_FATFS_FS_LOCK=0
1332CONFIG_FATFS_TIMEOUT_MS=10000
1333CONFIG_FATFS_PER_FILE_CACHE=y
1334# CONFIG_FATFS_USE_FASTSEEK is not set
1335CONFIG_FATFS_USE_STRFUNC_NONE=y
1336# CONFIG_FATFS_USE_STRFUNC_WITHOUT_CRLF_CONV is not set
1337# CONFIG_FATFS_USE_STRFUNC_WITH_CRLF_CONV is not set
1338CONFIG_FATFS_VFS_FSTAT_BLKSIZE=0
1339# CONFIG_FATFS_IMMEDIATE_FSYNC is not set
1340# CONFIG_FATFS_USE_LABEL is not set
1341CONFIG_FATFS_LINK_LOCK=y
1342# end of FAT Filesystem support
1343
1344#
1345# FreeRTOS
1346#
1347
1348#
1349# Kernel
1350#
1351# CONFIG_FREERTOS_SMP is not set
1352# CONFIG_FREERTOS_UNICORE is not set
1353CONFIG_FREERTOS_HZ=1000
1354# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set
1355# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set
1356CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y
1357CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1
1358CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536
1359# CONFIG_FREERTOS_USE_IDLE_HOOK is not set
1360# CONFIG_FREERTOS_USE_TICK_HOOK is not set
1361CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16
1362# CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY is not set
1363CONFIG_FREERTOS_USE_TIMERS=y
1364CONFIG_FREERTOS_TIMER_SERVICE_TASK_NAME="Tmr Svc"
1365# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU0 is not set
1366# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU1 is not set
1367CONFIG_FREERTOS_TIMER_TASK_NO_AFFINITY=y
1368CONFIG_FREERTOS_TIMER_SERVICE_TASK_CORE_AFFINITY=0x7FFFFFFF
1369CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1
1370CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048
1371CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10
1372CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0
1373CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=1
1374# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set
1375# CONFIG_FREERTOS_USE_LIST_DATA_INTEGRITY_CHECK_BYTES is not set
1376# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set
1377# CONFIG_FREERTOS_USE_APPLICATION_TASK_TAG is not set
1378# end of Kernel
1379
1380#
1381# Port
1382#
1383CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y
1384# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set
1385CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y
1386# CONFIG_FREERTOS_TASK_PRE_DELETION_HOOK is not set
1387# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set
1388CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y
1389CONFIG_FREERTOS_ISR_STACKSIZE=1536
1390CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y
1391# CONFIG_FREERTOS_FPU_IN_ISR is not set
1392CONFIG_FREERTOS_TICK_SUPPORT_SYSTIMER=y
1393CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL1=y
1394# CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL3 is not set
1395CONFIG_FREERTOS_SYSTICK_USES_SYSTIMER=y
1396# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set
1397# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set
1398# end of Port
1399
1400#
1401# Extra
1402#
1403# end of Extra
1404
1405CONFIG_FREERTOS_PORT=y
1406CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF
1407CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y
1408CONFIG_FREERTOS_DEBUG_OCDAWARE=y
1409CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y
1410CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y
1411CONFIG_FREERTOS_NUMBER_OF_CORES=2
1412# end of FreeRTOS
1413
1414#
1415# Hardware Abstraction Layer (HAL) and Low Level (LL)
1416#
1417CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y
1418# CONFIG_HAL_ASSERTION_DISABLE is not set
1419# CONFIG_HAL_ASSERTION_SILENT is not set
1420# CONFIG_HAL_ASSERTION_ENABLE is not set
1421CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2
1422CONFIG_HAL_WDT_USE_ROM_IMPL=y
1423CONFIG_HAL_SPI_MASTER_FUNC_IN_IRAM=y
1424CONFIG_HAL_SPI_SLAVE_FUNC_IN_IRAM=y
1425# end of Hardware Abstraction Layer (HAL) and Low Level (LL)
1426
1427#
1428# Heap memory debugging
1429#
1430CONFIG_HEAP_POISONING_DISABLED=y
1431# CONFIG_HEAP_POISONING_LIGHT is not set
1432# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set
1433CONFIG_HEAP_TRACING_OFF=y
1434# CONFIG_HEAP_TRACING_STANDALONE is not set
1435# CONFIG_HEAP_TRACING_TOHOST is not set
1436# CONFIG_HEAP_USE_HOOKS is not set
1437# CONFIG_HEAP_TASK_TRACKING is not set
1438# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set
1439# CONFIG_HEAP_PLACE_FUNCTION_INTO_FLASH is not set
1440# end of Heap memory debugging
1441
1442#
1443# Log
1444#
1445
1446#
1447# Log Level
1448#
1449# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set
1450# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set
1451# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set
1452CONFIG_LOG_DEFAULT_LEVEL_INFO=y
1453# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set
1454# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set
1455CONFIG_LOG_DEFAULT_LEVEL=3
1456CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y
1457# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set
1458# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set
1459CONFIG_LOG_MAXIMUM_LEVEL=3
1460
1461#
1462# Level Settings
1463#
1464# CONFIG_LOG_MASTER_LEVEL is not set
1465CONFIG_LOG_DYNAMIC_LEVEL_CONTROL=y
1466# CONFIG_LOG_TAG_LEVEL_IMPL_NONE is not set
1467# CONFIG_LOG_TAG_LEVEL_IMPL_LINKED_LIST is not set
1468CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_AND_LINKED_LIST=y
1469# CONFIG_LOG_TAG_LEVEL_CACHE_ARRAY is not set
1470CONFIG_LOG_TAG_LEVEL_CACHE_BINARY_MIN_HEAP=y
1471CONFIG_LOG_TAG_LEVEL_IMPL_CACHE_SIZE=31
1472# end of Level Settings
1473# end of Log Level
1474
1475#
1476# Format
1477#
1478# CONFIG_LOG_COLORS is not set
1479CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y
1480# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set
1481# end of Format
1482# end of Log
1483
1484#
1485# LWIP
1486#
1487CONFIG_LWIP_ENABLE=y
1488CONFIG_LWIP_LOCAL_HOSTNAME="espressif"
1489# CONFIG_LWIP_NETIF_API is not set
1490CONFIG_LWIP_TCPIP_TASK_PRIO=18
1491# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set
1492# CONFIG_LWIP_CHECK_THREAD_SAFETY is not set
1493CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y
1494# CONFIG_LWIP_L2_TO_L3_COPY is not set
1495# CONFIG_LWIP_IRAM_OPTIMIZATION is not set
1496# CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION is not set
1497CONFIG_LWIP_TIMERS_ONDEMAND=y
1498CONFIG_LWIP_MAX_SOCKETS=10
1499# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
1500# CONFIG_LWIP_SO_LINGER is not set
1501CONFIG_LWIP_SO_REUSE=y
1502CONFIG_LWIP_SO_REUSE_RXTOALL=y
1503# CONFIG_LWIP_SO_RCVBUF is not set
1504# CONFIG_LWIP_NETBUF_RECVINFO is not set
1505CONFIG_LWIP_IP_DEFAULT_TTL=64
1506CONFIG_LWIP_IP4_FRAG=y
1507# CONFIG_LWIP_IP4_REASSEMBLY is not set
1508CONFIG_LWIP_IP_REASS_MAX_PBUFS=10
1509CONFIG_LWIP_IP_FORWARD=y
1510CONFIG_LWIP_IPV4_NAPT=y
1511CONFIG_LWIP_IPV4_NAPT_PORTMAP=y
1512# CONFIG_LWIP_STATS is not set
1513CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
1514CONFIG_LWIP_GARP_TMR_INTERVAL=60
1515CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
1516CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y
1517# CONFIG_LWIP_DHCP_DOES_ACD_CHECK is not set
1518# CONFIG_LWIP_DHCP_DOES_NOT_CHECK_OFFERED_IP is not set
1519# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set
1520CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y
1521# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set
1522CONFIG_LWIP_DHCP_OPTIONS_LEN=68
1523CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0
1524CONFIG_LWIP_DHCP_COARSE_TIMER_SECS=1
1525
1526#
1527# DHCP server
1528#
1529CONFIG_LWIP_DHCPS=y
1530CONFIG_LWIP_DHCPS_LEASE_UNIT=60
1531CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8
1532CONFIG_LWIP_DHCPS_STATIC_ENTRIES=y
1533CONFIG_LWIP_DHCPS_ADD_DNS=y
1534# end of DHCP server
1535
1536# CONFIG_LWIP_AUTOIP is not set
1537CONFIG_LWIP_IPV4=y
1538# CONFIG_LWIP_IPV6 is not set
1539# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set
1540CONFIG_LWIP_NETIF_LOOPBACK=y
1541CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8
1542
1543#
1544# TCP
1545#
1546CONFIG_LWIP_MAX_ACTIVE_TCP=16
1547CONFIG_LWIP_MAX_LISTENING_TCP=16
1548CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y
1549CONFIG_LWIP_TCP_MAXRTX=12
1550CONFIG_LWIP_TCP_SYNMAXRTX=12
1551CONFIG_LWIP_TCP_MSS=1440
1552CONFIG_LWIP_TCP_TMR_INTERVAL=250
1553CONFIG_LWIP_TCP_MSL=60000
1554CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000
1555CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5760
1556CONFIG_LWIP_TCP_WND_DEFAULT=5760
1557CONFIG_LWIP_TCP_RECVMBOX_SIZE=6
1558CONFIG_LWIP_TCP_ACCEPTMBOX_SIZE=6
1559CONFIG_LWIP_TCP_QUEUE_OOSEQ=y
1560CONFIG_LWIP_TCP_OOSEQ_TIMEOUT=6
1561CONFIG_LWIP_TCP_OOSEQ_MAX_PBUFS=4
1562# CONFIG_LWIP_TCP_SACK_OUT is not set
1563CONFIG_LWIP_TCP_OVERSIZE_MSS=y
1564# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set
1565# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set
1566CONFIG_LWIP_TCP_RTO_TIME=1500
1567# end of TCP
1568
1569#
1570# UDP
1571#
1572CONFIG_LWIP_MAX_UDP_PCBS=16
1573CONFIG_LWIP_UDP_RECVMBOX_SIZE=6
1574# end of UDP
1575
1576#
1577# Checksums
1578#
1579# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set
1580# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set
1581CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y
1582# end of Checksums
1583
1584CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072
1585CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
1586# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set
1587# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set
1588CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF
1589# CONFIG_LWIP_PPP_SUPPORT is not set
1590# CONFIG_LWIP_SLIP_SUPPORT is not set
1591
1592#
1593# ICMP
1594#
1595CONFIG_LWIP_ICMP=y
1596# CONFIG_LWIP_MULTICAST_PING is not set
1597# CONFIG_LWIP_BROADCAST_PING is not set
1598# end of ICMP
1599
1600#
1601# LWIP RAW API
1602#
1603CONFIG_LWIP_MAX_RAW_PCBS=16
1604# end of LWIP RAW API
1605
1606#
1607# SNTP
1608#
1609CONFIG_LWIP_SNTP_MAX_SERVERS=1
1610# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set
1611CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000
1612CONFIG_LWIP_SNTP_STARTUP_DELAY=y
1613CONFIG_LWIP_SNTP_MAXIMUM_STARTUP_DELAY=5000
1614# end of SNTP
1615
1616#
1617# DNS
1618#
1619CONFIG_LWIP_DNS_MAX_HOST_IP=1
1620CONFIG_LWIP_DNS_MAX_SERVERS=3
1621# CONFIG_LWIP_FALLBACK_DNS_SERVER_SUPPORT is not set
1622# CONFIG_LWIP_DNS_SETSERVER_WITH_NETIF is not set
1623# end of DNS
1624
1625CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7
1626CONFIG_LWIP_ESP_LWIP_ASSERT=y
1627
1628#
1629# Hooks
1630#
1631# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set
1632CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y
1633# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set
1634CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y
1635# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set
1636# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set
1637CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_NONE=y
1638# CONFIG_LWIP_HOOK_DNS_EXT_RESOLVE_CUSTOM is not set
1639# end of Hooks
1640
1641# CONFIG_LWIP_DEBUG is not set
1642# end of LWIP
1643
1644#
1645# mbedTLS
1646#
1647CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y
1648# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set
1649# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set
1650CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y
1651CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384
1652CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096
1653# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set
1654# CONFIG_MBEDTLS_DEBUG is not set
1655
1656#
1657# mbedTLS v3.x related
1658#
1659# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set
1660# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set
1661# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set
1662# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set
1663CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y
1664CONFIG_MBEDTLS_PKCS7_C=y
1665# end of mbedTLS v3.x related
1666
1667#
1668# Certificate Bundle
1669#
1670CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y
1671CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y
1672# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set
1673# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set
1674# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set
1675# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEPRECATED_LIST is not set
1676CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200
1677# end of Certificate Bundle
1678
1679# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set
1680CONFIG_MBEDTLS_CMAC_C=y
1681CONFIG_MBEDTLS_HARDWARE_AES=y
1682CONFIG_MBEDTLS_AES_USE_INTERRUPT=y
1683CONFIG_MBEDTLS_AES_INTERRUPT_LEVEL=0
1684CONFIG_MBEDTLS_GCM_SUPPORT_NON_AES_CIPHER=y
1685CONFIG_MBEDTLS_HARDWARE_MPI=y
1686# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set
1687CONFIG_MBEDTLS_MPI_USE_INTERRUPT=y
1688CONFIG_MBEDTLS_MPI_INTERRUPT_LEVEL=0
1689CONFIG_MBEDTLS_HARDWARE_SHA=y
1690CONFIG_MBEDTLS_ROM_MD5=y
1691# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set
1692# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set
1693CONFIG_MBEDTLS_HAVE_TIME=y
1694# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set
1695# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set
1696CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y
1697CONFIG_MBEDTLS_SHA512_C=y
1698# CONFIG_MBEDTLS_SHA3_C is not set
1699CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y
1700# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set
1701# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set
1702# CONFIG_MBEDTLS_TLS_DISABLED is not set
1703CONFIG_MBEDTLS_TLS_SERVER=y
1704CONFIG_MBEDTLS_TLS_CLIENT=y
1705CONFIG_MBEDTLS_TLS_ENABLED=y
1706
1707#
1708# TLS Key Exchange Methods
1709#
1710# CONFIG_MBEDTLS_PSK_MODES is not set
1711CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y
1712CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y
1713CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y
1714CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y
1715CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y
1716CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y
1717# end of TLS Key Exchange Methods
1718
1719CONFIG_MBEDTLS_SSL_RENEGOTIATION=y
1720CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y
1721# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set
1722# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set
1723CONFIG_MBEDTLS_SSL_ALPN=y
1724CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y
1725CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y
1726
1727#
1728# Symmetric Ciphers
1729#
1730CONFIG_MBEDTLS_AES_C=y
1731# CONFIG_MBEDTLS_CAMELLIA_C is not set
1732# CONFIG_MBEDTLS_DES_C is not set
1733# CONFIG_MBEDTLS_BLOWFISH_C is not set
1734# CONFIG_MBEDTLS_XTEA_C is not set
1735CONFIG_MBEDTLS_CCM_C=y
1736CONFIG_MBEDTLS_GCM_C=y
1737# CONFIG_MBEDTLS_NIST_KW_C is not set
1738# end of Symmetric Ciphers
1739
1740# CONFIG_MBEDTLS_RIPEMD160_C is not set
1741
1742#
1743# Certificates
1744#
1745CONFIG_MBEDTLS_PEM_PARSE_C=y
1746CONFIG_MBEDTLS_PEM_WRITE_C=y
1747CONFIG_MBEDTLS_X509_CRL_PARSE_C=y
1748CONFIG_MBEDTLS_X509_CSR_PARSE_C=y
1749# end of Certificates
1750
1751CONFIG_MBEDTLS_ECP_C=y
1752CONFIG_MBEDTLS_PK_PARSE_EC_EXTENDED=y
1753CONFIG_MBEDTLS_PK_PARSE_EC_COMPRESSED=y
1754# CONFIG_MBEDTLS_DHM_C is not set
1755CONFIG_MBEDTLS_ECDH_C=y
1756CONFIG_MBEDTLS_ECDSA_C=y
1757# CONFIG_MBEDTLS_ECJPAKE_C is not set
1758CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y
1759CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y
1760CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y
1761CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y
1762CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y
1763CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y
1764CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y
1765CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y
1766CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y
1767CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y
1768CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y
1769CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y
1770CONFIG_MBEDTLS_ECP_NIST_OPTIM=y
1771# CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM is not set
1772# CONFIG_MBEDTLS_POLY1305_C is not set
1773# CONFIG_MBEDTLS_CHACHA20_C is not set
1774# CONFIG_MBEDTLS_HKDF_C is not set
1775# CONFIG_MBEDTLS_THREADING_C is not set
1776CONFIG_MBEDTLS_ERROR_STRINGS=y
1777CONFIG_MBEDTLS_FS_IO=y
1778# end of mbedTLS
1779
1780#
1781# ESP-MQTT Configurations
1782#
1783CONFIG_MQTT_PROTOCOL_311=y
1784# CONFIG_MQTT_PROTOCOL_5 is not set
1785CONFIG_MQTT_TRANSPORT_SSL=y
1786CONFIG_MQTT_TRANSPORT_WEBSOCKET=y
1787CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y
1788# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set
1789# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set
1790# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set
1791# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set
1792# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set
1793# CONFIG_MQTT_CUSTOM_OUTBOX is not set
1794# end of ESP-MQTT Configurations
1795
1796#
1797# Newlib
1798#
1799CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y
1800# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set
1801# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set
1802# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set
1803# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set
1804CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y
1805# CONFIG_NEWLIB_NANO_FORMAT is not set
1806CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y
1807# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set
1808# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set
1809# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set
1810# end of Newlib
1811
1812#
1813# NVS
1814#
1815# CONFIG_NVS_ENCRYPTION is not set
1816# CONFIG_NVS_ASSERT_ERROR_CHECK is not set
1817# CONFIG_NVS_LEGACY_DUP_KEYS_COMPATIBILITY is not set
1818# end of NVS
1819
1820#
1821# OpenThread
1822#
1823# CONFIG_OPENTHREAD_ENABLED is not set
1824
1825#
1826# OpenThread Spinel
1827#
1828# CONFIG_OPENTHREAD_SPINEL_ONLY is not set
1829# end of OpenThread Spinel
1830# end of OpenThread
1831
1832#
1833# Protocomm
1834#
1835CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y
1836CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y
1837CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y
1838CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_PATCH_VERSION=y
1839# end of Protocomm
1840
1841#
1842# PThreads
1843#
1844CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5
1845CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072
1846CONFIG_PTHREAD_STACK_MIN=768
1847CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y
1848# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set
1849# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set
1850CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1
1851CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread"
1852# end of PThreads
1853
1854#
1855# MMU Config
1856#
1857CONFIG_MMU_PAGE_SIZE_64KB=y
1858CONFIG_MMU_PAGE_MODE="64KB"
1859CONFIG_MMU_PAGE_SIZE=0x10000
1860# end of MMU Config
1861
1862#
1863# Main Flash configuration
1864#
1865
1866#
1867# SPI Flash behavior when brownout
1868#
1869CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y
1870CONFIG_SPI_FLASH_BROWNOUT_RESET=y
1871# end of SPI Flash behavior when brownout
1872
1873#
1874# Optional and Experimental Features (READ DOCS FIRST)
1875#
1876
1877#
1878# Features here require specific hardware (READ DOCS FIRST!)
1879#
1880# CONFIG_SPI_FLASH_HPM_ENA is not set
1881CONFIG_SPI_FLASH_HPM_AUTO=y
1882# CONFIG_SPI_FLASH_HPM_DIS is not set
1883CONFIG_SPI_FLASH_HPM_ON=y
1884CONFIG_SPI_FLASH_HPM_DC_AUTO=y
1885# CONFIG_SPI_FLASH_HPM_DC_DISABLE is not set
1886# CONFIG_SPI_FLASH_AUTO_SUSPEND is not set
1887CONFIG_SPI_FLASH_SUSPEND_TSUS_VAL_US=50
1888# CONFIG_SPI_FLASH_FORCE_ENABLE_XMC_C_SUSPEND is not set
1889# end of Optional and Experimental Features (READ DOCS FIRST)
1890# end of Main Flash configuration
1891
1892#
1893# SPI Flash driver
1894#
1895# CONFIG_SPI_FLASH_VERIFY_WRITE is not set
1896# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set
1897CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y
1898# CONFIG_SPI_FLASH_ROM_IMPL is not set
1899CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y
1900# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set
1901# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set
1902# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set
1903CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y
1904CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20
1905CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1
1906CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192
1907# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set
1908# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set
1909# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set
1910
1911#
1912# Auto-detect flash chips
1913#
1914CONFIG_SPI_FLASH_VENDOR_XMC_SUPPORTED=y
1915CONFIG_SPI_FLASH_VENDOR_GD_SUPPORTED=y
1916CONFIG_SPI_FLASH_VENDOR_ISSI_SUPPORTED=y
1917CONFIG_SPI_FLASH_VENDOR_MXIC_SUPPORTED=y
1918CONFIG_SPI_FLASH_VENDOR_WINBOND_SUPPORTED=y
1919CONFIG_SPI_FLASH_VENDOR_BOYA_SUPPORTED=y
1920CONFIG_SPI_FLASH_VENDOR_TH_SUPPORTED=y
1921CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y
1922CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y
1923CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y
1924CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y
1925CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP=y
1926CONFIG_SPI_FLASH_SUPPORT_TH_CHIP=y
1927CONFIG_SPI_FLASH_SUPPORT_MXIC_OPI_CHIP=y
1928# end of Auto-detect flash chips
1929
1930CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y
1931# end of SPI Flash driver
1932
1933#
1934# SPIFFS Configuration
1935#
1936CONFIG_SPIFFS_MAX_PARTITIONS=3
1937
1938#
1939# SPIFFS Cache Configuration
1940#
1941CONFIG_SPIFFS_CACHE=y
1942CONFIG_SPIFFS_CACHE_WR=y
1943# CONFIG_SPIFFS_CACHE_STATS is not set
1944# end of SPIFFS Cache Configuration
1945
1946CONFIG_SPIFFS_PAGE_CHECK=y
1947CONFIG_SPIFFS_GC_MAX_RUNS=10
1948# CONFIG_SPIFFS_GC_STATS is not set
1949CONFIG_SPIFFS_PAGE_SIZE=256
1950CONFIG_SPIFFS_OBJ_NAME_LEN=32
1951# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set
1952CONFIG_SPIFFS_USE_MAGIC=y
1953CONFIG_SPIFFS_USE_MAGIC_LENGTH=y
1954CONFIG_SPIFFS_META_LENGTH=4
1955CONFIG_SPIFFS_USE_MTIME=y
1956
1957#
1958# Debug Configuration
1959#
1960# CONFIG_SPIFFS_DBG is not set
1961# CONFIG_SPIFFS_API_DBG is not set
1962# CONFIG_SPIFFS_GC_DBG is not set
1963# CONFIG_SPIFFS_CACHE_DBG is not set
1964# CONFIG_SPIFFS_CHECK_DBG is not set
1965# CONFIG_SPIFFS_TEST_VISUALISATION is not set
1966# end of Debug Configuration
1967# end of SPIFFS Configuration
1968
1969#
1970# TCP Transport
1971#
1972
1973#
1974# Websocket
1975#
1976CONFIG_WS_TRANSPORT=y
1977CONFIG_WS_BUFFER_SIZE=1024
1978# CONFIG_WS_DYNAMIC_BUFFER is not set
1979# end of Websocket
1980# end of TCP Transport
1981
1982#
1983# Ultra Low Power (ULP) Co-processor
1984#
1985# CONFIG_ULP_COPROC_ENABLED is not set
1986
1987#
1988# ULP Debugging Options
1989#
1990# end of ULP Debugging Options
1991# end of Ultra Low Power (ULP) Co-processor
1992
1993#
1994# Unity unit testing library
1995#
1996CONFIG_UNITY_ENABLE_FLOAT=y
1997CONFIG_UNITY_ENABLE_DOUBLE=y
1998# CONFIG_UNITY_ENABLE_64BIT is not set
1999# CONFIG_UNITY_ENABLE_COLOR is not set
2000CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y
2001# CONFIG_UNITY_ENABLE_FIXTURE is not set
2002# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set
2003# end of Unity unit testing library
2004
2005#
2006# USB-OTG
2007#
2008CONFIG_USB_HOST_CONTROL_TRANSFER_MAX_SIZE=256
2009CONFIG_USB_HOST_HW_BUFFER_BIAS_BALANCED=y
2010# CONFIG_USB_HOST_HW_BUFFER_BIAS_IN is not set
2011# CONFIG_USB_HOST_HW_BUFFER_BIAS_PERIODIC_OUT is not set
2012
2013#
2014# Hub Driver Configuration
2015#
2016
2017#
2018# Root Port configuration
2019#
2020CONFIG_USB_HOST_DEBOUNCE_DELAY_MS=250
2021CONFIG_USB_HOST_RESET_HOLD_MS=30
2022CONFIG_USB_HOST_RESET_RECOVERY_MS=30
2023CONFIG_USB_HOST_SET_ADDR_RECOVERY_MS=10
2024# end of Root Port configuration
2025
2026# CONFIG_USB_HOST_HUBS_SUPPORTED is not set
2027# end of Hub Driver Configuration
2028
2029# CONFIG_USB_HOST_ENABLE_ENUM_FILTER_CALLBACK is not set
2030CONFIG_USB_OTG_SUPPORTED=y
2031# end of USB-OTG
2032
2033#
2034# Virtual file system
2035#
2036CONFIG_VFS_SUPPORT_IO=y
2037CONFIG_VFS_SUPPORT_DIR=y
2038CONFIG_VFS_SUPPORT_SELECT=y
2039CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y
2040# CONFIG_VFS_SELECT_IN_RAM is not set
2041CONFIG_VFS_SUPPORT_TERMIOS=y
2042CONFIG_VFS_MAX_COUNT=8
2043
2044#
2045# Host File System I/O (Semihosting)
2046#
2047CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1
2048# end of Host File System I/O (Semihosting)
2049
2050CONFIG_VFS_INITIALIZE_DEV_NULL=y
2051# end of Virtual file system
2052
2053#
2054# Wear Levelling
2055#
2056# CONFIG_WL_SECTOR_SIZE_512 is not set
2057CONFIG_WL_SECTOR_SIZE_4096=y
2058CONFIG_WL_SECTOR_SIZE=4096
2059# end of Wear Levelling
2060
2061#
2062# Wi-Fi Provisioning Manager
2063#
2064CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16
2065CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30
2066CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y
2067# CONFIG_WIFI_PROV_STA_FAST_SCAN is not set
2068# end of Wi-Fi Provisioning Manager
2069# end of Component config
2070
2071# CONFIG_IDF_EXPERIMENTAL_FEATURES is not set
2072
2073# Deprecated options for backward compatibility
2074# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set
2075# CONFIG_NO_BLOBS is not set
2076# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set
2077# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set
2078# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set
2079CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y
2080# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set
2081# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set
2082CONFIG_LOG_BOOTLOADER_LEVEL=3
2083# CONFIG_APP_ROLLBACK_ENABLE is not set
2084# CONFIG_FLASH_ENCRYPTION_ENABLED is not set
2085# CONFIG_FLASHMODE_QIO is not set
2086# CONFIG_FLASHMODE_QOUT is not set
2087CONFIG_FLASHMODE_DIO=y
2088# CONFIG_FLASHMODE_DOUT is not set
2089CONFIG_MONITOR_BAUD=115200
2090CONFIG_OPTIMIZATION_LEVEL_DEBUG=y
2091CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y
2092CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y
2093# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set
2094# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set
2095CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y
2096# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set
2097# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set
2098CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2
2099# CONFIG_CXX_EXCEPTIONS is not set
2100CONFIG_STACK_CHECK_NONE=y
2101# CONFIG_STACK_CHECK_NORM is not set
2102# CONFIG_STACK_CHECK_STRONG is not set
2103# CONFIG_STACK_CHECK_ALL is not set
2104# CONFIG_WARN_WRITE_STRINGS is not set
2105# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set
2106CONFIG_ESP32_APPTRACE_DEST_NONE=y
2107CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y
2108# CONFIG_EXTERNAL_COEX_ENABLE is not set
2109# CONFIG_ESP_WIFI_EXTERNAL_COEXIST_ENABLE is not set
2110# CONFIG_MCPWM_ISR_IN_IRAM is not set
2111# CONFIG_EVENT_LOOP_PROFILING is not set
2112CONFIG_POST_EVENTS_FROM_ISR=y
2113CONFIG_POST_EVENTS_FROM_IRAM_ISR=y
2114CONFIG_GDBSTUB_SUPPORT_TASKS=y
2115CONFIG_GDBSTUB_MAX_TASKS=32
2116# CONFIG_OTA_ALLOW_HTTP is not set
2117# CONFIG_ESP_SYSTEM_PD_FLASH is not set
2118CONFIG_ESP32S3_DEEP_SLEEP_WAKEUP_DELAY=2000
2119CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000
2120CONFIG_ESP32S3_RTC_CLK_SRC_INT_RC=y
2121# CONFIG_ESP32S3_RTC_CLK_SRC_EXT_CRYS is not set
2122# CONFIG_ESP32S3_RTC_CLK_SRC_EXT_OSC is not set
2123# CONFIG_ESP32S3_RTC_CLK_SRC_INT_8MD256 is not set
2124CONFIG_ESP32S3_RTC_CLK_CAL_CYCLES=1024
2125CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y
2126# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set
2127CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20
2128CONFIG_ESP32_PHY_MAX_TX_POWER=20
2129# CONFIG_REDUCE_PHY_TX_POWER is not set
2130# CONFIG_ESP32_REDUCE_PHY_TX_POWER is not set
2131CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU=y
2132CONFIG_PM_POWER_DOWN_TAGMEM_IN_LIGHT_SLEEP=y
2133# CONFIG_ESP32S3_SPIRAM_SUPPORT is not set
2134# CONFIG_ESP32S3_DEFAULT_CPU_FREQ_80 is not set
2135CONFIG_ESP32S3_DEFAULT_CPU_FREQ_160=y
2136# CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240 is not set
2137CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=160
2138CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32
2139CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304
2140CONFIG_MAIN_TASK_STACK_SIZE=8192
2141CONFIG_CONSOLE_UART_DEFAULT=y
2142# CONFIG_CONSOLE_UART_CUSTOM is not set
2143# CONFIG_CONSOLE_UART_NONE is not set
2144# CONFIG_ESP_CONSOLE_UART_NONE is not set
2145CONFIG_CONSOLE_UART=y
2146CONFIG_CONSOLE_UART_NUM=0
2147CONFIG_CONSOLE_UART_BAUDRATE=115200
2148CONFIG_INT_WDT=y
2149CONFIG_INT_WDT_TIMEOUT_MS=300
2150CONFIG_INT_WDT_CHECK_CPU1=y
2151CONFIG_TASK_WDT=y
2152CONFIG_ESP_TASK_WDT=y
2153# CONFIG_TASK_WDT_PANIC is not set
2154CONFIG_TASK_WDT_TIMEOUT_S=5
2155CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y
2156CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
2157# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set
2158CONFIG_ESP32S3_DEBUG_OCDAWARE=y
2159CONFIG_BROWNOUT_DET=y
2160CONFIG_ESP32S3_BROWNOUT_DET=y
2161CONFIG_BROWNOUT_DET_LVL_SEL_7=y
2162CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_7=y
2163# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set
2164# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_6 is not set
2165# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set
2166# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_5 is not set
2167# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set
2168# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_4 is not set
2169# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set
2170# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_3 is not set
2171# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set
2172# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_2 is not set
2173# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set
2174# CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_1 is not set
2175CONFIG_BROWNOUT_DET_LVL=7
2176CONFIG_ESP32S3_BROWNOUT_DET_LVL=7
2177CONFIG_IPC_TASK_STACK_SIZE=1280
2178CONFIG_TIMER_TASK_STACK_SIZE=3584
2179CONFIG_ESP32_WIFI_ENABLED=y
2180CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10
2181CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32
2182# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set
2183CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y
2184CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1
2185CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32
2186# CONFIG_ESP32_WIFI_CSI_ENABLED is not set
2187CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
2188CONFIG_ESP32_WIFI_TX_BA_WIN=6
2189CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
2190CONFIG_ESP32_WIFI_RX_BA_WIN=6
2191CONFIG_ESP32_WIFI_NVS_ENABLED=y
2192CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y
2193# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set
2194CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752
2195CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32
2196CONFIG_ESP32_WIFI_IRAM_OPT=y
2197CONFIG_ESP32_WIFI_RX_IRAM_OPT=y
2198CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y
2199CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y
2200CONFIG_WPA_MBEDTLS_CRYPTO=y
2201CONFIG_WPA_MBEDTLS_TLS_CLIENT=y
2202# CONFIG_WPA_WAPI_PSK is not set
2203# CONFIG_WPA_SUITE_B_192 is not set
2204# CONFIG_WPA_11KV_SUPPORT is not set
2205# CONFIG_WPA_MBO_SUPPORT is not set
2206# CONFIG_WPA_DPP_SUPPORT is not set
2207# CONFIG_WPA_11R_SUPPORT is not set
2208# CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set
2209# CONFIG_WPA_WPS_STRICT is not set
2210# CONFIG_WPA_DEBUG_PRINT is not set
2211# CONFIG_WPA_TESTING_OPTIONS is not set
2212# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set
2213# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set
2214CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y
2215CONFIG_TIMER_TASK_PRIORITY=1
2216CONFIG_TIMER_TASK_STACK_DEPTH=2048
2217CONFIG_TIMER_QUEUE_LENGTH=10
2218# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set
2219# CONFIG_HAL_ASSERTION_SILIENT is not set
2220# CONFIG_L2_TO_L3_COPY is not set
2221CONFIG_ESP_GRATUITOUS_ARP=y
2222CONFIG_GARP_TMR_INTERVAL=60
2223CONFIG_TCPIP_RECVMBOX_SIZE=32
2224CONFIG_TCP_MAXRTX=12
2225CONFIG_TCP_SYNMAXRTX=12
2226CONFIG_TCP_MSS=1440
2227CONFIG_TCP_MSL=60000
2228CONFIG_TCP_SND_BUF_DEFAULT=5760
2229CONFIG_TCP_WND_DEFAULT=5760
2230CONFIG_TCP_RECVMBOX_SIZE=6
2231CONFIG_TCP_QUEUE_OOSEQ=y
2232CONFIG_TCP_OVERSIZE_MSS=y
2233# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set
2234# CONFIG_TCP_OVERSIZE_DISABLE is not set
2235CONFIG_UDP_RECVMBOX_SIZE=6
2236CONFIG_TCPIP_TASK_STACK_SIZE=3072
2237CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
2238# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set
2239# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set
2240CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF
2241# CONFIG_PPP_SUPPORT is not set
2242CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC_SYSTIMER=y
2243CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC_FRC1=y
2244# CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC is not set
2245# CONFIG_ESP32S3_TIME_SYSCALL_USE_SYSTIMER is not set
2246# CONFIG_ESP32S3_TIME_SYSCALL_USE_FRC1 is not set
2247# CONFIG_ESP32S3_TIME_SYSCALL_USE_NONE is not set
2248CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5
2249CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072
2250CONFIG_ESP32_PTHREAD_STACK_MIN=768
2251CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y
2252# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set
2253# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set
2254CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1
2255CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread"
2256CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y
2257# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set
2258# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set
2259CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y
2260CONFIG_SUPPORT_TERMIOS=y
2261CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1
2262# End of deprecated options
diff --git a/sdkconfig.defaults b/sdkconfig.defaults
index fdbf0da..5a80e87 100644
--- a/sdkconfig.defaults
+++ b/sdkconfig.defaults
@@ -2,6 +2,10 @@
2CONFIG_ESP_WIFI_ENABLED=y 2CONFIG_ESP_WIFI_ENABLED=y
3CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y 3CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y
4 4
5# Flash size (boards have 16MB)
6CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
7CONFIG_ESPTOOLPY_FLASHSIZE="16MB"
8
5# NAPT 9# NAPT
6CONFIG_LWIP_IP_FORWARD=y 10CONFIG_LWIP_IP_FORWARD=y
7CONFIG_LWIP_IPV4_NAPT=y 11CONFIG_LWIP_IPV4_NAPT=y
@@ -22,5 +26,10 @@ CONFIG_LOG_DEFAULT_LEVEL_INFO=y
22CONFIG_HTTPD_MAX_REQ_HDR_LEN=1024 26CONFIG_HTTPD_MAX_REQ_HDR_LEN=1024
23CONFIG_HTTPD_MAX_URI_LEN=512 27CONFIG_HTTPD_MAX_URI_LEN=512
24 28
29# Partition table
30CONFIG_PARTITION_TABLE_CUSTOM=y
31CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
32CONFIG_PARTITION_TABLE_FILENAME="partitions.csv"
33
25# mbedTLS (needed for HTTPS to mint) 34# mbedTLS (needed for HTTPS to mint)
26CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y 35CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y
diff --git a/tests/api.mjs b/tests/api.mjs
new file mode 100644
index 0000000..5218d7b
--- /dev/null
+++ b/tests/api.mjs
@@ -0,0 +1,79 @@
1import { curl, curlBody, getPortalIP, canPing, canResolve, dnsResolvesToSelf } from './helpers/network.mjs';
2
3const IP = getPortalIP();
4let passed = 0, failed = 0;
5
6function assert(condition, test) {
7 if (condition) { console.log(` ✓ ${test}`); passed++; }
8 else { console.log(` ✗ ${test}`); failed++; }
9}
10
11async function sleep(ms) { return new Promise(r => setTimeout(r, ms)); }
12
13console.log(`\n=== API Tests (target: ${IP}) ===\n`);
14
15// Test 3: Captive portal serves HTML
16console.log('Test 3: GET / returns portal HTML');
17const body3 = curlBody(`http://${IP}/`);
18assert(body3 && body3.includes('TollGate'), 'Portal HTML contains "TollGate"');
19assert(body3 && body3.includes('Grant Free Access'), 'Portal has Grant Access button');
20
21// Test 4: Captive detection URIs
22console.log('\nTest 4: Captive detection URIs');
23for (const uri of ['/generate_204', '/hotspot-detect.html', '/canonical.html', '/success.txt', '/ncsi.txt', '/connecttest.txt', '/wpad.dat', '/redirect']) {
24 const code = curl(`http://${IP}${uri}`);
25 assert(code === '200', `${uri} → 200`);
26}
27
28// Test 7: /whoami returns MAC
29console.log('\nTest 7: GET /whoami');
30const body7 = curlBody(`http://${IP}/whoami`);
31assert(body7 && body7.startsWith('mac='), '/whoami returns mac=...');
32
33// Test 8: /usage returns no session
34console.log('\nTest 8: GET /usage');
35const body8 = curlBody(`http://${IP}/usage`);
36assert(body8 && body8.includes('-1/-1'), '/usage returns -1/-1 before auth');
37
38// Test 5: DNS hijack before auth
39console.log('\nTest 5: DNS hijack before auth');
40assert(dnsResolvesToSelf('google.com'), 'DNS resolves google.com to AP IP');
41
42// Test 6: No internet before auth
43console.log('\nTest 6: No internet before auth');
44assert(!canPing('8.8.8.8', 1), 'ping 8.8.8.8 fails before auth');
45
46// Test 9: Grant access
47console.log('\nTest 9: GET /grant_access');
48const body9 = curlBody(`http://${IP}/grant_access`);
49assert(body9 && body9.includes('"granted"'), 'Grant access returns {"status":"granted"}');
50
51await sleep(2000);
52
53// Test 10: DNS forward after auth
54console.log('\nTest 10: DNS forward after auth');
55assert(canResolve('google.com'), 'DNS resolves normally after auth');
56
57// Test 11: Internet after auth
58console.log('\nTest 11: Internet after auth');
59assert(canPing('8.8.8.8'), 'ping 8.8.8.8 succeeds after auth');
60
61// Test 12: HTTP browsing works
62console.log('\nTest 12: HTTP browsing');
63const body12 = curlBody('http://example.com/');
64assert(body12 && (body12.includes('Example Domain') || body12.includes('example')), 'HTTP page loads');
65
66// Test 13: Reset auth
67console.log('\nTest 13: GET /reset_authentication');
68const body13 = curlBody(`http://${IP}/reset_authentication`);
69assert(body13 && body13.includes('"reset"'), 'Reset returns {"status":"reset"}');
70
71await sleep(2000);
72
73// Test 14: Internet blocked after reset
74console.log('\nTest 14: Internet blocked after reset');
75assert(!canPing('8.8.8.8', 1), 'ping fails after auth reset');
76
77// Summary
78console.log(`\n=== Results: ${passed} passed, ${failed} failed ===\n`);
79process.exit(failed > 0 ? 1 : 0);
diff --git a/tests/captive-portal.spec.mjs b/tests/captive-portal.spec.mjs
new file mode 100644
index 0000000..b6ad96b
--- /dev/null
+++ b/tests/captive-portal.spec.mjs
@@ -0,0 +1,75 @@
1import { test, expect } from '@playwright/test';
2
3const PORTAL_IP = process.env.TOLLGATE_IP || '192.168.4.1';
4const PORTAL_URL = `http://${PORTAL_IP}`;
5
6test.describe('Captive Portal - Phase 1', () => {
7
8 test('portal page loads with TollGate branding', async ({ page }) => {
9 await page.goto(PORTAL_URL);
10 await expect(page.locator('h1')).toHaveText('TollGate');
11 await expect(page.locator('.subtitle')).toContainText('internet access');
12 });
13
14 test('portal shows price', async ({ page }) => {
15 await page.goto(PORTAL_URL);
16 const priceEl = page.locator('.price-amount');
17 await expect(priceEl).not.toBeEmpty({ timeout: 5000 });
18 });
19
20 test('grant access button exists', async ({ page }) => {
21 await page.goto(PORTAL_URL);
22 const btn = page.locator('#grantBtn');
23 await expect(btn).toBeVisible();
24 await expect(btn).toHaveText(/Grant Free Access/i);
25 });
26
27 test('click grant access shows connected', async ({ page }) => {
28 await page.goto(PORTAL_URL);
29 const btn = page.locator('#grantBtn');
30 await btn.click();
31 const status = page.locator('#status.success');
32 await expect(status).toBeVisible({ timeout: 10000 });
33 await expect(status).toContainText(/Connected/i);
34 });
35
36 test('captive detection URIs return portal', async ({ page }) => {
37 const uris = ['/generate_204', '/hotspot-detect.html', '/canonical.html', '/success.txt'];
38 for (const uri of uris) {
39 const resp = await page.goto(`${PORTAL_URL}${uri}`);
40 expect(resp.status()).toBe(200);
41 const body = await resp.text();
42 expect(body).toContain('TollGate');
43 }
44 });
45
46 test('/api/status returns JSON with price', async ({ page }) => {
47 const resp = await page.goto(`${PORTAL_URL}/api/status`);
48 expect(resp.status()).toBe(200);
49 const data = await resp.json();
50 expect(data).toHaveProperty('connected');
51 expect(data).toHaveProperty('price');
52 expect(typeof data.price).toBe('number');
53 });
54
55 test('/whoami returns mac address', async ({ page }) => {
56 const resp = await page.goto(`${PORTAL_URL}/whoami`);
57 expect(resp.status()).toBe(200);
58 const text = await resp.text();
59 expect(text).toMatch(/^mac=/);
60 });
61
62 test('/usage returns -1/-1 before auth', async ({ page }) => {
63 const resp = await page.goto(`${PORTAL_URL}/usage`);
64 expect(resp.status()).toBe(200);
65 const text = await resp.text();
66 expect(text).toBe('-1/-1');
67 });
68
69 test('/reset_authentication works', async ({ page }) => {
70 const resp = await page.goto(`${PORTAL_URL}/reset_authentication`);
71 expect(resp.status()).toBe(200);
72 const data = await resp.json();
73 expect(data.status).toBe('reset');
74 });
75});
diff --git a/tests/helpers/network.mjs b/tests/helpers/network.mjs
new file mode 100644
index 0000000..e4d5086
--- /dev/null
+++ b/tests/helpers/network.mjs
@@ -0,0 +1,89 @@
1import { execSync } from 'child_process';
2
3const ESP32_IP = process.env.TOLLGATE_IP || '192.168.4.1';
4const TIMEOUT = 5000;
5
6export function curl(args, expectStatus = null) {
7 const cmd = `curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 --max-time ${TIMEOUT/1000} ${args}`;
8 try {
9 const result = execSync(cmd, { encoding: 'utf8', timeout: TIMEOUT + 2000 }).trim();
10 if (expectStatus && result !== String(expectStatus)) {
11 throw new Error(`Expected HTTP ${expectStatus}, got ${result}`);
12 }
13 return result;
14 } catch (e) {
15 if (e.status === 'ETIMEDOUT' || e.killed) return 'TIMEOUT';
16 throw e;
17 }
18}
19
20export function curlBody(url) {
21 const cmd = `curl -s --connect-timeout 5 --max-time ${TIMEOUT/1000} "${url}"`;
22 try {
23 return execSync(cmd, { encoding: 'utf8', timeout: TIMEOUT + 2000 });
24 } catch {
25 return null;
26 }
27}
28
29export function getPortalIP() { return ESP32_IP; }
30
31export function canPing(host = '8.8.8.8', count = 2) {
32 try {
33 const result = execSync(`ping -c ${count} -W 2 -I wlp59s0 ${host}`, { encoding: 'utf8', timeout: 10000 });
34 return result.includes('0% packet loss') || result.includes('1 packets transmitted');
35 } catch {
36 return false;
37 }
38}
39
40export function canResolve(domain = 'google.com') {
41 try {
42 const result = execSync(`nslookup ${domain} ${ESP32_IP}`, { encoding: 'utf8', timeout: 10000 });
43 return result.includes('Address') && !result.includes('NXDOMAIN');
44 } catch (e) {
45 const result = e.stdout || '';
46 return result.includes('Address') && !result.includes('NXDOMAIN');
47 }
48}
49
50export function dnsResolvesToSelf(domain = 'google.com') {
51 try {
52 const result = execSync(`nslookup ${domain} ${ESP32_IP}`, { encoding: 'utf8', timeout: 10000 });
53 return result.includes(ESP32_IP);
54 } catch (e) {
55 return e.stdout && e.stdout.includes(ESP32_IP);
56 }
57}
58
59export function connectToAP(ssid, password = '') {
60 try {
61 if (password) {
62 execSync(`nmcli dev wifi connect "${ssid}" password "${password}" ifname wlan0`, { timeout: 30000 });
63 } else {
64 execSync(`nmcli dev wifi connect "${ssid}" ifname wlan0`, { timeout: 30000 });
65 }
66 return true;
67 } catch {
68 return false;
69 }
70}
71
72export function disconnectAP() {
73 try {
74 execSync('nmcli dev disconnect wlan0 2>/dev/null || true', { timeout: 10000 });
75 return true;
76 } catch {
77 return false;
78 }
79}
80
81export function getWifiInterface() {
82 try {
83 const result = execSync('nmcli -t -f DEVICE,TYPE dev status', { encoding: 'utf8' });
84 const line = result.split('\n').find(l => l.includes('wifi'));
85 return line ? line.split(':')[0] : null;
86 } catch {
87 return null;
88 }
89}
diff --git a/tests/helpers/serial.mjs b/tests/helpers/serial.mjs
new file mode 100644
index 0000000..306b552
--- /dev/null
+++ b/tests/helpers/serial.mjs
@@ -0,0 +1,82 @@
1import { SerialPort } from 'serialport';
2import { ReadlineParser } from '@serialport/parser-readline';
3import { execSync } from 'child_process';
4
5const DEFAULT_BAUD = 115200;
6const BOOT_TIMEOUT = 30000;
7
8export async function execSerial(portPath, command, timeoutMs = 5000) {
9 return new Promise((resolve, reject) => {
10 const port = new SerialPort({ path: portPath, baudRate: DEFAULT_BAUD });
11 const parser = port.pipe(new ReadlineParser());
12 const lines = [];
13 let resolved = false;
14
15 const timer = setTimeout(() => {
16 if (!resolved) { resolved = true; port.close(); resolve(lines.join('\n')); }
17 }, timeoutMs);
18
19 parser.on('data', (line) => {
20 lines.push(line);
21 if (line.includes('___END___') && !resolved) {
22 resolved = true;
23 clearTimeout(timer);
24 port.close();
25 resolve(lines.join('\n'));
26 }
27 });
28
29 port.on('open', () => {
30 port.write(command + '\n');
31 });
32
33 port.on('error', (err) => {
34 if (!resolved) { resolved = true; clearTimeout(timer); reject(err); }
35 });
36 });
37}
38
39export async function waitForBoot(portPath, timeoutMs = BOOT_TIMEOUT) {
40 return new Promise((resolve, reject) => {
41 const port = new SerialPort({ path: portPath, baudRate: DEFAULT_BAUD });
42 const parser = port.pipe(new ReadlineParser());
43 const timer = setTimeout(() => {
44 port.close();
45 reject(new Error('Boot timeout'));
46 }, timeoutMs);
47
48 parser.on('data', (line) => {
49 if (line.includes('TollGate services started') || line.includes('WiFi AP+STA started')) {
50 clearTimeout(timer);
51 setTimeout(() => { port.close(); resolve(true); }, 500);
52 }
53 });
54
55 port.on('error', (err) => {
56 clearTimeout(timer);
57 reject(err);
58 });
59 });
60}
61
62export async function readSerial(portPath, durationMs = 3000) {
63 return new Promise((resolve, reject) => {
64 const port = new SerialPort({ path: portPath, baudRate: DEFAULT_BAUD });
65 const parser = port.pipe(new ReadlineParser());
66 const lines = [];
67
68 const timer = setTimeout(() => {
69 port.close();
70 resolve(lines.join('\n'));
71 }, durationMs);
72
73 parser.on('data', (line) => lines.push(line));
74 port.on('error', (err) => { clearTimeout(timer); reject(err); });
75 });
76}
77
78export function resetDevice(portPath) {
79 try {
80 execSync(`python3 -m esptool --port ${portPath} run 2>/dev/null`, { timeout: 5000 });
81 } catch {}
82}
diff --git a/tests/network.mjs b/tests/network.mjs
new file mode 100644
index 0000000..2d302ef
--- /dev/null
+++ b/tests/network.mjs
@@ -0,0 +1,66 @@
1import { execSync } from 'child_process';
2
3const IP = process.env.TOLLGATE_IP || '192.168.4.1';
4let passed = 0, failed = 0;
5
6function assert(condition, test) {
7 if (condition) { console.log(` ✓ ${test}`); passed++; }
8 else { console.log(` ✗ ${test}`); failed++; }
9}
10
11function run(cmd) {
12 try { return execSync(cmd, { encoding: 'utf8', timeout: 15000 }); }
13 catch { return null; }
14}
15
16console.log(`\n=== Network Tests (target: ${IP}) ===\n`);
17
18// Test 1: AP visible in scan
19console.log('Test 1: AP visible in scan');
20const scan = run('nmcli -t -f SSID dev wifi list 2>/dev/null');
21assert(scan && scan.includes('TollGate'), 'TollGate SSID visible in WiFi scan');
22
23// Test 2: DHCP lease
24console.log('\nTest 2: DHCP lease / connectivity');
25const ip_show = run(`ip addr show | grep "inet ${IP.split('.').slice(0,3).join('.')}"`);
26assert(ip_show !== null, `Has IP in ${IP.split('.').slice(0,3).join('.')}.* subnet`);
27
28// Test 5: DNS hijack
29console.log('\nTest 5: DNS hijack before auth');
30const ns1 = run(`nslookup random-test.example.com ${IP} 2>/dev/null`);
31assert(ns1 && ns1.includes(IP), 'DNS resolves arbitrary domain to AP IP');
32
33// Test 6: No internet
34console.log('\nTest 6: No internet before auth');
35const ping1 = run('ping -c 1 -W 3 1.1.1.1 2>/dev/null');
36assert(ping1 === null || ping1.includes('100% packet loss'), 'Internet blocked before auth');
37
38// Grant access for further tests
39console.log('\nGranting access...');
40run(`curl -s http://${IP}/grant_access`);
41
42import { execSync as exec } from 'child_process';
43await new Promise(r => setTimeout(r, 2000));
44
45// Test 10: DNS forward
46console.log('Test 10: DNS forward after auth');
47const ns2 = run(`nslookup google.com ${IP} 2>/dev/null`);
48assert(ns2 && !ns2.includes(IP) && ns2.includes('Address'), 'DNS resolves to real IPs');
49
50// Test 11: Internet
51console.log('\nTest 11: Internet after auth');
52const ping2 = run('ping -c 2 -W 3 8.8.8.8');
53assert(ping2 && !ping2.includes('100% packet loss'), 'ping succeeds after auth');
54
55// Reset
56console.log('\nResetting auth...');
57run(`curl -s http://${IP}/reset_authentication`);
58await new Promise(r => setTimeout(r, 2000));
59
60// Test 14
61console.log('Test 14: Internet blocked after reset');
62const ping3 = run('ping -c 1 -W 3 8.8.8.8 2>/dev/null');
63assert(ping3 === null || ping3.includes('100% packet loss'), 'Internet blocked after reset');
64
65console.log(`\n=== Results: ${passed} passed, ${failed} failed ===\n`);
66process.exit(failed > 0 ? 1 : 0);
diff --git a/tests/playwright.config.mjs b/tests/playwright.config.mjs
new file mode 100644
index 0000000..fee0815
--- /dev/null
+++ b/tests/playwright.config.mjs
@@ -0,0 +1,16 @@
1import { defineConfig } from '@playwright/test';
2
3export default defineConfig({
4 testDir: '.',
5 testMatch: '*.spec.mjs',
6 timeout: 60000,
7 retries: 0,
8 use: {
9 headless: true,
10 viewport: { width: 1280, height: 900 },
11 screenshot: 'only-on-failure',
12 trace: 'on-first-retry',
13 },
14 reporter: [['list'], ['html', { open: 'never' }]],
15 workers: 1,
16});
diff --git a/tests/smoke.mjs b/tests/smoke.mjs
new file mode 100644
index 0000000..19f96de
--- /dev/null
+++ b/tests/smoke.mjs
@@ -0,0 +1,52 @@
1import { execSync } from 'child_process';
2
3const PORT = process.argv[2] || '/dev/ttyACM0';
4const IP = process.env.TOLLGATE_IP || '192.168.4.1';
5const SSID = process.env.AP_SSID || 'TollGate';
6
7console.log(`\n=== Smoke Test (30s) ===`);
8console.log(`Port: ${PORT}, Portal IP: ${IP}, SSID: ${SSID}\n`);
9
10let passed = 0, failed = 0;
11function assert(cond, msg) {
12 if (cond) { console.log(` ✓ ${msg}`); passed++; }
13 else { console.log(` ✗ ${msg}`); failed++; }
14}
15
16function run(cmd) {
17 try { return execSync(cmd, { encoding: 'utf8', timeout: 10000 }); }
18 catch { return null; }
19}
20
21// 1. Check AP visible
22const scan = run('nmcli -t -f SSID dev wifi list 2>/dev/null');
23assert(scan && scan.includes(SSID), `SSID "${SSID}" visible`);
24
25// 2. Check we can reach portal
26const portal = run(`curl -s --connect-timeout 5 http://${IP}/`);
27assert(portal && portal.includes('TollGate'), 'Portal HTML loads');
28
29// 3. Grant access
30const grant = run(`curl -s http://${IP}/grant_access`);
31assert(grant && grant.includes('granted'), 'Grant access works');
32
33// Wait for DNS
34const sleep = ms => new Promise(r => setTimeout(r, ms));
35await sleep(2000);
36
37// 4. Internet works
38const ping = run('ping -c 1 -W 3 -I wlp59s0 1.1.1.1 2>/dev/null');
39assert(ping && !ping.includes('100% packet loss'), 'Internet works after grant');
40
41// 5. Reset
42const reset = run(`curl -s http://${IP}/reset_authentication`);
43assert(reset && reset.includes('reset'), 'Reset auth works');
44
45await sleep(2000);
46
47// 6. Internet blocked
48const ping2 = run('ping -c 1 -W 3 -I wlp59s0 1.1.1.1 2>/dev/null');
49assert(!ping2 || ping2.includes('100% packet loss'), 'Internet blocked after reset');
50
51console.log(`\n=== Smoke: ${passed} passed, ${failed} failed ===\n`);
52process.exit(failed > 0 ? 1 : 0);