CCSDS AOS (Advanced Orbiting Systems) Transfer Frame for satellite downlinks
0
fork

Configure Feed

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

Migrate from vendored crowbar to opam-pinned alcobar

- Remove vendored crowbar/ directory
- Replace all Crowbar references with Alcobar across 176 .ml files
- Update all fuzz dune files: crowbar → alcobar in libraries
- Remove 77 gen_corpus.ml files (alcobar handles corpus internally)
- Update dune-project files: crowbar → alcobar in dependencies
- Update merlint rules (e705, e726): Crowbar → Alcobar in checks,
docs, and examples
- Update merlint generated docs (index.html)

428 files changed, ~1200 lines removed net.

+5 -44
+2 -8
fuzz/dune
··· 1 1 (executable 2 2 (name fuzz) 3 3 (modules fuzz fuzz_aos) 4 - (libraries aos crowbar fmt)) 4 + (libraries aos alcobar fmt)) 5 5 6 6 (rule 7 7 (alias runtest) ··· 17 17 (= %{profile} afl)) 18 18 (deps 19 19 (source_tree corpus) 20 - fuzz.exe 21 - gen_corpus.exe) 20 + fuzz.exe) 22 21 (action 23 22 (echo "AFL fuzzer built: %{exe:fuzz.exe}\n"))) 24 - 25 - (executable 26 - (name gen_corpus) 27 - (modules gen_corpus) 28 - (libraries aos unix))
+1 -1
fuzz/fuzz.ml
··· 1 - let () = Crowbar.run "aos" [ Fuzz_aos.suite ] 1 + let () = Alcobar.run "aos" [ Fuzz_aos.suite ]
+1 -1
fuzz/fuzz_aos.ml
··· 3 3 SPDX-License-Identifier: MIT 4 4 ---------------------------------------------------------------------------*) 5 5 6 - open Crowbar 6 + open Alcobar 7 7 8 8 let suite = 9 9 ( "aos",
+1 -1
fuzz/fuzz_aos.mli
··· 1 1 (** Fuzz tests for {\!Aos}. *) 2 2 3 - val suite : string * Crowbar.test_case list 3 + val suite : string * Alcobar.test_case list 4 4 (** Test suite. *)
-33
fuzz/gen_corpus.ml
··· 1 - (** Generate seed corpus for fuzz testing. *) 2 - 3 - let () = 4 - (try Unix.mkdir "corpus" 0o755 5 - with Unix.Unix_error (Unix.EEXIST, _, _) -> ()); 6 - let write name data = 7 - let oc = open_out_bin (Filename.concat "corpus" name) in 8 - output_string oc data; 9 - close_out oc 10 - in 11 - (* Minimal AOS frame: 6-byte header + data + 4-byte OCF + 2-byte FECF. 12 - Use the Aos library to generate valid encoded frames. *) 13 - let scid = Aos.scid_exn 1 in 14 - let vcid = Aos.vcid_exn 0 in 15 - let frame0 = Aos.v ~scid ~vcid ~vcfc:0 "HELLO" in 16 - write "seed_000" (Aos.encode frame0); 17 - (* Idle frame (VCID 63) *) 18 - let idle_vcid = Aos.vcid_exn 63 in 19 - let frame1 = Aos.v ~scid ~vcid:idle_vcid ~vcfc:0 "" in 20 - write "seed_001" (Aos.encode frame1); 21 - (* Frame with no OCF/FECF *) 22 - let frame2 = Aos.v ~scid ~vcid ~vcfc:42 ~ocf:None ~fecf:None "DATA" in 23 - write "seed_002" (Aos.encode ~with_ocf:false ~with_fecf:false frame2); 24 - (* Larger frame with max VCFC *) 25 - let frame3 = Aos.v ~scid ~vcid ~vcfc:0xFFFFFF (String.make 64 '\xAA') in 26 - write "seed_003" (Aos.encode frame3); 27 - (* Minimal raw bytes - too short for a valid frame, exercises error paths *) 28 - write "seed_004" "\x00\x00\x00\x00"; 29 - (* All-ones pattern *) 30 - write "seed_005" (String.make 20 '\xFF'); 31 - (* 6-byte header only (no data/ocf/fecf) *) 32 - write "seed_006" "\x40\x01\x00\x00\x00\x00"; 33 - print_endline "gen_corpus: wrote 7 AOS seed files"