11use anyhow:: bail;
22use arbitrary_int:: u11;
33use clap:: Parser as _;
4- use models:: { Apid , TcHeader } ;
4+ use models:: { Apid , MessageType , TcHeader } ;
55use satrs_example:: config:: { OBSW_SERVER_ADDR , SERVER_PORT } ;
66use spacepackets:: { CcsdsPacketIdAndPsc , SpacePacketHeader } ;
77use std:: {
@@ -17,6 +17,8 @@ use std::{
1717pub struct Cli {
1818 #[ arg( short, long) ]
1919 ping : bool ,
20+ #[ arg( short, long) ]
21+ test_event : bool ,
2022}
2123
2224fn setup_logger ( level : log:: LevelFilter ) -> Result < ( ) , fern:: InitError > {
@@ -60,6 +62,20 @@ fn main() -> anyhow::Result<()> {
6062 let request_packet = request. to_vec ( ) ;
6163 client. send_to ( & request_packet, addr) . unwrap ( ) ;
6264 }
65+ if cli. test_event {
66+ let request = models:: ccsds:: CcsdsTcPacketOwned :: new_with_request (
67+ SpacePacketHeader :: new_from_apid ( u11:: new ( Apid :: Tmtc as u16 ) ) ,
68+ TcHeader :: new ( models:: ComponentId :: Controller , models:: MessageType :: Event ) ,
69+ models:: control:: request:: Request :: TestEvent ,
70+ ) ;
71+ let sent_tc_id = CcsdsPacketIdAndPsc :: new_from_ccsds_packet ( & request. sp_header ) ;
72+ log:: info!(
73+ "sending event request with TC ID {:#010x}" ,
74+ sent_tc_id. raw( )
75+ ) ;
76+ let request_packet = request. to_vec ( ) ;
77+ client. send_to ( & request_packet, addr) . unwrap ( ) ;
78+ }
6379
6480 let mut recv_buf: Box < [ u8 ; 2048 ] > = Box :: new ( [ 0 ; 2048 ] ) ;
6581 loop {
@@ -106,8 +122,21 @@ fn handle_raw_tm_packet(data: &[u8]) -> anyhow::Result<()> {
106122 tm_header. sender_id,
107123 ) ;
108124 }
125+ if tm_header. message_type == MessageType :: Event {
126+ let response = postcard:: from_bytes :: < models:: Event > ( remainder) ;
127+ log:: info!(
128+ "Received event from {:?}: {:?}" ,
129+ tm_header. sender_id,
130+ response. unwrap( )
131+ ) ;
132+ return Ok ( ( ) ) ;
133+ }
109134 match tm_header. sender_id {
110- models:: ComponentId :: Pcdu => todo ! ( ) ,
135+ models:: ComponentId :: Pcdu => {
136+ let response =
137+ postcard:: from_bytes :: < models:: pcdu:: response:: Response > ( remainder) ;
138+ log:: info!( "Received response from PCDU: {:?}" , response. unwrap( ) ) ;
139+ }
111140 models:: ComponentId :: Controller => {
112141 let response =
113142 postcard:: from_bytes :: < models:: control:: response:: Response > ( remainder) ;
@@ -122,7 +151,7 @@ fn handle_raw_tm_packet(data: &[u8]) -> anyhow::Result<()> {
122151 models:: ComponentId :: UdpServer => todo ! ( ) ,
123152 models:: ComponentId :: TcpServer => todo ! ( ) ,
124153 models:: ComponentId :: Ground => todo ! ( ) ,
125- models:: ComponentId :: EventManager => todo ! ( ) ,
154+ models:: ComponentId :: EventManager => { }
126155 }
127156 }
128157 Err ( _) => todo ! ( ) ,
0 commit comments