diff --git a/satrs-example/src/bin/simpleclient.rs b/satrs-example/src/bin/simpleclient.rs index 64837a3..0b137c4 100644 --- a/satrs-example/src/bin/simpleclient.rs +++ b/satrs-example/src/bin/simpleclient.rs @@ -29,7 +29,7 @@ fn main() { let res = client.recv(&mut buf); match res { Ok(_len) => { - let pus_tm= PusTmReader::new(&buf, 7).expect("Parsing PUS TM failed"); + let pus_tm = PusTmReader::new(&buf, 7).expect("Parsing PUS TM failed"); if pus_tm.service() == 17 && pus_tm.subservice() == 2 { println!("Received PUS Ping Reply TM[17,2]") } else if pus_tm.service() == 1 { diff --git a/satrs-example/src/pus/action.rs b/satrs-example/src/pus/action.rs index 17a7655..76072aa 100644 --- a/satrs-example/src/pus/action.rs +++ b/satrs-example/src/pus/action.rs @@ -367,7 +367,7 @@ mod tests { if let Err(mpsc::TryRecvError::Empty) = packet { } else { let tm = packet.unwrap(); - let unexpected_tm = PusTmReader::new(&tm.packet, 7).unwrap().0; + let unexpected_tm = PusTmReader::new(&tm.packet, 7).unwrap(); panic!("unexpected TM packet {unexpected_tm:?}"); } } @@ -410,7 +410,11 @@ mod tests { pub fn add_tc(&mut self, tc: &PusTcCreator) { self.request_id = Some(verification::RequestId::new(tc).into()); - let token = self.service.service_helper.verif_reporter_mut().add_tc(tc); + let token = self + .service + .service_helper + .verif_reporter_mut() + .start_verification(tc); let accepted_token = self .service .service_helper diff --git a/satrs-example/src/pus/mod.rs b/satrs-example/src/pus/mod.rs index abc2420..3d271b8 100644 --- a/satrs-example/src/pus/mod.rs +++ b/satrs-example/src/pus/mod.rs @@ -110,7 +110,7 @@ impl PusTcDistributor { return Ok(HandlingStatus::HandledOne); } let pus_tc = pus_tc_result.unwrap(); - let init_token = self.verif_reporter.add_tc(&pus_tc); + let init_token = self.verif_reporter.start_verification(&pus_tc); self.stamp_helper.update_from_now(); let accepted_token = self .verif_reporter @@ -599,7 +599,7 @@ pub(crate) mod tests { ) -> (verification::RequestId, ActivePusRequestStd) { let sp_header = SpHeader::new_from_apid(apid); let sec_header_dummy = PusTcSecondaryHeader::new_simple(0, 0); - let init = self.verif_reporter.add_tc(&PusTcCreator::new( + let init = self.verif_reporter.start_verification(&PusTcCreator::new( sp_header, sec_header_dummy, &[], diff --git a/satrs-mib/codegen/Cargo.toml b/satrs-mib/codegen/Cargo.toml index d9c538e..6ff52dc 100644 --- a/satrs-mib/codegen/Cargo.toml +++ b/satrs-mib/codegen/Cargo.toml @@ -28,6 +28,7 @@ features = ["full"] trybuild = { version = "1", features = ["diff"] } [dev-dependencies.satrs-shared] +path = "../../satrs-shared" version = ">=0.1.3, <=0.2" [dev-dependencies.satrs-mib] diff --git a/satrs/src/hal/std/tcp_cobs_server.rs b/satrs/src/hal/std/tcp_cobs_server.rs index a545016..c4758b6 100644 --- a/satrs/src/hal/std/tcp_cobs_server.rs +++ b/satrs/src/hal/std/tcp_cobs_server.rs @@ -150,9 +150,9 @@ impl< /// /// * `cfg` - Configuration of the server. /// * `tm_source` - Generic TM source used by the server to pull telemetry packets which are - /// then sent back to the client. + /// then sent back to the client. /// * `tc_receiver` - Any received telecommands which were decoded successfully will be - /// forwarded to this TC receiver. + /// forwarded to this TC receiver. pub fn new( cfg: ServerConfig, tm_source: TmSource, @@ -377,13 +377,13 @@ mod tests { current_idx += 1; let mut dec_report = cobs::decode_in_place_report(&mut read_buf[current_idx..]) .expect("COBS decoding failed"); - assert_eq!(dec_report.dst_used, 5); + assert_eq!(dec_report.frame_size(), 5); // Skip first sentinel byte. assert_eq!( &read_buf[current_idx..current_idx + INVERTED_PACKET.len()], &INVERTED_PACKET ); - current_idx += dec_report.src_used; + current_idx += dec_report.parsed_size(); // End sentinel. assert_eq!(read_buf[current_idx], 0, "invalid sentinel end byte"); current_idx += 1; @@ -393,13 +393,13 @@ mod tests { current_idx += 1; dec_report = cobs::decode_in_place_report(&mut read_buf[current_idx..]) .expect("COBS decoding failed"); - assert_eq!(dec_report.dst_used, 5); + assert_eq!(dec_report.frame_size(), 5); // Skip first sentinel byte. assert_eq!( &read_buf[current_idx..current_idx + SIMPLE_PACKET.len()], &SIMPLE_PACKET ); - current_idx += dec_report.src_used; + current_idx += dec_report.parsed_size(); // End sentinel. assert_eq!(read_buf[current_idx], 0); break; diff --git a/satrs/src/pus/event_man.rs b/satrs/src/pus/event_man.rs index 8de8f6f..5eddbe4 100644 --- a/satrs/src/pus/event_man.rs +++ b/satrs/src/pus/event_man.rs @@ -409,7 +409,7 @@ mod tests { assert!(res.event_was_enabled); assert!(res.params_were_propagated); let event_tm = event_rx.try_recv().expect("no event received"); - let (tm, _) = PusTmReader::new(&event_tm.packet, 7).expect("reading TM failed"); + let tm = PusTmReader::new(&event_tm.packet, 7).expect("reading TM failed"); assert_eq!(tm.service(), 5); assert_eq!(tm.subservice(), Subservice::TmInfoReport as u8); assert_eq!(tm.user_data().len(), 4 + param_data.len()); @@ -437,7 +437,7 @@ mod tests { assert!(res.event_was_enabled); assert!(res.params_were_propagated); let event_tm = event_rx.try_recv().expect("no event received"); - let (tm, _) = PusTmReader::new(&event_tm.packet, 7).expect("reading TM failed"); + let tm = PusTmReader::new(&event_tm.packet, 7).expect("reading TM failed"); assert_eq!(tm.service(), 5); assert_eq!(tm.subservice(), Subservice::TmInfoReport as u8); assert_eq!(tm.user_data().len(), 4 + param_data.len()); diff --git a/satrs/src/pus/scheduler_srv.rs b/satrs/src/pus/scheduler_srv.rs index 922ab97..46cfcb6 100644 --- a/satrs/src/pus/scheduler_srv.rs +++ b/satrs/src/pus/scheduler_srv.rs @@ -310,7 +310,11 @@ mod tests { impl PusTestHarness for Pus11HandlerWithStoreTester { fn init_verification(&mut self, tc: &PusTcCreator) -> VerificationToken { - let init_token = self.handler.service_helper.verif_reporter_mut().add_tc(tc); + let init_token = self + .handler + .service_helper + .verif_reporter_mut() + .start_verification(tc); self.handler .service_helper .verif_reporter() diff --git a/satrs/src/pus/test.rs b/satrs/src/pus/test.rs index 8b00453..0977662 100644 --- a/satrs/src/pus/test.rs +++ b/satrs/src/pus/test.rs @@ -181,7 +181,11 @@ mod tests { impl PusTestHarness for Pus17HandlerWithStoreTester { fn init_verification(&mut self, tc: &PusTcCreator) -> VerificationToken { - let init_token = self.handler.service_helper.verif_reporter_mut().add_tc(tc); + let init_token = self + .handler + .service_helper + .verif_reporter_mut() + .start_verification(tc); self.handler .service_helper .verif_reporter() @@ -239,7 +243,11 @@ mod tests { impl PusTestHarness for Pus17HandlerWithVecTester { fn init_verification(&mut self, tc: &PusTcCreator) -> VerificationToken { - let init_token = self.handler.service_helper.verif_reporter_mut().add_tc(tc); + let init_token = self + .handler + .service_helper + .verif_reporter_mut() + .start_verification(tc); self.handler .service_helper .verif_reporter() diff --git a/satrs/src/pus/verification.rs b/satrs/src/pus/verification.rs index 862a169..ca71982 100644 --- a/satrs/src/pus/verification.rs +++ b/satrs/src/pus/verification.rs @@ -408,14 +408,10 @@ pub trait VerificationReportingProvider { fn set_apid(&mut self, apid: Apid); fn apid(&self) -> Apid; - fn add_tc( - &mut self, + fn start_verification( + &self, pus_tc: &(impl CcsdsPacket + IsPusTelecommand), - ) -> VerificationToken { - self.add_tc_with_req_id(RequestId::new(pus_tc)) - } - - fn add_tc_with_req_id(&mut self, req_id: RequestId) -> VerificationToken; + ) -> VerificationToken; fn acceptance_success( &self, @@ -518,10 +514,7 @@ impl VerificationReportCreator { /// Initialize verification handling by passing a TC reference. This returns a token required /// to call the acceptance functions - pub fn read_request_id_from_tc( - &mut self, - pus_tc: &(impl CcsdsPacket + IsPusTelecommand), - ) -> RequestId { + pub fn read_request_id_from_tc(pus_tc: &(impl CcsdsPacket + IsPusTelecommand)) -> RequestId { RequestId::new(pus_tc) } @@ -956,12 +949,19 @@ pub mod alloc_mod { } } + pub fn start_verification( + &self, + pus_tc: &(impl CcsdsPacket + IsPusTelecommand), + ) -> VerificationToken { + VerificationToken::::new( + VerificationReportCreator::read_request_id_from_tc(pus_tc), + ) + } + delegate!( to self.reporter_creator { pub fn set_apid(&mut self, apid: u16) -> bool; pub fn apid(&self) -> u16; - pub fn add_tc(&mut self, pus_tc: &(impl CcsdsPacket + IsPusTelecommand)) -> VerificationToken; - pub fn add_tc_with_req_id(&mut self, req_id: RequestId) -> VerificationToken; pub fn dest_id(&self) -> u16; pub fn set_dest_id(&mut self, dest_id: u16); } @@ -979,11 +979,16 @@ pub mod alloc_mod { to self.reporter_creator { fn set_apid(&mut self, apid: Apid); fn apid(&self) -> Apid; - fn add_tc(&mut self, pus_tc: &(impl CcsdsPacket + IsPusTelecommand)) -> VerificationToken; - fn add_tc_with_req_id(&mut self, req_id: RequestId) -> VerificationToken; } ); + fn start_verification( + &self, + pus_tc: &(impl CcsdsPacket + IsPusTelecommand), + ) -> VerificationToken { + VerificationToken::::new(RequestId::new(pus_tc)) + } + fn owner_id(&self) -> ComponentId { self.owner_id } @@ -1345,22 +1350,19 @@ pub mod test_util { } impl VerificationReportingProvider for TestVerificationReporter { + fn start_verification( + &self, + pus_tc: &(impl CcsdsPacket + IsPusTelecommand), + ) -> VerificationToken { + VerificationToken::::new(RequestId::new(pus_tc)) + } + fn set_apid(&mut self, _apid: Apid) {} fn apid(&self) -> Apid { 0 } - fn add_tc_with_req_id(&mut self, req_id: RequestId) -> VerificationToken { - self.report_queue - .borrow_mut() - .push_back((req_id, VerificationReportInfo::Added)); - VerificationToken { - state: PhantomData, - request_id: req_id, - } - } - fn acceptance_success( &self, _sender: &(impl EcssTmSender + ?Sized), @@ -1817,15 +1819,16 @@ pub mod tests { } } + pub fn init_verification(&self) -> VerificationToken { + let tc_reader = PusTcReader::new(&self.tc).unwrap(); + self.reporter.start_verification(&tc_reader) + } + #[allow(dead_code)] fn set_dest_id(&mut self, dest_id: u16) { self.reporter.set_dest_id(dest_id); } - fn init(&mut self) -> VerificationToken { - self.reporter.add_tc(&PusTcReader::new(&self.tc).unwrap().0) - } - fn acceptance_success( &self, token: VerificationToken, @@ -2075,8 +2078,8 @@ pub mod tests { #[test] fn test_basic_acceptance_success() { - let mut testbench = VerificationReporterTestbench::new(0, create_generic_ping(), 16); - let token = testbench.init(); + let testbench = VerificationReporterTestbench::new(0, create_generic_ping(), 16); + let token = testbench.init_verification(); testbench .acceptance_success(token, &EMPTY_STAMP) .expect("sending acceptance success failed"); @@ -2086,7 +2089,7 @@ pub mod tests { #[test] fn test_basic_acceptance_failure() { let mut testbench = VerificationReporterTestbench::new(0, create_generic_ping(), 16); - let init_token = testbench.init(); + let init_token = testbench.init_verification(); let timestamp = [1, 2, 3, 4, 5, 6, 7]; let fail_code = EcssEnumU16::new(2); let fail_params = FailParams::new_no_fail_data(timestamp.as_slice(), &fail_code); @@ -2099,7 +2102,7 @@ pub mod tests { #[test] fn test_basic_acceptance_failure_with_helper() { let mut testbench = VerificationReporterTestbench::new(0, create_generic_ping(), 16); - let init_token = testbench.init(); + let init_token = testbench.init_verification(); let timestamp = [1, 2, 3, 4, 5, 6, 7]; let fail_code = EcssEnumU16::new(2); let fail_params = FailParams::new_no_fail_data(timestamp.as_slice(), &fail_code); @@ -2112,7 +2115,7 @@ pub mod tests { #[test] fn test_acceptance_fail_data_too_large() { let mut testbench = VerificationReporterTestbench::new(0, create_generic_ping(), 8); - let init_token = testbench.init(); + let init_token = testbench.init_verification(); let stamp_buf = [1, 2, 3, 4, 5, 6, 7]; let fail_code = EcssEnumU16::new(2); let fail_data: [u8; 16] = [0; 16]; @@ -2149,7 +2152,7 @@ pub mod tests { let mut fail_data_raw = [0; 4]; fail_data.write_to_be_bytes(&mut fail_data_raw).unwrap(); let fail_params = FailParams::new(&EMPTY_STAMP, &fail_code, fail_data_raw.as_slice()); - let init_token = testbench.init(); + let init_token = testbench.init_verification(); testbench .acceptance_failure(init_token, fail_params) .expect("sending acceptance failure failed"); @@ -2167,7 +2170,7 @@ pub mod tests { #[test] fn test_start_failure() { let mut testbench = VerificationReporterTestbench::new(0, create_generic_ping(), 16); - let init_token = testbench.init(); + let init_token = testbench.init_verification(); let fail_code = EcssEnumU8::new(22); let fail_data: i32 = -12; let mut fail_data_raw = [0; 4]; @@ -2186,7 +2189,7 @@ pub mod tests { #[test] fn test_start_failure_with_helper() { let mut testbench = VerificationReporterTestbench::new(0, create_generic_ping(), 16); - let token = testbench.init(); + let token = testbench.init_verification(); let fail_code = EcssEnumU8::new(22); let fail_data: i32 = -12; let mut fail_data_raw = [0; 4]; @@ -2205,7 +2208,7 @@ pub mod tests { #[test] fn test_steps_success() { let mut testbench = VerificationReporterTestbench::new(0, create_generic_ping(), 16); - let token = testbench.init(); + let token = testbench.init_verification(); let accepted_token = testbench .acceptance_success(token, &EMPTY_STAMP) .expect("acceptance failed"); @@ -2228,7 +2231,7 @@ pub mod tests { #[test] fn test_step_failure() { let mut testbench = VerificationReporterTestbench::new(0, create_generic_ping(), 16); - let token = testbench.init(); + let token = testbench.init_verification(); let fail_code = EcssEnumU32::new(0x1020); let fail_data: f32 = -22.3232; let mut fail_data_raw = [0; 4]; @@ -2262,7 +2265,7 @@ pub mod tests { #[test] fn test_completion_failure() { let mut testbench = VerificationReporterTestbench::new(0, create_generic_ping(), 16); - let token = testbench.init(); + let token = testbench.init_verification(); let fail_code = EcssEnumU32::new(0x1020); let fail_params = FailParams::new_no_fail_data(&EMPTY_STAMP, &fail_code); @@ -2285,7 +2288,7 @@ pub mod tests { fn test_complete_success_sequence() { let mut testbench = VerificationReporterTestbench::new(TEST_COMPONENT_ID_0.id(), create_generic_ping(), 16); - let token = testbench.init(); + let token = testbench.init_verification(); let accepted_token = testbench .acceptance_success(token, &EMPTY_STAMP) .expect("Sending acceptance success failed"); @@ -2307,7 +2310,7 @@ pub mod tests { create_generic_ping(), SequenceCounterHook::default(), ); - let token = testbench.init(); + let token = testbench.init_verification(); let accepted_token = testbench .acceptance_success(token, &EMPTY_STAMP) .expect("Sending acceptance success failed"); @@ -2325,7 +2328,7 @@ pub mod tests { #[test] fn test_completion_failure_helper_string_param() { let mut testbench = VerificationReporterTestbench::new(0, create_generic_ping(), 32); - let token = testbench.init(); + let token = testbench.init_verification(); let accepted_token = testbench .acceptance_success(token, &EMPTY_STAMP) .expect("Sending acceptance success failed"); @@ -2352,7 +2355,7 @@ pub mod tests { #[test] fn test_step_failure_helper_string_param() { let mut testbench = VerificationReporterTestbench::new(0, create_generic_ping(), 32); - let token = testbench.init(); + let token = testbench.init_verification(); let accepted_token = testbench .acceptance_success(token, &EMPTY_STAMP) .expect("Sending acceptance success failed"); diff --git a/satrs/tests/pus_events.rs b/satrs/tests/pus_events.rs index 81c7b70..cda2225 100644 --- a/satrs/tests/pus_events.rs +++ b/satrs/tests/pus_events.rs @@ -107,9 +107,9 @@ fn test_threaded_usage() { Ok(event_tm) => { let tm = PusTmReader::new(event_tm.packet.as_slice(), 7) .expect("Deserializing TM failed"); - assert_eq!(tm.0.service(), 5); - assert_eq!(tm.0.subservice(), 1); - let src_data = tm.0.source_data(); + assert_eq!(tm.service(), 5); + assert_eq!(tm.subservice(), 1); + let src_data = tm.source_data(); assert!(!src_data.is_empty()); assert_eq!(src_data.len(), 4); let event = @@ -137,9 +137,9 @@ fn test_threaded_usage() { Ok(event_tm) => { let tm = PusTmReader::new(event_tm.packet.as_slice(), 7) .expect("Deserializing TM failed"); - assert_eq!(tm.0.service(), 5); - assert_eq!(tm.0.subservice(), 2); - let src_data = tm.0.source_data(); + assert_eq!(tm.service(), 5); + assert_eq!(tm.subservice(), 2); + let src_data = tm.source_data(); assert!(!src_data.is_empty()); assert_eq!(src_data.len(), 12); let event =