SpaceOS wire protocol codecs for host-guest communication
1(** SpaceOS Wire schemas for EverParse 3D generation.
2
3 Converts each codec to a [Wire.struct_] and [Wire.module_] for use with
4 [Wire.to_3d_file] to produce EverParse-compatible {e .3d} specifications. *)
5
6open Space_wire
7
8(** {1 Frame} *)
9
10let frame_struct = Wire.Codec.to_struct Msg.codec
11
12let frame_module =
13 Wire.module_ ~doc:"SpaceOS fixed-size 256-byte frame" "SpaceOSFrame"
14 [ Wire.typedef ~entrypoint:true frame_struct ]
15
16(** {1 Error Payload} *)
17
18let error_payload_struct = Wire.Codec.to_struct Error_payload.codec
19
20let error_payload_module =
21 Wire.module_ ~doc:"SpaceOS ERROR/NACK payload (8 bytes)" "ErrorPayload"
22 [ Wire.typedef ~entrypoint:true error_payload_struct ]
23
24(** {1 DP Notification Payload} *)
25
26let dp_payload_struct = Wire.Codec.to_struct Dp_payload.codec
27
28let dp_payload_module =
29 Wire.module_ ~doc:"SpaceOS data-product notification payload (80 bytes)"
30 "DpPayload"
31 [ Wire.typedef ~entrypoint:true dp_payload_struct ]
32
33(** {1 Superblock} *)
34
35let superblock_struct = Wire.Codec.to_struct Superblock.codec
36
37let superblock_module =
38 Wire.module_ ~doc:"SpaceOS superblock (block 0, 48 bytes)" "Superblock"
39 [ Wire.typedef ~entrypoint:true superblock_struct ]
40
41(** {1 Parameter Entry} *)
42
43let param_entry_struct = Wire.Codec.to_struct Param_entry.codec
44
45let param_entry_module =
46 Wire.module_ ~doc:"SpaceOS parameter store entry (252 bytes)" "ParamEntry"
47 [ Wire.typedef ~entrypoint:true param_entry_struct ]
48
49(** {1 Event Log} *)
50
51let event_log_struct = Wire.Codec.to_struct Event_log.codec
52
53let event_log_module =
54 Wire.module_ ~doc:"SpaceOS event log record (76 bytes)" "EventLog"
55 [ Wire.typedef ~entrypoint:true event_log_struct ]
56
57(** {1 All Schemas} *)
58
59let all_structs =
60 [
61 ("SpaceOSFrame", frame_struct);
62 ("ErrorPayload", error_payload_struct);
63 ("DpPayload", dp_payload_struct);
64 ("Superblock", superblock_struct);
65 ("ParamEntry", param_entry_struct);
66 ("EventLog", event_log_struct);
67 ]
68
69let all_modules =
70 [
71 ("SpaceOSFrame", frame_module);
72 ("ErrorPayload", error_payload_module);
73 ("DpPayload", dp_payload_module);
74 ("Superblock", superblock_module);
75 ("ParamEntry", param_entry_module);
76 ("EventLog", event_log_module);
77 ]