ProtoCore v0.0.1
Deterministic, zero-heap network stack for embedded targets
Loading...
Searching...
No Matches
s3_defaults.h
Go to the documentation of this file.
1// Copyright (C) 2026 Douglas Quigg (dstroy0) <dquigg123@gmail.com>
2// SPDX-License-Identifier: AGPL-3.0-or-later
3
4/**
5 * @file s3_defaults.h
6 * @brief ESP32-S3 die profile - dual Xtensa LX7, 512 KB SRAM, Wi-Fi 4 + BLE 5.0, Octal PSRAM.
7 *
8 * Roomier usable DRAM than the classic ESP32 plus AI/vector DSP instructions, so the RAM-backed
9 * pools get a modest bump even with no PSRAM fitted (a PSRAM profile, included first, scales them
10 * further). Crypto HW: AES, SHA, RSA/MPI, HMAC, DS (no ECC/ECDSA). classic_defaults.h is pulled
11 * in last as the sizing floor; every macro is `#ifndef`-guarded so a -D override wins.
12 */
13
14#ifndef PROTOCORE_S3_DEFAULTS_H
15#define PROTOCORE_S3_DEFAULTS_H
16
17// --- HW crypto accelerators ---
18#ifndef PC_HW_AES
19#define PC_HW_AES 1
20#endif
21#ifndef PC_HW_SHA
22#define PC_HW_SHA 1
23#endif
24#ifndef PC_HW_RSA
25#define PC_HW_RSA 1
26#endif
27#ifndef PC_HW_ECC
28#define PC_HW_ECC 0
29#endif
30#ifndef PC_HW_ECDSA
31#define PC_HW_ECDSA 0
32#endif
33#ifndef PC_HW_HMAC
34#define PC_HW_HMAC 1
35#endif
36#ifndef PC_HW_DS
37#define PC_HW_DS 1
38#endif
39
40// --- Sizing (bumped over the classic floor to use the S3's ~400 KB usable DRAM) ---
41// These are internal-SRAM-budget values (no PSRAM assumed); a PSRAM-size profile, included first,
42// scales the RAM-backed buffers further and moves the big TLS / HTTP-2 pools off-chip.
43
44// Connection pools + per-connection buffers.
45#ifndef MAX_CONNS
46#define MAX_CONNS 12
47#endif
48#ifndef RX_BUF_SIZE
49#define RX_BUF_SIZE 2048
50#endif
51#ifndef PC_SCRATCH_ARENA_SIZE
52#define PC_SCRATCH_ARENA_SIZE 12288
53#endif
54#ifndef PC_CLIENT_RX_BUF
55#define PC_CLIENT_RX_BUF 8192
56#endif
57
58// HTTP surface (roomier route/header/body budgets).
59#ifndef MAX_ROUTES
60#define MAX_ROUTES 32
61#endif
62#ifndef MAX_HEADERS
63#define MAX_HEADERS 16
64#endif
65#ifndef BODY_BUF_SIZE
66#define BODY_BUF_SIZE 1024
67#endif
68
69// WebSocket / SSE fan-out.
70#ifndef MAX_WS_CONNS
71#define MAX_WS_CONNS 4
72#endif
73#ifndef MAX_SSE_CONNS
74#define MAX_SSE_CONNS 4
75#endif
76
77// TLS: one handshake on the internal-DRAM arena (the ~48 KB arena + ~32 KB/extra conn would overflow
78// internal DRAM); a PSRAM profile raises this with the arena moved off-chip and auto-sized.
79#ifndef MAX_TLS_CONNS
80#define MAX_TLS_CONNS 1
81#endif
82
83// SSH server + reverse-SSH client.
84#ifndef MAX_SSH_CONNS
85#define MAX_SSH_CONNS 2
86#endif
87#ifndef PC_SSH_MAX_CHANNELS
88#define PC_SSH_MAX_CHANNELS 4
89#endif
90#ifndef PC_SSH_CLIENT_MAX_CHANNELS
91#define PC_SSH_CLIENT_MAX_CHANNELS 6
92#endif
93
94// Edge cache + mesh (RAM-backed L1).
95#ifndef PC_EDGE_CACHE_SLOTS
96#define PC_EDGE_CACHE_SLOTS 8
97#endif
98#ifndef PC_EDGE_BODY_MAX
99#define PC_EDGE_BODY_MAX 4096
100#endif
101#ifndef PC_EDGE_FETCH_SLOTS
102#define PC_EDGE_FETCH_SLOTS 3
103#endif
104#ifndef PC_MESH_MAX_PEERS
105#define PC_MESH_MAX_PEERS 6
106#endif
107#ifndef PC_MESH_MAX_CONNS
108#define PC_MESH_MAX_CONNS 2
109#endif
110
111#include "../classic_defaults.h" // sizing floor for anything not set above
112#endif // PROTOCORE_S3_DEFAULTS_H