Cy topic RAM model

verbatim names · 32-bit Cortex-M · Cyphal/CAN · conservative planning allowance
typical name: 20 B / 3 segmentshome + namespace ≤230 B2 CAN interfacesO1Heap rounding includeddefault Cy configuration
node + CAN floorplan 1.25 KiBmodel: 1,168 B
first publisher; new topicplan 1 KiBresident model: 816 B
first verbatim subscriber; new topicplan 2 KiBresident model: 1,456 B; pinned: 1,584 B
another cy_subscribe(); same verbatim nameplan 0.25 KiBresident model: 256 B

Hard bound requires caps

required heap = resident allowance + peak traffic state + safety margin
application caps: associations/topic · simultaneous reliable futures · queued CAN frames · remote publishers · subscriber extent

Adding a verbatim cy_subscribe()

Then add peak traffic state

128 B / remote publisher + subject   +   128 B / reliable remote publisher + topic   +   queued message   +   partially received transfers
extent (maximum transfer size)queued multi-frame messageeach reassembly (partially received transfer)
64 B192 B128 B
256 B576 B512 B
1,024 B2,112 B2,048 B
reassemblies: 0…8 priorities / remote publisher + subject · single-frame queued message: 64…128 B

Adding a publisher

resident state after first transfer drainsmodelallowance
additional publisher; topic already published locally32 B64 B
first local publisher; existing topic80 B128 B
first local publisher; new typical topic816 B1 KiB

Reliable publication peak

+128 B / reliable subscriber association (publisher-side) · retained with topic
payload; 8 associationsfuture + retry copy + 1 CAN-FD attempt
0 B528 B
256 B2,064 B
1,024 B4,624 B
+1,024 B persistent associations · multiply pending futures · cap global CAN TX queue

32 KiB subscriber check

3 KiB currently free · planning allowancesbefore extra safety margin
same verbatim cy_subscribe()✓ 0.25 KiB + traffic
new topic · 64 B extent · 1 reliable remote · queued message + 1 reassembly✓ 2.56 KiB
new topic · 1,024 B extent · 1 remote · queued message✗ ≥4.19 KiB

Ordered subscriber

+256 B / subscriber + remote publisher + topic   +   ≤16 interned (buffered ordered) messages
16 interned · 1,024 B extent · 1 remote35,072 Bordering state alone

Delayed release