35#ifndef DETERMINISTICESPASYNCWEBSERVER_CONFIG_H
36#define DETERMINISTICESPASYNCWEBSERVER_CONFIG_H
68#ifndef DETWS_TCP_NODELAY
69#define DETWS_TCP_NODELAY 1
74#define RX_BUF_SIZE 1024
75#define DETWS_RX_BUF_SIZE_DEFAULTED 1
84#ifndef CONN_TIMEOUT_MS
85#define CONN_TIMEOUT_MS 5000
97#ifndef DETWS_CLOSING_TIMEOUT_MS
98#define DETWS_CLOSING_TIMEOUT_MS 2000
117#ifndef DETWS_WORKER_COUNT
118#define DETWS_WORKER_COUNT 1
138#ifndef DETWS_WORKER_TASK_STACK
142#if (defined(DETWS_ENABLE_SSH) && DETWS_ENABLE_SSH) || (defined(DETWS_ENABLE_HTTP3) && DETWS_ENABLE_HTTP3)
143#define DETWS_WORKER_TASK_STACK 12288
145#define DETWS_WORKER_TASK_STACK 8192
158#ifndef DETWS_WORKER_STACK_RSA_MIN
159#define DETWS_WORKER_STACK_RSA_MIN 8192
173#ifndef DETWS_WORKER_STACK_CURVE_MIN
174#define DETWS_WORKER_STACK_CURVE_MIN 12288
178#ifndef DETWS_WORKER_TASK_PRIORITY
179#define DETWS_WORKER_TASK_PRIORITY 5
187#ifndef DETWS_WORKER_CORE
188#define DETWS_WORKER_CORE 1
199#ifndef DETWS_DEFER_QUEUE_DEPTH
200#define DETWS_DEFER_QUEUE_DEPTH 8
220#ifndef DETWS_WORKER_POLL_TICKS
221#define DETWS_WORKER_POLL_TICKS 1
224#if DETWS_WORKER_COUNT < 1
225#error "DeterministicESPAsyncWebServer: DETWS_WORKER_COUNT must be >= 1"
227#if DETWS_WORKER_COUNT > MAX_CONNS
228#error "DeterministicESPAsyncWebServer: DETWS_WORKER_COUNT must be <= MAX_CONNS"
244#ifndef DETWS_ENABLE_PREEMPT_QUEUE
245#define DETWS_ENABLE_PREEMPT_QUEUE 0
249#ifndef DETWS_PQ_DEPTH
250#define DETWS_PQ_DEPTH 16
254#ifndef DETWS_PQ_ITEM_SIZE
255#define DETWS_PQ_ITEM_SIZE 32
259#ifndef DETWS_PQ_STACK
260#define DETWS_PQ_STACK 4096
269#ifndef DETWS_PQ_INTERNAL_PRIORITY
270#define DETWS_PQ_INTERNAL_PRIORITY 8
273#if DETWS_ENABLE_PREEMPT_QUEUE && (DETWS_PQ_DEPTH < 1 || DETWS_PQ_ITEM_SIZE < 1)
274#error "DeterministicESPAsyncWebServer: DETWS_PQ_DEPTH and DETWS_PQ_ITEM_SIZE must be >= 1"
296#ifndef DETWS_ENABLE_DMA
297#define DETWS_ENABLE_DMA 0
301#ifndef DETWS_DMA_CHANNELS
302#define DETWS_DMA_CHANNELS 2
306#ifndef DETWS_DMA_BUF_SIZE
307#define DETWS_DMA_BUF_SIZE 256
314#ifndef DETWS_DMA_SIMULATE
315#define DETWS_DMA_SIMULATE 1
318#if DETWS_ENABLE_DMA && (DETWS_DMA_CHANNELS < 1 || DETWS_DMA_BUF_SIZE < 1)
319#error "DeterministicESPAsyncWebServer: DETWS_DMA_CHANNELS and DETWS_DMA_BUF_SIZE must be >= 1"
336#ifndef DETWS_ENABLE_FORWARD
337#define DETWS_ENABLE_FORWARD 0
341#ifndef DETWS_FWD_MAX_IFACES
342#define DETWS_FWD_MAX_IFACES 4
346#ifndef DETWS_FWD_MAX_RULES
347#define DETWS_FWD_MAX_RULES 8
351#ifndef DETWS_FWD_MAX_ACL
352#define DETWS_FWD_MAX_ACL 8
356#ifndef DETWS_FWD_ACL_PATLEN
357#define DETWS_FWD_ACL_PATLEN 4
362#ifndef DETWS_FWD_MAX_ROUTES
363#define DETWS_FWD_MAX_ROUTES 8
370#ifndef DETWS_FWD_INSPECT
371#define DETWS_FWD_INSPECT 0
374#if DETWS_ENABLE_FORWARD && (DETWS_FWD_MAX_IFACES < 1 || DETWS_FWD_MAX_RULES < 1 || DETWS_FWD_ACL_PATLEN < 1)
375#error "DeterministicESPAsyncWebServer: DETWS_FWD_MAX_IFACES / DETWS_FWD_MAX_RULES / DETWS_FWD_ACL_PATLEN must be >= 1"
393#ifndef DETWS_ENABLE_GATEWAY
394#define DETWS_ENABLE_GATEWAY 0
398#ifndef DETWS_GW_MAX_PORTS
399#define DETWS_GW_MAX_PORTS 4
403#ifndef DETWS_GW_DEFAULT_PREFIX
404#define DETWS_GW_DEFAULT_PREFIX "gw"
407#if DETWS_ENABLE_GATEWAY && (DETWS_GW_MAX_PORTS < 1)
408#error "DeterministicESPAsyncWebServer: DETWS_GW_MAX_PORTS must be >= 1"
423#ifndef DETWS_ENABLE_LORA
424#define DETWS_ENABLE_LORA 0
428#ifndef DETWS_LORA_MAX_PAYLOAD
429#define DETWS_LORA_MAX_PAYLOAD 251
432#if DETWS_ENABLE_LORA && (DETWS_LORA_MAX_PAYLOAD < 1 || DETWS_LORA_MAX_PAYLOAD > 251)
433#error "DeterministicESPAsyncWebServer: DETWS_LORA_MAX_PAYLOAD must be 1..251"
449#ifndef DETWS_ENABLE_NRF24
450#define DETWS_ENABLE_NRF24 0
454#ifndef DETWS_NRF24_PAYLOAD
455#define DETWS_NRF24_PAYLOAD 32
458#if DETWS_ENABLE_NRF24 && (DETWS_NRF24_PAYLOAD < 1 || DETWS_NRF24_PAYLOAD > 32)
459#error "DeterministicESPAsyncWebServer: DETWS_NRF24_PAYLOAD must be 1..32"
474#ifndef DETWS_ENABLE_ENOCEAN
475#define DETWS_ENABLE_ENOCEAN 0
479#ifndef DETWS_ENOCEAN_MAX_DATA
480#define DETWS_ENOCEAN_MAX_DATA 512
483#if DETWS_ENABLE_ENOCEAN && (DETWS_ENOCEAN_MAX_DATA < 1)
484#error "DeterministicESPAsyncWebServer: DETWS_ENOCEAN_MAX_DATA must be >= 1"
500#ifndef DETWS_ENABLE_PN532
501#define DETWS_ENABLE_PN532 0
505#ifndef DETWS_PN532_MAX_DATA
506#define DETWS_PN532_MAX_DATA 254
509#if DETWS_ENABLE_PN532 && (DETWS_PN532_MAX_DATA < 1 || DETWS_PN532_MAX_DATA > 254)
510#error "DeterministicESPAsyncWebServer: DETWS_PN532_MAX_DATA must be 1..254"
524#ifndef DETWS_ENABLE_SIGFOX
525#define DETWS_ENABLE_SIGFOX 0
529#ifndef DETWS_SIGFOX_MAX_PAYLOAD
530#define DETWS_SIGFOX_MAX_PAYLOAD 12
533#if DETWS_ENABLE_SIGFOX && (DETWS_SIGFOX_MAX_PAYLOAD < 1 || DETWS_SIGFOX_MAX_PAYLOAD > 12)
534#error "DeterministicESPAsyncWebServer: DETWS_SIGFOX_MAX_PAYLOAD must be 1..12"
550#ifndef DETWS_ENABLE_ZWAVE
551#define DETWS_ENABLE_ZWAVE 0
555#ifndef DETWS_ZWAVE_MAX_DATA
556#define DETWS_ZWAVE_MAX_DATA 64
559#if DETWS_ENABLE_ZWAVE && (DETWS_ZWAVE_MAX_DATA < 1)
560#error "DeterministicESPAsyncWebServer: DETWS_ZWAVE_MAX_DATA must be >= 1"
577#ifndef DETWS_ENABLE_ZIGBEE
578#define DETWS_ENABLE_ZIGBEE 0
582#ifndef DETWS_ZIGBEE_MAX_DATA
583#define DETWS_ZIGBEE_MAX_DATA 128
586#if DETWS_ENABLE_ZIGBEE && (DETWS_ZIGBEE_MAX_DATA < 1)
587#error "DeterministicESPAsyncWebServer: DETWS_ZIGBEE_MAX_DATA must be >= 1"
603#ifndef DETWS_ENABLE_THREAD
604#define DETWS_ENABLE_THREAD 0
608#ifndef DETWS_THREAD_MAX_DATA
609#define DETWS_THREAD_MAX_DATA 256
612#if DETWS_ENABLE_THREAD && (DETWS_THREAD_MAX_DATA < 1)
613#error "DeterministicESPAsyncWebServer: DETWS_THREAD_MAX_DATA must be >= 1"
629#ifndef DETWS_ENABLE_ETHERNET
630#define DETWS_ENABLE_ETHERNET 0
636#ifndef DETWS_ETH_W5500
637#define DETWS_ETH_W5500 0
639#ifndef DETWS_ETH_W5500_CS
640#define DETWS_ETH_W5500_CS 7
642#ifndef DETWS_ETH_W5500_RST
643#define DETWS_ETH_W5500_RST 6
645#ifndef DETWS_ETH_W5500_INT
646#define DETWS_ETH_W5500_INT 5
648#ifndef DETWS_ETH_W5500_SCK
649#define DETWS_ETH_W5500_SCK 12
651#ifndef DETWS_ETH_W5500_MISO
652#define DETWS_ETH_W5500_MISO 13
654#ifndef DETWS_ETH_W5500_MOSI
655#define DETWS_ETH_W5500_MOSI 11
660#ifndef DETWS_ETH_W5500_SPI_MHZ
661#define DETWS_ETH_W5500_SPI_MHZ 20
673#ifndef DETWS_ENABLE_IPV6
674#define DETWS_ENABLE_IPV6 0
686#ifndef DETWS_ENABLE_PROMISC
687#define DETWS_ENABLE_PROMISC 0
700#ifndef DETWS_ENABLE_BUS_CAPTURE
701#define DETWS_ENABLE_BUS_CAPTURE 0
715#define MAX_PATH_LEN 64
727#define MAX_KEY_LEN 32
732#define MAX_VAL_LEN 48
737#define MAX_QUERY_LEN 128
741#ifndef MAX_QUERY_PARAMS
742#define MAX_QUERY_PARAMS 8
746#ifndef MAX_PATH_PARAMS
747#define MAX_PATH_PARAMS 4
757#ifndef DIGEST_AUTH_HDR_MAX
758#define DIGEST_AUTH_HDR_MAX 384
773#ifndef DETWS_DIGEST_NONCE_LIFETIME_MS
774#define DETWS_DIGEST_NONCE_LIFETIME_MS (5u * 60u * 1000u)
779#define QUERY_KEY_LEN 24
784#define QUERY_VAL_LEN 48
795#define BODY_BUF_SIZE 256
811#ifndef MAX_MIDDLEWARE
812#define MAX_MIDDLEWARE 4
828#ifndef CHUNK_BUF_SIZE
829#define CHUNK_BUF_SIZE 1440
839#ifndef JSON_MAX_DEPTH
840#define JSON_MAX_DEPTH 8
852#define RE_MAX_STEPS 2000
866#define MAX_WS_CONNS 2
876#define WS_FRAME_SIZE 512
890#define MAX_SSE_CONNS 2
900#define SSE_BUF_SIZE 256
915#ifndef FILE_CHUNK_SIZE
916#define FILE_CHUNK_SIZE 1024
930#define MAX_AUTH_LEN 32
943#ifndef MAX_MULTIPART_PARTS
944#define MAX_MULTIPART_PARTS 4
950#ifndef MAX_BOUNDARY_LEN
951#define MAX_BOUNDARY_LEN 72
971#ifndef EVT_QUEUE_DEPTH
972#define EVT_QUEUE_DEPTH (MAX_CONNS * 4)
988#ifndef RESP_HDR_BUF_SIZE
989#define RESP_HDR_BUF_SIZE 768
1001#ifndef EXTRA_HDR_BUF_SIZE
1002#define EXTRA_HDR_BUF_SIZE 256
1012#ifndef WS_HDR_BUF_SIZE
1013#define WS_HDR_BUF_SIZE 256
1023#ifndef CORS_HDR_BUF_SIZE
1024#define CORS_HDR_BUF_SIZE 192
1033#ifndef CACHE_CONTROL_BUF_SIZE
1034#define CACHE_CONTROL_BUF_SIZE 64
1103#ifndef DETWS_ENABLE_WEBSOCKET
1104#define DETWS_ENABLE_WEBSOCKET 1
1121#ifndef DETWS_ENABLE_WS_DEFLATE
1122#define DETWS_ENABLE_WS_DEFLATE 0
1136#ifndef DETWS_WS_FRAG_SIZE
1137#define DETWS_WS_FRAG_SIZE 0
1141#ifndef DETWS_ENABLE_SSE
1142#define DETWS_ENABLE_SSE 1
1146#ifndef DETWS_ENABLE_MULTIPART
1147#define DETWS_ENABLE_MULTIPART 1
1158#ifndef DETWS_ENABLE_CBOR
1159#define DETWS_ENABLE_CBOR 0
1172#ifndef DETWS_ENABLE_MSGPACK
1173#define DETWS_ENABLE_MSGPACK 0
1177#ifndef DETWS_ENABLE_FILE_SERVING
1178#define DETWS_ENABLE_FILE_SERVING 1
1198#ifndef DETWS_ENABLE_WEBDAV
1199#define DETWS_ENABLE_WEBDAV 0
1203#ifndef DETWS_WEBDAV_BUF_SIZE
1204#define DETWS_WEBDAV_BUF_SIZE 2048
1208#ifndef DETWS_WEBDAV_MAX_ENTRIES
1209#define DETWS_WEBDAV_MAX_ENTRIES 32
1213#ifndef DETWS_WEBDAV_MAX_PROPS
1214#define DETWS_WEBDAV_MAX_PROPS 16
1223#ifndef DETWS_METHOD_BUF_SIZE
1224#if DETWS_ENABLE_WEBDAV
1225#define DETWS_METHOD_BUF_SIZE 12
1227#define DETWS_METHOD_BUF_SIZE 8
1232#ifndef DETWS_ENABLE_AUTH
1233#define DETWS_ENABLE_AUTH 1
1237#ifndef DETWS_ENABLE_TELNET
1238#define DETWS_ENABLE_TELNET 0
1242#ifndef DETWS_ENABLE_SSH
1243#define DETWS_ENABLE_SSH 0
1257#ifndef DETWS_ENABLE_PQC_KEX
1258#define DETWS_ENABLE_PQC_KEX 0
1273#ifndef DETWS_ENABLE_MODBUS
1274#define DETWS_ENABLE_MODBUS 0
1288#ifndef DETWS_ENABLE_MODBUS_RTU
1289#define DETWS_ENABLE_MODBUS_RTU 0
1291#if DETWS_ENABLE_MODBUS_RTU && !DETWS_ENABLE_MODBUS
1292#undef DETWS_ENABLE_MODBUS
1293#define DETWS_ENABLE_MODBUS 1
1305#ifndef DETWS_ENABLE_CLOUDEVENTS
1306#define DETWS_ENABLE_CLOUDEVENTS 0
1317#ifndef DETWS_ENABLE_REDIS
1318#define DETWS_ENABLE_REDIS 0
1330#ifndef DETWS_ENABLE_STOMP
1331#define DETWS_ENABLE_STOMP 0
1335#ifndef DETWS_STOMP_MAX_HEADERS
1336#define DETWS_STOMP_MAX_HEADERS 16
1349#ifndef DETWS_ENABLE_MQTT_SN
1350#define DETWS_ENABLE_MQTT_SN 0
1363#ifndef DETWS_ENABLE_FLOW_EXPORT
1364#define DETWS_ENABLE_FLOW_EXPORT 0
1376#ifndef DETWS_ENABLE_PROTOBUF
1377#define DETWS_ENABLE_PROTOBUF 0
1390#ifndef DETWS_ENABLE_WAMP
1391#define DETWS_ENABLE_WAMP 0
1403#ifndef DETWS_ENABLE_SUNSPEC
1404#define DETWS_ENABLE_SUNSPEC 0
1417#ifndef DETWS_ENABLE_C37118
1418#define DETWS_ENABLE_C37118 0
1431#ifndef DETWS_ENABLE_DNP3
1432#define DETWS_ENABLE_DNP3 0
1446#ifndef DETWS_ENABLE_CANOPEN
1447#define DETWS_ENABLE_CANOPEN 0
1462#ifndef DETWS_ENABLE_CIA402
1463#define DETWS_ENABLE_CIA402 0
1477#ifndef DETWS_ENABLE_CONTROL
1478#define DETWS_ENABLE_CONTROL 0
1493#ifndef DETWS_ENABLE_J1939
1494#define DETWS_ENABLE_J1939 0
1508#ifndef DETWS_ENABLE_DEVICENET
1509#define DETWS_ENABLE_DEVICENET 0
1523#ifndef DETWS_ENABLE_NMEA2000
1524#define DETWS_ENABLE_NMEA2000 0
1526#if DETWS_ENABLE_NMEA2000 && !DETWS_ENABLE_J1939
1527#undef DETWS_ENABLE_J1939
1528#define DETWS_ENABLE_J1939 1
1542#ifndef DETWS_ENABLE_MBUS
1543#define DETWS_ENABLE_MBUS 0
1558#ifndef DETWS_ENABLE_IEC60870
1559#define DETWS_ENABLE_IEC60870 0
1574#ifndef DETWS_ENABLE_SDI12
1575#define DETWS_ENABLE_SDI12 0
1589#ifndef DETWS_ENABLE_DMX
1590#define DETWS_ENABLE_DMX 0
1604#ifndef DETWS_ENABLE_NMEA0183
1605#define DETWS_ENABLE_NMEA0183 0
1620#ifndef DETWS_ENABLE_IOLINK
1621#define DETWS_ENABLE_IOLINK 0
1634#ifndef DETWS_ENABLE_GRPC_WEB
1635#define DETWS_ENABLE_GRPC_WEB 0
1646#ifndef DETWS_ENABLE_LWM2M
1647#define DETWS_ENABLE_LWM2M 0
1659#ifndef DETWS_ENABLE_FINS
1660#define DETWS_ENABLE_FINS 0
1672#ifndef DETWS_ENABLE_HOSTLINK
1673#define DETWS_ENABLE_HOSTLINK 0
1686#ifndef DETWS_ENABLE_SENML
1687#define DETWS_ENABLE_SENML 0
1689#if DETWS_ENABLE_SENML && !DETWS_ENABLE_CBOR
1690#undef DETWS_ENABLE_CBOR
1691#define DETWS_ENABLE_CBOR 1
1703#ifndef DETWS_ENABLE_DF1
1704#define DETWS_ENABLE_DF1 0
1716#ifndef DETWS_ENABLE_COTP
1717#define DETWS_ENABLE_COTP 0
1730#ifndef DETWS_ENABLE_S7COMM
1731#define DETWS_ENABLE_S7COMM 0
1744#ifndef DETWS_ENABLE_MELSEC
1745#define DETWS_ENABLE_MELSEC 0
1760#ifndef DETWS_ENABLE_ADS
1761#define DETWS_ENABLE_ADS 0
1776#ifndef DETWS_ENABLE_FOCAS
1777#define DETWS_ENABLE_FOCAS 0
1789#ifndef DETWS_ENABLE_BACNET
1790#define DETWS_ENABLE_BACNET 0
1804#ifndef DETWS_ENABLE_ENIP
1805#define DETWS_ENABLE_ENIP 0
1818#ifndef DETWS_ENABLE_AMQP
1819#define DETWS_ENABLE_AMQP 0
1832#ifndef DETWS_ENABLE_CIP
1833#define DETWS_ENABLE_CIP 0
1846#ifndef DETWS_ENABLE_NATS
1847#define DETWS_ENABLE_NATS 0
1860#ifndef DETWS_ENABLE_PROXY_PROTOCOL
1861#define DETWS_ENABLE_PROXY_PROTOCOL 0
1873#ifndef DETWS_ENABLE_SPARKPLUG
1874#define DETWS_ENABLE_SPARKPLUG 0
1876#if DETWS_ENABLE_SPARKPLUG && !DETWS_ENABLE_PROTOBUF
1877#undef DETWS_ENABLE_PROTOBUF
1878#define DETWS_ENABLE_PROTOBUF 1
1882#ifndef DETWS_SPB_METRIC_MAX
1883#define DETWS_SPB_METRIC_MAX 256
1894#ifndef DETWS_ENABLE_MODBUS_MASTER
1895#define DETWS_ENABLE_MODBUS_MASTER 0
1899#ifndef DETWS_MODBUS_COILS
1900#define DETWS_MODBUS_COILS 64
1904#ifndef DETWS_MODBUS_DISCRETE_INPUTS
1905#define DETWS_MODBUS_DISCRETE_INPUTS 64
1909#ifndef DETWS_MODBUS_HOLDING_REGS
1910#define DETWS_MODBUS_HOLDING_REGS 64
1914#ifndef DETWS_MODBUS_INPUT_REGS
1915#define DETWS_MODBUS_INPUT_REGS 64
1927#ifndef DETWS_ENABLE_TLS
1928#define DETWS_ENABLE_TLS 0
1932#ifndef MAX_TLS_CONNS
1933#define MAX_TLS_CONNS 1
1949#ifndef DETWS_ENABLE_TLS_RESUMPTION
1950#define DETWS_ENABLE_TLS_RESUMPTION 0
1954#ifndef DETWS_TLS_TICKET_LIFETIME_S
1955#define DETWS_TLS_TICKET_LIFETIME_S 86400
1969#ifndef DETWS_ENABLE_MTLS
1970#define DETWS_ENABLE_MTLS 0
1974#ifndef DETWS_MTLS_SUBJECT_MAX
1975#define DETWS_MTLS_SUBJECT_MAX 128
1985#ifndef DETWS_ENABLE_SNMP
1986#define DETWS_ENABLE_SNMP 0
1990#ifndef DETWS_ENABLE_SNMP_V3
1991#define DETWS_ENABLE_SNMP_V3 0
2002#ifndef DETWS_ENABLE_SNMP_TRAP
2003#define DETWS_ENABLE_SNMP_TRAP 0
2007#ifndef DETWS_SNMP_TRAP_MAX_VARBINDS
2008#define DETWS_SNMP_TRAP_MAX_VARBINDS 8
2012#ifndef DETWS_SNMP_TRAP_BUF_SIZE
2013#define DETWS_SNMP_TRAP_BUF_SIZE 1024
2017#ifndef SNMP_MAX_OID_LEN
2018#define SNMP_MAX_OID_LEN 32
2028#ifndef SNMP_MAX_MIB_ENTRIES
2029#define SNMP_MAX_MIB_ENTRIES 16
2038#ifndef SNMP_MAX_VARBINDS
2039#define SNMP_MAX_VARBINDS 16
2049#ifndef SNMP_MSG_BUF_SIZE
2050#define SNMP_MSG_BUF_SIZE 1472
2054#ifndef SNMP_COMMUNITY_MAX
2055#define SNMP_COMMUNITY_MAX 32
2060#ifndef DETWS_SNMP_DEFAULT_RO_COMMUNITY
2061#define DETWS_SNMP_DEFAULT_RO_COMMUNITY "public"
2065#ifndef SNMP_V3_USER_MAX
2066#define SNMP_V3_USER_MAX 32
2070#ifndef SNMP_V3_ENGINEID_MAX
2071#define SNMP_V3_ENGINEID_MAX 32
2087#ifndef DETWS_ENABLE_COAP
2088#define DETWS_ENABLE_COAP 0
2100#ifndef DETWS_ENABLE_COAP_OBSERVE
2101#define DETWS_ENABLE_COAP_OBSERVE 0
2105#ifndef DETWS_COAP_MAX_OBSERVERS
2106#define DETWS_COAP_MAX_OBSERVERS 4
2127#ifndef DETWS_ENABLE_COAP_BLOCK
2128#define DETWS_ENABLE_COAP_BLOCK 0
2132#ifndef DETWS_COAP_BLOCK_SZX_MAX
2133#define DETWS_COAP_BLOCK_SZX_MAX 6
2142#ifndef DETWS_COAP_BLOCK1_MAX
2143#define DETWS_COAP_BLOCK1_MAX 1024
2152#ifndef DETWS_COAP_MAX_RESOURCES
2153#define DETWS_COAP_MAX_RESOURCES 8
2157#ifndef DETWS_COAP_MAX_PATH
2158#define DETWS_COAP_MAX_PATH 64
2162#ifndef DETWS_COAP_MAX_QUERY
2163#define DETWS_COAP_MAX_QUERY 64
2172#ifndef DETWS_COAP_MAX_PAYLOAD
2173#define DETWS_COAP_MAX_PAYLOAD 256
2185#ifndef DETWS_COAP_MSG_BUF_SIZE
2186#if DETWS_ENABLE_COAP_BLOCK
2187#define DETWS_COAP_MSG_BUF_SIZE 1152
2189#define DETWS_COAP_MSG_BUF_SIZE 512
2194#ifndef DETWS_COAP_OBSERVE_PORT
2195#define DETWS_COAP_OBSERVE_PORT 5683
2213#ifndef DETWS_TLS_ARENA_SIZE
2214#define DETWS_TLS_ARENA_SIZE 49152
2229#ifndef DETWS_TLS_ARENA_IN_PSRAM
2230#define DETWS_TLS_ARENA_IN_PSRAM 0
2244#ifndef DETWS_TLS_MAX_FRAG_LEN
2245#define DETWS_TLS_MAX_FRAG_LEN 0
2259#ifndef DETWS_TLS_ACK_MULTI_CONN_DRAM
2260#define DETWS_TLS_ACK_MULTI_CONN_DRAM 0
2269#ifndef DETWS_ENABLE_MDNS
2270#define DETWS_ENABLE_MDNS 0
2274#ifndef DETWS_ENABLE_NTP
2275#define DETWS_ENABLE_NTP 0
2288#ifndef DETWS_ENABLE_NTP_SERVER
2289#define DETWS_ENABLE_NTP_SERVER 0
2293#ifndef DETWS_NTP_SERVER_STRATUM
2294#define DETWS_NTP_SERVER_STRATUM 3
2308#ifndef DETWS_ENABLE_DNS_SERVER
2309#define DETWS_ENABLE_DNS_SERVER 0
2313#ifndef DETWS_DNS_SERVER_MAX_RECORDS
2314#define DETWS_DNS_SERVER_MAX_RECORDS 8
2318#ifndef DETWS_DNS_SERVER_TTL
2319#define DETWS_DNS_SERVER_TTL 60
2323#ifndef DETWS_DNS_NAME_MAX
2324#define DETWS_DNS_NAME_MAX 128
2341#ifndef DETWS_HTTP_EMIT_DATE
2342#define DETWS_HTTP_EMIT_DATE 0
2355#ifndef DETWS_ENABLE_TIME_SOURCE
2356#define DETWS_ENABLE_TIME_SOURCE 0
2360#ifndef DETWS_TIME_SOURCE_MAX
2361#define DETWS_TIME_SOURCE_MAX 4
2375#ifndef DETWS_I2C_SDA_PIN
2376#define DETWS_I2C_SDA_PIN -1
2378#ifndef DETWS_I2C_SCL_PIN
2379#define DETWS_I2C_SCL_PIN -1
2391#ifndef DETWS_ENABLE_RTC
2392#define DETWS_ENABLE_RTC 0
2396#ifndef DETWS_RTC_I2C_ADDR
2397#define DETWS_RTC_I2C_ADDR 0x68
2410#ifndef DETWS_ENABLE_LD2410
2411#define DETWS_ENABLE_LD2410 0
2415#ifndef DETWS_LD2410_BAUD
2416#define DETWS_LD2410_BAUD 256000
2428#ifndef DETWS_ENABLE_SEN0192
2429#define DETWS_ENABLE_SEN0192 0
2433#ifndef DETWS_SEN0192_PIN
2434#define DETWS_SEN0192_PIN 4
2438#ifndef DETWS_SEN0192_HOLD_MS
2439#define DETWS_SEN0192_HOLD_MS 2000
2443#ifndef DETWS_SEN0192_ACTIVE_HIGH
2444#define DETWS_SEN0192_ACTIVE_HIGH 1
2457#ifndef DETWS_ENABLE_MPR121
2458#define DETWS_ENABLE_MPR121 0
2462#ifndef DETWS_MPR121_I2C_ADDR
2463#define DETWS_MPR121_I2C_ADDR 0x5A
2468#ifndef DETWS_MPR121_TOUCH_THRESHOLD
2469#define DETWS_MPR121_TOUCH_THRESHOLD 12
2473#ifndef DETWS_MPR121_RELEASE_THRESHOLD
2474#define DETWS_MPR121_RELEASE_THRESHOLD 6
2487#ifndef DETWS_ENABLE_SHT3X
2488#define DETWS_ENABLE_SHT3X 0
2492#ifndef DETWS_SHT3X_I2C_ADDR
2493#define DETWS_SHT3X_I2C_ADDR 0x44
2505#ifndef DETWS_ENABLE_PCA9685
2506#define DETWS_ENABLE_PCA9685 0
2510#ifndef DETWS_PCA9685_I2C_ADDR
2511#define DETWS_PCA9685_I2C_ADDR 0x40
2515#ifndef DETWS_PCA9685_FREQ
2516#define DETWS_PCA9685_FREQ 50
2529#ifndef DETWS_ENABLE_ADS1115
2530#define DETWS_ENABLE_ADS1115 0
2534#ifndef DETWS_ADS1115_I2C_ADDR
2535#define DETWS_ADS1115_I2C_ADDR 0x48
2540#ifndef DETWS_ADS1115_GAIN
2541#define DETWS_ADS1115_GAIN 2
2546#ifndef DETWS_ADS1115_DR
2547#define DETWS_ADS1115_DR 4
2552#ifndef DETWS_ADS1115_DIFFERENTIAL
2553#define DETWS_ADS1115_DIFFERENTIAL 0
2566#ifndef DETWS_ENABLE_INA219
2567#define DETWS_ENABLE_INA219 0
2571#ifndef DETWS_INA219_I2C_ADDR
2572#define DETWS_INA219_I2C_ADDR 0x40
2577#ifndef DETWS_INA219_CURRENT_LSB_UA
2578#define DETWS_INA219_CURRENT_LSB_UA 100
2583#ifndef DETWS_INA219_SHUNT_MOHM
2584#define DETWS_INA219_SHUNT_MOHM 100
2597#ifndef DETWS_ENABLE_CONFIG_STORE
2598#define DETWS_ENABLE_CONFIG_STORE 0
2602#ifndef DETWS_CONFIG_MAX_ENTRIES
2603#define DETWS_CONFIG_MAX_ENTRIES 16
2607#ifndef DETWS_CONFIG_KEY_MAX
2608#define DETWS_CONFIG_KEY_MAX 16
2612#ifndef DETWS_CONFIG_VAL_MAX
2613#define DETWS_CONFIG_VAL_MAX 64
2624#ifndef DETWS_ENABLE_DEVICE_ID
2625#define DETWS_ENABLE_DEVICE_ID 0
2638#ifndef DETWS_ENABLE_TELEMETRY
2639#define DETWS_ENABLE_TELEMETRY 0
2652#ifndef DETWS_ENABLE_DASHBOARD
2653#define DETWS_ENABLE_DASHBOARD 0
2665#ifndef DETWS_ENABLE_THEMES
2666#define DETWS_ENABLE_THEMES 0
2677#ifndef DETWS_THEMES_INCLUDE_TRADEMARKED
2678#define DETWS_THEMES_INCLUDE_TRADEMARKED 1
2682#ifndef DETWS_DASHBOARD_MAX_WIDGETS
2683#define DETWS_DASHBOARD_MAX_WIDGETS 16
2687#ifndef DETWS_DASHBOARD_JSON_BUF
2688#define DETWS_DASHBOARD_JSON_BUF 1024
2700#ifndef DETWS_ENABLE_PARTITION_MONITOR
2701#define DETWS_ENABLE_PARTITION_MONITOR 0
2705#ifndef DETWS_PARTITION_MAX
2706#define DETWS_PARTITION_MAX 16
2710#ifndef DETWS_PARTITION_JSON_BUF
2711#define DETWS_PARTITION_JSON_BUF 1024
2723#ifndef DETWS_ENABLE_GPIO_MAP
2724#define DETWS_ENABLE_GPIO_MAP 0
2728#ifndef DETWS_GPIO_MAX
2729#define DETWS_GPIO_MAX 40
2733#ifndef DETWS_GPIO_JSON_BUF
2734#define DETWS_GPIO_JSON_BUF 1024
2746#ifndef DETWS_ENABLE_UDP_TELEMETRY
2747#define DETWS_ENABLE_UDP_TELEMETRY 0
2751#ifndef DETWS_UDP_TELEMETRY_BUF
2752#define DETWS_UDP_TELEMETRY_BUF 256
2765#ifndef DETWS_ENABLE_STATSD
2766#define DETWS_ENABLE_STATSD 0
2770#ifndef DETWS_STATSD_PORT
2771#define DETWS_STATSD_PORT 8125
2775#ifndef DETWS_STATSD_LINE_MAX
2776#define DETWS_STATSD_LINE_MAX 256
2789#ifndef DETWS_ENABLE_GUARDRAILS
2790#define DETWS_ENABLE_GUARDRAILS 0
2794#ifndef DETWS_GUARDRAIL_HEAP_MIN
2795#define DETWS_GUARDRAIL_HEAP_MIN 8192
2799#ifndef DETWS_GUARDRAIL_FRAG_MIN_BLOCK
2800#define DETWS_GUARDRAIL_FRAG_MIN_BLOCK 4096
2804#ifndef DETWS_GUARDRAIL_STACK_MIN
2805#define DETWS_GUARDRAIL_STACK_MIN 512
2817#ifndef DETWS_ENABLE_FAILSAFE
2818#define DETWS_ENABLE_FAILSAFE 0
2822#ifndef DETWS_FAILSAFE_MAX_LIFELINES
2823#define DETWS_FAILSAFE_MAX_LIFELINES 8
2834#ifndef DETWS_ENABLE_SLEEP_SCHED
2835#define DETWS_ENABLE_SLEEP_SCHED 0
2846#ifndef DETWS_ENABLE_WEARLEVEL
2847#define DETWS_ENABLE_WEARLEVEL 0
2858#ifndef DETWS_ENABLE_NETADAPT
2859#define DETWS_ENABLE_NETADAPT 0
2870#ifndef DETWS_ENABLE_DSHOT
2871#define DETWS_ENABLE_DSHOT 0
2882#ifndef DETWS_ENABLE_HART
2883#define DETWS_ENABLE_HART 0
2894#ifndef DETWS_ENABLE_NTS
2895#define DETWS_ENABLE_NTS 0
2906#ifndef DETWS_ENABLE_DDS
2907#define DETWS_ENABLE_DDS 0
2918#ifndef DETWS_ENABLE_XMPP
2919#define DETWS_ENABLE_XMPP 0
2930#ifndef DETWS_ENABLE_RAWL2
2931#define DETWS_ENABLE_RAWL2 0
2942#ifndef DETWS_ENABLE_SPA_ROUTER
2943#define DETWS_ENABLE_SPA_ROUTER 0
2955#ifndef DETWS_ENABLE_GOOSE
2956#define DETWS_ENABLE_GOOSE 0
2967#ifndef DETWS_ENABLE_MTCONNECT
2968#define DETWS_ENABLE_MTCONNECT 0
2982#ifndef DETWS_MTC_SAMPLE_BUFFER
2983#define DETWS_MTC_SAMPLE_BUFFER 32
2985#ifndef DETWS_MTC_STR_MAX
2986#define DETWS_MTC_STR_MAX 24
2988#ifndef DETWS_MTC_TS_MAX
2989#define DETWS_MTC_TS_MAX 32
2991#ifndef DETWS_MTC_VAL_MAX
2992#define DETWS_MTC_VAL_MAX 32
3005#ifndef DETWS_ENABLE_WAL
3006#define DETWS_ENABLE_WAL 0
3008#ifndef DETWS_WAL_PAGE_SIZE
3009#define DETWS_WAL_PAGE_SIZE 32768
3011#ifndef DETWS_WAL_MAX_RECORD
3012#define DETWS_WAL_MAX_RECORD 4096
3024#ifndef DETWS_ENABLE_DBM
3025#define DETWS_ENABLE_DBM 0
3027#ifndef DETWS_DBM_SLOTS
3028#define DETWS_DBM_SLOTS 256
3030#ifndef DETWS_DBM_KEY_MAX
3031#define DETWS_DBM_KEY_MAX 32
3033#ifndef DETWS_DBM_VAL_MAX
3034#define DETWS_DBM_VAL_MAX 256
3045#ifndef DETWS_ENABLE_DOCSTORE
3046#define DETWS_ENABLE_DOCSTORE 0
3048#ifndef DETWS_DOCSTORE_FIELD_MAX
3049#define DETWS_DOCSTORE_FIELD_MAX 128
3061#ifndef DETWS_ENABLE_SQLITE
3062#define DETWS_ENABLE_SQLITE 0
3075#ifndef DETWS_ENABLE_REDIS
3076#define DETWS_ENABLE_REDIS 0
3088#ifndef DETWS_ENABLE_DNC
3089#define DETWS_ENABLE_DNC 0
3099#ifndef DETWS_DNC_LINE_MAX
3100#define DETWS_DNC_LINE_MAX 128
3110#ifndef DETWS_DNC_LEADER_LEN
3111#define DETWS_DNC_LEADER_LEN 32
3122#ifndef DETWS_DNC_XOFF_MAX_POLLS
3123#define DETWS_DNC_XOFF_MAX_POLLS 200000
3135#ifndef DETWS_ENABLE_RELAY
3136#define DETWS_ENABLE_RELAY 0
3149#ifndef DETWS_ENABLE_IFACE_BRIDGE
3150#define DETWS_ENABLE_IFACE_BRIDGE 0
3154#ifndef DETWS_BRIDGE_MAX_RULES
3155#define DETWS_BRIDGE_MAX_RULES 8
3166#ifndef DETWS_BRIDGE_TXN_MAX
3167#define DETWS_BRIDGE_TXN_MAX 256
3171#ifndef DETWS_BRIDGE_STREAM_CHUNK
3172#define DETWS_BRIDGE_STREAM_CHUNK 256
3176#ifndef DETWS_BRIDGE_UART_TXN_MS
3177#define DETWS_BRIDGE_UART_TXN_MS 50
3192#ifndef DETWS_ENABLE_NTRIP_CASTER
3193#define DETWS_ENABLE_NTRIP_CASTER 0
3197#ifndef DETWS_NTRIP_MAX_ROVERS
3198#define DETWS_NTRIP_MAX_ROVERS 4
3202#if DETWS_ENABLE_NTRIP_CASTER && !DETWS_ENABLE_NMEA0183
3203#undef DETWS_ENABLE_NMEA0183
3204#define DETWS_ENABLE_NMEA0183 1
3208#ifndef DETWS_NTRIP_MOUNT_MAX
3209#define DETWS_NTRIP_MOUNT_MAX 32
3213#ifndef DETWS_NTRIP_REQ_MAX
3214#define DETWS_NTRIP_REQ_MAX 512
3218#ifndef DETWS_NTRIP_MAX_MOUNTS
3219#define DETWS_NTRIP_MAX_MOUNTS 2
3230#ifndef DETWS_RELAY_BUF
3231#define DETWS_RELAY_BUF 2048
3241#ifndef DETWS_RELAY_DRAIN_MAX
3242#define DETWS_RELAY_DRAIN_MAX 8
3251#ifndef DETWS_RELAY_MAX_PUBLISH
3252#define DETWS_RELAY_MAX_PUBLISH 4
3259#ifndef DETWS_RELAY_MAX_CONNS
3260#define DETWS_RELAY_MAX_CONNS 4
3264#ifndef DETWS_RELAY_HOST_MAX
3265#define DETWS_RELAY_HOST_MAX 64
3269#ifndef DETWS_RELAY_CONNECT_MS
3270#define DETWS_RELAY_CONNECT_MS 5000
3283#ifndef DETWS_ENABLE_FTP
3284#define DETWS_ENABLE_FTP 0
3294#ifndef DETWS_FTP_CMD_MAX
3295#define DETWS_FTP_CMD_MAX 256
3308#ifndef DETWS_ENABLE_HTTP_CACHE
3309#define DETWS_ENABLE_HTTP_CACHE 0
3324#ifndef DETWS_ENABLE_EDGE_CACHE
3325#define DETWS_ENABLE_EDGE_CACHE 0
3327#if DETWS_ENABLE_EDGE_CACHE && !DETWS_ENABLE_HTTP_CACHE
3328#error "DETWS_ENABLE_EDGE_CACHE requires DETWS_ENABLE_HTTP_CACHE"
3330#if DETWS_ENABLE_EDGE_CACHE && !DETWS_ENABLE_HTTP_CLIENT
3331#error "DETWS_ENABLE_EDGE_CACHE requires DETWS_ENABLE_HTTP_CLIENT (it fetches the upstream origin)"
3333#ifndef DETWS_EDGE_CACHE_SLOTS
3334#define DETWS_EDGE_CACHE_SLOTS 4
3336#ifndef DETWS_EDGE_BODY_MAX
3337#define DETWS_EDGE_BODY_MAX 2048
3339#ifndef DETWS_EDGE_KEY_MAX
3340#define DETWS_EDGE_KEY_MAX 128
3342#ifndef DETWS_EDGE_VARY_MAX
3343#define DETWS_EDGE_VARY_MAX 64
3345#ifndef DETWS_EDGE_MAP_MAX
3346#define DETWS_EDGE_MAP_MAX 4
3348#ifndef DETWS_EDGE_ORIGIN_URL_MAX
3349#define DETWS_EDGE_ORIGIN_URL_MAX 128
3351#ifndef DETWS_EDGE_FETCH_SLOTS
3352#define DETWS_EDGE_FETCH_SLOTS 2
3354#ifndef DETWS_EDGE_FETCH_BUF
3355#define DETWS_EDGE_FETCH_BUF 2560
3357#ifndef DETWS_EDGE_FETCH_TIMEOUT_MS
3358#define DETWS_EDGE_FETCH_TIMEOUT_MS 8000
3360#ifndef DETWS_EDGE_DEFAULT_TTL_S
3361#define DETWS_EDGE_DEFAULT_TTL_S 60
3379#ifndef DETWS_ENABLE_SMB
3380#define DETWS_ENABLE_SMB 0
3391#ifndef DETWS_SMB_BUF
3392#define DETWS_SMB_BUF 1024
3403#ifndef DETWS_ENABLE_J2735
3404#define DETWS_ENABLE_J2735 0
3414#ifndef DETWS_ENABLE_NEMA_TS2
3415#define DETWS_ENABLE_NEMA_TS2 0
3425#ifndef DETWS_ENABLE_SNP
3426#define DETWS_ENABLE_SNP 0
3437#ifndef DETWS_ENABLE_DIRECTNET
3438#define DETWS_ENABLE_DIRECTNET 0
3448#ifndef DETWS_ENABLE_SEP2
3449#define DETWS_ENABLE_SEP2 0
3460#ifndef DETWS_ENABLE_PROFINET
3461#define DETWS_ENABLE_PROFINET 0
3472#ifndef DETWS_ENABLE_NTCIP
3473#define DETWS_ENABLE_NTCIP 0
3483#ifndef DETWS_ENABLE_OPENADR
3484#define DETWS_ENABLE_OPENADR 0
3495#ifndef DETWS_ENABLE_MMS
3496#define DETWS_ENABLE_MMS 0
3507#ifndef DETWS_ENABLE_CCLINK
3508#define DETWS_ENABLE_CCLINK 0
3519#ifndef DETWS_ENABLE_POWERLINK
3520#define DETWS_ENABLE_POWERLINK 0
3531#ifndef DETWS_ENABLE_SERCOS
3532#define DETWS_ENABLE_SERCOS 0
3543#ifndef DETWS_ENABLE_PROFIBUS
3544#define DETWS_ENABLE_PROFIBUS 0
3555#ifndef DETWS_ENABLE_LONWORKS
3556#define DETWS_ENABLE_LONWORKS 0
3567#ifndef DETWS_ENABLE_MBPLUS
3568#define DETWS_ENABLE_MBPLUS 0
3579#ifndef DETWS_ENABLE_INTERBUS
3580#define DETWS_ENABLE_INTERBUS 0
3591#ifndef DETWS_ENABLE_ICCP
3592#define DETWS_ENABLE_ICCP 0
3603#ifndef DETWS_ENABLE_WAVE
3604#define DETWS_ENABLE_WAVE 0
3615#ifndef DETWS_ENABLE_UTMC
3616#define DETWS_ENABLE_UTMC 0
3627#ifndef DETWS_ENABLE_OCIT
3628#define DETWS_ENABLE_OCIT 0
3640#ifndef DETWS_ENABLE_ATC
3641#define DETWS_ENABLE_ATC 0
3654#ifndef DETWS_ENABLE_SOUTHBOUND
3655#define DETWS_ENABLE_SOUTHBOUND 0
3666#ifndef DETWS_ENABLE_EXC_DECODER
3667#define DETWS_ENABLE_EXC_DECODER 0
3678#ifndef DETWS_ENABLE_HTTP_DELIVERY
3679#define DETWS_ENABLE_HTTP_DELIVERY 0
3691#ifndef DETWS_ENABLE_HW_HEALTH
3692#define DETWS_ENABLE_HW_HEALTH 0
3704#ifndef DETWS_ENABLE_MDNS_ADAPTIVE
3705#define DETWS_ENABLE_MDNS_ADAPTIVE 0
3717#ifndef DETWS_ENABLE_SOCKPOOL
3718#define DETWS_ENABLE_SOCKPOOL 0
3730#ifndef DETWS_ENABLE_PSRAM_POOL
3731#define DETWS_ENABLE_PSRAM_POOL 0
3743#ifndef DETWS_ENABLE_HAPPY_EYEBALLS
3744#define DETWS_ENABLE_HAPPY_EYEBALLS 0
3756#ifndef DETWS_ENABLE_WIFI_SNIFFER
3757#define DETWS_ENABLE_WIFI_SNIFFER 0
3770#ifndef DETWS_ENABLE_LINK_MANAGER
3771#define DETWS_ENABLE_LINK_MANAGER 0
3784#ifndef DETWS_ENABLE_CC1101
3785#define DETWS_ENABLE_CC1101 0
3797#ifndef DETWS_ENABLE_FDC2214
3798#define DETWS_ENABLE_FDC2214 0
3811#ifndef DETWS_ENABLE_LDC1614
3812#define DETWS_ENABLE_LDC1614 0
3824#ifndef DETWS_ENABLE_VL53L0X
3825#define DETWS_ENABLE_VL53L0X 0
3837#ifndef DETWS_ENABLE_RADIO_SNIFF
3838#define DETWS_ENABLE_RADIO_SNIFF 0
3850#ifndef DETWS_ENABLE_BLE_GATT
3851#define DETWS_ENABLE_BLE_GATT 0
3864#ifndef DETWS_ENABLE_TLS_POLICY
3865#define DETWS_ENABLE_TLS_POLICY 0
3878#ifndef DETWS_ENABLE_WISUN
3879#define DETWS_ENABLE_WISUN 0
3891#ifndef DETWS_ENABLE_LOGBUF
3892#define DETWS_ENABLE_LOGBUF 0
3896#ifndef DETWS_LOG_LINES
3897#define DETWS_LOG_LINES 32
3901#ifndef DETWS_LOG_LINE_LEN
3902#define DETWS_LOG_LINE_LEN 96
3914#ifndef DETWS_ENABLE_CONFIG_IO
3915#define DETWS_ENABLE_CONFIG_IO 0
3919#ifndef DETWS_ENABLE_OTA
3920#define DETWS_ENABLE_OTA 0
3933#ifndef DETWS_ENABLE_OTA_ROLLBACK
3934#define DETWS_ENABLE_OTA_ROLLBACK 0
3938#ifndef DETWS_OTA_CONFIRM_WINDOW_MS
3939#define DETWS_OTA_CONFIRM_WINDOW_MS 30000
3951#ifndef DETWS_ENABLE_TOTP
3952#define DETWS_ENABLE_TOTP 0
3965#ifndef DETWS_ENABLE_WEBHOOK
3966#define DETWS_ENABLE_WEBHOOK 0
3977#ifndef DETWS_ENABLE_RADIO_POWER
3978#define DETWS_ENABLE_RADIO_POWER 0
3982#ifndef DETWS_RADIO_WIFI_PS
3983#define DETWS_RADIO_WIFI_PS 0
3987#ifndef DETWS_RADIO_MAX_TX_DBM
3988#define DETWS_RADIO_MAX_TX_DBM 0
4001#ifndef DETWS_ENABLE_DNS_RESOLVER
4002#define DETWS_ENABLE_DNS_RESOLVER 0
4006#ifndef DETWS_DNS_TIMEOUT_MS
4007#define DETWS_DNS_TIMEOUT_MS 5000
4022#ifndef DETWS_ENABLE_AUDIT_LOG
4023#define DETWS_ENABLE_AUDIT_LOG 0
4042#ifndef DETWS_ENABLE_OIDC
4043#define DETWS_ENABLE_OIDC 0
4047#ifndef DETWS_OIDC_MAX_LEN
4048#define DETWS_OIDC_MAX_LEN 1600
4063#ifndef DETWS_ENABLE_VFS
4064#define DETWS_ENABLE_VFS 0
4079#ifndef DETWS_ENABLE_GRAPHQL
4080#define DETWS_ENABLE_GRAPHQL 0
4094#ifndef DETWS_ENABLE_ESPNOW
4095#define DETWS_ENABLE_ESPNOW 0
4110#ifndef DETWS_ENABLE_OAUTH2
4111#define DETWS_ENABLE_OAUTH2 0
4129#ifndef DETWS_ENABLE_OPCUA
4130#define DETWS_ENABLE_OPCUA 0
4143#ifndef DETWS_ENABLE_OPCUA_CLIENT
4144#define DETWS_ENABLE_OPCUA_CLIENT 0
4158#ifndef DETWS_ENABLE_UMATI
4159#define DETWS_ENABLE_UMATI 0
4163#ifndef DETWS_UMATI_NS
4164#define DETWS_UMATI_NS 1
4184#ifndef DETWS_ENABLE_UPLOAD
4185#define DETWS_ENABLE_UPLOAD 0
4197#if DETWS_ENABLE_OTA || DETWS_ENABLE_UPLOAD || DETWS_ENABLE_WEBDAV
4198#define DETWS_ENABLE_STREAM_BODY 1
4200#define DETWS_ENABLE_STREAM_BODY 0
4208#if DETWS_ENABLE_STREAM_BODY && defined(DETWS_RX_BUF_SIZE_DEFAULTED) && RX_BUF_SIZE < 8192
4210#define RX_BUF_SIZE 8192
4218#if DETWS_ENABLE_SSH && defined(DETWS_RX_BUF_SIZE_DEFAULTED) && RX_BUF_SIZE < 2048
4220#define RX_BUF_SIZE 2048
4231#if DETWS_ENABLE_TLS && defined(DETWS_RX_BUF_SIZE_DEFAULTED) && RX_BUF_SIZE < 2048
4233#define RX_BUF_SIZE 2048
4237#ifndef DETWS_ENABLE_PROVISIONING
4238#define DETWS_ENABLE_PROVISIONING 0
4249#ifndef DETWS_ENABLE_SYSLOG
4250#define DETWS_ENABLE_SYSLOG 0
4254#ifndef DETWS_SYSLOG_MSG_MAX
4255#define DETWS_SYSLOG_MSG_MAX 256
4259#ifndef DETWS_SYSLOG_FIELD_MAX
4260#define DETWS_SYSLOG_FIELD_MAX 32
4265#ifndef DETWS_SYSLOG_DEFAULT_PORT
4266#define DETWS_SYSLOG_DEFAULT_PORT 514
4277#ifndef DETWS_ENABLE_JWT
4278#define DETWS_ENABLE_JWT 0
4282#ifndef DETWS_JWT_MAX_LEN
4283#define DETWS_JWT_MAX_LEN 512
4297#ifndef DETWS_ENABLE_HTTP_CLIENT
4298#define DETWS_ENABLE_HTTP_CLIENT 0
4302#ifndef DETWS_ENABLE_HTTP_CLIENT_TLS
4303#define DETWS_ENABLE_HTTP_CLIENT_TLS 0
4307#ifndef DETWS_HTTP_CLIENT_BUF_SIZE
4308#define DETWS_HTTP_CLIENT_BUF_SIZE 2048
4321#ifndef DETWS_HTTP_CLIENT_CT_BUF_SIZE
4322#define DETWS_HTTP_CLIENT_CT_BUF_SIZE 4096
4326#ifndef DETWS_HTTP_CLIENT_TIMEOUT_MS
4327#define DETWS_HTTP_CLIENT_TIMEOUT_MS 8000
4339#ifndef DETWS_ENABLE_SMTP
4340#define DETWS_ENABLE_SMTP 0
4344#ifndef DETWS_SMTP_LINE_MAX
4345#define DETWS_SMTP_LINE_MAX 256
4349#ifndef DETWS_SMTP_MSG_MAX
4350#define DETWS_SMTP_MSG_MAX 2048
4354#ifndef DETWS_SMTP_REPLY_MAX
4355#define DETWS_SMTP_REPLY_MAX 512
4359#ifndef DETWS_SMTP_TIMEOUT_MS
4360#define DETWS_SMTP_TIMEOUT_MS 10000
4364#ifndef DETWS_SMTP_CT_BUF_SIZE
4365#define DETWS_SMTP_CT_BUF_SIZE 4096
4379#ifndef DETWS_ENABLE_MQTT
4380#define DETWS_ENABLE_MQTT 0
4384#ifndef DETWS_ENABLE_MQTT_TLS
4385#define DETWS_ENABLE_MQTT_TLS 0
4395#ifndef DETWS_MQTT_BUF_SIZE
4396#define DETWS_MQTT_BUF_SIZE 1024
4400#ifndef DETWS_MQTT_KEEPALIVE_S
4401#define DETWS_MQTT_KEEPALIVE_S 30
4405#ifndef DETWS_MQTT_CT_BUF_SIZE
4406#define DETWS_MQTT_CT_BUF_SIZE 4096
4410#ifndef DETWS_MQTT_MAX_TOPIC
4411#define DETWS_MQTT_MAX_TOPIC 128
4421#ifndef DETWS_MQTT_MAX_INFLIGHT
4422#define DETWS_MQTT_MAX_INFLIGHT 4
4426#ifndef DETWS_MQTT_INFLIGHT_BUF
4427#define DETWS_MQTT_INFLIGHT_BUF 256
4431#ifndef DETWS_MQTT_RETRANSMIT_MS
4432#define DETWS_MQTT_RETRANSMIT_MS 5000
4436#ifndef DETWS_MQTT_RX_QOS2_SLOTS
4437#define DETWS_MQTT_RX_QOS2_SLOTS 8
4449#ifndef DETWS_ENABLE_WS_CLIENT
4450#define DETWS_ENABLE_WS_CLIENT 0
4454#ifndef DETWS_ENABLE_WS_CLIENT_TLS
4455#define DETWS_ENABLE_WS_CLIENT_TLS 0
4459#ifndef DETWS_WS_CLIENT_BUF_SIZE
4460#define DETWS_WS_CLIENT_BUF_SIZE 1024
4464#ifndef DETWS_WS_CLIENT_CT_BUF_SIZE
4465#define DETWS_WS_CLIENT_CT_BUF_SIZE 4096
4475#if DETWS_ENABLE_HTTP_CLIENT_TLS || DETWS_ENABLE_MQTT_TLS || DETWS_ENABLE_WS_CLIENT_TLS
4476#define DETWS_ENABLE_CLIENT_TLS 1
4478#define DETWS_ENABLE_CLIENT_TLS 0
4491#if DETWS_ENABLE_HTTP_CLIENT || DETWS_ENABLE_MQTT || DETWS_ENABLE_WS_CLIENT || DETWS_ENABLE_RELAY || \
4492 DETWS_ENABLE_SMTP || DETWS_SSH_PORT_FORWARD || DETWS_ENABLE_SMB || DETWS_ENABLE_DNC
4493#undef DETWS_ENABLE_DNS_RESOLVER
4494#define DETWS_ENABLE_DNS_RESOLVER 1
4495#define DETWS_NEED_DET_CLIENT 1
4497#ifndef DETWS_NEED_DET_CLIENT
4498#define DETWS_NEED_DET_CLIENT 0
4509#if DETWS_ENABLE_AUTH || DETWS_ENABLE_JWT || DETWS_ENABLE_OIDC
4510#define DETWS_CAPTURE_AUTH_HEADER 1
4512#define DETWS_CAPTURE_AUTH_HEADER 0
4522#if DETWS_ENABLE_OIDC
4523#define DETWS_AUTH_HDR_CAP_OIDC (DETWS_OIDC_MAX_LEN + 16)
4525#define DETWS_AUTH_HDR_CAP_OIDC 0
4528#define DETWS_AUTH_HDR_CAP_JWT (DETWS_JWT_MAX_LEN + 16)
4530#define DETWS_AUTH_HDR_CAP_JWT 0
4532#define DETWS_AUTH_HDR_CAP_M1 \
4533 (DETWS_AUTH_HDR_CAP_JWT > DIGEST_AUTH_HDR_MAX ? DETWS_AUTH_HDR_CAP_JWT : DIGEST_AUTH_HDR_MAX)
4534#define DETWS_AUTH_HDR_CAP \
4535 (DETWS_AUTH_HDR_CAP_OIDC > DETWS_AUTH_HDR_CAP_M1 ? DETWS_AUTH_HDR_CAP_OIDC : DETWS_AUTH_HDR_CAP_M1)
4538#ifndef DETWS_ENABLE_STATS
4539#define DETWS_ENABLE_STATS 0
4553#ifndef DETWS_ENABLE_OBSERVABILITY
4554#define DETWS_ENABLE_OBSERVABILITY 0
4566#ifndef DETWS_ENABLE_METRICS
4567#define DETWS_ENABLE_METRICS 0
4577#ifndef DETWS_ENABLE_WEB_TERMINAL
4578#define DETWS_ENABLE_WEB_TERMINAL 0
4587#ifndef TERM_TX_BUF_SIZE
4588#define TERM_TX_BUF_SIZE 256
4602#ifndef DETWS_ENABLE_ETAG
4603#define DETWS_ENABLE_ETAG 0
4623#ifndef DETWS_ENABLE_DIAG
4624#define DETWS_ENABLE_DIAG 0
4641#ifndef DETWS_ENABLE_KEEPALIVE
4642#define DETWS_ENABLE_KEEPALIVE 1
4653#ifndef DETWS_KEEPALIVE_MAX_REQUESTS
4654#define DETWS_KEEPALIVE_MAX_REQUESTS 100
4665#ifndef DETWS_ENABLE_HTTP2
4666#define DETWS_ENABLE_HTTP2 0
4674#ifndef DETWS_HPACK_TABLE_BYTES
4675#define DETWS_HPACK_TABLE_BYTES 4096
4679#ifndef DETWS_HPACK_MAX_ENTRIES
4680#define DETWS_HPACK_MAX_ENTRIES 128
4688#ifndef DETWS_H2_MAX_FRAME
4689#define DETWS_H2_MAX_FRAME 16384
4693#ifndef DETWS_H2_MAX_STREAMS
4694#define DETWS_H2_MAX_STREAMS 8
4702#ifndef DETWS_H2_HDR_BLOCK
4703#define DETWS_H2_HDR_BLOCK 4096
4716#ifndef DETWS_H2_POOL_IN_PSRAM
4717#define DETWS_H2_POOL_IN_PSRAM 0
4730#ifndef DETWS_ENABLE_HTTP3
4731#define DETWS_ENABLE_HTTP3 0
4751#ifndef DETWS_ENABLE_DTLS
4752#define DETWS_ENABLE_DTLS 0
4762#if DETWS_ENABLE_HTTP3
4763#define DETWS_INTERNAL_SLOTS 1
4764#define DETWS_H3_DISPATCH_SLOT MAX_CONNS
4766#define DETWS_INTERNAL_SLOTS 0
4768#define CONN_POOL_SLOTS (MAX_CONNS + DETWS_INTERNAL_SLOTS)
4771#ifndef DETWS_HTTP3_PORT
4772#define DETWS_HTTP3_PORT 443
4783#ifndef DETWS_H3_CRYPTO_BUF
4784#define DETWS_H3_CRYPTO_BUF 2048
4794#ifndef DETWS_H3_MAX_STREAMS
4795#define DETWS_H3_MAX_STREAMS 8
4810#ifndef DETWS_ENABLE_RANGE
4811#define DETWS_ENABLE_RANGE 0
4823#ifndef DETWS_ENFORCE_HOST_HEADER
4824#define DETWS_ENFORCE_HOST_HEADER 1
4835#ifndef DETWS_SSH_ALLOW_PASSWORD
4836#define DETWS_SSH_ALLOW_PASSWORD 1
4847#ifndef SSH_MAX_AUTH_ATTEMPTS
4848#define SSH_MAX_AUTH_ATTEMPTS 6
4856#ifndef MAX_LISTENERS
4857#define MAX_LISTENERS 3
4867#ifndef DETWS_MAX_UDP_LISTENERS
4868#define DETWS_MAX_UDP_LISTENERS 2
4878#ifndef DETWS_UDP_RX_BUF_SIZE
4879#define DETWS_UDP_RX_BUF_SIZE 1472
4893#ifndef DETWS_ENABLE_ACCEPT_THROTTLE
4894#define DETWS_ENABLE_ACCEPT_THROTTLE 0
4898#ifndef DETWS_ACCEPT_THROTTLE_MAX
4899#define DETWS_ACCEPT_THROTTLE_MAX 20
4903#ifndef DETWS_ACCEPT_THROTTLE_WINDOW_MS
4904#define DETWS_ACCEPT_THROTTLE_WINDOW_MS 1000
4924#ifndef DETWS_ENABLE_PER_IP_THROTTLE
4925#define DETWS_ENABLE_PER_IP_THROTTLE 0
4929#ifndef DETWS_PER_IP_THROTTLE_SLOTS
4930#define DETWS_PER_IP_THROTTLE_SLOTS 16
4934#ifndef DETWS_PER_IP_THROTTLE_MAX
4935#define DETWS_PER_IP_THROTTLE_MAX 10
4939#ifndef DETWS_PER_IP_THROTTLE_WINDOW_MS
4940#define DETWS_PER_IP_THROTTLE_WINDOW_MS 10000
4961#ifndef DETWS_ENABLE_IP_ALLOWLIST
4962#define DETWS_ENABLE_IP_ALLOWLIST 0
4966#ifndef DETWS_IP_ALLOWLIST_SLOTS
4967#define DETWS_IP_ALLOWLIST_SLOTS 8
4986#ifndef DETWS_ENABLE_AUTH_LOCKOUT
4987#define DETWS_ENABLE_AUTH_LOCKOUT 0
4991#ifndef DETWS_AUTH_LOCKOUT_SLOTS
4992#define DETWS_AUTH_LOCKOUT_SLOTS 16
4996#ifndef DETWS_AUTH_LOCKOUT_THRESHOLD
4997#define DETWS_AUTH_LOCKOUT_THRESHOLD 5
5001#ifndef DETWS_AUTH_LOCKOUT_BASE_MS
5002#define DETWS_AUTH_LOCKOUT_BASE_MS 1000
5006#ifndef DETWS_AUTH_LOCKOUT_MAX_MS
5007#define DETWS_AUTH_LOCKOUT_MAX_MS 300000
5026#ifndef DETWS_ENABLE_CSRF
5027#define DETWS_ENABLE_CSRF 0
5035#ifndef MAX_TELNET_CONNS
5036#define MAX_TELNET_CONNS 2
5040#ifndef TELNET_BUF_SIZE
5041#define TELNET_BUF_SIZE 256
5049#ifndef MAX_SSH_CONNS
5050#define MAX_SSH_CONNS 1
5062#ifndef DETWS_SSH_MAX_CHANNELS
5063#define DETWS_SSH_MAX_CHANNELS 1
5065#if DETWS_SSH_MAX_CHANNELS < 1
5066#error "DeterministicESPAsyncWebServer: DETWS_SSH_MAX_CHANNELS must be >= 1"
5080#ifndef DETWS_SSH_PORT_FORWARD
5081#define DETWS_SSH_PORT_FORWARD 0
5085#ifndef DETWS_SSH_FWD_MAX
5086#define DETWS_SSH_FWD_MAX 2
5090#ifndef DETWS_SSH_FWD_HOST_MAX
5091#define DETWS_SSH_FWD_HOST_MAX 64
5095#ifndef DETWS_SSH_FWD_CONNECT_MS
5096#define DETWS_SSH_FWD_CONNECT_MS 3000
5100#ifndef DETWS_SSH_FWD_CHUNK
5101#define DETWS_SSH_FWD_CHUNK 1024
5113#ifndef DETWS_SSH_RFWD_MAX
5114#define DETWS_SSH_RFWD_MAX 1
5124#ifndef DETWS_SSH_RFWD_BRIDGE_MAX
5125#define DETWS_SSH_RFWD_BRIDGE_MAX 2
5129#ifndef SSH_PKT_BUF_SIZE
5130#define SSH_PKT_BUF_SIZE 2048
5147#ifndef DETWS_ENABLE_SSH_ZLIB
5148#define DETWS_ENABLE_SSH_ZLIB 0
5158#ifndef DETWS_SSH_ZLIB_IN_PSRAM
5159#define DETWS_SSH_ZLIB_IN_PSRAM 0
5170#ifndef DETWS_SSH_ZLIB_ACK_DRAM
5171#define DETWS_SSH_ZLIB_ACK_DRAM 0
5180#ifndef DETWS_SSH_ZLIB_WINDOW
5181#define DETWS_SSH_ZLIB_WINDOW 8192
5188#ifndef DETWS_SSH_ZLIB_MAX_IN
5189#define DETWS_SSH_ZLIB_MAX_IN 2048
5193#ifndef SSH_MAX_USERNAME_LEN
5194#define SSH_MAX_USERNAME_LEN 32
5198#ifndef SSH_MAX_PASSWORD_LEN
5199#define SSH_MAX_PASSWORD_LEN 64
5220#ifndef SSH_CRYPTO_WORK_SIZE
5221#define SSH_CRYPTO_WORK_SIZE 1536
5234#ifndef DETWS_SCRATCH_ARENA_SIZE
5235#define DETWS_SCRATCH_ARENA_SIZE 8192
5370#if DETWS_ENABLE_DIAG
5372#define _DETWS_STR_(x) #x
5373#define _DETWS_STR(x) _DETWS_STR_(x)
5375#if DETWS_ENABLE_WEBSOCKET
5376#define _DETWS_F_WS "true"
5378#define _DETWS_F_WS "false"
5382#define _DETWS_F_SSE "true"
5384#define _DETWS_F_SSE "false"
5387#if DETWS_ENABLE_MULTIPART
5388#define _DETWS_F_MP "true"
5390#define _DETWS_F_MP "false"
5393#if DETWS_ENABLE_FILE_SERVING
5394#define _DETWS_F_FS "true"
5396#define _DETWS_F_FS "false"
5399#if DETWS_ENABLE_AUTH
5400#define _DETWS_F_AUTH "true"
5402#define _DETWS_F_AUTH "false"
5408#define _DETWS_BOOL_0 "false"
5409#define _DETWS_BOOL_1 "true"
5410#define _DETWS_FB2(v) _DETWS_BOOL_##v
5411#define _DETWS_FB(v) _DETWS_FB2(v)
5413#define DETWS_DIAG_JSON \
5415 "\"lib\":\"DeterministicESPAsyncWebServer\"," \
5417 "\"websocket\":" _DETWS_F_WS "," \
5418 "\"sse\":" _DETWS_F_SSE "," \
5419 "\"multipart\":" _DETWS_F_MP "," \
5420 "\"file_serving\":" _DETWS_F_FS "," \
5421 "\"auth\":" _DETWS_F_AUTH "," \
5422 "\"webdav\":" _DETWS_FB( \
5423 DETWS_ENABLE_WEBDAV) "," \
5424 "\"coap\":" _DETWS_FB(DETWS_ENABLE_COAP) "," \
5425 "\"snmp\":" _DETWS_FB( \
5426 DETWS_ENABLE_SNMP) "," \
5427 "\"opcua\":" _DETWS_FB( \
5428 DETWS_ENABLE_OPCUA) "," \
5429 "\"umati\":" _DETWS_FB(DETWS_ENABLE_UMATI) "," \
5430 "\"modbus\":" _DETWS_FB(DETWS_ENABLE_MODBUS) "," \
5431 "\"mqtt\":" _DETWS_FB(DETWS_ENABLE_MQTT) "," \
5432 "\"mtconnect\":" _DETWS_FB(DETWS_ENABLE_MTCONNECT) "," \
5433 "\"redis\":" _DETWS_FB(DETWS_ENABLE_REDIS) "," \
5434 "\"ftp\":" _DETWS_FB(DETWS_ENABLE_FTP) "," \
5435 "\"smtp\":" _DETWS_FB( \
5436 DETWS_ENABLE_SMTP) "," \
5437 "\"smb\":" _DETWS_FB(DETWS_ENABLE_SMB) "," \
5438 "\"syslog\":" _DETWS_FB( \
5439 DETWS_ENABLE_SYSLOG) "," \
5440 "\"ntp_server\":" _DETWS_FB( \
5441 DETWS_ENABLE_NTP_SERVER) "," \
5442 "\"dns_server\":" _DETWS_FB(DETWS_ENABLE_DNS_SERVER) "," \
5443 "\"nats\":" _DETWS_FB(DETWS_ENABLE_NATS) "," \
5444 "\"stomp\":" _DETWS_FB( \
5445 DETWS_ENABLE_STOMP) "," \
5446 "\"statsd\":" _DETWS_FB(DETWS_ENABLE_STATSD) "," \
5447 "\"jwt\":" _DETWS_FB(DETWS_ENABLE_JWT) "," \
5448 "\"tls\":" _DETWS_FB(DETWS_ENABLE_TLS) "," \
5449 "\"http2\":" _DETWS_FB(DETWS_ENABLE_HTTP2) "," \
5450 "\"http3\":" _DETWS_FB(DETWS_ENABLE_HTTP3) "," \
5451 "\"ssh\":" _DETWS_FB(DETWS_ENABLE_SSH) "," \
5452 "\"ws_deflate\":" _DETWS_FB(DETWS_ENABLE_WS_DEFLATE) "," \
5453 "\"range\":" _DETWS_FB( \
5454 DETWS_ENABLE_RANGE) "," \
5455 "\"csrf\":" _DETWS_FB(DETWS_ENABLE_CSRF) "," \
5456 "\"accept_throttle\":" _DETWS_FB(DETWS_ENABLE_ACCEPT_THROTTLE) "," \
5457 "\"per_ip_throttle\":" _DETWS_FB( \
5458 DETWS_ENABLE_PER_IP_THROTTLE) "," \
5459 "\"auth_lockout\":" _DETWS_FB(DETWS_ENABLE_AUTH_LOCKOUT) "}," \
5461 "\"MAX_CONNS\":" _DETWS_STR( \
5463 "\"RX_BUF_SIZE\":" _DETWS_STR( \
5465 "\"BODY_BUF_SIZE\":" _DETWS_STR(BODY_BUF_SIZE) "," \
5466 "\"MAX_ROUTES\":" _DETWS_STR(MAX_ROUTES) "," \
5475 "\"MAX_KEY_LEN\":" _DETWS_STR(MAX_KEY_LEN) "," \
5476 "\"MAX_VAL_LEN\":" _DETWS_STR( \
5478 "\"MAX_QUERY_LEN\":" _DETWS_STR( \
5479 MAX_QUERY_LEN) "," \
5480 "\"MAX_QUERY_PARAMS\":" _DETWS_STR( \
5481 MAX_QUERY_PARAMS) "," \
5482 "\"CONN_TIMEOUT_MS\":" _DETWS_STR( \
5483 CONN_TIMEOUT_MS) "," \
5484 "\"RESP_HDR_BUF_SIZE\":" _DETWS_STR(RESP_HDR_BUF_SIZE) "," \
5485 "\"WS_HDR_BUF_SIZE\":" _DETWS_STR( \
5486 WS_HDR_BUF_SIZE) "," \
5487 "\"CORS_HDR_BUF_SIZE\":" _DETWS_STR(CORS_HDR_BUF_SIZE) "," \
5488 "\"EVT_QUEUE_DEPTH\":" _DETWS_STR( \
5489 EVT_QUEUE_DEPTH) "}" \
5500#if EVT_QUEUE_DEPTH < MAX_CONNS * 4
5502 "DeterministicESPAsyncWebServer: EVT_QUEUE_DEPTH must be >= MAX_CONNS * 4 to absorb event bursts without blocking lwIP"
5506#error "DeterministicESPAsyncWebServer: MAX_CONNS must be >= 1"
5510#error "DeterministicESPAsyncWebServer: MAX_CONNS must be <= 255 (slot IDs are uint8_t)"
5513#if DETWS_ENABLE_WEBSOCKET && DETWS_ENABLE_SSE
5514#if MAX_WS_CONNS + MAX_SSE_CONNS > MAX_CONNS
5515#error "DeterministicESPAsyncWebServer: MAX_WS_CONNS + MAX_SSE_CONNS must not exceed MAX_CONNS"
5517#elif DETWS_ENABLE_WEBSOCKET
5518#if MAX_WS_CONNS > MAX_CONNS
5519#error "DeterministicESPAsyncWebServer: MAX_WS_CONNS must not exceed MAX_CONNS"
5521#elif DETWS_ENABLE_SSE
5522#if MAX_SSE_CONNS > MAX_CONNS
5523#error "DeterministicESPAsyncWebServer: MAX_SSE_CONNS must not exceed MAX_CONNS"
5527#if BODY_BUF_SIZE < 1
5528#error "DeterministicESPAsyncWebServer: BODY_BUF_SIZE must be >= 1"
5531#if BODY_BUF_SIZE > RX_BUF_SIZE
5532#error "DeterministicESPAsyncWebServer: BODY_BUF_SIZE must not exceed RX_BUF_SIZE (parser reads from the ring buffer)"
5535#if DETWS_ENABLE_FILE_SERVING && FILE_CHUNK_SIZE > RX_BUF_SIZE
5536#error "DeterministicESPAsyncWebServer: FILE_CHUNK_SIZE must not exceed RX_BUF_SIZE"
5540#error "DeterministicESPAsyncWebServer: MAX_KEY_LEN must be >= 4 (minimum valid HTTP header name length)"
5544#error "DeterministicESPAsyncWebServer: MAX_VAL_LEN must be >= 1"
5548#error "DeterministicESPAsyncWebServer: MAX_PATH_LEN must be >= 2 (minimum: \"/\")"
5552#error "DeterministicESPAsyncWebServer: MAX_ROUTES must be >= 1"
5555#if MAX_MIDDLEWARE < 1
5556#error "DeterministicESPAsyncWebServer: MAX_MIDDLEWARE must be >= 1"
5559#if CHUNK_BUF_SIZE < 16
5560#error "DeterministicESPAsyncWebServer: CHUNK_BUF_SIZE must be >= 16"
5563#if JSON_MAX_DEPTH < 1
5564#error "DeterministicESPAsyncWebServer: JSON_MAX_DEPTH must be >= 1"
5567#if RE_MAX_STEPS < 64
5568#error "DeterministicESPAsyncWebServer: RE_MAX_STEPS must be >= 64"
5574#if DETWS_ENABLE_OIDC && !DETWS_ENABLE_SSH && (DETWS_WORKER_TASK_STACK < DETWS_WORKER_STACK_RSA_MIN)
5576 "DeterministicESPAsyncWebServer: DETWS_WORKER_TASK_STACK is below DETWS_WORKER_STACK_RSA_MIN; RSA-2048 verification (OIDC) needs ~7 KB of worker stack - raise DETWS_WORKER_TASK_STACK (>= 8192) or marshal RSA verifies onto a dedicated larger-stack task"
5583#if (DETWS_ENABLE_SSH || DETWS_ENABLE_HTTP3) && (DETWS_WORKER_TASK_STACK < DETWS_WORKER_STACK_CURVE_MIN)
5585 "DeterministicESPAsyncWebServer: DETWS_WORKER_TASK_STACK is below DETWS_WORKER_STACK_CURVE_MIN; SSH and HTTP/3 (QUIC TLS-1.3) curve25519/ed25519 need ~10.5 KB of worker stack - raise DETWS_WORKER_TASK_STACK (>= 12288) or marshal the handshake onto a dedicated larger-stack task"
5591#ifndef DETWS_WORKER_STACK_PQC_MIN
5592#define DETWS_WORKER_STACK_PQC_MIN 16384
5594#if DETWS_ENABLE_PQC_KEX && (DETWS_ENABLE_SSH || DETWS_ENABLE_HTTP3) && \
5595 (DETWS_WORKER_TASK_STACK < DETWS_WORKER_STACK_PQC_MIN)
5597 "DeterministicESPAsyncWebServer: DETWS_WORKER_TASK_STACK is below DETWS_WORKER_STACK_PQC_MIN; the ML-KEM-768 hybrid KEX (DETWS_ENABLE_PQC_KEX) needs ~7 KB more worker stack - raise DETWS_WORKER_TASK_STACK (>= 16384) or marshal the handshake onto a dedicated larger-stack task"
5601#if MAX_TLS_CONNS < 1 || MAX_TLS_CONNS > MAX_CONNS
5602#error "DeterministicESPAsyncWebServer: MAX_TLS_CONNS must be between 1 and MAX_CONNS"
5604#if DETWS_TLS_ARENA_SIZE < 8192
5605#error "DeterministicESPAsyncWebServer: DETWS_TLS_ARENA_SIZE is far too small for a TLS handshake"
5612#if defined(ARDUINO) && (MAX_TLS_CONNS > 1) && !DETWS_TLS_ARENA_IN_PSRAM && !DETWS_TLS_ACK_MULTI_CONN_DRAM
5614 "DeterministicESPAsyncWebServer: MAX_TLS_CONNS > 1 - the static TLS arena will not fit the ~122 KB internal dram0_0_seg. Pick a path (docs/KNOWN_LIMITATIONS.md): set DETWS_TLS_ARENA_IN_PSRAM=1 on a PSRAM board, OR shrink records via a custom ESP-IDF build (CONFIG_MBEDTLS_SSL_IN/OUT_CONTENT_LEN + DETWS_TLS_MAX_FRAG_LEN), OR reclaim internal DRAM; then set DETWS_TLS_ACK_MULTI_CONN_DRAM=1 to confirm."
5620#if DETWS_ENABLE_HTTP2 && defined(ARDUINO) && !DETWS_H2_POOL_IN_PSRAM
5622 "DeterministicESPAsyncWebServer: DETWS_ENABLE_HTTP2 needs PSRAM - the HTTP/2 engine pool (~MAX_CONNS x 28 KB) overflows the ~122 KB internal dram0_0_seg alongside TLS. Set DETWS_H2_POOL_IN_PSRAM=1 on a PSRAM board (S3 / P4 / WROVER) built with CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y (tools/psram/README.md)."
5625#if DETWS_ENABLE_SNMP
5626#if SNMP_MAX_OID_LEN < 4
5627#error "DeterministicESPAsyncWebServer: SNMP_MAX_OID_LEN must be >= 4"
5629#if SNMP_MAX_MIB_ENTRIES < 1
5630#error "DeterministicESPAsyncWebServer: SNMP_MAX_MIB_ENTRIES must be >= 1"
5632#if SNMP_MAX_VARBINDS < 1
5633#error "DeterministicESPAsyncWebServer: SNMP_MAX_VARBINDS must be >= 1"
5635#if SNMP_MSG_BUF_SIZE < 484
5636#error "DeterministicESPAsyncWebServer: SNMP_MSG_BUF_SIZE must be >= 484 (RFC 1157 minimum)"
5640#if DETWS_ENABLE_COAP
5641#if DETWS_COAP_MAX_RESOURCES < 1
5642#error "DeterministicESPAsyncWebServer: DETWS_COAP_MAX_RESOURCES must be >= 1"
5644#if DETWS_COAP_MAX_PATH < 2
5645#error "DeterministicESPAsyncWebServer: DETWS_COAP_MAX_PATH must be >= 2 (minimum: \"/\")"
5647#if DETWS_COAP_MAX_PAYLOAD < 1
5648#error "DeterministicESPAsyncWebServer: DETWS_COAP_MAX_PAYLOAD must be >= 1"
5650#if DETWS_COAP_MSG_BUF_SIZE < (DETWS_COAP_MAX_PAYLOAD + 16)
5652 "DeterministicESPAsyncWebServer: DETWS_COAP_MSG_BUF_SIZE must be >= DETWS_COAP_MAX_PAYLOAD + 16 (header + token + Content-Format option + payload marker)"
5656#if DETWS_ENABLE_AUTH && MAX_AUTH_LEN < 2
5657#error "DeterministicESPAsyncWebServer: MAX_AUTH_LEN must be >= 2 when DETWS_ENABLE_AUTH is set"
5660#if DETWS_ENABLE_PER_IP_THROTTLE
5661#if DETWS_PER_IP_THROTTLE_SLOTS < 1
5663 "DeterministicESPAsyncWebServer: DETWS_PER_IP_THROTTLE_SLOTS must be >= 1 when DETWS_ENABLE_PER_IP_THROTTLE is set"
5665#if DETWS_PER_IP_THROTTLE_MAX < 1
5666#error "DeterministicESPAsyncWebServer: DETWS_PER_IP_THROTTLE_MAX must be >= 1 when DETWS_ENABLE_PER_IP_THROTTLE is set"
5670#if DETWS_ENABLE_IP_ALLOWLIST && DETWS_IP_ALLOWLIST_SLOTS < 1
5671#error "DeterministicESPAsyncWebServer: DETWS_IP_ALLOWLIST_SLOTS must be >= 1 when DETWS_ENABLE_IP_ALLOWLIST is set"
5674#if DETWS_ENABLE_AUTH_LOCKOUT
5675#if !DETWS_ENABLE_AUTH
5676#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_AUTH_LOCKOUT requires DETWS_ENABLE_AUTH"
5678#if DETWS_AUTH_LOCKOUT_SLOTS < 1
5679#error "DeterministicESPAsyncWebServer: DETWS_AUTH_LOCKOUT_SLOTS must be >= 1 when DETWS_ENABLE_AUTH_LOCKOUT is set"
5681#if DETWS_AUTH_LOCKOUT_THRESHOLD < 1
5682#error "DeterministicESPAsyncWebServer: DETWS_AUTH_LOCKOUT_THRESHOLD must be >= 1 when DETWS_ENABLE_AUTH_LOCKOUT is set"
5684#if DETWS_AUTH_LOCKOUT_BASE_MS < 1 || DETWS_AUTH_LOCKOUT_MAX_MS < DETWS_AUTH_LOCKOUT_BASE_MS
5685#error "DeterministicESPAsyncWebServer: need 1 <= DETWS_AUTH_LOCKOUT_BASE_MS <= DETWS_AUTH_LOCKOUT_MAX_MS"
5689#if DETWS_AUTH_LOCKOUT_MAX_MS > 0x80000000
5690#error "DeterministicESPAsyncWebServer: DETWS_AUTH_LOCKOUT_MAX_MS must be <= 0x80000000 (2147483648)"
5694#if DETWS_ENABLE_WEBDAV
5695#if !DETWS_ENABLE_FILE_SERVING
5696#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_WEBDAV requires DETWS_ENABLE_FILE_SERVING"
5698#if DETWS_WEBDAV_BUF_SIZE < 256
5699#error "DeterministicESPAsyncWebServer: DETWS_WEBDAV_BUF_SIZE must be >= 256"
5701#if DETWS_METHOD_BUF_SIZE < 10
5702#error "DeterministicESPAsyncWebServer: DETWS_METHOD_BUF_SIZE must be >= 10 when DETWS_ENABLE_WEBDAV is set (PROPPATCH)"
5706#if DETWS_ENABLE_MODBUS
5707#if DETWS_MODBUS_COILS < 1 || DETWS_MODBUS_DISCRETE_INPUTS < 1 || DETWS_MODBUS_HOLDING_REGS < 1 || \
5708 DETWS_MODBUS_INPUT_REGS < 1
5709#error "DeterministicESPAsyncWebServer: each DETWS_MODBUS_* table size must be >= 1 when DETWS_ENABLE_MODBUS is set"
5713#if DETWS_ENABLE_KEEPALIVE && DETWS_KEEPALIVE_MAX_REQUESTS < 1
5714#error "DeterministicESPAsyncWebServer: DETWS_KEEPALIVE_MAX_REQUESTS must be >= 1 when DETWS_ENABLE_KEEPALIVE is set"
5717#if DETWS_ENABLE_RANGE && !DETWS_ENABLE_FILE_SERVING && !DETWS_ENABLE_EDGE_CACHE
5719 "DeterministicESPAsyncWebServer: DETWS_ENABLE_RANGE requires DETWS_ENABLE_FILE_SERVING or DETWS_ENABLE_EDGE_CACHE"
5722#if DETWS_ENABLE_MTLS && !DETWS_ENABLE_TLS
5723#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_MTLS requires DETWS_ENABLE_TLS"
5726#if DETWS_ENABLE_TLS_RESUMPTION && !DETWS_ENABLE_TLS
5727#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_TLS_RESUMPTION requires DETWS_ENABLE_TLS"
5730#if DETWS_ENABLE_METRICS && !DETWS_ENABLE_STATS
5731#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_METRICS requires DETWS_ENABLE_STATS"
5734#if DETWS_ENABLE_HTTP_CLIENT_TLS && !DETWS_ENABLE_TLS
5735#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_HTTP_CLIENT_TLS requires DETWS_ENABLE_TLS"
5738#if DETWS_ENABLE_MQTT_TLS && !DETWS_ENABLE_TLS
5739#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_MQTT_TLS requires DETWS_ENABLE_TLS"
5742#if DETWS_ENABLE_WS_CLIENT_TLS && !DETWS_ENABLE_TLS
5743#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_WS_CLIENT_TLS requires DETWS_ENABLE_TLS"
5746#if DETWS_ENABLE_SNMP_TRAP && !DETWS_ENABLE_SNMP
5747#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_SNMP_TRAP requires DETWS_ENABLE_SNMP"
5750#if DETWS_ENABLE_COAP_OBSERVE && !DETWS_ENABLE_COAP
5751#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_COAP_OBSERVE requires DETWS_ENABLE_COAP"
5754#if DETWS_ENABLE_COAP_BLOCK
5755#if !DETWS_ENABLE_COAP
5756#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_COAP_BLOCK requires DETWS_ENABLE_COAP"
5758#if DETWS_COAP_BLOCK_SZX_MAX > 6
5759#error "DeterministicESPAsyncWebServer: DETWS_COAP_BLOCK_SZX_MAX must be <= 6 (block size 2^(SZX+4); SZX 7 is reserved)"
5761#if DETWS_COAP_MSG_BUF_SIZE < ((1 << (DETWS_COAP_BLOCK_SZX_MAX + 4)) + 16)
5763 "DeterministicESPAsyncWebServer: DETWS_COAP_MSG_BUF_SIZE must hold one full block (2^(DETWS_COAP_BLOCK_SZX_MAX+4)) + 16 header/option bytes"
5765#if DETWS_COAP_BLOCK1_MAX < (1 << (DETWS_COAP_BLOCK_SZX_MAX + 4))
5766#error "DeterministicESPAsyncWebServer: DETWS_COAP_BLOCK1_MAX must be >= one block (2^(DETWS_COAP_BLOCK_SZX_MAX+4))"
5773#if DETWS_ENABLE_WS_DEFLATE && !DETWS_ENABLE_WEBSOCKET
5774#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_WS_DEFLATE requires DETWS_ENABLE_WEBSOCKET"
5777#if DETWS_ENABLE_CIA402 && !DETWS_ENABLE_CANOPEN
5778#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_CIA402 requires DETWS_ENABLE_CANOPEN"
5781#if DETWS_ENABLE_SSH_ZLIB && !DETWS_ENABLE_SSH
5782#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_SSH_ZLIB requires DETWS_ENABLE_SSH"
5785#if DETWS_ENABLE_SSH_ZLIB
5787#if (DETWS_SSH_ZLIB_WINDOW & (DETWS_SSH_ZLIB_WINDOW - 1)) != 0 || DETWS_SSH_ZLIB_WINDOW < 256 || \
5788 DETWS_SSH_ZLIB_WINDOW > 32768
5789#error "DeterministicESPAsyncWebServer: DETWS_SSH_ZLIB_WINDOW must be a power of two in [256, 32768]"
5792#if (DETWS_SSH_ZLIB_WINDOW + DETWS_SSH_ZLIB_MAX_IN) > 65534
5793#error "DeterministicESPAsyncWebServer: DETWS_SSH_ZLIB_WINDOW + DETWS_SSH_ZLIB_MAX_IN must be <= 65534"
5797#if DETWS_SSH_ZLIB_MAX_IN < SSH_PKT_BUF_SIZE
5798#error "DeterministicESPAsyncWebServer: DETWS_SSH_ZLIB_MAX_IN must be >= SSH_PKT_BUF_SIZE"
5804#if defined(ARDUINO) && !DETWS_SSH_ZLIB_IN_PSRAM && !DETWS_SSH_ZLIB_ACK_DRAM
5806 "DeterministicESPAsyncWebServer: DETWS_ENABLE_SSH_ZLIB - the per-connection compressor is ~48 KB. Set DETWS_SSH_ZLIB_IN_PSRAM=1 on a PSRAM board (S3 / P4 / WROVER, core built with CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y, tools/psram/README.md), OR set DETWS_SSH_ZLIB_ACK_DRAM=1 to accept the internal-DRAM cost (fits MAX_SSH_CONNS=1 without TLS on a roomy chip)."
5810#if DETWS_ENABLE_WEB_TERMINAL && !DETWS_ENABLE_WEBSOCKET
5811#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_WEB_TERMINAL requires DETWS_ENABLE_WEBSOCKET"
5814#if DETWS_ENABLE_DASHBOARD && !DETWS_ENABLE_SSE
5815#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_DASHBOARD requires DETWS_ENABLE_SSE"
5818#if DETWS_ENABLE_SNMP_V3 && !DETWS_ENABLE_SNMP
5819#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_SNMP_V3 requires DETWS_ENABLE_SNMP"
5822#if DETWS_ENABLE_OPCUA_CLIENT && !DETWS_ENABLE_OPCUA
5823#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_OPCUA_CLIENT requires DETWS_ENABLE_OPCUA (the shared OPC UA codec)"
5826#if DETWS_ENABLE_UMATI && !DETWS_ENABLE_OPCUA
5827#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_UMATI requires DETWS_ENABLE_OPCUA (it builds on the OPC UA server)"
5830#if DETWS_ENABLE_CONFIG_IO && !DETWS_ENABLE_CONFIG_STORE
5831#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_CONFIG_IO requires DETWS_ENABLE_CONFIG_STORE"
5834#if DETWS_ENABLE_HTTP_CLIENT_TLS && !DETWS_ENABLE_HTTP_CLIENT
5835#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_HTTP_CLIENT_TLS requires DETWS_ENABLE_HTTP_CLIENT"
5838#if DETWS_ENABLE_MQTT_TLS && !DETWS_ENABLE_MQTT
5839#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_MQTT_TLS requires DETWS_ENABLE_MQTT"
5842#if DETWS_ENABLE_WS_CLIENT_TLS && !DETWS_ENABLE_WS_CLIENT
5843#error "DeterministicESPAsyncWebServer: DETWS_ENABLE_WS_CLIENT_TLS requires DETWS_ENABLE_WS_CLIENT"
5846#if DETWS_ENABLE_WEBSOCKET && WS_FRAME_SIZE < 2
5847#error "DeterministicESPAsyncWebServer: WS_FRAME_SIZE must be >= 2 when DETWS_ENABLE_WEBSOCKET is set"
5850#if DETWS_ENABLE_SSE && SSE_BUF_SIZE < 8
5851#error "DeterministicESPAsyncWebServer: SSE_BUF_SIZE must be >= 8 when DETWS_ENABLE_SSE is set"
5854#if DETWS_ENABLE_MULTIPART && MAX_MULTIPART_PARTS < 1
5855#error "DeterministicESPAsyncWebServer: MAX_MULTIPART_PARTS must be >= 1 when DETWS_ENABLE_MULTIPART is set"
5858#if RESP_HDR_BUF_SIZE < 128
5859#error "DeterministicESPAsyncWebServer: RESP_HDR_BUF_SIZE must be >= 128 (status line + headers + CORS block)"
5862#if DETWS_ENABLE_WEBSOCKET && WS_HDR_BUF_SIZE < 128
5863#error "DeterministicESPAsyncWebServer: WS_HDR_BUF_SIZE must be >= 128 when DETWS_ENABLE_WEBSOCKET is set"
5866#if CORS_HDR_BUF_SIZE < 64
5867#error "DeterministicESPAsyncWebServer: CORS_HDR_BUF_SIZE must be >= 64"
5870#if RESP_HDR_BUF_SIZE < (CORS_HDR_BUF_SIZE + EXTRA_HDR_BUF_SIZE + 96)
5872 "DeterministicESPAsyncWebServer: RESP_HDR_BUF_SIZE must be >= CORS_HDR_BUF_SIZE + EXTRA_HDR_BUF_SIZE + 96 (status line + CORS block + custom-header block are injected into response headers)"
5892#ifndef DETWS_PROTO_MAX
5893#define DETWS_PROTO_MAX 10
5897 "DETWS_PROTO_MAX must exceed the largest ConnProto id");
5899#ifndef DETWS_CLIENT_CONNS
5900#define DETWS_CLIENT_CONNS 2
5912#ifndef DETWS_CLIENT_RX_BUF
5913#define DETWS_CLIENT_RX_BUF 8192
5919#ifndef SSH_CHAN_WINDOW
5920#define SSH_CHAN_WINDOW 32768u
5923#ifndef SSH_CHAN_MAX_PACKET
5924#define SSH_CHAN_MAX_PACKET 32768u
5933#ifndef SSH_REKEY_PACKET_THRESHOLD
5934#define SSH_REKEY_PACKET_THRESHOLD 0x40000000u
5943#ifndef SSH_REKEY_TIME_MS
5944#define SSH_REKEY_TIME_MS 3600000u
5947#ifndef SSH_AUTH_USER_MAX
5948#define SSH_AUTH_USER_MAX 32
5951#ifndef SSH_AUTH_PASS_MAX
5952#define SSH_AUTH_PASS_MAX 64
5962#ifndef SSH_KEXINIT_MAX
5963#define SSH_KEXINIT_MAX 2048
5966#if DETWS_ENABLE_AUDIT_LOG
5968#ifndef DETWS_AUDIT_LOG_ENTRIES
5969#define DETWS_AUDIT_LOG_ENTRIES 32
5971#ifndef DETWS_AUDIT_MSG_LEN
5972#define DETWS_AUDIT_MSG_LEN 48
5976#if DETWS_ENABLE_DEVICENET
5978#ifndef DETWS_DEVICENET_MSG_MAX
5979#define DETWS_DEVICENET_MSG_MAX 256
5983#if DETWS_ENABLE_ESPNOW
5985#ifndef DETWS_ESPNOW_MAX_PEERS
5986#define DETWS_ESPNOW_MAX_PEERS 8
5990#if DETWS_ENABLE_GRAPHQL
5992#ifndef DETWS_GQL_MAX_NODES
5993#define DETWS_GQL_MAX_NODES 48
5995#ifndef DETWS_GQL_MAX_ARGS
5996#define DETWS_GQL_MAX_ARGS 24
5998#ifndef DETWS_GQL_MAX_DEPTH
5999#define DETWS_GQL_MAX_DEPTH 6
6001#ifndef DETWS_GQL_NAME_MAX
6002#define DETWS_GQL_NAME_MAX 32
6004#ifndef DETWS_GQL_PATH_MAX
6005#define DETWS_GQL_PATH_MAX 96
6007#ifndef DETWS_GQL_STRBUF
6008#define DETWS_GQL_STRBUF 256
6012#if DETWS_ENABLE_J1939
6014#ifndef DETWS_J1939_TP_MAX
6015#define DETWS_J1939_TP_MAX 256
6019#if DETWS_ENABLE_NMEA0183
6021#ifndef DETWS_NMEA0183_MAX_FIELDS
6022#define DETWS_NMEA0183_MAX_FIELDS 26
6026#if DETWS_ENABLE_NMEA2000
6028#ifndef DETWS_N2K_FP_MAX
6029#define DETWS_N2K_FP_MAX 223
6033#if DETWS_ENABLE_OAUTH2
6035#ifndef DETWS_OAUTH2_TOKEN_LEN
6036#define DETWS_OAUTH2_TOKEN_LEN 768
6038#ifndef DETWS_OAUTH2_RT_LEN
6039#define DETWS_OAUTH2_RT_LEN 256
6041#ifndef DETWS_OAUTH2_BODY_BUF
6042#define DETWS_OAUTH2_BODY_BUF 1024
6044#ifndef DETWS_OAUTH2_RESP_BUF
6045#define DETWS_OAUTH2_RESP_BUF 2048
6049#if DETWS_ENABLE_OIDC
6051#ifndef DETWS_OIDC_MAX_LEN
6052#define DETWS_OIDC_MAX_LEN 1600
6054#ifndef DETWS_OIDC_SUB_LEN
6055#define DETWS_OIDC_SUB_LEN 64
6057#ifndef DETWS_OIDC_EMAIL_LEN
6058#define DETWS_OIDC_EMAIL_LEN 96
6060#ifndef DETWS_OIDC_KID_LEN
6061#define DETWS_OIDC_KID_LEN 80
6063#ifndef DETWS_OIDC_JWKS_MAX
6064#define DETWS_OIDC_JWKS_MAX 16384
6068#if DETWS_ENABLE_OPCUA
6070#ifndef DETWS_OPCUA_BUF
6071#define DETWS_OPCUA_BUF 8192
6073#ifndef DETWS_OPCUA_READ_MAX
6074#define DETWS_OPCUA_READ_MAX 8
6076#ifndef DETWS_OPCUA_BROWSE_MAX
6077#define DETWS_OPCUA_BROWSE_MAX 4
6079#ifndef DETWS_OPCUA_REF_MAX
6080#define DETWS_OPCUA_REF_MAX 8
6082#ifndef DETWS_OPCUA_WRITE_MAX
6083#define DETWS_OPCUA_WRITE_MAX 8
6087#ifndef DETWS_OPCUA_DEFAULT_ENDPOINT
6088#define DETWS_OPCUA_DEFAULT_ENDPOINT "opc.tcp://localhost:4840"
6090#ifndef DETWS_OPCUA_DEFAULT_APP_URI
6091#define DETWS_OPCUA_DEFAULT_APP_URI "urn:det:opcua:server"
6093#ifndef DETWS_OPCUA_DEFAULT_APP_NAME
6094#define DETWS_OPCUA_DEFAULT_APP_NAME "DetOpcUaServer"
6098#if DETWS_ENABLE_PROVISIONING
6102#ifndef DETWS_PROV_NVS_NAMESPACE
6103#define DETWS_PROV_NVS_NAMESPACE "wifi_prov"
6105#ifndef DETWS_PROV_KEY_SSID
6106#define DETWS_PROV_KEY_SSID "ssid"
6108#ifndef DETWS_PROV_KEY_PSK
6109#define DETWS_PROV_KEY_PSK "psk"
6115#ifndef DETWS_VFS_RAM_FILES
6116#define DETWS_VFS_RAM_FILES 4
6118#ifndef DETWS_VFS_RAM_FILE_SIZE
6119#define DETWS_VFS_RAM_FILE_SIZE 1024
6121#ifndef DETWS_VFS_MAX_OPEN
6122#define DETWS_VFS_MAX_OPEN 4
6124#ifndef DETWS_VFS_NAME_MAX
6125#define DETWS_VFS_NAME_MAX 48
DetIface
Network interface a connection arrived on (for per-route filtering).
@ DETIFACE_ETH
Ethernet interface (wired PHY).
@ DETIFACE_STA
Station interface (joined to an AP / your LAN).
@ DETIFACE_ANY
Unknown / no filter (matches any interface).
@ DETIFACE_AP
softAP interface (clients joined to the device).
ConnProto
Application protocol spoken on a listener port or connection slot.
@ PROTO_NONE
Unassigned slot.
@ PROTO_HTTP
HTTP/1.1 with optional WS and SSE upgrades.
@ PROTO_OPCUA
OPC UA Binary (UA-TCP) server.
@ PROTO_TELNET
Telnet (RFC 854).
@ PROTO_MODBUS
Modbus TCP slave (Modbus Application Protocol).
@ PROTO_BRIDGE
address:port -> hardware bus (DETWS_ENABLE_IFACE_BRIDGE): UART/SPI/I2C device server.
@ PROTO_SSH_RFWD
SSH remote-forward listener (ssh -R): accepts bridge to a forwarded-tcpip channel.
@ PROTO_RELAY
TCP relay / DNAT (DETWS_ENABLE_RELAY): bridge to an origin det_client connection.
@ PROTO_SSH
SSH (RFC 4253/4252/4254).
@ PROTO_NTRIP_CASTER
NTRIP caster (DETWS_ENABLE_NTRIP_CASTER): serves RTCM3 corrections to rovers.
#define DETWS_PROTO_MAX
Size of the protocol-handler dispatch table; must exceed the largest ConnProto id.
Runtime-tunable server parameters.