From 154e4ef4ce79dfb7c5cd0836c147eb99ba549a2e Mon Sep 17 00:00:00 2001 From: lkoester Date: Wed, 21 Dec 2022 18:44:33 +0100 Subject: [PATCH] added own main --- src/can.rs | 33 +++++++++++++++++++++++++++++++++ src/main.rs | 19 ++++++++++++++++--- src/pus.rs | 16 +++++++++++++--- 3 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 src/can.rs diff --git a/src/can.rs b/src/can.rs new file mode 100644 index 0000000..a4c201e --- /dev/null +++ b/src/can.rs @@ -0,0 +1,33 @@ +use std::sync::Receiver; +use std::sync::Sender; +use satrs_core::pool::StoreAddr; +#[cfg(feature = "can")] +use socketcan; +use crate::tmtc::TmStore; + +struct CanThreadArgs { + rx_can_request: Receiver, + tm_sender: Sender, + tm_store: TmStore, +} + +pub type CollInterval = u32; +pub enum HkIds { + AcsHk = 0 +} +pub enum HkRequest { + OneShot(HkIds), + Enable(HkIds, CollInterval), // periodic + Disable(HkIds, CollInterval) +} + +// impl CanThreadArgs { +// fn operation(&self) { +// +// } +// } +fn can_thread(canthreadargs: CanThreadArgs) { + // handle tc requests + // request from devices + // send tms +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index db45376..a0df392 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,11 @@ +#![allow(dead_code)] mod ccsds; mod pus; mod tmtc; +#[cfg(target_os = "unix")] +mod can; + + use crate::tmtc::{core_tmtc_task, CoreTmtcArgs, TmStore, PUS_APID}; use satrs_core::event_man::{ @@ -20,7 +25,8 @@ use satrs_core::pus::{EcssTmError, EcssTmSender}; use satrs_core::seq_count::SimpleSeqCountProvider; use satrs_core::tmtc::CcsdsError; use eurosim_obsw::{OBSW_SERVER_ADDR, SERVER_PORT}; -use spacepackets::time::{CdsShortTimeProvider, TimeWriter}; +use spacepackets::time::cds::TimeProvider; +use spacepackets::time::TimeWriter; use spacepackets::tm::PusTm; use std::net::{IpAddr, SocketAddr}; use std::sync::mpsc::channel; @@ -105,6 +111,8 @@ fn main() { let core_args = CoreTmtcArgs { tm_store: tm_store_helper.clone(), tm_sender: tm_funnel_tx.clone(), + // can_tm_sender: tm_funnel_tx.clone(), + // can_tm_store: tm_store_helper.clone(), event_sender, event_request_tx, }; @@ -134,7 +142,7 @@ fn main() { let jh2 = thread::spawn(move || { let mut timestamp: [u8; 7] = [0; 7]; let mut sender = EventTmSender::new(tm_store_helper, tm_funnel_tx); - let mut time_provider = CdsShortTimeProvider::new(0, 0); + let mut time_provider = TimeProvider::new_with_u16_days(0, 0); let mut report_completion = |event_req: EventRequestWithToken, timestamp: &[u8]| { reporter1 .completion_success(event_req.token, timestamp) @@ -168,12 +176,13 @@ fn main() { } }); + own_main(); jh0.join().expect("Joining UDP TMTC server thread failed"); jh1.join().expect("Joining TM Funnel thread failed"); jh2.join().expect("Joining Event Manager thread failed"); } -pub fn update_time(time_provider: &mut CdsShortTimeProvider, timestamp: &mut [u8]) { +pub fn update_time(time_provider: &mut TimeProvider, timestamp: &mut [u8]) { time_provider .update_from_now() .expect("Could not get current time"); @@ -181,3 +190,7 @@ pub fn update_time(time_provider: &mut CdsShortTimeProvider, timestamp: &mut [u8 .write_to_bytes(timestamp) .expect("Writing timestamp failed"); } + +fn own_main() { + +} diff --git a/src/pus.rs b/src/pus.rs index 18a21b9..73146fa 100644 --- a/src/pus.rs +++ b/src/pus.rs @@ -10,7 +10,8 @@ use satrs_core::tmtc::tm_helper::PusTmWithCdsShortHelper; use satrs_core::tmtc::PusServiceProvider; use spacepackets::ecss::{EcssEnumU16, PusPacket}; use spacepackets::tc::PusTc; -use spacepackets::time::{CdsShortTimeProvider, TimeWriter}; +use spacepackets::time::cds::TimeProvider; +use spacepackets::time::TimeWriter; use spacepackets::SpHeader; use std::sync::mpsc; @@ -20,7 +21,7 @@ pub struct PusReceiver { pub tm_store: TmStore, pub verif_reporter: StdVerifReporterWithSender, event_request_tx: mpsc::Sender, - stamper: CdsShortTimeProvider, + stamper: TimeProvider, time_stamp: [u8; 7], } @@ -38,7 +39,7 @@ impl PusReceiver { tm_store, verif_reporter, event_request_tx, - stamper: CdsShortTimeProvider::default(), + stamper: TimeProvider::default(), time_stamp: [0; 7], } } @@ -71,6 +72,15 @@ impl PusServiceProvider for PusReceiver { } } +pub type CollInterval = u32; +pub enum HkIds { + AcsHk = 0 +} +pub enum HkRequest { + OneShot(HkIds), + Enable(HkIds, CollInterval), // periodic + Disable(HkIds, CollInterval) +} impl PusReceiver { fn handle_test_service(&mut self, pus_tc: &PusTc, token: VerificationToken) { if pus_tc.subservice() == 1 {