|
ProtoCore v1.0.16
Deterministic, zero-heap network stack for embedded targets
|
The flags a build does not set: the ones another flag decides. More...
Go to the source code of this file.
The flags a build does not set: the ones another flag decides.
Most features are independent and are stated directly in protocore_config.h. These are the rest - a flag whose value is read off another flag, or one an enabled feature forces on because it cannot work without it. Reached after every directly-stated flag is settled, so each reads final values.
Definition in file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_SSH_SNTRUP761 PROTOCORE_ENABLE_PQC_KEX |
Streamlined NTRU Prime sntru.nosp@m.p761.nosp@m.x2551.nosp@m.9-sh.nosp@m.a512@.nosp@m.open.nosp@m.ssh.c.nosp@m.om SSH KEX (default: tracks PROTOCORE_ENABLE_PQC_KEX).
A second PQ/T hybrid alongside ML-KEM: sntrup761 (a lattice KEM with a conservative security margin, OpenSSH's long-standing default) crossed with X25519, SHA-512 exchange hash. On by default wherever the PQC hybrid is enabled so a PQC-capable peer gets both methods offered. It is heavier than ML-KEM on the worker stack - the server runs Encaps (~22 KB peak) and the reverse-SSH client runs KeyGen+Decaps (the FO re-encrypt peaks ~32 KB) - so a footprint-bound PQC build (e.g. a classic-ESP32 that only wants ML-KEM) can set this to 0 to drop sntrup761 and keep the lighter PROTOCORE_WORKER_STACK_PQC_MIN floor. Requires PROTOCORE_ENABLE_PQC_KEX.
Definition at line 35 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_MODBUS_RTU 0 |
Modbus RTU framing (serial / RS-485) over the same data model + PDU dispatch.
Default off; implies PROTOCORE_ENABLE_MODBUS. Adds the RTU ADU codec Modbus.rtu_process_adu - a [slave addr][PDU][CRC16] frame (CRC16-Modbus, little-endian) around the existing host-tested PDU dispatch: a CRC mismatch or a non-matching unit address is dropped silently (no reply, per the spec), and a broadcast (address 0) is executed without a reply. The codec is pure and host-tested; feed it from a UART/RS-485 driver (the serial transport is the application's, framed by the 3.5-char inter-frame idle).
Definition at line 50 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_NMEA2000 0 |
NMEA 2000 codec (services/nmea2000).
Default off; implies PROTOCORE_ENABLE_J1939 (NMEA 2000 is J1939 at the transport layer). A zero-heap codec for the marine instrumentation network over CAN: it reuses the J1939 29-bit identifier codec and adds the NMEA-specific Fast Packet transport - protocore_n2k_fastpacket_build_frame splits a 9..223-octet message across frames (a control octet of sequence + frame counter, the first frame carrying the total length) and protocore_n2k_fastpacket_feed reassembles it; protocore_n2k_build_single wraps a single-frame message. Pure codec, host-tested. Drive it from the ESP32 TWAI peripheral or an MCP2515 over SPI to bridge an NMEA 2000 backbone onto Wi-Fi.
Definition at line 71 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_SENML 0 |
SenML (RFC 8428) measurement-pack builder (services/senml).
Default off; implies PROTOCORE_ENABLE_CBOR (the SenML-CBOR form uses the CBOR writer). A zero-heap SenML-JSON + SenML-CBOR encoder over the shipped JSON / CBOR codecs: the caller fills a SenmlRecord array (base name/time, name, unit, one value, time) and Senml.json_build / Senml.binary_build (any protocore_codec) emit the whole Pack. Numbers are emitted as integers when integral (so timestamps keep precision), else floats. The standard measurement format for CoAP / LwM2M / HTTP telemetry. Pure codec, host-tested.
Definition at line 86 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_SPARKPLUG 0 |
Sparkplug B payload + topic codec (services/sparkplug).
Default off; implies PROTOCORE_ENABLE_PROTOBUF (the payload is a Protobuf message). A zero-heap builder for the Eclipse Sparkplug B industrial-IoT MQTT payload (Sparkplug.build_payload / Sparkplug.build_metric, over the protobuf codec) and its topic namespace (Sparkplug.build_topic, spBv1.0/group/type/node[/device]). Field numbers + datatype codes verified against Sparkplug 3.0.0 sec 6.4.1. Pure codec, host-tested; publish it with the MQTT client.
Definition at line 100 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_EDGE_CACHE 0 |
Opt-in CDN edge-cache tier (PROTOCORE_ENABLE_EDGE_CACHE, requires HTTP_CACHE).
server/web/edge_cache is the caching reverse-proxy edge that network_drivers/presentation/http/httpcache is the origin-side groundwork for: a device sits in front of a remote upstream origin, fetches a response once, and serves subsequent hits from a bounded local store - honoring Cache-Control / Expires / ETag / Last-Modified, revalidating stale entries with conditional requests (If-None-Match / If-Modified-Since -> 304), and serving Range / 206 straight from the cache. A two-tier store: bounded RAM (L1, hot) plus an optional dbm/WAL-backed SD tier (L2, persistent, when PROTOCORE_ENABLE_DBM is set). Misses/revalidations fetch the origin asynchronously (the client request is suspended and resumed from the poll loop, never stalling the worker) and always fail open. Zero heap. Default off.
Definition at line 124 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_EDGE_MESH 0 |
Opt-in mesh (sibling-cache) distribution for the edge cache (PROTOCORE_ENABLE_EDGE_MESH).
Lets a fleet of edge nodes share one warm cache: on a full local miss, a node queries its configured sibling peers (over a plaintext PROTO_MESH TCP link) before hitting the origin, and pulls a fresh copy from whichever peer has it - so the origin is fetched once per fleet, not once per node. Pull (read-through) only: no push, no invalidation protocol, no consistency window - a stale sibling copy self-expires by its own TTL and the requester re-checks freshness on arrival. The transfer carries the object plus its freshness/age (RFC 9111 age propagation), so a sibling-fresh object serves for its remaining lifetime with zero origin contact. A serving node answers only from its local store (one hop, never re-querying its own origin/peers, so the fleet cannot loop). Peers are a static list (protocore_edge_cache_add_peer); auto-discovery is a follow-up. Zero heap. Default off.
Definition at line 148 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_STREAM_BODY 0 |
Internal: the parser's streaming-body machinery (OTA, file upload, WebDAV PUT).
Each streams the request body to a sink instead of buffering it into body[]; the parser support is shared and compiled when any of these features is enabled. The sink is a single global hook, so only one streaming consumer is active per build (the last to register wins) - do not combine OTA / upload / WebDAV streaming in the same firmware.
Definition at line 163 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_AES128GCM (PROTOCORE_ENABLE_HTTP3 || PROTOCORE_ENABLE_DTLS || PROTOCORE_ENABLE_SMB || PROTOCORE_ENABLE_TLS) |
Internal: client-side TLS engine is compiled (HTTPS client, MQTTS, wss client, and/or a TLS edge-cache origin).
The outbound HTTP client (one-shot exchange) and the MQTT / WebSocket clients and the edge cache's TLS origin fetch (persistent sessions) share the same client mbedTLS code in protocore_tls - the CA/pin trust config, the BIO typedefs, and the session API - gated by this.
Definition at line 177 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_AESCCM PROTOCORE_ENABLE_SMB |
Definition at line 181 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_HKDF (PROTOCORE_ENABLE_HTTP3 || PROTOCORE_ENABLE_DTLS || PROTOCORE_ENABLE_TLS) |
Definition at line 184 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_HPACK_PRIM (PROTOCORE_ENABLE_HTTP2 || PROTOCORE_ENABLE_HTTP3) |
Definition at line 189 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_SHA384 (PROTOCORE_ENABLE_HTTP3 || PROTOCORE_ENABLE_DTLS || PROTOCORE_ENABLE_TLS) |
Definition at line 192 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_HMAC_SHA384 (PROTOCORE_ENABLE_HTTP3 || PROTOCORE_ENABLE_DTLS || PROTOCORE_ENABLE_TLS) |
Definition at line 195 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_HKDF_SHA384 (PROTOCORE_ENABLE_HTTP3 || PROTOCORE_ENABLE_DTLS || PROTOCORE_ENABLE_TLS) |
Definition at line 198 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_SHA3 PROTOCORE_ENABLE_PQC_KEX |
Definition at line 201 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_MLKEM PROTOCORE_ENABLE_PQC_KEX |
Definition at line 204 of file feature_dependency_en.h.
| #define PROTOCORE_ENABLE_SNTRUP761 PROTOCORE_ENABLE_SSH_SNTRUP761 |
Definition at line 207 of file feature_dependency_en.h.