Skip to content

Commit 3f4c0e7

Browse files
committed
try to make it compile again
1 parent b3a7f3f commit 3f4c0e7

File tree

8 files changed

+163
-287
lines changed

8 files changed

+163
-287
lines changed

satrs-example/src/eps/pcdu.rs

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,7 @@ use satrs_minisim::{
3232
};
3333
use serde::{Deserialize, Serialize};
3434

35-
use crate::{
36-
hk::PusHkHelper,
37-
//pus::hk::{HkReply, HkReplyVariant},
38-
requests::CompositeRequest,
39-
tmtc::sender::TmTcSender,
40-
};
35+
use crate::{hk::PusHkHelper, requests::CompositeRequest};
4136

4237
pub trait SerialInterface {
4338
type Error: core::fmt::Debug;
@@ -213,7 +208,7 @@ pub struct PcduHandler<ComInterface: SerialInterface> {
213208
//hk_reply_tx: mpsc::SyncSender<GenericMessage<HkReply>>,
214209
hk_tx: std::sync::mpsc::SyncSender<CcsdsTmPacketOwned>,
215210
switch_request_rx: mpsc::Receiver<GenericMessage<SwitchRequest>>,
216-
tm_sender: TmTcSender,
211+
tm_tx: mpsc::SyncSender<CcsdsTmPacketOwned>,
217212
pub com_interface: ComInterface,
218213
shared_switch_map: Arc<Mutex<SwitchSet>>,
219214
#[new(value = "PusHkHelper::new(id)")]
@@ -274,7 +269,7 @@ impl<ComInterface: SerialInterface> PcduHandler<ComInterface> {
274269
}
275270
}
276271

277-
pub fn handle_hk_request(&mut self, requestor_info: &MessageMetadata, hk_request: &HkRequest) {
272+
pub fn handle_hk_request(&mut self, _requestor_info: &MessageMetadata, hk_request: &HkRequest) {
278273
match hk_request.variant {
279274
HkRequestVariant::OneShot => {
280275
if hk_request.unique_id == SetId::SwitcherSet as u32 {
@@ -301,11 +296,11 @@ impl<ComInterface: SerialInterface> PcduHandler<ComInterface> {
301296
},
302297
&mut self.tm_buf,
303298
) {
304-
self.tm_sender
305-
.send_tm(self.id.id(), PusTmVariant::Direct(hk_tm))
306-
.expect("failed to send HK TM");
307299
// TODO: Fix
308300
/*
301+
self.tm_sender
302+
.send(self.id.id(), PusTmVariant::Direct(hk_tm))
303+
.expect("failed to send HK TM");
309304
self.hk_reply_tx
310305
.send(GenericMessage::new(
311306
*requestor_info,
@@ -511,9 +506,7 @@ mod tests {
511506
use std::sync::mpsc;
512507

513508
use arbitrary_int::u21;
514-
use satrs::{
515-
mode::ModeRequest, power::SwitchStateBinary, request::GenericMessage, tmtc::PacketAsVec,
516-
};
509+
use satrs::{mode::ModeRequest, power::SwitchStateBinary, request::GenericMessage};
517510
use satrs_example::ids::{self, Apid};
518511
use satrs_minisim::eps::SwitchMapBinary;
519512

@@ -561,7 +554,7 @@ mod tests {
561554
pub composite_request_tx: mpsc::Sender<GenericMessage<CompositeRequest>>,
562555
//pub hk_reply_rx: mpsc::Receiver<GenericMessage<HkReply>>,
563556
pub hk_rx: std::sync::mpsc::Receiver<CcsdsTmPacketOwned>,
564-
pub tm_rx: mpsc::Receiver<PacketAsVec>,
557+
pub tm_rx: mpsc::Receiver<CcsdsTmPacketOwned>,
565558
pub switch_request_tx: mpsc::Sender<GenericMessage<SwitchRequest>>,
566559
pub handler: PcduHandler<SerialInterfaceTest>,
567560
}
@@ -574,7 +567,7 @@ mod tests {
574567
let mode_node = ModeRequestHandlerMpscBounded::new(PCDU.into(), mode_request_rx);
575568
let (composite_request_tx, composite_request_rx) = mpsc::channel();
576569
let (hk_tx, hk_rx) = mpsc::sync_channel(10);
577-
let (tm_tx, tm_rx) = mpsc::sync_channel::<PacketAsVec>(5);
570+
let (tm_tx, tm_rx) = mpsc::sync_channel(5);
578571
let (switch_request_tx, switch_reqest_rx) = mpsc::channel();
579572
let shared_switch_map = Arc::new(Mutex::new(SwitchSet::default()));
580573
let mut handler = PcduHandler::new(
@@ -584,7 +577,8 @@ mod tests {
584577
composite_request_rx,
585578
hk_tx,
586579
switch_reqest_rx,
587-
TmTcSender::Heap(tm_tx.clone()),
580+
tm_tx.clone(),
581+
//TmTcSender::Normal(tm_tx.clone()),
588582
SerialInterfaceTest::default(),
589583
shared_switch_map,
590584
);

satrs-example/src/events.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::sync::mpsc::{self};
22

3-
use crate::pus::create_verification_reporter;
3+
//use crate::pus::create_verification_reporter;
44
use arbitrary_int::traits::Integer as _;
55
use arbitrary_int::u11;
66
use satrs::event_man_legacy::{EventMessageU32, EventRoutingError};
@@ -34,6 +34,7 @@ impl EventTmHook for EventApidSetter {
3434
}
3535
}
3636

37+
/*
3738
/// The PUS event handler subscribes for all events and converts them into ECSS PUS 5 event
3839
/// packets. It also handles the verification completion of PUS event service requests.
3940
pub struct PusEventHandler<TmSender: EcssTmSender> {
@@ -292,3 +293,4 @@ mod tests {
292293
// TODO: Add test.
293294
}
294295
}
296+
*/

satrs-example/src/interface/udp.rs

Lines changed: 55 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
#![allow(dead_code)]
2+
use std::collections::VecDeque;
23
use std::net::{SocketAddr, UdpSocket};
3-
use std::sync::mpsc;
4+
use std::sync::{mpsc, Arc, Mutex};
45

56
use log::{info, warn};
67
use satrs::hal::std::udp_server::{ReceiveResult, UdpTcServer};
78
use satrs::pus::HandlingStatus;
89
use satrs::queue::GenericSendError;
9-
use satrs::tmtc::PacketAsVec;
1010

11-
use satrs::pool::{PoolProviderWithGuards, SharedStaticMemoryPool};
12-
use satrs::tmtc::PacketInPool;
11+
use satrs_example::CcsdsTmPacketOwned;
1312

1413
use crate::tmtc::sender::TmTcSender;
1514

16-
pub trait UdpTmHandler {
15+
pub trait UdpTmHandlerProvider {
1716
fn send_tm_to_udp_client(&mut self, socket: &UdpSocket, recv_addr: &SocketAddr);
1817
}
1918

19+
/*
2020
pub struct StaticUdpTmHandler {
2121
pub tm_rx: mpsc::Receiver<PacketInPool>,
2222
pub tm_store: SharedStaticMemoryPool,
@@ -45,35 +45,67 @@ impl UdpTmHandler for StaticUdpTmHandler {
4545
}
4646
}
4747
}
48+
*/
4849

49-
pub struct DynamicUdpTmHandler {
50-
pub tm_rx: mpsc::Receiver<PacketAsVec>,
50+
pub struct UdpTmHandlerWithChannel {
51+
pub tm_rx: mpsc::Receiver<CcsdsTmPacketOwned>,
5152
}
5253

53-
impl UdpTmHandler for DynamicUdpTmHandler {
54+
impl UdpTmHandlerProvider for UdpTmHandlerWithChannel {
5455
fn send_tm_to_udp_client(&mut self, socket: &UdpSocket, recv_addr: &SocketAddr) {
5556
while let Ok(tm) = self.tm_rx.try_recv() {
56-
if tm.packet.len() > 9 {
57-
let service = tm.packet[7];
58-
let subservice = tm.packet[8];
59-
info!("Sending PUS TM[{service},{subservice}]")
60-
} else {
61-
info!("Sending PUS TM");
62-
}
63-
let result = socket.send_to(&tm.packet, recv_addr);
57+
info!("Sending PUS TM with header {:?}", tm.tm_header);
58+
let result = socket.send_to(&tm.to_vec(), recv_addr);
6459
if let Err(e) = result {
6560
warn!("Sending TM with UDP socket failed: {e}")
6661
}
6762
}
6863
}
6964
}
7065

71-
pub struct UdpTmtcServer<TmHandler: UdpTmHandler> {
66+
#[derive(Default, Debug, Clone)]
67+
pub struct TestTmHandler {
68+
addrs_to_send_to: Arc<Mutex<VecDeque<SocketAddr>>>,
69+
}
70+
71+
impl UdpTmHandlerProvider for TestTmHandler {
72+
fn send_tm_to_udp_client(&mut self, _socket: &UdpSocket, recv_addr: &SocketAddr) {
73+
self.addrs_to_send_to.lock().unwrap().push_back(*recv_addr);
74+
}
75+
}
76+
77+
pub enum UdpTmHandler {
78+
Normal(UdpTmHandlerWithChannel),
79+
Test(TestTmHandler),
80+
}
81+
82+
impl From<UdpTmHandlerWithChannel> for UdpTmHandler {
83+
fn from(handler: UdpTmHandlerWithChannel) -> Self {
84+
UdpTmHandler::Normal(handler)
85+
}
86+
}
87+
88+
impl From<TestTmHandler> for UdpTmHandler {
89+
fn from(handler: TestTmHandler) -> Self {
90+
UdpTmHandler::Test(handler)
91+
}
92+
}
93+
94+
impl UdpTmHandlerProvider for UdpTmHandler {
95+
fn send_tm_to_udp_client(&mut self, socket: &UdpSocket, recv_addr: &SocketAddr) {
96+
match self {
97+
UdpTmHandler::Normal(handler) => handler.send_tm_to_udp_client(socket, recv_addr),
98+
UdpTmHandler::Test(handler) => handler.send_tm_to_udp_client(socket, recv_addr),
99+
}
100+
}
101+
}
102+
103+
pub struct UdpTmtcServer {
72104
pub udp_tc_server: UdpTcServer<TmTcSender, GenericSendError>,
73-
pub tm_handler: TmHandler,
105+
pub tm_handler: UdpTmHandler,
74106
}
75107

76-
impl<TmHandler: UdpTmHandler> UdpTmtcServer<TmHandler> {
108+
impl UdpTmtcServer {
77109
pub fn periodic_operation(&mut self) {
78110
loop {
79111
if self.poll_tc_server() == HandlingStatus::Empty {
@@ -107,12 +139,8 @@ impl<TmHandler: UdpTmHandler> UdpTmtcServer<TmHandler> {
107139

108140
#[cfg(test)]
109141
mod tests {
142+
use std::net::IpAddr;
110143
use std::net::Ipv4Addr;
111-
use std::{
112-
collections::VecDeque,
113-
net::IpAddr,
114-
sync::{Arc, Mutex},
115-
};
116144

117145
use arbitrary_int::traits::Integer as _;
118146
use arbitrary_int::u14;
@@ -127,23 +155,12 @@ mod tests {
127155
use satrs_example::config::OBSW_SERVER_ADDR;
128156
use satrs_example::ids;
129157

130-
use crate::tmtc::sender::{MockSender, TmTcSender};
158+
use crate::tmtc::sender::MockSender;
131159

132160
use super::*;
133161

134162
const UDP_SERVER_ID: ComponentId = 0x05;
135163

136-
#[derive(Default, Debug, Clone)]
137-
pub struct TestTmHandler {
138-
addrs_to_send_to: Arc<Mutex<VecDeque<SocketAddr>>>,
139-
}
140-
141-
impl UdpTmHandler for TestTmHandler {
142-
fn send_tm_to_udp_client(&mut self, _socket: &UdpSocket, recv_addr: &SocketAddr) {
143-
self.addrs_to_send_to.lock().unwrap().push_back(*recv_addr);
144-
}
145-
}
146-
147164
#[test]
148165
fn test_basic() {
149166
let sock_addr = SocketAddr::new(IpAddr::V4(OBSW_SERVER_ADDR), 0);
@@ -154,7 +171,7 @@ mod tests {
154171
let tm_handler_calls = tm_handler.addrs_to_send_to.clone();
155172
let mut udp_dyn_server = UdpTmtcServer {
156173
udp_tc_server,
157-
tm_handler,
174+
tm_handler: tm_handler.into(),
158175
};
159176
udp_dyn_server.periodic_operation();
160177
let queue = udp_dyn_server
@@ -179,7 +196,7 @@ mod tests {
179196
let tm_handler_calls = tm_handler.addrs_to_send_to.clone();
180197
let mut udp_dyn_server = UdpTmtcServer {
181198
udp_tc_server,
182-
tm_handler,
199+
tm_handler: tm_handler.into(),
183200
};
184201
let sph = SpHeader::new_for_unseg_tc(ids::Apid::GenericPus.raw_value(), u14::ZERO, 0);
185202
let ping_tc = PusTcCreator::new_simple(

satrs-example/src/lib.rs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,20 @@ pub struct CcsdsTmPacketOwned {
4242
pub payload: alloc::vec::Vec<u8>,
4343
}
4444

45+
/// Simple type modelling packet stored in the heap. This structure is intended to
46+
/// be used when sending a packet via a message queue, so it also contains the sender ID.
47+
#[derive(Debug, PartialEq, Eq, Clone)]
48+
pub struct PacketAsVec {
49+
pub sender_id: ComponentId,
50+
pub packet: Vec<u8>,
51+
}
52+
53+
impl PacketAsVec {
54+
pub fn new(sender_id: ComponentId, packet: Vec<u8>) -> Self {
55+
Self { sender_id, packet }
56+
}
57+
}
58+
4559
#[derive(Debug, thiserror::Error)]
4660
pub enum CcsdsCreationError {
4761
#[error("CCSDS packet creation error: {0}")]
@@ -76,11 +90,11 @@ impl CcsdsTmPacketOwned {
7690
.unwrap()
7791
}
7892

79-
pub fn to_vec(&self) -> Result<alloc::vec::Vec<u8>, CcsdsCreationError> {
93+
pub fn to_vec(&self) -> alloc::vec::Vec<u8> {
8094
let mut buf = alloc::vec![0u8; self.len_written()];
81-
let len = self.write_to_bytes(&mut buf)?;
95+
let len = self.write_to_bytes(&mut buf).unwrap();
8296
buf.truncate(len);
83-
Ok(buf)
97+
buf
8498
}
8599
}
86100

0 commit comments

Comments
 (0)