-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathcyphal_udp_header.dsdl
More file actions
31 lines (25 loc) · 1.76 KB
/
cyphal_udp_header.dsdl
File metadata and controls
31 lines (25 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Cyphal/UDP provides UNRELIABLE UNORDERED DEDUPLICATED (at most one) delivery of UNICAST or MULTICAST datagrams
# with GUARANTEED INTEGRITY (messages either delivered correct or not delivered).
#
# All Cyphal/UDP traffic is sent to port 9382.
# The subject multicast group address is composed as 239.0.0.0 (=0xEF000000) + subject_id (23 bits).
#
# All frames of a transfer must share the same field values unless otherwise noted.
# Frames may arrive out-of-order, possibly interleaved with neighboring transfers; implementations must cope.
#
# The origin UID is a 64-bit globally unique identifier (e.g., EUI-64). It allows nodes to use redundant interfaces
# without source address ambiguity, and also allows live interface migration.
#
# Unicast traffic is sent directly to the source endpoint of the destination node, which is discovered dynamically.
# The destination UID is not included explicitly since the IP endpoint is considered adequate for node identification.
uint5 version #=2 in this version.
uint3 priority # 0=highest, 7=lowest.
void5 # Send zero, ignore on reception.
uint3 incompatibility # Send zero, drop frame if nonzero.
uint48 transfer_id # For multi-frame reassembly and dedup.
uint64 sender_uid # Origin identifier ensures invariance to the source IP address for reassembly.
uint32 frame_payload_offset # The offset of the frame payload relative to the start of the transfer payload.
uint32 transfer_payload_size # Total for all frames.
uint32 prefix_crc32c # crc32c(payload[0:(frame_payload_offset+payload_size)])
uint32 header_crc32c # Covers all fields above. Same as the transfer payload CRC.
# Header size 32 bytes; payload follows.