CCSDS 133.0-B Space Packet Protocol for OCaml
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

ocaml-space-packet: rewrite README example to typecheck

Top-level [match] doesn't parse; [writer] / [reader] were unbound;
[Printf.printf] mixed with no [@.]. Wrap [decode] / [recv] / [send]
as [let () = match ...] and [recv reader] / [send writer] functions,
[assert] the round-trip APID, swap [Printf] for [Fmt.pr] / [Fmt.epr],
and add [fmt] to the mdx libraries.

+14 -20
+13 -19
README.md
··· 42 42 ## Usage 43 43 44 44 ```ocaml 45 - (* Create a telemetry packet *) 45 + (* Create a telemetry packet. *) 46 46 let pkt = 47 - Space_packet.v_exn 48 - ~packet_type:Telemetry 49 - ~apid:100 50 - ~sequence_flags:Unsegmented 51 - ~sequence_count:42 52 - "sensor data payload" 47 + Space_packet.v_exn ~packet_type:Telemetry ~apid:100 48 + ~sequence_flags:Unsegmented ~sequence_count:42 "sensor data payload" 53 49 54 - (* Encode to bytes *) 55 50 let bytes = Space_packet.encode pkt 56 51 57 - (* Decode from bytes *) 58 - match Space_packet.decode bytes with 59 - | Ok decoded -> Printf.printf "APID: %d\n" (Space_packet.apid decoded) 60 - | Error `Truncated -> Printf.printf "Packet truncated\n" 61 - | Error (`Invalid_version v) -> Printf.printf "Invalid version: %d\n" v 52 + let () = 53 + match Space_packet.decode bytes with 54 + | Ok decoded -> assert (Space_packet.apid decoded = 100) 55 + | Error `Truncated -> failwith "truncated" 56 + | Error (`Invalid_version v) -> Fmt.failwith "invalid version: %d" v 62 57 ``` 63 58 64 59 ### Streaming I/O 65 60 66 61 ```ocaml 67 - (* Write to a bytesrw writer *) 68 - Space_packet.write writer pkt 62 + let send writer = Space_packet.write writer pkt 69 63 70 - (* Read from a bytesrw reader *) 71 - match Space_packet.read reader with 72 - | Ok pkt -> () 73 - | Error _ -> () 64 + let recv reader = 65 + match Space_packet.read reader with 66 + | Ok pkt -> Fmt.pr "APID: %d@." (Space_packet.apid pkt) 67 + | Error _ -> Fmt.epr "decode failed@." 74 68 ``` 75 69 76 70 ## Packet Structure
+1 -1
dune
··· 4 4 5 5 (mdx 6 6 (files README.md) 7 - (libraries space-packet)) 7 + (libraries space-packet fmt))