This commit is contained in:
parent
1c22afef31
commit
9c5327aa16
@ -804,49 +804,6 @@ pub mod std_mod {
|
|||||||
pub type MpscTmInSharedPoolSender = TmInSharedPoolSender<mpsc::Sender<PusTmInPool>>;
|
pub type MpscTmInSharedPoolSender = TmInSharedPoolSender<mpsc::Sender<PusTmInPool>>;
|
||||||
pub type MpscTmInSharedPoolSenderBounded = TmInSharedPoolSender<mpsc::SyncSender<PusTmInPool>>;
|
pub type MpscTmInSharedPoolSenderBounded = TmInSharedPoolSender<mpsc::SyncSender<PusTmInPool>>;
|
||||||
|
|
||||||
/*
|
|
||||||
/// This class can be used if frequent heap allocations during run-time are not an issue.
|
|
||||||
/// PUS TM packets will be sent around as [Vec]s. Please note that the current implementation
|
|
||||||
/// of this class can not deal with store addresses, so it is assumed that is is always
|
|
||||||
/// going to be called with direct packets.
|
|
||||||
#[derive(Clone)]
|
|
||||||
pub struct TmAsVecSenderWithId<Sender: EcssTmSenderCore> {
|
|
||||||
// id: ComponentId,
|
|
||||||
//name: &'static str,
|
|
||||||
sender: Sender,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<mpsc::SendError<Vec<u8>>> for EcssTmtcError {
|
|
||||||
fn from(_: mpsc::SendError<Vec<u8>>) -> Self {
|
|
||||||
Self::Send(GenericSendError::RxDisconnected)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<Sender: EcssTmSenderCore> TmAsVecSenderWithId<Sender> {
|
|
||||||
pub fn new(id: ComponentId, name: &'static str, sender: Sender) -> Self {
|
|
||||||
Self { id, sender, name }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<Sender: EcssTmSenderCore> ChannelWithId for TmAsVecSenderWithId<Sender> {
|
|
||||||
fn id(&self) -> ComponentId {
|
|
||||||
self.id
|
|
||||||
}
|
|
||||||
fn name(&self) -> &'static str {
|
|
||||||
self.name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<Sender: EcssTmSenderCore> EcssTmSenderCore for TmAsVecSenderWithId<Sender> {
|
|
||||||
fn send_tm(&self, tm: PusTmVariant) -> Result<(), EcssTmtcError> {
|
|
||||||
self.sender.send_tm(tm)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub type TmAsVecSenderWithMpsc = TmAsVecSenderWithId<mpsc::Sender<Vec<u8>>>;
|
|
||||||
pub type TmAsVecSenderWithBoundedMpsc = TmAsVecSenderWithId<mpsc::SyncSender<Vec<u8>>>;
|
|
||||||
*/
|
|
||||||
|
|
||||||
pub type MpscTcReceiver = mpsc::Receiver<EcssTcAndToken>;
|
pub type MpscTcReceiver = mpsc::Receiver<EcssTcAndToken>;
|
||||||
|
|
||||||
impl EcssTcReceiverCore for MpscTcReceiver {
|
impl EcssTcReceiverCore for MpscTcReceiver {
|
||||||
|
@ -17,9 +17,10 @@
|
|||||||
//! use std::time::Duration;
|
//! use std::time::Duration;
|
||||||
//! use satrs::pool::{PoolProviderWithGuards, StaticMemoryPool, StaticPoolConfig};
|
//! use satrs::pool::{PoolProviderWithGuards, StaticMemoryPool, StaticPoolConfig};
|
||||||
//! use satrs::pus::verification::{
|
//! use satrs::pus::verification::{
|
||||||
//! VerificationReportingProvider, VerificationReporterCfg
|
//! VerificationReportingProvider, VerificationReporterCfg, VerificationReporter
|
||||||
//! };
|
//! };
|
||||||
//! use satrs::seq_count::SeqCountProviderSimple;
|
//! use satrs::seq_count::SeqCountProviderSimple;
|
||||||
|
//! use satrs::request::UniqueApidTargetId;
|
||||||
//! use satrs::pus::MpscTmInSharedPoolSender;
|
//! use satrs::pus::MpscTmInSharedPoolSender;
|
||||||
//! use satrs::tmtc::tm_helper::SharedTmPool;
|
//! use satrs::tmtc::tm_helper::SharedTmPool;
|
||||||
//! use spacepackets::ecss::PusPacket;
|
//! use spacepackets::ecss::PusPacket;
|
||||||
@ -29,15 +30,16 @@
|
|||||||
//!
|
//!
|
||||||
//! const EMPTY_STAMP: [u8; 7] = [0; 7];
|
//! const EMPTY_STAMP: [u8; 7] = [0; 7];
|
||||||
//! const TEST_APID: u16 = 0x02;
|
//! const TEST_APID: u16 = 0x02;
|
||||||
|
//! const TEST_COMPONENT_ID: UniqueApidTargetId = UniqueApidTargetId::new(TEST_APID, 0x05);
|
||||||
//!
|
//!
|
||||||
//! let pool_cfg = StaticPoolConfig::new(vec![(10, 32), (10, 64), (10, 128), (10, 1024)], false);
|
//! let pool_cfg = StaticPoolConfig::new(vec![(10, 32), (10, 64), (10, 128), (10, 1024)], false);
|
||||||
//! let tm_pool = StaticMemoryPool::new(pool_cfg.clone());
|
//! let tm_pool = StaticMemoryPool::new(pool_cfg.clone());
|
||||||
//! let shared_tm_store = SharedTmPool::new(tm_pool);
|
//! let shared_tm_store = SharedTmPool::new(tm_pool);
|
||||||
//! let tm_store = shared_tm_store.clone_backing_pool();
|
//! let tm_store = shared_tm_store.clone_backing_pool();
|
||||||
//! let (verif_tx, verif_rx) = mpsc::channel();
|
//! let (verif_tx, verif_rx) = mpsc::channel();
|
||||||
//! let sender = MpscTmInSharedPoolSender::new(0, "Test Sender", shared_tm_store, verif_tx);
|
//! let sender = MpscTmInSharedPoolSender::new(shared_tm_store, verif_tx);
|
||||||
//! let cfg = VerificationReporterCfg::new(TEST_APID, 1, 2, 8).unwrap();
|
//! let cfg = VerificationReporterCfg::new(TEST_APID, 1, 2, 8).unwrap();
|
||||||
//! let mut reporter = VerificationReporterWithSender::new(&cfg , sender);
|
//! let mut reporter = VerificationReporter::new(&cfg);
|
||||||
//!
|
//!
|
||||||
//! let mut sph = SpHeader::tc_unseg(TEST_APID, 0, 0).unwrap();
|
//! let mut sph = SpHeader::tc_unseg(TEST_APID, 0, 0).unwrap();
|
||||||
//! let tc_header = PusTcSecondaryHeader::new_simple(17, 1);
|
//! let tc_header = PusTcSecondaryHeader::new_simple(17, 1);
|
||||||
@ -45,19 +47,19 @@
|
|||||||
//! let init_token = reporter.add_tc(&pus_tc_0);
|
//! let init_token = reporter.add_tc(&pus_tc_0);
|
||||||
//!
|
//!
|
||||||
//! // Complete success sequence for a telecommand
|
//! // Complete success sequence for a telecommand
|
||||||
//! let accepted_token = reporter.acceptance_success(init_token, &EMPTY_STAMP).unwrap();
|
//! let accepted_token = reporter.acceptance_success(TEST_COMPONENT_ID.id(), &sender, init_token, &EMPTY_STAMP).unwrap();
|
||||||
//! let started_token = reporter.start_success(accepted_token, &EMPTY_STAMP).unwrap();
|
//! let started_token = reporter.start_success(TEST_COMPONENT_ID.id(), &sender, accepted_token, &EMPTY_STAMP).unwrap();
|
||||||
//! reporter.completion_success(started_token, &EMPTY_STAMP).unwrap();
|
//! reporter.completion_success(TEST_COMPONENT_ID.id(), &sender, started_token, &EMPTY_STAMP).unwrap();
|
||||||
//!
|
//!
|
||||||
//! // Verify it arrives correctly on receiver end
|
//! // Verify it arrives correctly on receiver end
|
||||||
//! let mut tm_buf: [u8; 1024] = [0; 1024];
|
//! let mut tm_buf: [u8; 1024] = [0; 1024];
|
||||||
//! let mut packet_idx = 0;
|
//! let mut packet_idx = 0;
|
||||||
//! while packet_idx < 3 {
|
//! while packet_idx < 3 {
|
||||||
//! let addr = verif_rx.recv_timeout(Duration::from_millis(10)).unwrap();
|
//! let tm_in_store = verif_rx.recv_timeout(Duration::from_millis(10)).unwrap();
|
||||||
//! let tm_len;
|
//! let tm_len;
|
||||||
//! {
|
//! {
|
||||||
//! let mut rg = tm_store.write().expect("Error locking shared pool");
|
//! let mut rg = tm_store.write().expect("Error locking shared pool");
|
||||||
//! let store_guard = rg.read_with_guard(addr);
|
//! let store_guard = rg.read_with_guard(tm_in_store.store_addr);
|
||||||
//! tm_len = store_guard.read(&mut tm_buf).expect("Error reading TM slice");
|
//! tm_len = store_guard.read(&mut tm_buf).expect("Error reading TM slice");
|
||||||
//! }
|
//! }
|
||||||
//! let (pus_tm, _) = PusTmReader::new(&tm_buf[0..tm_len], 7)
|
//! let (pus_tm, _) = PusTmReader::new(&tm_buf[0..tm_len], 7)
|
||||||
|
@ -18,7 +18,7 @@ pub mod crossbeam_test {
|
|||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
const TEST_APID: u16 = 0x03;
|
const TEST_APID: u16 = 0x03;
|
||||||
const TEST_ID: TargetAndApidId = TargetAndApidId::new(TEST_APID, 0x05);
|
const TEST_ID: UniqueApidTargetId = UniqueApidTargetId::new(TEST_APID, 0x05);
|
||||||
|
|
||||||
const FIXED_STAMP: [u8; 7] = [0; 7];
|
const FIXED_STAMP: [u8; 7] = [0; 7];
|
||||||
const PACKETS_SENT: u8 = 8;
|
const PACKETS_SENT: u8 = 8;
|
||||||
|
Loading…
Reference in New Issue
Block a user