16#ifndef PROTOCORE_FEATURE_EN_ERROR_H
17#define PROTOCORE_FEATURE_EN_ERROR_H
19#ifndef PROTOCORE_CONFIG_H
20#error "include protocore_config.h instead of this file - it is the entry point that states the feature flags"
26#if PROTOCORE_WORKER_COUNT < 1
27#error "ProtoCore: PROTOCORE_WORKER_COUNT must be >= 1"
29#if PROTOCORE_WORKER_COUNT > MAX_CONNS
30#error "ProtoCore: PROTOCORE_WORKER_COUNT must be <= MAX_CONNS"
33#if PROTOCORE_ENABLE_PREEMPT_QUEUE && (PROTOCORE_PQ_DEPTH < 1 || PROTOCORE_PQ_ITEM_SIZE < 1)
34#error "ProtoCore: PROTOCORE_PQ_DEPTH and PROTOCORE_PQ_ITEM_SIZE must be >= 1"
37#if PROTOCORE_ENABLE_DMA && (PROTOCORE_DMA_CHANNELS < 1 || PROTOCORE_DMA_BUF_SIZE < 1)
38#error "ProtoCore: PROTOCORE_DMA_CHANNELS and PROTOCORE_DMA_BUF_SIZE must be >= 1"
41#if PROTOCORE_ENABLE_TRACE_CAPTURE && PROTOCORE_TC_MAX_WINDOW_SAMPLES < 1
42#error "ProtoCore: PROTOCORE_TC_MAX_WINDOW_SAMPLES must be >= 1"
45#if PROTOCORE_ENABLE_FORWARD && \
46 (PROTOCORE_PHY_MAX_IFACES < 1 || PROTOCORE_FWD_MAX_RULES < 1 || PROTOCORE_FWD_ACL_PATLEN < 1)
47#error "ProtoCore: PROTOCORE_PHY_MAX_IFACES / PROTOCORE_FWD_MAX_RULES / PROTOCORE_FWD_ACL_PATLEN must be >= 1"
50#if PROTOCORE_ENABLE_GATEWAY && (PROTOCORE_GW_MAX_PORTS < 1)
51#error "ProtoCore: PROTOCORE_GW_MAX_PORTS must be >= 1"
54#if PROTOCORE_ENABLE_LORA && (PROTOCORE_LORA_MAX_PAYLOAD < 1 || PROTOCORE_LORA_MAX_PAYLOAD > 251)
55#error "ProtoCore: PROTOCORE_LORA_MAX_PAYLOAD must be 1..251"
58#if PROTOCORE_ENABLE_NRF24 && (PROTOCORE_NRF24_PAYLOAD < 1 || PROTOCORE_NRF24_PAYLOAD > 32)
59#error "ProtoCore: PROTOCORE_NRF24_PAYLOAD must be 1..32"
62#if PROTOCORE_ENABLE_ENOCEAN && (PROTOCORE_ENOCEAN_MAX_DATA < 1)
63#error "ProtoCore: PROTOCORE_ENOCEAN_MAX_DATA must be >= 1"
66#if PROTOCORE_ENABLE_PN532 && (PROTOCORE_PN532_MAX_DATA < 1 || PROTOCORE_PN532_MAX_DATA > 254)
67#error "ProtoCore: PROTOCORE_PN532_MAX_DATA must be 1..254"
70#if PROTOCORE_ENABLE_SIGFOX && (PROTOCORE_SIGFOX_MAX_PAYLOAD < 1 || PROTOCORE_SIGFOX_MAX_PAYLOAD > 12)
71#error "ProtoCore: PROTOCORE_SIGFOX_MAX_PAYLOAD must be 1..12"
74#if PROTOCORE_ENABLE_ZWAVE && (PROTOCORE_ZWAVE_MAX_DATA < 1)
75#error "ProtoCore: PROTOCORE_ZWAVE_MAX_DATA must be >= 1"
78#if PROTOCORE_ENABLE_ZIGBEE && (PROTOCORE_ZIGBEE_MAX_DATA < 1)
79#error "ProtoCore: PROTOCORE_ZIGBEE_MAX_DATA must be >= 1"
82#if PROTOCORE_ENABLE_THREAD && (PROTOCORE_THREAD_MAX_DATA < 1)
83#error "ProtoCore: PROTOCORE_THREAD_MAX_DATA must be >= 1"
131#if PROTOCORE_ENABLE_POWER_MGMT && (PROTOCORE_POWER_TEMP_COOL_C >= PROTOCORE_POWER_TEMP_HOT_C)
132#error "ProtoCore: PROTOCORE_POWER_TEMP_COOL_C must be below PROTOCORE_POWER_TEMP_HOT_C (hysteresis)"
135#if PROTOCORE_ENABLE_POWER_MGMT && (PROTOCORE_POWER_MHZ_MIN > PROTOCORE_POWER_MHZ_MAX)
136#error "ProtoCore: PROTOCORE_POWER_MHZ_MIN must not exceed PROTOCORE_POWER_MHZ_MAX"
139#if PROTOCORE_ENABLE_POWER_MGMT && (PROTOCORE_POWER_BUSY_PCT > 100)
140#error "ProtoCore: PROTOCORE_POWER_BUSY_PCT must be 0..100"
143#if PROTOCORE_ENABLE_HOTSWAP && (PROTOCORE_HOTSWAP_FAIL_THRESHOLD < 1 || PROTOCORE_HOTSWAP_FAIL_THRESHOLD > 255)
144#error "ProtoCore: PROTOCORE_HOTSWAP_FAIL_THRESHOLD must be in [1, 255]"
147#if PROTOCORE_ENABLE_FTP_SESSION && (PROTOCORE_FTP_REPLY_BUF < 128)
148#error "ProtoCore: PROTOCORE_FTP_REPLY_BUF must be >= 128 (a multiline greeting needs room)"
151#if PROTOCORE_ENABLE_FTP_SESSION && (PROTOCORE_FTP_CHUNK < 64)
152#error "ProtoCore: PROTOCORE_FTP_CHUNK must be >= 64"
155#if PROTOCORE_ENABLE_EXC_DECODER && (PROTOCORE_EXC_COREDUMP_CHUNK < 64)
156#error "ProtoCore: PROTOCORE_EXC_COREDUMP_CHUNK must be >= 64"
159#if PROTOCORE_ENABLE_HTTP_DELIVERY && (PROTOCORE_DELIVERY_PRECACHE_MAX < 1)
160#error "ProtoCore: PROTOCORE_DELIVERY_PRECACHE_MAX must be >= 1"
162#if PROTOCORE_ENABLE_HTTP_DELIVERY && (PROTOCORE_DELIVERY_MANIFEST_BUF < 64)
163#error "ProtoCore: PROTOCORE_DELIVERY_MANIFEST_BUF must be >= 64"
166#if PROTOCORE_ENABLE_WIFI_SNIFFER && \
167 ((PROTOCORE_WIFI_SNIFFER_MAX_CHANNELS < 1) || (PROTOCORE_WIFI_SNIFFER_MAX_CHANNELS > 14))
168#error "ProtoCore: PROTOCORE_WIFI_SNIFFER_MAX_CHANNELS must be 1..14"
171#if (PROTOCORE_LOG_LEVEL < PROTOCORE_LOG_LEVEL_DEBUG) || (PROTOCORE_LOG_LEVEL > PROTOCORE_LOG_LEVEL_NONE)
172#error "ProtoCore: PROTOCORE_LOG_LEVEL must be one of the PROTOCORE_LOG_LEVEL_* constants"
181#ifndef PROTOCORE_HPACK_BORROW
182#define PROTOCORE_HPACK_BORROW ((size_t)PROTOCORE_HPACK_MAX_ENTRIES * 8 + PROTOCORE_HPACK_TABLE_BYTES + 32)
187#if (PROTOCORE_UDP_RX_RING & (PROTOCORE_UDP_RX_RING - 1)) != 0
188#error "ProtoCore: PROTOCORE_UDP_RX_RING must be a power of two"
193#if PROTOCORE_UDP_RX_RING < (PROTOCORE_UDP_RX_BUF_SIZE + 64)
194#error "ProtoCore: PROTOCORE_UDP_RX_RING must exceed PROTOCORE_UDP_RX_BUF_SIZE by at least one frame header"
206#ifndef PROTOCORE_SSH_MAX_CHANNELS
207#define PROTOCORE_SSH_MAX_CHANNELS 1
209#if PROTOCORE_SSH_MAX_CHANNELS < 1
210#error "ProtoCore: PROTOCORE_SSH_MAX_CHANNELS must be >= 1"
217#ifndef PROTOCORE_WORK_H2_CONN
218#define PROTOCORE_WORK_H2_CONN \
219 ((size_t)MAX_CONNS * ((size_t)PROTOCORE_H2_MAX_FRAME + 2u * (size_t)PROTOCORE_H2_HDR_BLOCK + 16u))
229#ifndef PROTOCORE_H3_CONN_CTX
230#define PROTOCORE_H3_CONN_CTX 672
235#ifndef PROTOCORE_H3_CONN_BORROW
236#define PROTOCORE_H3_CONN_BORROW \
237 ((size_t)PROTOCORE_H3_CONN_CTX + \
238 (size_t)PROTOCORE_H3_MAX_STREAMS * ((size_t)PROTOCORE_H3_STREAM_BUF + PROTOCORE_H3_PATH_LEN + \
239 PROTOCORE_H3_AUTHORITY_LEN + PROTOCORE_H3_METHOD_LEN) + \
240 2u * (size_t)PROTOCORE_H3_STREAM_BUF + (size_t)PROTOCORE_H3_QPACK_SCRATCH + (size_t)PROTOCORE_H3_QPACK_BLOCK)
242#ifndef PROTOCORE_WORK_H3_CONN
243#define PROTOCORE_WORK_H3_CONN ((size_t)PROTOCORE_QUIC_MAX_CONNS * PROTOCORE_H3_CONN_BORROW)
253#ifndef PROTOCORE_QUIC_SERVER_BORROW
254#define PROTOCORE_QUIC_SERVER_BORROW \
255 (96u + (size_t)PROTOCORE_QUIC_MAX_CONNS * 56u + \
256 (size_t)PROTOCORE_QUIC_INGEST_RING * ((size_t)PROTOCORE_QUIC_MAX_DATAGRAM + 24u))
263#ifndef PROTOCORE_QUIC_CONN_BORROW
264#define PROTOCORE_QUIC_CONN_BORROW \
265 (((size_t)PROTOCORE_QUIC_MAX_STREAMS * PROTOCORE_QUIC_STREAM_TX) + 3u * (size_t)PROTOCORE_QUIC_CRYPTO_RX)
267#ifndef PROTOCORE_WORK_QUIC_CONN
268#define PROTOCORE_WORK_QUIC_CONN ((size_t)PROTOCORE_QUIC_MAX_CONNS * PROTOCORE_QUIC_CONN_BORROW)
278#ifndef PROTOCORE_EDGE_PROXY_BORROW
279#define PROTOCORE_EDGE_PROXY_BORROW 28672
287#ifndef PROTOCORE_EUROMAP77_BORROW
288#define PROTOCORE_EUROMAP77_BORROW 16
295#ifndef PROTOCORE_UMATI_BORROW
296#define PROTOCORE_UMATI_BORROW 16
302#ifndef PROTOCORE_ROBOTICS_BORROW
303#define PROTOCORE_ROBOTICS_BORROW 128
309#ifndef PROTOCORE_SIMATIC_BORROW
310#define PROTOCORE_SIMATIC_BORROW 48
317#ifndef PROTOCORE_J1939_BORROW
318#define PROTOCORE_J1939_BORROW 16
325#ifndef PROTOCORE_MODBUS_BORROW
326#define PROTOCORE_MODBUS_BORROW \
327 ((size_t)((PROTOCORE_MODBUS_COILS + 7) / 8) + (size_t)((PROTOCORE_MODBUS_DISCRETE_INPUTS + 7) / 8) + \
328 (size_t)PROTOCORE_MODBUS_HOLDING_REGS * 2u + (size_t)PROTOCORE_MODBUS_INPUT_REGS * 2u + 32u)
334#ifndef PROTOCORE_ESPNOW_BORROW
335#define PROTOCORE_ESPNOW_BORROW ((size_t)PROTOCORE_ESPNOW_MAX_PEERS * 8u + 32u)
340#ifndef PROTOCORE_PROMISC_BORROW
341#define PROTOCORE_PROMISC_BORROW 16
347#ifndef PROTOCORE_WIFI_SNIFFER_BORROW
348#define PROTOCORE_WIFI_SNIFFER_BORROW 256
353#ifndef PROTOCORE_RADIO_POWER_BORROW
354#define PROTOCORE_RADIO_POWER_BORROW 16
361#ifndef PROTOCORE_DNS_SERVER_BORROW
362#define PROTOCORE_DNS_SERVER_BORROW \
363 ((size_t)PROTOCORE_DNS_SERVER_MAX_RECORDS * ((size_t)PROTOCORE_DNS_NAME_MAX + 4u) + \
364 (size_t)PROTOCORE_DNS_NAME_MAX + 96u)
371#ifndef PROTOCORE_FORWARD_BORROW
372#define PROTOCORE_FORWARD_BORROW \
373 ((size_t)PROTOCORE_FWD_MAX_RULES * 24u + \
374 (size_t)PROTOCORE_FWD_MAX_ACL * ((size_t)PROTOCORE_FWD_ACL_PATLEN * 2u + 24u) + \
375 (size_t)PROTOCORE_FWD_MAX_ROUTES * ((size_t)PROTOCORE_FWD_ACL_PATLEN * 2u + 32u) + 128u)
381#ifndef PROTOCORE_LOG_BORROW
382#define PROTOCORE_LOG_BORROW 16u
388#ifndef PROTOCORE_DIFFSERV_BORROW
389#define PROTOCORE_DIFFSERV_BORROW 8u
395#ifndef PROTOCORE_UDP_CLIENT_BORROW
396#define PROTOCORE_UDP_CLIENT_BORROW 16u
404#ifndef PROTOCORE_UDP_LISTENER_BORROW
405#define PROTOCORE_UDP_LISTENER_BORROW \
406 ((size_t)PROTOCORE_MAX_UDP_LISTENERS * ((size_t)PROTOCORE_UDP_RX_RING + 96u) + (size_t)PROTOCORE_UDP_RX_BUF_SIZE + \
414#ifndef PROTOCORE_TCP_LOWER_BORROW
415#define PROTOCORE_TCP_LOWER_BORROW ((size_t)CONN_POOL_SLOTS * 96u + 64u)
423#ifndef PROTOCORE_CONN_POOL_BORROW
424#define PROTOCORE_CONN_POOL_BORROW ((size_t)RX_BUF_SIZE + 512u)
432#ifndef PROTOCORE_TCP_LISTENER_BORROW
433#define PROTOCORE_TCP_LISTENER_BORROW \
434 ((size_t)PROTOCORE_PER_IP_THROTTLE_SLOTS * 32u + (size_t)PROTOCORE_IP_ALLOWLIST_SLOTS * 32u + \
435 (size_t)PROTOCORE_WORKER_COUNT * ((size_t)EVT_QUEUE_DEPTH * 24u + 128u) + 256u)
443#ifndef PROTOCORE_TCP_CLIENT_BORROW
444#define PROTOCORE_TCP_CLIENT_BORROW ((size_t)PROTOCORE_CLIENT_CONNS * ((size_t)PROTOCORE_CLIENT_RX_BUF + 96u) + 64u)
451#ifndef PROTOCORE_HAPPY_EYEBALLS_BORROW
452#define PROTOCORE_HAPPY_EYEBALLS_BORROW 16u
459#ifndef PROTOCORE_PHYSICAL_BORROW
460#define PROTOCORE_PHYSICAL_BORROW ((size_t)PROTOCORE_PHY_MAX_IFACES * 32u + 32u)
487#ifndef PROTOCORE_SHA256_BORROW
488#define PROTOCORE_SHA256_BORROW 256
495#ifndef PROTOCORE_SHA1_BORROW
496#define PROTOCORE_SHA1_BORROW 160
502#ifndef PROTOCORE_SSH_KEXHASH_BORROW
503#define PROTOCORE_SSH_KEXHASH_BORROW (PROTOCORE_SHA512_BORROW + 8)
510#ifndef PROTOCORE_SHA512_BORROW
511#define PROTOCORE_SHA512_BORROW 448
516#ifndef PROTOCORE_SHA384_BORROW
517#define PROTOCORE_SHA384_BORROW 448
523#ifndef PROTOCORE_HMAC_SHA512_BORROW
524#define PROTOCORE_HMAC_SHA512_BORROW (2 * PROTOCORE_SHA512_BORROW + 768)
529#ifndef PROTOCORE_HMAC_SHA384_BORROW
530#define PROTOCORE_HMAC_SHA384_BORROW (2 * PROTOCORE_SHA384_BORROW + 768)
536#ifndef PROTOCORE_HMAC_SHA256_BORROW
537#define PROTOCORE_HMAC_SHA256_BORROW (2 * PROTOCORE_SHA256_BORROW + 384)
542#ifndef PROTOCORE_WORK_BIGNUM_HW
543#define PROTOCORE_WORK_BIGNUM_HW 1328
545#ifndef PROTOCORE_WORK_BIGNUM_SW
546#define PROTOCORE_WORK_BIGNUM_SW 1408
553#ifndef PROTOCORE_AESGCM_BORROW_HW
554#define PROTOCORE_AESGCM_BORROW_HW 416
556#ifndef PROTOCORE_AESGCM_BORROW_SW
557#define PROTOCORE_AESGCM_BORROW_SW 640
559#ifndef PROTOCORE_AESGCM_BORROW
560#if PROTOCORE_HAS_HW_AESGCM
561#define PROTOCORE_AESGCM_BORROW PROTOCORE_AESGCM_BORROW_HW
563#define PROTOCORE_AESGCM_BORROW PROTOCORE_AESGCM_BORROW_SW
566#ifndef PROTOCORE_WORK_AESCCM
567#define PROTOCORE_WORK_AESCCM 448
573#ifndef PROTOCORE_WORK_AES128_HW
574#define PROTOCORE_WORK_AES128_HW 288
576#ifndef PROTOCORE_WORK_AES128_SW
577#define PROTOCORE_WORK_AES128_SW 176
579#ifndef PROTOCORE_WORK_AES128
580#if PROTOCORE_HAS_HW_AESGCM
581#define PROTOCORE_WORK_AES128 PROTOCORE_WORK_AES128_HW
583#define PROTOCORE_WORK_AES128 PROTOCORE_WORK_AES128_SW
590#ifndef PROTOCORE_WORK_AES128GCM_HW
591#define PROTOCORE_WORK_AES128GCM_HW 416
593#ifndef PROTOCORE_WORK_AES128GCM_SW
594#define PROTOCORE_WORK_AES128GCM_SW 576
596#ifndef PROTOCORE_WORK_AES128GCM
597#if PROTOCORE_HAS_HW_AESGCM
598#define PROTOCORE_WORK_AES128GCM PROTOCORE_WORK_AES128GCM_HW
600#define PROTOCORE_WORK_AES128GCM PROTOCORE_WORK_AES128GCM_SW
607#ifndef PROTOCORE_CHACHAPOLY_BORROW
608#define PROTOCORE_CHACHAPOLY_BORROW (64 + PROTOCORE_CHACHA20_BORROW + PROTOCORE_POLY1305_BORROW)
612#ifndef PROTOCORE_CHACHA20_BORROW
613#define PROTOCORE_CHACHA20_BORROW 192
617#ifndef PROTOCORE_AES256CTR_BORROW
618#define PROTOCORE_AES256CTR_BORROW 384
622#ifndef PROTOCORE_POLY1305_BORROW
623#define PROTOCORE_POLY1305_BORROW 96
628#ifndef PROTOCORE_AES_CMAC_BORROW
629#define PROTOCORE_AES_CMAC_BORROW 384
635#ifndef PROTOCORE_MD_BORROW
636#define PROTOCORE_MD_BORROW 448
642#ifndef PROTOCORE_SHA3_BORROW
643#define PROTOCORE_SHA3_BORROW 224
647#ifndef PROTOCORE_KDF_BORROW
648#define PROTOCORE_KDF_BORROW (PROTOCORE_HMAC_SHA256_BORROW + 64)
653#ifndef PROTOCORE_GHASH_BORROW
654#define PROTOCORE_GHASH_BORROW 256
659#ifndef PROTOCORE_BIGNUM_BORROW
660#define PROTOCORE_BIGNUM_BORROW 304
666#ifndef PROTOCORE_AESCCM_BORROW
667#define PROTOCORE_AESCCM_BORROW PROTOCORE_WORK_AESCCM
673#ifndef PROTOCORE_AES128GCM_BORROW
674#define PROTOCORE_AES128GCM_BORROW (PROTOCORE_WORK_AES128GCM + PROTOCORE_WORK_AES128)
682#ifndef PROTOCORE_TLS_RECORD_AEAD_BORROW
683#if PROTOCORE_AES128GCM_BORROW > PROTOCORE_AESGCM_BORROW
684#define PROTOCORE_TLS_RECORD_AEAD_BORROW PROTOCORE_AES128GCM_BORROW
686#define PROTOCORE_TLS_RECORD_AEAD_BORROW PROTOCORE_AESGCM_BORROW
693#ifndef PROTOCORE_CURVE25519_BORROW
694#define PROTOCORE_CURVE25519_BORROW 960
699#ifndef PROTOCORE_ED25519_BORROW
700#define PROTOCORE_ED25519_BORROW (768 + PROTOCORE_SHA512_BORROW)
705#ifndef PROTOCORE_RSA_KEY_BYTES
706#define PROTOCORE_RSA_KEY_BYTES 256
712#ifndef PROTOCORE_RSA_BORROW
713#define PROTOCORE_RSA_BORROW (PROTOCORE_SHA256_BORROW + PROTOCORE_SHA512_BORROW + PROTOCORE_BIGNUM_BORROW + 2432)
717#ifndef PROTOCORE_MLKEM_BORROW
718#define PROTOCORE_MLKEM_BORROW PROTOCORE_SHA3_BORROW
722#ifndef PROTOCORE_SNTRUP761_BORROW
723#define PROTOCORE_SNTRUP761_BORROW PROTOCORE_SHA512_BORROW
729#ifndef PROTOCORE_RNG_BORROW
730#define PROTOCORE_RNG_BORROW (88 + PROTOCORE_CHACHA20_BORROW)
745#ifndef PROTOCORE_WORK_SSH_CONN
746#define PROTOCORE_WORK_SSH_CONN (4u * (size_t)SSH_PKT_BUF_SIZE)
755#ifndef PROTOCORE_TLS_CONN_MSG_CAP
756#define PROTOCORE_TLS_CONN_MSG_CAP 1024
758#ifndef PROTOCORE_TLS_CONN_REC_CAP
759#define PROTOCORE_TLS_CONN_REC_CAP 1024
764#ifndef PROTOCORE_TLS13_SECRET_MAX
765#define PROTOCORE_TLS13_SECRET_MAX 48
770#ifndef PROTOCORE_TLS_CONN_TERMS
771#define PROTOCORE_TLS_CONN_TERMS 5
773#ifndef PROTOCORE_TLS_CONN_TERMS_CAP
774#define PROTOCORE_TLS_CONN_TERMS_CAP ((size_t)PROTOCORE_TLS_CONN_TERMS * PROTOCORE_TLS13_SECRET_MAX)
782#ifndef PROTOCORE_TLS_CONN_STATE_CAP
783#define PROTOCORE_TLS_CONN_STATE_CAP 3872
790#ifndef PROTOCORE_TLS_CONN_PEERKEY_CAP
791#define PROTOCORE_TLS_CONN_PEERKEY_CAP 320
797#ifndef PROTOCORE_TLS13_KS_TERMS
798#define PROTOCORE_TLS13_KS_TERMS 12
803#ifndef PROTOCORE_TLS13_KS_BORROW
804#define PROTOCORE_TLS13_KS_BORROW \
805 ((size_t)PROTOCORE_TLS13_KS_TERMS * PROTOCORE_TLS13_SECRET_MAX + PROTOCORE_HKDF_SHA384_BORROW)
810#ifndef PROTOCORE_TLS13_TRANSCRIPT_BORROW
811#if PROTOCORE_SHA384_BORROW > PROTOCORE_SHA256_BORROW
812#define PROTOCORE_TLS13_TRANSCRIPT_BORROW PROTOCORE_SHA384_BORROW
814#define PROTOCORE_TLS13_TRANSCRIPT_BORROW PROTOCORE_SHA256_BORROW
817#ifndef PROTOCORE_WORK_TLS_CONN
818#define PROTOCORE_WORK_TLS_CONN \
819 ((size_t)MAX_TLS_CONNS * \
820 ((size_t)PROTOCORE_TLS_CONN_MSG_CAP + (size_t)PROTOCORE_TLS_CONN_REC_CAP + (size_t)PROTOCORE_TLS_CONN_TERMS_CAP + \
821 (size_t)PROTOCORE_TLS_CONN_STATE_CAP + (size_t)PROTOCORE_TLS_CONN_PEERKEY_CAP))
844#ifndef PROTOCORE_SSE_BORROW
845#define PROTOCORE_SSE_BORROW (MAX_ROUTES * 8 + SSE_BUF_SIZE + 32)
851#ifndef PROTOCORE_WS_BORROW
852#define PROTOCORE_WS_BORROW (MAX_ROUTES * 24 + RX_BUF_SIZE + 32)
858#ifndef PROTOCORE_CSRF_BORROW
859#define PROTOCORE_CSRF_BORROW (64 + PROTOCORE_HMAC_SHA256_BORROW)
865#ifndef PROTOCORE_AUTH_LOCKOUT_BORROW
866#define PROTOCORE_AUTH_LOCKOUT_BORROW ((size_t)PROTOCORE_AUTH_LOCKOUT_SLOTS * 48u)
872#ifndef PROTOCORE_FORWARDED_TRUST_BORROW
873#define PROTOCORE_FORWARDED_TRUST_BORROW ((size_t)PROTOCORE_TRUSTED_PROXY_MAX * 32u)
879#ifndef PROTOCORE_AUDIT_LOG_BORROW
880#define PROTOCORE_AUDIT_LOG_BORROW \
881 ((size_t)PROTOCORE_AUDIT_LOG_ENTRIES * (PROTOCORE_AUDIT_MSG_LEN + PROTOCORE_AUDIT_HASH_LEN + 64u) + 128u)
886#ifndef PROTOCORE_WEB_TERMINAL_BORROW
887#define PROTOCORE_WEB_TERMINAL_BORROW (MAX_PATH_LEN + MAX_WS_CONNS + 32u)
892#ifndef PROTOCORE_CONFIG_STORE_BORROW
893#define PROTOCORE_CONFIG_STORE_BORROW (PROTOCORE_CONFIG_KEY_MAX + 32u)
900#ifndef PROTOCORE_RELAY_LISTENER_BORROW
901#define PROTOCORE_RELAY_LISTENER_BORROW \
902 ((size_t)PROTOCORE_RELAY_MAX_PUBLISH * (PROTOCORE_RELAY_HOST_MAX + 16u) + \
903 (size_t)PROTOCORE_RELAY_MAX_CONNS * (2u * PROTOCORE_RELAY_BUF + 128u) + 64u)
910#ifndef PROTOCORE_GATEWAY_BORROW
911#define PROTOCORE_GATEWAY_BORROW ((size_t)PROTOCORE_GW_MAX_PORTS * 32u + 128u)
918#ifndef PROTOCORE_IFACE_BRIDGE_BORROW
919#define PROTOCORE_IFACE_BRIDGE_BORROW ((size_t)PROTOCORE_BRIDGE_MAX_RULES * 64u + 64u)
926#ifndef PROTOCORE_IFACE_BRIDGE_HW_BORROW
927#define PROTOCORE_IFACE_BRIDGE_HW_BORROW \
928 ((size_t)PROTOCORE_BRIDGE_MAX_RULES * 16u + PROTOCORE_BRIDGE_STREAM_CHUNK + 64u)
938#ifndef PROTOCORE_WEBDAV_BORROW
939#define PROTOCORE_WEBDAV_BORROW 4096
946#ifndef PROTOCORE_PROVISIONING_BORROW
947#define PROTOCORE_PROVISIONING_BORROW 32
956#ifndef PROTOCORE_HOTSWAP_BORROW
957#define PROTOCORE_HOTSWAP_BORROW 128
966#ifndef PROTOCORE_SMBUS_BORROW
967#define PROTOCORE_SMBUS_BORROW 64
975#ifndef PROTOCORE_MPR121_BORROW
976#define PROTOCORE_MPR121_BORROW 128
984#ifndef PROTOCORE_HMMD_BORROW
985#define PROTOCORE_HMMD_BORROW 256
993#ifndef PROTOCORE_LD2410_BORROW
994#define PROTOCORE_LD2410_BORROW 320
1001#ifndef PROTOCORE_DASHBOARD_BORROW
1002#define PROTOCORE_DASHBOARD_BORROW ((size_t)PROTOCORE_DASHBOARD_MAX_WIDGETS * 4u + 2u * MAX_PATH_LEN + 64u)
1009#ifndef PROTOCORE_I2C_DEVICE_BORROW
1010#define PROTOCORE_I2C_DEVICE_BORROW 32
1016#ifndef PROTOCORE_BUS_CAPTURE_BORROW
1017#define PROTOCORE_BUS_CAPTURE_BORROW 32u
1027#ifndef PROTOCORE_QUIC_CONN_CTX_BORROW
1028#define PROTOCORE_QUIC_CONN_CTX_BORROW 13952
1031#ifndef PROTOCORE_SECURE_ARENA_SIZE
1036#if PROTOCORE_HAS_HW_BIGNUM
1037#define PROTOCORE_SECURE_WORK_BIGNUM PROTOCORE_WORK_BIGNUM_HW
1039#define PROTOCORE_SECURE_WORK_BIGNUM (PROTOCORE_WORK_BIGNUM_SW + PROTOCORE_WORK_SSH_HOST_KEY)
1043#if PROTOCORE_ENABLE_SSH || PROTOCORE_ENABLE_SSH_CLIENT || PROTOCORE_ENABLE_TLS || PROTOCORE_ENABLE_HTTP3 || \
1044 PROTOCORE_ENABLE_DTLS
1045#define PROTOCORE_SECURE_WORK_AEAD \
1046 (PROTOCORE_AESGCM_BORROW + PROTOCORE_CHACHAPOLY_BORROW + PROTOCORE_CHACHA20_BORROW + PROTOCORE_POLY1305_BORROW)
1048#define PROTOCORE_SECURE_WORK_AEAD 0
1056#ifndef PROTOCORE_SMB_CLIENT_BORROW
1057#define PROTOCORE_SMB_CLIENT_BORROW \
1058 (2u * PROTOCORE_SMB_BUF + 5u * (PROTOCORE_SMB_BUF / 2) + PROTOCORE_CRYPTO_BORROW_MAX)
1061#if PROTOCORE_ENABLE_SMB
1062#define PROTOCORE_SECURE_WORK_SMBCLIENT PROTOCORE_SMB_CLIENT_BORROW
1064#define PROTOCORE_SECURE_WORK_SMBCLIENT 0
1067#if PROTOCORE_ENABLE_SMB
1068#define PROTOCORE_SECURE_WORK_SMB \
1069 (PROTOCORE_WORK_AESCCM + PROTOCORE_WORK_AES128GCM + PROTOCORE_MD_BORROW + PROTOCORE_KDF_BORROW)
1071#define PROTOCORE_SECURE_WORK_SMB 0
1074#if PROTOCORE_ENABLE_SSH || PROTOCORE_ENABLE_SSH_CLIENT
1075#define PROTOCORE_SECURE_WORK_SSHCIPHER PROTOCORE_AES256CTR_BORROW
1076#define PROTOCORE_SECURE_WORK_SSHCONN PROTOCORE_WORK_SSH_CONN
1078#define PROTOCORE_SECURE_WORK_SSHCIPHER 0
1079#define PROTOCORE_SECURE_WORK_SSHCONN 0
1086#ifndef PROTOCORE_SSH_CLIENT_BORROW
1087#if PROTOCORE_ENABLE_PQC_KEX
1088#define PROTOCORE_SSH_CLIENT_BORROW 2816u
1089#elif PROTOCORE_ENABLE_SSH_SNTRUP761
1090#define PROTOCORE_SSH_CLIENT_BORROW 2176u
1092#define PROTOCORE_SSH_CLIENT_BORROW 384u
1096#if PROTOCORE_ENABLE_SSH_CLIENT
1097#define PROTOCORE_SECURE_WORK_SSHCLIENT PROTOCORE_SSH_CLIENT_BORROW
1099#define PROTOCORE_SECURE_WORK_SSHCLIENT 0
1106#if PROTOCORE_ENABLE_SSH || PROTOCORE_ENABLE_SSH_CLIENT
1107#define PROTOCORE_SECURE_WORK_SSHSLOTS PROTOCORE_SSH_BORROW
1109#define PROTOCORE_SECURE_WORK_SSHSLOTS 0
1115#ifndef PROTOCORE_SSH_RSA_BORROW
1116#define PROTOCORE_SSH_RSA_BORROW 64u
1119#if PROTOCORE_ENABLE_SSH || PROTOCORE_ENABLE_SSH_CLIENT
1120#define PROTOCORE_SECURE_WORK_SSHRSA PROTOCORE_SSH_RSA_BORROW
1122#define PROTOCORE_SECURE_WORK_SSHRSA 0
1129#ifndef PROTOCORE_SSH_CONNECTION_BORROW
1130#define PROTOCORE_SSH_CONNECTION_BORROW ((size_t)PROTOCORE_SSH_RFWD_MAX * (PROTOCORE_SSH_FWD_HOST_MAX + 16u) + 128u)
1133#if PROTOCORE_ENABLE_SSH || PROTOCORE_ENABLE_SSH_CLIENT
1134#define PROTOCORE_SECURE_WORK_SSHCONNECTION PROTOCORE_SSH_CONNECTION_BORROW
1136#define PROTOCORE_SECURE_WORK_SSHCONNECTION 0
1144#ifndef PROTOCORE_SSH_AUTH_BORROW
1145#define PROTOCORE_SSH_AUTH_BORROW ((size_t)MAX_SSH_CONNS * 160u + 32u)
1148#if PROTOCORE_ENABLE_SSH || PROTOCORE_ENABLE_SSH_CLIENT
1149#define PROTOCORE_SECURE_WORK_SSHAUTH PROTOCORE_SSH_AUTH_BORROW
1151#define PROTOCORE_SECURE_WORK_SSHAUTH 0
1157#ifndef PROTOCORE_SSH_TRANSPORT_BORROW
1158#define PROTOCORE_SSH_TRANSPORT_BORROW 192u
1161#if PROTOCORE_ENABLE_SSH || PROTOCORE_ENABLE_SSH_CLIENT
1162#define PROTOCORE_SECURE_WORK_SSHTRANSPORT PROTOCORE_SSH_TRANSPORT_BORROW
1164#define PROTOCORE_SECURE_WORK_SSHTRANSPORT 0
1167#if PROTOCORE_ENABLE_AUTH
1168#define PROTOCORE_SECURE_WORK_AUTH PROTOCORE_HTTP_AUTH_BORROW
1170#define PROTOCORE_SECURE_WORK_AUTH 0
1173#if PROTOCORE_ENABLE_SSE
1174#define PROTOCORE_SECURE_WORK_SSE PROTOCORE_SSE_BORROW
1176#define PROTOCORE_SECURE_WORK_SSE 0
1185#ifndef PROTOCORE_H2_CONN_RECORD
1186#define PROTOCORE_H2_CONN_RECORD 32768
1191#if PROTOCORE_ENABLE_HTTP2 && PROTOCORE_ENABLE_TLS
1192#define PROTOCORE_SECURE_WORK_H2_SERVER \
1193 (PROTOCORE_H2_SERVER_BORROW + \
1194 (size_t)MAX_CONNS * (PROTOCORE_H2_CONN_RECORD + PROTOCORE_H2_MAX_FRAME + 2 * PROTOCORE_H2_HDR_BLOCK + 16))
1196#define PROTOCORE_SECURE_WORK_H2_SERVER 0
1199#if PROTOCORE_ENABLE_WEBSOCKET
1200#define PROTOCORE_SECURE_WORK_WS PROTOCORE_WS_BORROW
1202#define PROTOCORE_SECURE_WORK_WS 0
1205#if PROTOCORE_ENABLE_CSRF
1206#define PROTOCORE_SECURE_WORK_CSRF PROTOCORE_CSRF_BORROW
1208#define PROTOCORE_SECURE_WORK_CSRF 0
1211#if PROTOCORE_ENABLE_AUTH_LOCKOUT
1212#define PROTOCORE_SECURE_WORK_LOCKOUT PROTOCORE_AUTH_LOCKOUT_BORROW
1214#define PROTOCORE_SECURE_WORK_LOCKOUT 0
1217#if PROTOCORE_ENABLE_FORWARDED_TRUST
1218#define PROTOCORE_SECURE_WORK_FWDTRUST PROTOCORE_FORWARDED_TRUST_BORROW
1220#define PROTOCORE_SECURE_WORK_FWDTRUST 0
1223#if PROTOCORE_ENABLE_AUDIT_LOG
1224#define PROTOCORE_SECURE_WORK_AUDIT PROTOCORE_AUDIT_LOG_BORROW
1226#define PROTOCORE_SECURE_WORK_AUDIT 0
1229#if PROTOCORE_ENABLE_WEB_TERMINAL
1230#define PROTOCORE_SECURE_WORK_WEBTERM PROTOCORE_WEB_TERMINAL_BORROW
1232#define PROTOCORE_SECURE_WORK_WEBTERM 0
1235#if PROTOCORE_ENABLE_CONFIG_STORE
1236#define PROTOCORE_SECURE_WORK_CFGSTORE PROTOCORE_CONFIG_STORE_BORROW
1238#define PROTOCORE_SECURE_WORK_CFGSTORE 0
1241#if PROTOCORE_ENABLE_RELAY
1242#define PROTOCORE_SECURE_WORK_RELAYLISTEN PROTOCORE_RELAY_LISTENER_BORROW
1244#define PROTOCORE_SECURE_WORK_RELAYLISTEN 0
1247#if PROTOCORE_ENABLE_GATEWAY
1248#define PROTOCORE_SECURE_WORK_GATEWAY PROTOCORE_GATEWAY_BORROW
1250#define PROTOCORE_SECURE_WORK_GATEWAY 0
1253#if PROTOCORE_ENABLE_IFACE_BRIDGE
1254#define PROTOCORE_SECURE_WORK_IFACEBRIDGE PROTOCORE_IFACE_BRIDGE_BORROW
1256#define PROTOCORE_SECURE_WORK_IFACEBRIDGE 0
1259#if PROTOCORE_ENABLE_IFACE_BRIDGE
1260#define PROTOCORE_SECURE_WORK_IFACEBRIDGEHW PROTOCORE_IFACE_BRIDGE_HW_BORROW
1262#define PROTOCORE_SECURE_WORK_IFACEBRIDGEHW 0
1265#if PROTOCORE_ENABLE_WEBDAV
1266#define PROTOCORE_SECURE_WORK_WEBDAV PROTOCORE_WEBDAV_BORROW
1268#define PROTOCORE_SECURE_WORK_WEBDAV 0
1271#if PROTOCORE_ENABLE_PROVISIONING
1272#define PROTOCORE_SECURE_WORK_PROVISIONING PROTOCORE_PROVISIONING_BORROW
1274#define PROTOCORE_SECURE_WORK_PROVISIONING 0
1277#if PROTOCORE_ENABLE_HOTSWAP
1278#define PROTOCORE_SECURE_WORK_HOTSWAP PROTOCORE_HOTSWAP_BORROW
1280#define PROTOCORE_SECURE_WORK_HOTSWAP 0
1283#if PROTOCORE_ENABLE_SMBUS
1284#define PROTOCORE_SECURE_WORK_SMBUS PROTOCORE_SMBUS_BORROW
1286#define PROTOCORE_SECURE_WORK_SMBUS 0
1289#if PROTOCORE_ENABLE_MPR121
1290#define PROTOCORE_SECURE_WORK_MPR121 PROTOCORE_MPR121_BORROW
1292#define PROTOCORE_SECURE_WORK_MPR121 0
1295#if PROTOCORE_ENABLE_HMMD
1296#define PROTOCORE_SECURE_WORK_HMMD PROTOCORE_HMMD_BORROW
1298#define PROTOCORE_SECURE_WORK_HMMD 0
1301#if PROTOCORE_ENABLE_LD2410
1302#define PROTOCORE_SECURE_WORK_LD2410 PROTOCORE_LD2410_BORROW
1304#define PROTOCORE_SECURE_WORK_LD2410 0
1307#if PROTOCORE_ENABLE_DASHBOARD
1308#define PROTOCORE_SECURE_WORK_DASHBOARD PROTOCORE_DASHBOARD_BORROW
1310#define PROTOCORE_SECURE_WORK_DASHBOARD 0
1313#if PROTOCORE_ENABLE_ADS1115
1314#define PROTOCORE_SECURE_WORK_ADS1115 PROTOCORE_I2C_DEVICE_BORROW
1316#define PROTOCORE_SECURE_WORK_ADS1115 0
1319#if PROTOCORE_ENABLE_INA219
1320#define PROTOCORE_SECURE_WORK_INA219 PROTOCORE_I2C_DEVICE_BORROW
1322#define PROTOCORE_SECURE_WORK_INA219 0
1325#if PROTOCORE_ENABLE_PCA9685
1326#define PROTOCORE_SECURE_WORK_PCA9685 PROTOCORE_I2C_DEVICE_BORROW
1328#define PROTOCORE_SECURE_WORK_PCA9685 0
1331#if PROTOCORE_ENABLE_FDC2214
1332#define PROTOCORE_SECURE_WORK_FDC2214 PROTOCORE_I2C_DEVICE_BORROW
1334#define PROTOCORE_SECURE_WORK_FDC2214 0
1337#if PROTOCORE_ENABLE_LDC1614
1338#define PROTOCORE_SECURE_WORK_LDC1614 PROTOCORE_I2C_DEVICE_BORROW
1340#define PROTOCORE_SECURE_WORK_LDC1614 0
1343#if PROTOCORE_ENABLE_VL53L0X
1344#define PROTOCORE_SECURE_WORK_VL53L0X PROTOCORE_I2C_DEVICE_BORROW
1346#define PROTOCORE_SECURE_WORK_VL53L0X 0
1349#if PROTOCORE_ENABLE_RTC
1350#define PROTOCORE_SECURE_WORK_RTC PROTOCORE_I2C_DEVICE_BORROW
1352#define PROTOCORE_SECURE_WORK_RTC 0
1355#if PROTOCORE_ENABLE_SHT3X
1356#define PROTOCORE_SECURE_WORK_SHT3X PROTOCORE_I2C_DEVICE_BORROW
1358#define PROTOCORE_SECURE_WORK_SHT3X 0
1361#if PROTOCORE_ENABLE_BUS_CAPTURE
1362#define PROTOCORE_SECURE_WORK_BUSCAPTURE PROTOCORE_BUS_CAPTURE_BORROW
1364#define PROTOCORE_SECURE_WORK_BUSCAPTURE 0
1367#if PROTOCORE_ENABLE_TLS
1368#define PROTOCORE_SECURE_WORK_TLSCONN PROTOCORE_WORK_TLS_CONN
1370#define PROTOCORE_SECURE_WORK_TLSCONN 0
1375#if PROTOCORE_ENABLE_HTTP3
1376#define PROTOCORE_SECURE_WORK_QUICCONN ((size_t)PROTOCORE_QUIC_MAX_CONNS * PROTOCORE_QUIC_CONN_CTX_BORROW)
1378#define PROTOCORE_SECURE_WORK_QUICCONN 0
1381#if PROTOCORE_ENABLE_SHA1
1382#define PROTOCORE_SECURE_WORK_SHA1 PROTOCORE_SHA1_BORROW
1384#define PROTOCORE_SECURE_WORK_SHA1 0
1387#if PROTOCORE_ENABLE_SHA3
1388#define PROTOCORE_SECURE_WORK_SHA3 PROTOCORE_SHA3_BORROW
1390#define PROTOCORE_SECURE_WORK_SHA3 0
1393#if PROTOCORE_ENABLE_SHA256
1394#define PROTOCORE_SECURE_WORK_SHA256 PROTOCORE_SHA256_BORROW
1396#define PROTOCORE_SECURE_WORK_SHA256 0
1399#if PROTOCORE_ENABLE_CURVE25519
1400#define PROTOCORE_SECURE_WORK_CURVE25519 PROTOCORE_CURVE25519_BORROW
1402#define PROTOCORE_SECURE_WORK_CURVE25519 0
1405#if PROTOCORE_ENABLE_ED25519
1406#define PROTOCORE_SECURE_WORK_ED25519 PROTOCORE_ED25519_BORROW
1408#define PROTOCORE_SECURE_WORK_ED25519 0
1411#if PROTOCORE_ENABLE_ECDSA
1412#define PROTOCORE_SECURE_WORK_ECDSA PROTOCORE_ECDSA_BORROW
1414#define PROTOCORE_SECURE_WORK_ECDSA 0
1417#if PROTOCORE_ENABLE_RSA
1418#define PROTOCORE_SECURE_WORK_RSA PROTOCORE_RSA_BORROW
1420#define PROTOCORE_SECURE_WORK_RSA 0
1423#if PROTOCORE_ENABLE_MLKEM
1424#define PROTOCORE_SECURE_WORK_MLKEM PROTOCORE_MLKEM_BORROW
1426#define PROTOCORE_SECURE_WORK_MLKEM 0
1429#if PROTOCORE_ENABLE_SNTRUP761
1430#define PROTOCORE_SECURE_WORK_SNTRUP761 PROTOCORE_SNTRUP761_BORROW
1432#define PROTOCORE_SECURE_WORK_SNTRUP761 0
1437#if PROTOCORE_ENABLE_AES128GCM
1438#define PROTOCORE_SECURE_WORK_AES128GCM PROTOCORE_AES128GCM_BORROW
1440#define PROTOCORE_SECURE_WORK_AES128GCM 0
1444#if PROTOCORE_ENABLE_RNG
1445#define PROTOCORE_SECURE_WORK_RNG PROTOCORE_RNG_BORROW
1447#define PROTOCORE_SECURE_WORK_RNG 0
1456#ifndef PROTOCORE_DNS_RESOLVER_BORROW
1457#define PROTOCORE_DNS_RESOLVER_BORROW 192u
1460#if PROTOCORE_ENABLE_DNS_RESOLVER
1461#define PROTOCORE_SECURE_WORK_DNSRESOLVER PROTOCORE_DNS_RESOLVER_BORROW
1463#define PROTOCORE_SECURE_WORK_DNSRESOLVER 0
1468#ifndef PROTOCORE_TLS_SEAM_OUT_CAP
1469#define PROTOCORE_TLS_SEAM_OUT_CAP 2048
1479#ifndef PROTOCORE_TLS_BORROW
1480#define PROTOCORE_TLS_BORROW ((size_t)MAX_CONNS * 3584u + (size_t)PROTOCORE_TLS_SEAM_OUT_CAP + 128u)
1483#if PROTOCORE_ENABLE_TLS
1484#define PROTOCORE_SECURE_WORK_TLSSEAM PROTOCORE_TLS_BORROW
1486#define PROTOCORE_SECURE_WORK_TLSSEAM 0
1493#ifndef PROTOCORE_X509_VERIFY_BORROW
1494#define PROTOCORE_X509_VERIFY_BORROW ((size_t)PROTOCORE_RSA_KEY_BYTES + 8u + PROTOCORE_RSA_BORROW)
1500#if PROTOCORE_ENABLE_X509 || PROTOCORE_ENABLE_TLS
1501#define PROTOCORE_SECURE_WORK_X509VERIFY PROTOCORE_X509_VERIFY_BORROW
1503#define PROTOCORE_SECURE_WORK_X509VERIFY 0
1506#define PROTOCORE_SECURE_ARENA_SIZE \
1507 (PROTOCORE_SECURE_WORK_BIGNUM + PROTOCORE_SECURE_WORK_AEAD + PROTOCORE_SECURE_WORK_SMB + \
1508 PROTOCORE_SECURE_WORK_SSHCIPHER + PROTOCORE_SECURE_WORK_SSHCONN + PROTOCORE_SECURE_WORK_TLSCONN + \
1509 PROTOCORE_SECURE_WORK_SHA1 + PROTOCORE_SECURE_WORK_SHA3 + PROTOCORE_SECURE_WORK_SHA256 + \
1510 PROTOCORE_SECURE_WORK_CURVE25519 + PROTOCORE_SECURE_WORK_ED25519 + PROTOCORE_SECURE_WORK_ECDSA + \
1511 PROTOCORE_SECURE_WORK_RSA + PROTOCORE_SECURE_WORK_MLKEM + PROTOCORE_SECURE_WORK_SNTRUP761 + \
1512 PROTOCORE_SECURE_WORK_AES128GCM + PROTOCORE_SECURE_WORK_ROUTETABLE + PROTOCORE_SECURE_WORK_AUTH + \
1513 PROTOCORE_SECURE_WORK_RNG + PROTOCORE_SECURE_WORK_QUICCONN + PROTOCORE_SECURE_WORK_WS + \
1514 PROTOCORE_SECURE_WORK_SSE + PROTOCORE_SECURE_WORK_H2_SERVER + PROTOCORE_SECURE_WORK_CSRF + \
1515 PROTOCORE_SECURE_WORK_LOCKOUT + PROTOCORE_SECURE_WORK_FWDTRUST + PROTOCORE_SECURE_WORK_AUDIT + \
1516 PROTOCORE_SECURE_WORK_WEBTERM + PROTOCORE_SECURE_WORK_CFGSTORE + PROTOCORE_SECURE_WORK_RELAYLISTEN + \
1517 PROTOCORE_SECURE_WORK_GATEWAY + PROTOCORE_SECURE_WORK_IFACEBRIDGE + PROTOCORE_SECURE_WORK_IFACEBRIDGEHW + \
1518 PROTOCORE_SECURE_WORK_BUSCAPTURE + PROTOCORE_SECURE_WORK_HMMD + PROTOCORE_SECURE_WORK_LD2410 + \
1519 PROTOCORE_SECURE_WORK_DASHBOARD + PROTOCORE_SECURE_WORK_ADS1115 + PROTOCORE_SECURE_WORK_RTC + \
1520 PROTOCORE_SECURE_WORK_SHT3X + PROTOCORE_SECURE_WORK_INA219 + PROTOCORE_SECURE_WORK_PCA9685 + \
1521 PROTOCORE_SECURE_WORK_MPR121 + PROTOCORE_SECURE_WORK_FDC2214 + PROTOCORE_SECURE_WORK_LDC1614 + \
1522 PROTOCORE_SECURE_WORK_VL53L0X + PROTOCORE_SECURE_WORK_SMBUS + PROTOCORE_SECURE_WORK_HOTSWAP + \
1523 PROTOCORE_SECURE_WORK_PROVISIONING + PROTOCORE_SECURE_WORK_WEBDAV + PROTOCORE_SECURE_WORK_DNSRESOLVER + \
1524 PROTOCORE_SECURE_WORK_TLSSEAM + PROTOCORE_SECURE_WORK_X509VERIFY + PROTOCORE_SECURE_WORK_COAPSSERVER + \
1525 PROTOCORE_SECURE_WORK_MQTT + PROTOCORE_SECURE_WORK_SNMPNOTIFY + PROTOCORE_SECURE_WORK_HTTPCLIENT + \
1526 PROTOCORE_SECURE_WORK_SMTP + PROTOCORE_SECURE_WORK_WSCLIENT + PROTOCORE_SECURE_WORK_SNMPV3 + \
1527 PROTOCORE_SECURE_WORK_SNMPAGENT + PROTOCORE_SECURE_WORK_OAUTH2 + PROTOCORE_SECURE_WORK_SSHCLIENT + \
1528 PROTOCORE_SECURE_WORK_SSHTRANSPORT + PROTOCORE_SECURE_WORK_SSHAUTH + PROTOCORE_SECURE_WORK_SSHCONNECTION + \
1529 PROTOCORE_SECURE_WORK_SSHRSA + PROTOCORE_SECURE_WORK_SSHSLOTS + PROTOCORE_SECURE_WORK_SMBCLIENT + \
1536static_assert(
sizeof(
ProtoConn) == 1,
"ProtoConn must stay one byte: it is a per-slot struct member");
1537static_assert(
sizeof(
protocore_if_kind) == 1,
"protocore_if_kind must stay one byte: it is a per-slot struct member");
1545#if EVT_QUEUE_DEPTH < MAX_CONNS * 4
1546#error "ProtoCore: EVT_QUEUE_DEPTH must be >= MAX_CONNS * 4 to absorb event bursts without blocking lwIP"
1550#error "ProtoCore: MAX_CONNS must be >= 1"
1554#error "ProtoCore: MAX_CONNS must be <= 255 (slot IDs are uint8_t)"
1557#if PROTOCORE_ENABLE_WEBSOCKET && PROTOCORE_ENABLE_SSE
1558#if MAX_WS_CONNS + MAX_SSE_CONNS > MAX_CONNS
1559#error "ProtoCore: MAX_WS_CONNS + MAX_SSE_CONNS must not exceed MAX_CONNS"
1561#elif PROTOCORE_ENABLE_WEBSOCKET
1562#if MAX_WS_CONNS > MAX_CONNS
1563#error "ProtoCore: MAX_WS_CONNS must not exceed MAX_CONNS"
1565#elif PROTOCORE_ENABLE_SSE
1566#if MAX_SSE_CONNS > MAX_CONNS
1567#error "ProtoCore: MAX_SSE_CONNS must not exceed MAX_CONNS"
1571#if BODY_BUF_SIZE < 1
1572#error "ProtoCore: BODY_BUF_SIZE must be >= 1"
1575#if BODY_BUF_SIZE > RX_BUF_SIZE
1576#error "ProtoCore: BODY_BUF_SIZE must not exceed RX_BUF_SIZE (parser reads from the ring buffer)"
1579#if PROTOCORE_ENABLE_FILE_SERVING && FILE_CHUNK_SIZE > RX_BUF_SIZE
1580#error "ProtoCore: FILE_CHUNK_SIZE must not exceed RX_BUF_SIZE"
1584#error "ProtoCore: MAX_KEY_LEN must be >= 4 (minimum valid HTTP header name length)"
1588#error "ProtoCore: MAX_VAL_LEN must be >= 1"
1592#error "ProtoCore: MAX_PATH_LEN must be >= 2 (minimum: \"/\")"
1596#error "ProtoCore: MAX_ROUTES must be >= 1"
1599#if MAX_MIDDLEWARE < 1
1600#error "ProtoCore: MAX_MIDDLEWARE must be >= 1"
1603#if CHUNK_BUF_SIZE < 16
1604#error "ProtoCore: CHUNK_BUF_SIZE must be >= 16"
1607#if JSON_MAX_DEPTH < 1
1608#error "ProtoCore: JSON_MAX_DEPTH must be >= 1"
1611#if RE_MAX_STEPS < 64
1612#error "ProtoCore: RE_MAX_STEPS must be >= 64"
1618#if PROTOCORE_ENABLE_OIDC && !PROTOCORE_ENABLE_SSH && (PROTOCORE_WORKER_TASK_STACK < PROTOCORE_WORKER_STACK_RSA_MIN)
1620 "ProtoCore: PROTOCORE_WORKER_TASK_STACK is below PROTOCORE_WORKER_STACK_RSA_MIN; RSA-2048 verification (OIDC) needs ~7 KB of worker stack - raise PROTOCORE_WORKER_TASK_STACK (>= 8192) or marshal RSA verifies onto a dedicated larger-stack task"
1627#if (PROTOCORE_ENABLE_SSH || PROTOCORE_ENABLE_SSH_CLIENT || PROTOCORE_ENABLE_HTTP3) && \
1628 (PROTOCORE_WORKER_TASK_STACK < PROTOCORE_WORKER_STACK_CURVE_MIN)
1630 "ProtoCore: PROTOCORE_WORKER_TASK_STACK is below PROTOCORE_WORKER_STACK_CURVE_MIN; SSH (server or reverse-SSH client) and HTTP/3 (QUIC TLS-1.3) curve25519/ed25519 need ~10.5 KB of worker stack - raise PROTOCORE_WORKER_TASK_STACK (>= 12288) or marshal the handshake onto a dedicated larger-stack task"
1636#ifndef PROTOCORE_WORKER_STACK_PQC_MIN
1637#define PROTOCORE_WORKER_STACK_PQC_MIN 16384
1639#if PROTOCORE_ENABLE_PQC_KEX && !PROTOCORE_ENABLE_SSH_SNTRUP761 && \
1640 (PROTOCORE_ENABLE_SSH || PROTOCORE_ENABLE_SSH_CLIENT || PROTOCORE_ENABLE_HTTP3) && \
1641 (PROTOCORE_WORKER_TASK_STACK < PROTOCORE_WORKER_STACK_PQC_MIN)
1643 "ProtoCore: PROTOCORE_WORKER_TASK_STACK is below PROTOCORE_WORKER_STACK_PQC_MIN; the ML-KEM-768 hybrid KEX (PROTOCORE_ENABLE_PQC_KEX) needs ~7 KB more worker stack - raise PROTOCORE_WORKER_TASK_STACK (>= 16384) or marshal the handshake onto a dedicated larger-stack task"
1649#ifndef PROTOCORE_WORKER_STACK_SNTRUP_MIN
1650#if defined(PROTOCORE_ENABLE_SSH_CLIENT) && PROTOCORE_ENABLE_SSH_CLIENT
1651#define PROTOCORE_WORKER_STACK_SNTRUP_MIN 40960
1653#define PROTOCORE_WORKER_STACK_SNTRUP_MIN 32768
1659#if PROTOCORE_ENABLE_SSH_SNTRUP761 && (PROTOCORE_ENABLE_SSH || PROTOCORE_ENABLE_SSH_CLIENT) && \
1660 (PROTOCORE_WORKER_TASK_STACK < PROTOCORE_WORKER_STACK_SNTRUP_MIN)
1662 "ProtoCore: PROTOCORE_WORKER_TASK_STACK is below PROTOCORE_WORKER_STACK_SNTRUP_MIN; sntrup761x25519-sha512 needs ~32 KB worker stack for the server Encaps and ~40 KB for the reverse-SSH client KeyGen+Decaps - raise PROTOCORE_WORKER_TASK_STACK (>= 32768 server / 40960 client), set PROTOCORE_ENABLE_SSH_SNTRUP761 0 to keep ML-KEM only, or marshal the handshake onto a dedicated larger-stack task"
1665#if PROTOCORE_ENABLE_TLS
1666#if MAX_TLS_CONNS < 1 || MAX_TLS_CONNS > MAX_CONNS
1667#error "ProtoCore: MAX_TLS_CONNS must be between 1 and MAX_CONNS"
1669#if PROTOCORE_TLS_ARENA_SIZE < 8192
1670#error "ProtoCore: PROTOCORE_TLS_ARENA_SIZE is far too small for a TLS handshake"
1677#if PROTOCORE_HAS_BOUNDED_DRAM && (MAX_TLS_CONNS > 1) && !PROTOCORE_TLS_ARENA_IN_PSRAM && \
1678 !PROTOCORE_TLS_ACK_MULTI_CONN_DRAM
1680 "ProtoCore: 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 PROTOCORE_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 + PROTOCORE_TLS_MAX_FRAG_LEN), OR reclaim internal DRAM; then set PROTOCORE_TLS_ACK_MULTI_CONN_DRAM=1 to confirm."
1686#if PROTOCORE_ENABLE_HTTP2 && PROTOCORE_HAS_BOUNDED_DRAM && !PROTOCORE_H2_POOL_IN_PSRAM
1688 "ProtoCore: PROTOCORE_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 PROTOCORE_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)."
1691#if PROTOCORE_ENABLE_SNMP
1692#if SNMP_MAX_OID_LEN < 4
1693#error "ProtoCore: SNMP_MAX_OID_LEN must be >= 4"
1695#if SNMP_MAX_MIB_ENTRIES < 1
1696#error "ProtoCore: SNMP_MAX_MIB_ENTRIES must be >= 1"
1698#if SNMP_MAX_VARBINDS < 1
1699#error "ProtoCore: SNMP_MAX_VARBINDS must be >= 1"
1701#if SNMP_MSG_BUF_SIZE < 484
1702#error "ProtoCore: SNMP_MSG_BUF_SIZE must be >= 484 (RFC 1157 minimum)"
1706#if PROTOCORE_ENABLE_COAP
1707#if PROTOCORE_COAP_MAX_RESOURCES < 1
1708#error "ProtoCore: PROTOCORE_COAP_MAX_RESOURCES must be >= 1"
1710#if PROTOCORE_COAP_MAX_PATH < 2
1711#error "ProtoCore: PROTOCORE_COAP_MAX_PATH must be >= 2 (minimum: \"/\")"
1713#if PROTOCORE_COAP_MAX_PAYLOAD < 1
1714#error "ProtoCore: PROTOCORE_COAP_MAX_PAYLOAD must be >= 1"
1716#if PROTOCORE_COAP_MSG_BUF_SIZE < (PROTOCORE_COAP_MAX_PAYLOAD + 16)
1718 "ProtoCore: PROTOCORE_COAP_MSG_BUF_SIZE must be >= PROTOCORE_COAP_MAX_PAYLOAD + 16 (header + token + Content-Format option + payload marker)"
1722#if PROTOCORE_ENABLE_AUTH && MAX_AUTH_LEN < 2
1723#error "ProtoCore: MAX_AUTH_LEN must be >= 2 when PROTOCORE_ENABLE_AUTH is set"
1726#if PROTOCORE_ENABLE_PER_IP_THROTTLE
1727#if PROTOCORE_PER_IP_THROTTLE_SLOTS < 1
1728#error "ProtoCore: PROTOCORE_PER_IP_THROTTLE_SLOTS must be >= 1 when PROTOCORE_ENABLE_PER_IP_THROTTLE is set"
1730#if PROTOCORE_PER_IP_THROTTLE_MAX < 1
1731#error "ProtoCore: PROTOCORE_PER_IP_THROTTLE_MAX must be >= 1 when PROTOCORE_ENABLE_PER_IP_THROTTLE is set"
1735#if PROTOCORE_ENABLE_IP_ALLOWLIST && PROTOCORE_IP_ALLOWLIST_SLOTS < 1
1736#error "ProtoCore: PROTOCORE_IP_ALLOWLIST_SLOTS must be >= 1 when PROTOCORE_ENABLE_IP_ALLOWLIST is set"
1739#if PROTOCORE_ENABLE_AUTH_LOCKOUT
1740#if !PROTOCORE_ENABLE_AUTH
1741#error "ProtoCore: PROTOCORE_ENABLE_AUTH_LOCKOUT requires PROTOCORE_ENABLE_AUTH"
1743#if PROTOCORE_AUTH_LOCKOUT_SLOTS < 1
1744#error "ProtoCore: PROTOCORE_AUTH_LOCKOUT_SLOTS must be >= 1 when PROTOCORE_ENABLE_AUTH_LOCKOUT is set"
1746#if PROTOCORE_AUTH_LOCKOUT_THRESHOLD < 1
1747#error "ProtoCore: PROTOCORE_AUTH_LOCKOUT_THRESHOLD must be >= 1 when PROTOCORE_ENABLE_AUTH_LOCKOUT is set"
1749#if PROTOCORE_AUTH_LOCKOUT_BASE_MS < 1 || PROTOCORE_AUTH_LOCKOUT_MAX_MS < PROTOCORE_AUTH_LOCKOUT_BASE_MS
1750#error "ProtoCore: need 1 <= PROTOCORE_AUTH_LOCKOUT_BASE_MS <= PROTOCORE_AUTH_LOCKOUT_MAX_MS"
1754#if PROTOCORE_AUTH_LOCKOUT_MAX_MS > 0x80000000
1755#error "ProtoCore: PROTOCORE_AUTH_LOCKOUT_MAX_MS must be <= 0x80000000 (2147483648)"
1759#if PROTOCORE_ENABLE_FORWARDED_TRUST
1760#if !PROTOCORE_ENABLE_AUTH_LOCKOUT
1761#error "ProtoCore: PROTOCORE_ENABLE_FORWARDED_TRUST requires PROTOCORE_ENABLE_AUTH_LOCKOUT"
1763#if PROTOCORE_TRUSTED_PROXY_MAX < 1
1764#error "ProtoCore: PROTOCORE_TRUSTED_PROXY_MAX must be >= 1 when PROTOCORE_ENABLE_FORWARDED_TRUST is set"
1768#if PROTOCORE_ENABLE_WEBDAV
1769#if !PROTOCORE_ENABLE_FILE_SERVING
1770#error "ProtoCore: PROTOCORE_ENABLE_WEBDAV requires PROTOCORE_ENABLE_FILE_SERVING"
1772#if PROTOCORE_WEBDAV_BUF_SIZE < 256
1773#error "ProtoCore: PROTOCORE_WEBDAV_BUF_SIZE must be >= 256"
1775#if PROTOCORE_METHOD_BUF_SIZE < 10
1776#error "ProtoCore: PROTOCORE_METHOD_BUF_SIZE must be >= 10 when PROTOCORE_ENABLE_WEBDAV is set (PROPPATCH)"
1780#if PROTOCORE_ENABLE_MODBUS
1781#if PROTOCORE_MODBUS_COILS < 1 || PROTOCORE_MODBUS_DISCRETE_INPUTS < 1 || PROTOCORE_MODBUS_HOLDING_REGS < 1 || \
1782 PROTOCORE_MODBUS_INPUT_REGS < 1
1783#error "ProtoCore: each PROTOCORE_MODBUS_* table size must be >= 1 when PROTOCORE_ENABLE_MODBUS is set"
1787#if PROTOCORE_ENABLE_KEEPALIVE && PROTOCORE_KEEPALIVE_MAX_REQUESTS < 1
1788#error "ProtoCore: PROTOCORE_KEEPALIVE_MAX_REQUESTS must be >= 1 when PROTOCORE_ENABLE_KEEPALIVE is set"
1791#if PROTOCORE_ENABLE_RANGE && !PROTOCORE_ENABLE_FILE_SERVING && !PROTOCORE_ENABLE_EDGE_CACHE
1792#error "ProtoCore: PROTOCORE_ENABLE_RANGE requires PROTOCORE_ENABLE_FILE_SERVING or PROTOCORE_ENABLE_EDGE_CACHE"
1797#if PROTOCORE_ENABLE_TLS_RPK && !(PROTOCORE_ENABLE_DTLS || PROTOCORE_ENABLE_HTTP3 || PROTOCORE_ENABLE_TLS)
1799 "ProtoCore: PROTOCORE_ENABLE_TLS_RPK requires PROTOCORE_ENABLE_DTLS, PROTOCORE_ENABLE_HTTP3 or the portable TLS arm (PROTOCORE_ENABLE_TLS without a vendor stack)"
1802#if PROTOCORE_ENABLE_COAP_BLOCK
1803#if !PROTOCORE_ENABLE_COAP
1804#error "ProtoCore: PROTOCORE_ENABLE_COAP_BLOCK requires PROTOCORE_ENABLE_COAP"
1806#if PROTOCORE_COAP_BLOCK_SZX_MAX > 6
1807#error "ProtoCore: PROTOCORE_COAP_BLOCK_SZX_MAX must be <= 6 (block size 2^(SZX+4); SZX 7 is reserved)"
1809#if PROTOCORE_COAP_MSG_BUF_SIZE < ((1 << (PROTOCORE_COAP_BLOCK_SZX_MAX + 4)) + 16)
1811 "ProtoCore: PROTOCORE_COAP_MSG_BUF_SIZE must hold one full block (2^(PROTOCORE_COAP_BLOCK_SZX_MAX+4)) + 16 header/option bytes"
1813#if PROTOCORE_COAP_BLOCK1_MAX < (1 << (PROTOCORE_COAP_BLOCK_SZX_MAX + 4))
1814#error "ProtoCore: PROTOCORE_COAP_BLOCK1_MAX must be >= one block (2^(PROTOCORE_COAP_BLOCK_SZX_MAX+4))"
1818#if PROTOCORE_ENABLE_SSH_ZLIB
1820#if (PROTOCORE_SSH_ZLIB_WINDOW & (PROTOCORE_SSH_ZLIB_WINDOW - 1)) != 0 || PROTOCORE_SSH_ZLIB_WINDOW < 256 || \
1821 PROTOCORE_SSH_ZLIB_WINDOW > 32768
1822#error "ProtoCore: PROTOCORE_SSH_ZLIB_WINDOW must be a power of two in [256, 32768]"
1825#if (PROTOCORE_SSH_ZLIB_WINDOW + PROTOCORE_SSH_ZLIB_MAX_IN) > 65534
1826#error "ProtoCore: PROTOCORE_SSH_ZLIB_WINDOW + PROTOCORE_SSH_ZLIB_MAX_IN must be <= 65534"
1830#if PROTOCORE_SSH_ZLIB_MAX_IN < SSH_PKT_BUF_SIZE
1831#error "ProtoCore: PROTOCORE_SSH_ZLIB_MAX_IN must be >= SSH_PKT_BUF_SIZE"
1838#if PROTOCORE_HAS_BOUNDED_DRAM && !PROTOCORE_SSH_ZLIB_IN_PSRAM && !PROTOCORE_SSH_ZLIB_ACK_DRAM
1840 "ProtoCore: PROTOCORE_ENABLE_SSH_ZLIB - the per-connection compression pool is ~80 KB (s2c deflate ~48 KB + the c2s 32 KB inflate window). Set PROTOCORE_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 PROTOCORE_SSH_ZLIB_ACK_DRAM=1 to accept the internal-DRAM cost (fits MAX_SSH_CONNS=1 without TLS on a roomy chip)."
1844#if PROTOCORE_ENABLE_WEBSOCKET && WS_FRAME_SIZE < 2
1845#error "ProtoCore: WS_FRAME_SIZE must be >= 2 when PROTOCORE_ENABLE_WEBSOCKET is set"
1848#if PROTOCORE_ENABLE_SSE && SSE_BUF_SIZE < 8
1849#error "ProtoCore: SSE_BUF_SIZE must be >= 8 when PROTOCORE_ENABLE_SSE is set"
1852#if PROTOCORE_ENABLE_MULTIPART && MAX_MULTIPART_PARTS < 1
1853#error "ProtoCore: MAX_MULTIPART_PARTS must be >= 1 when PROTOCORE_ENABLE_MULTIPART is set"
1856#if RESP_HDR_BUF_SIZE < 128
1857#error "ProtoCore: RESP_HDR_BUF_SIZE must be >= 128 (status line + headers + CORS block)"
1860#if PROTOCORE_ENABLE_WEBSOCKET && WS_HDR_BUF_SIZE < 128
1861#error "ProtoCore: WS_HDR_BUF_SIZE must be >= 128 when PROTOCORE_ENABLE_WEBSOCKET is set"
1864#if CORS_HDR_BUF_SIZE < 64
1865#error "ProtoCore: CORS_HDR_BUF_SIZE must be >= 64"
1868#if RESP_HDR_BUF_SIZE < (CORS_HDR_BUF_SIZE + EXTRA_HDR_BUF_SIZE + 96)
1870 "ProtoCore: 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)"
1890#ifndef PROTO_MAX_HANDLERS
1891#define PROTO_MAX_HANDLERS 12
1897#if PROTOCORE_ENABLE_SSH_CLIENT
1898#ifndef PROTOCORE_SSH_CLIENT_MAX_CHANNELS
1899#define PROTOCORE_SSH_CLIENT_MAX_CHANNELS 4
1901#if PROTOCORE_SSH_CLIENT_MAX_CHANNELS < 1
1902#error "ProtoCore: PROTOCORE_SSH_CLIENT_MAX_CHANNELS must be >= 1"
1908#if PROTOCORE_ENABLE_FTP_SESSION && (PROTOCORE_CLIENT_CONNS < 2)
1909#error "ProtoCore: PROTOCORE_ENABLE_FTP_SESSION needs PROTOCORE_CLIENT_CONNS >= 2 (control + data)"
1913#if PROTOCORE_ENABLE_SSH_CLIENT && (PROTOCORE_CLIENT_CONNS < 1 + PROTOCORE_SSH_CLIENT_MAX_CHANNELS)
1915 "ProtoCore: PROTOCORE_ENABLE_SSH_CLIENT needs PROTOCORE_CLIENT_CONNS >= 1 + PROTOCORE_SSH_CLIENT_MAX_CHANNELS (relay + one local bridge per channel)"
1926#ifndef PROTOCORE_SSH_CPUB_MAX
1927#if PROTOCORE_ENABLE_PQC_KEX
1928#define PROTOCORE_SSH_CPUB_MAX 1216
1929#elif PROTOCORE_ENABLE_SSH_SNTRUP761
1930#define PROTOCORE_SSH_CPUB_MAX 1190
1932#define PROTOCORE_SSH_CPUB_MAX 256
1936#if PROTOCORE_ENABLE_OPCUA
1938#ifndef PROTOCORE_OPCUA_BUF
1939#define PROTOCORE_OPCUA_BUF 8192
1941#ifndef PROTOCORE_OPCUA_READ_MAX
1942#define PROTOCORE_OPCUA_READ_MAX 8
1944#ifndef PROTOCORE_OPCUA_BROWSE_MAX
1945#define PROTOCORE_OPCUA_BROWSE_MAX 4
1947#ifndef PROTOCORE_OPCUA_REF_MAX
1948#define PROTOCORE_OPCUA_REF_MAX 8
1950#ifndef PROTOCORE_OPCUA_WRITE_MAX
1951#define PROTOCORE_OPCUA_WRITE_MAX 8
1955#if PROTOCORE_ENABLE_ROBOTICS && (PROTOCORE_ROBOTICS_AXES > PROTOCORE_OPCUA_REF_MAX)
1957 "ProtoCore: PROTOCORE_ROBOTICS_AXES must be <= PROTOCORE_OPCUA_REF_MAX (an Axes Browse returns one reference per axis)"
1961#ifndef PROTOCORE_OPCUA_DEFAULT_ENDPOINT
1962#define PROTOCORE_OPCUA_DEFAULT_ENDPOINT "opc.tcp://localhost:4840"
1964#ifndef PROTOCORE_OPCUA_DEFAULT_APP_URI
1965#define PROTOCORE_OPCUA_DEFAULT_APP_URI "urn:det:opcua:server"
1967#ifndef PROTOCORE_OPCUA_DEFAULT_APP_NAME
1968#define PROTOCORE_OPCUA_DEFAULT_APP_NAME "protocore_opcua_server"
enum PROTO_ENUM_PACKED protocore_if_kind
What an interface is, and the filter that selects one.
@ PROTO_UDP
A bound datagram port. The slot carries the peer per entry, not per slot.
enum PROTO_ENUM_PACKED ProtoConn
Application protocol spoken on a listener port or connection slot.
#define PROTO_MAX_HANDLERS
Size of the protocol-handler dispatch table; must exceed the largest ProtoConn id.