SpaceOS wire protocol codecs for host-guest communication
at main 77 lines 2.2 kB view raw
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 ]