mock_cam_session/
mock_cam_session.rs1use std::time::Duration;
11
12use dvb_ci_runtime::dvb_ci::tpdu::tags;
13use dvb_ci_runtime::{Driver, MockCaDevice, Notification};
14
15fn main() -> std::io::Result<()> {
16 let dev = MockCaDevice::new([vec![tags::C_T_C_REPLY, 0x01, 0x01]]);
18 let mut driver = Driver::new(dev);
19
20 driver.init()?;
22 println!("init: sent {} device op(s)", driver.device().ops.len());
23
24 for step in 0..5 {
27 let read = driver.pump(Duration::from_millis(100))?;
28 println!("pump {step}: processed_frame={read}");
29 }
30
31 for note in driver.take_notifications() {
33 match note {
34 Notification::CamReady => println!("note: CAM ready — safe to send ca_pmt"),
35 Notification::ApplicationInfo { menu, .. } => {
36 println!("note: application_information menu={menu:?}")
37 }
38 Notification::CaInfo { ca_system_ids } => {
39 println!("note: ca_info system_ids={ca_system_ids:?}")
40 }
41 other => println!("note: {other:?}"),
42 }
43 }
44
45 println!("total recorded device ops: {}", driver.device().ops.len());
47 Ok(())
48}