You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit ccc2e2f
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: README.md
+38-13Lines changed: 38 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,19 +18,22 @@ Minimal, embedded-optimized implementation of **CCSDS Space Data Link Protocol (
18
18
-**TM Secondary Header**: Optional Transfer Frame Secondary Header (1–63 data octets) via `sdlp_tm_set_secondary_header`, signaled by the Secondary Header Flag and parsed automatically on decode
19
19
-**TM Operational Control Field**: Optional 4-octet OCF carried verbatim via `sdlp_tm_set_ocf` (the caller decides whether to set the OCF Flag); its content, e.g. a CLCW, is mission-specific and left to the application
20
20
-**TC Frame Types**: Type-AD/BD/BC frames via `sdlp_tc_set_frame_type`, plus Unlock and Set V(R) control-command helpers (`sdlp_tc_create_unlock_frame`, `sdlp_tc_create_set_vr_frame`)
21
-
-**TC Segment Header**: Optional MAP-based segmentation support (enabled with `TC_SEGMENT_HEADER_ENABLED`)
21
+
-**TC Segment Header**: Optional MAP-based segmentation support (enabled with `SDLP_TC_SEGMENT_HEADER_ENABLED`)
22
22
23
23
### Design Principles
24
24
25
25
-**Minimal footprint**: Small library size (stripped)
26
26
-**Zero allocation**: Stack-based, no dynamic memory
27
-
-**Embedded-optimized**: Pure C11, no external dependencies
28
-
-**Portable**: Standard C11, big-endian network byte order
27
+
-**Embedded-optimized**: Pure C99, no external dependencies
28
+
-**Portable**: Standard C99, big-endian network byte order
29
29
30
30
## Project Structure
31
31
32
32
```
33
33
EmbeddedSDLP/
34
+
├── .github/
35
+
│ └── workflows/
36
+
│ └── ci.yml # CI: unit tests, coverage gate, sanitizers
34
37
├── include/
35
38
│ ├── sdlp_common.h # Common definitions and error codes
36
39
│ ├── sdlp_tm.h # TM frame definitions
@@ -50,15 +53,15 @@ EmbeddedSDLP/
50
53
│ └── unit_tests.c # Test entry point (aggregates per-module results)
-**Maximum data per frame**: `TM_MAX_DATA_SIZE` = 1024 bytes (TM); `TC_MAX_DATA_SIZE` = 1017 bytes (TC — the whole frame is capped at 1024 octets per CCSDS 232.0-B-4; one less when the TC segment header is enabled)
-**Maximum data per frame**: `SDLP_TM_MAX_DATA_SIZE` = 1024 bytes (TM); `SDLP_TC_MAX_DATA_SIZE` = 1017 bytes (TC — the whole frame is capped at 1024 octets per CCSDS 232.0-B-4; one less when the TC segment header is enabled)
128
150
129
151
## Limitations and Extensions
130
152
@@ -136,14 +158,17 @@ Current implementation focuses on core protocol features:
136
158
- No SDLS (Space Data Link Security) option
137
159
- No TM Only-Idle-Data (OID) frame generation or PN randomization
138
160
- TM Transfer Frames are variable length; the mission-fixed frame length must be enforced by the caller
139
-
- TM frame counts are kept per Master Channel / Virtual Channel in fixed static state (up to `TM_MAX_MASTER_CHANNELS` Master Channels; not thread-safe)
161
+
- The 2-octet FECF is always emitted, although both standards make it optional
162
+
- The TC Segment Header is a build-time switch for all Virtual Channels, not per Virtual Channel; it changes `sdlp_tc_frame_t`, so build the library and the application with the same setting
163
+
- Decoders do not check the Transfer Frame Version Number
164
+
- TM frame counts are kept per Master Channel / Virtual Channel in fixed static state (not thread-safe). At most `SDLP_TM_MAX_MASTER_CHANNELS` (default 8) Spacecraft IDs are tracked; `sdlp_tm_create_frame` returns `SDLP_ERROR_NO_RESOURCE` for one more, and `sdlp_tm_reset_frame_counts` empties the table
140
165
141
166
These can be extended as needed for specific mission requirements.
142
167
143
168
## References
144
169
145
-
- CCSDS 132.0-B-3: TM Space Data Link Protocol ([docs/132x0b3_TM_SDLP.pdf](docs/132x0b3_TM_SDLP.pdf))
146
-
- CCSDS 232.0-B-4: TC Space Data Link Protocol ([docs/232x0b4e1c1_TC_SDLP.pdf](docs/232x0b4e1c1_TC_SDLP.pdf))
170
+
-[CCSDS 132.0-B-3: TM Space Data Link Protocol](https://public.ccsds.org/Pubs/132x0b3.pdf)
171
+
-[CCSDS 232.0-B-4: TC Space Data Link Protocol](https://public.ccsds.org/Pubs/232x0b4e1c1.pdf)
0 commit comments