use viterbi::{CcsdsViterbiDecoder, CodeParams, ViterbiEncoder};
fn main() {
let encoder = ViterbiEncoder::new(CodeParams::ccsds_r1_2()).expect("valid CCSDS params");
let mut decoder =
CcsdsViterbiDecoder::new(CodeParams::ccsds_r1_2(), 4096).expect("valid decoder config");
let payload = b"hello, viterbi";
let mut coded = encoder.encode(payload).expect("encode succeeds");
coded.bytes[2] ^= 0b0000_0100;
let decoded = decoder.decode_block(&coded).expect("decode succeeds");
assert_eq!(
&decoded.bytes, payload,
"decoder must correct the injected bit flip"
);
println!("recovered: {}", String::from_utf8_lossy(&decoded.bytes));
}