use dvb_ci::objects::ca_info::CaInfo;
use dvb_ci::AnyApdu;
use dvb_common::Serialize;
fn main() {
let info = CaInfo {
ca_system_ids: vec![0x0500, 0x0B00],
};
let wire = info.to_bytes();
println!("ca_info APDU : {:02X?}", wire);
let any = AnyApdu::parse(&wire).expect("valid APDU");
println!("dispatched as : {} (tag {})", any.name(), any.tag());
if let AnyApdu::CaInfo(ci) = &any {
println!("CA_system_ids : {:04X?}", ci.ca_system_ids);
}
let back = any.to_bytes();
assert_eq!(back, wire);
println!("round-trip : OK ({} bytes)", back.len());
let unknown_wire = [0x9F, 0x88, 0x07, 0x02, 0xAA, 0xBB];
let unknown = AnyApdu::parse(&unknown_wire).expect("valid APDU framing");
println!(
"unknown tag : {} -> preserved, round-trips: {}",
unknown.name(),
unknown.to_bytes() == unknown_wire
);
}