ProtoCore v1.0.16
Deterministic, zero-heap network stack for embedded targets
Loading...
Searching...
No Matches
hw_caps_en.h
Go to the documentation of this file.
1// ProtoCore v1.0.16 - Copyright (C) 2026 Douglas Quigg (dstroy0) <dquigg123@gmail.com>
2// SPDX-License-Identifier: AGPL-3.0-or-later
3
4/**
5 * @file hw_caps_en.h
6 * @brief Whether a seam exists to call at all: the floor under every hardware capability.
7 *
8 * @author Douglas Quigg (dstroy0)
9 * @date 2026
10 */
11
12#ifndef PROTOCORE_HW_CAPS_EN_H
13#define PROTOCORE_HW_CAPS_EN_H
14
15// A vendor answers these by defining them before this file is reached; anything it did not
16// answer is 0, which is what "the part has no such seam" means. The PROTOCORE_HAS_* questions
17// in hw_caps_en_error.h read them, so this file settles them first.
18
19// TLS. 1 = the vendor ships a TLS stack and network_drivers/tls drives that (mbedTLS over lwIP on
20// ESP); 0 = the portable TLS 1.3 in network_drivers/tls, the same hand-rolled stack the QUIC and
21// DTLS handshakes already run: TLS_AES_128_GCM_SHA256, X25519, an Ed25519 raw public key.
22//
23// The two differ in what they will talk to, not just in speed. A vendor stack brings X.509: chain
24// validation, name matching, RSA and ECDSA certificates, so a browser will connect. The portable
25// one authenticates by raw public key and is what makes TLS exist at all on a part with no vendor
26// stack. Take the vendor's wherever there is one.
27// Whether a vendor engine exists to call. Silicon has one; a host build has one when an env states
28// this, so the vendor BIO path is driven off silicon instead of resolving to the portable arm.
29#ifndef PROTOCORE_PLATFORM_HAS_VENDOR_TLS
30#define PROTOCORE_PLATFORM_HAS_VENDOR_TLS 0
31#endif
32
33// Whether a bus seam exists to call. Silicon has one; a host build has one only when the test
34// mock above supplied it, and the bus owners key their host arm off this so a driver's real
35// composition runs against the capture rather than being stubbed out at the owner.
36#ifndef PROTOCORE_PLATFORM_HAS_BUS
37#define PROTOCORE_PLATFORM_HAS_BUS 0
38#endif
39
40// Whether a pin seam exists to call. Silicon has one; a host build has one only when the test mock
41// above supplied it, and the pin drivers key their host arm off this so a driver's real sampling
42// runs against the pin table rather than being stubbed out.
43#ifndef PROTOCORE_PLATFORM_HAS_GPIO
44#define PROTOCORE_PLATFORM_HAS_GPIO 0
45#endif
46
47// Whether a scheduler seam exists to run on. Silicon has one; a host build has one only when the
48// driver above supplied it, and the worker layer keys its host arm off this so the pipeline's real
49// task / queue path runs against the mock rather than resolving to the inline arm.
50#ifndef PROTOCORE_PLATFORM_HAS_SCHEDULER
51#define PROTOCORE_PLATFORM_HAS_SCHEDULER 0
52#endif
53
54// Whether a seam exists to call. Silicon has one; a host build has one only when the
55// driver above supplied a burned-in address, so the owners run against it instead of
56// resolving to their refusing arm.
57#ifndef PROTOCORE_PLATFORM_HAS_VENDOR_MAC
58#define PROTOCORE_PLATFORM_HAS_VENDOR_MAC 0
59#endif
60
61// Whether a seam exists to call. Silicon has one; a host build has one only when the
62// driver above supplied allocator figures, so the owners run against it instead of
63// resolving to their refusing arm.
64#ifndef PROTOCORE_PLATFORM_HAS_VENDOR_HEAP_INFO
65#define PROTOCORE_PLATFORM_HAS_VENDOR_HEAP_INFO 0
66#endif
67
68// Whether a seam exists to call. Silicon has one; a host build has one only when the
69// driver above supplied the reset cause, die temperature and CPU clock, so the owners run against it instead of
70// resolving to their refusing arm.
71#ifndef PROTOCORE_PLATFORM_HAS_VENDOR_PM
72#define PROTOCORE_PLATFORM_HAS_VENDOR_PM 0
73#endif
74
75// Whether a seam exists to call. Silicon has one; a host build has one only when the
76// driver above supplied a radio power domain to hand back, so the owners run against it instead of
77// resolving to their refusing arm.
78#ifndef PROTOCORE_PLATFORM_HAS_VENDOR_BT
79#define PROTOCORE_PLATFORM_HAS_VENDOR_BT 0
80#endif
81
82// Whether a seam exists to call. Silicon has one; a host build has one only when the
83// driver above supplied a stored image to mark, commit or roll back, so the owners run against it instead of
84// resolving to their refusing arm.
85#ifndef PROTOCORE_PLATFORM_HAS_VENDOR_OTA
86#define PROTOCORE_PLATFORM_HAS_VENDOR_OTA 0
87#endif
88
89// Whether a seam exists to call. Silicon has one; a host build has one only when the
90// driver above supplied a stored crash image to read, so the owners run against it instead of
91// resolving to their refusing arm.
92#ifndef PROTOCORE_PLATFORM_HAS_VENDOR_COREDUMP
93#define PROTOCORE_PLATFORM_HAS_VENDOR_COREDUMP 0
94#endif
95
96// Whether a seam exists to call. Silicon has one; a host build has one only when the
97// driver above supplied a CAN controller to open, so the owners run against it instead of
98// resolving to their refusing arm.
99#ifndef PROTOCORE_PLATFORM_HAS_VENDOR_CAN
100#define PROTOCORE_PLATFORM_HAS_VENDOR_CAN 0
101#endif
102
103#endif // PROTOCORE_HW_CAPS_EN_H