finished new ids

This commit is contained in:
lkoester 2023-01-19 10:06:00 +01:00
parent 7ae4701e5f
commit e7600891ec
9 changed files with 153 additions and 126 deletions

0
src/aocs.rs Normal file
View File

View File

@ -19,7 +19,6 @@ use std::io;
use std::mem::size_of; use std::mem::size_of;
use std::sync::mpsc::Sender; use std::sync::mpsc::Sender;
pub struct CanRxHandler { pub struct CanRxHandler {
interface: &'static str, interface: &'static str,
socket: socket::CanSocket, socket: socket::CanSocket,

View File

@ -14,7 +14,8 @@ use strum_macros::EnumIter; // 0.17.1
#[derive(Debug, EnumIter, Eq, Hash, PartialEq, Copy, Clone, FromPrimitive)] #[derive(Debug, EnumIter, Eq, Hash, PartialEq, Copy, Clone, FromPrimitive)]
pub enum ThreadId { pub enum ThreadId {
AOCSThread, AOCSThread,
TMThread, PowerThread,
PLDThread,
} }
#[derive(Debug, EnumIter, Eq, Hash, PartialEq, Copy, Clone, FromPrimitive)] #[derive(Debug, EnumIter, Eq, Hash, PartialEq, Copy, Clone, FromPrimitive)]
@ -32,31 +33,34 @@ pub enum PackageId {
AOCSControlMGT1 = 31, AOCSControlMGT1 = 31,
AOCSControlMGT2 = 32, AOCSControlMGT2 = 32,
AOCSControlMGT3 = 33, AOCSControlMGT3 = 33,
AOCSControlRWL1 = 34, AOCSControlMGT4 = 34,
AOCSControlRWL2 = 35, AOCSControlRWL1 = 35,
AOCSControlRWL3 = 36, AOCSControlRWL2 = 36,
AOCSDataMGM1 = 41, AOCSControlRWL3 = 37,
AOCSDataMGM2 = 42, AOCSControlRWL4 = 38,
AOCSDataMGM3 = 43, AOCSDataRequestMGM1 = 41,
AOCSDataSunSensor1 = 44, AOCSDataRequestMGM2 = 42,
AOCSDataSunSensor2 = 45, AOCSDataRequestMGM3 = 43,
AOCSDataSunSensor3 = 46, AOCSDataRequestMGM4 = 44,
AOCSDataStarTracker = 47, AOCSDataRequestSunSensor1 = 45,
HousekeepingRequest = 61, AOCSDataRequestSunSensor2 = 46,
HousekeepingMGM1 = 62, AOCSDataRequestSunSensor3 = 47,
HousekeepingMGM2 = 63, AOCSDataRequestSunSensor4 = 48,
HousekeepingMGM3 = 64, AOCSDataRequestSunSensor5 = 49,
HousekeepingSunSensor1 = 65, AOCSDataRequestSunSensor6 = 50,
HousekeepingSunSensor2 = 66, AOCSDataRequestStarTracker = 51,
HousekeepingSunSensor3 = 67, AOCSDataMGM1 = 61,
HousekeepingStarTracker = 68, AOCSDataMGM2 = 62,
HousekeepingMGT1 = 69, AOCSDataMGM3 = 63,
HousekeepingMGT2 = 70, AOCSDataMGM4 = 64,
HousekeepingMGT3 = 71, AOCSDataSunSensor1 = 65,
HousekeepingRWL1 = 72, AOCSDataSunSensor2 = 66,
HousekeepingRWL2 = 73, AOCSDataSunSensor3 = 67,
HousekeepingRWL3 = 74, AOCSDataSunSensor4 = 68,
CameraImageRequest = 101, AOCSDataSunSensor5 = 69,
AOCSDataSunSensor6 = 70,
AOCSDataStarTracker = 71,
CameraImageRequest = 101 ,
CameraImageRequestConfirmation = 102, CameraImageRequestConfirmation = 102,
CameraImageExecutionStart = 103, CameraImageExecutionStart = 103,
CameraImageExectutionEnd = 104, CameraImageExectutionEnd = 104,
@ -69,18 +73,24 @@ pub enum DeviceId {
MGM1 = 3, MGM1 = 3,
MGM2 = 4, MGM2 = 4,
MGM3 = 5, MGM3 = 5,
SunSensor1 = 6, MGM4 = 6,
SunSensor2 = 7, SunSensor1 = 7,
SunSensor3 = 8, SunSensor2 = 8,
StarTracker = 9, SunSensor3 = 9,
MGT1 = 10, SunSensor4 = 10,
MGT2 = 11, SunSensor5 = 11,
MGT3 = 12, SunSensor6 = 12,
RWL1 = 13, StarTracker = 13,
RWL2 = 14, MGT1 = 14,
RWL3 = 15, MGT2 = 15,
Camera = 16, MGT3 = 16,
All = 17, MGT4 = 17,
RWL1 = 18,
RWL2 = 19,
RWL3 = 20,
RWL4 = 21,
Camera = 22,
All = 23,
} }
#[derive(Debug)] #[derive(Debug)]
@ -142,47 +152,50 @@ pub fn load_package_ids() -> HashMap<PackageId, SenderReceiverThread> {
let mut package_map: HashMap<PackageId, SenderReceiverThread> = HashMap::new(); let mut package_map: HashMap<PackageId, SenderReceiverThread> = HashMap::new();
let properties = vec![ let properties = vec![
SenderReceiverThread::new(DeviceId::OBC, DeviceId::PCDU, ThreadId::TMThread), SenderReceiverThread::new(DeviceId::OBC, DeviceId::PCDU, ThreadId::PowerThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::PCDU, ThreadId::TMThread), SenderReceiverThread::new(DeviceId::OBC, DeviceId::PCDU, ThreadId::PowerThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::PCDU, ThreadId::TMThread), SenderReceiverThread::new(DeviceId::OBC, DeviceId::PCDU, ThreadId::PowerThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::PCDU, ThreadId::TMThread), SenderReceiverThread::new(DeviceId::OBC, DeviceId::PCDU, ThreadId::PowerThread),
SenderReceiverThread::new(DeviceId::PCDU, DeviceId::OBC, ThreadId::TMThread), SenderReceiverThread::new(DeviceId::PCDU, DeviceId::OBC, ThreadId::PowerThread),
SenderReceiverThread::new(DeviceId::PCDU, DeviceId::OBC, ThreadId::TMThread), SenderReceiverThread::new(DeviceId::PCDU, DeviceId::OBC, ThreadId::PowerThread),
SenderReceiverThread::new(DeviceId::PCDU, DeviceId::OBC, ThreadId::TMThread), SenderReceiverThread::new(DeviceId::PCDU, DeviceId::OBC, ThreadId::PowerThread),
SenderReceiverThread::new(DeviceId::PCDU, DeviceId::OBC, ThreadId::TMThread), SenderReceiverThread::new(DeviceId::PCDU, DeviceId::OBC, ThreadId::PowerThread),
SenderReceiverThread::new(DeviceId::PCDU, DeviceId::OBC, ThreadId::TMThread), SenderReceiverThread::new(DeviceId::PCDU, DeviceId::OBC, ThreadId::PowerThread),
SenderReceiverThread::new(DeviceId::PCDU, DeviceId::OBC, ThreadId::TMThread), SenderReceiverThread::new(DeviceId::PCDU, DeviceId::OBC, ThreadId::PowerThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::MGT1, ThreadId::AOCSThread), SenderReceiverThread::new(DeviceId::OBC, DeviceId::MGT1, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::MGT2, ThreadId::AOCSThread), SenderReceiverThread::new(DeviceId::OBC, DeviceId::MGT2, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::MGT3, ThreadId::AOCSThread), SenderReceiverThread::new(DeviceId::OBC, DeviceId::MGT3, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::MGT4, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::RWL1, ThreadId::AOCSThread), SenderReceiverThread::new(DeviceId::OBC, DeviceId::RWL1, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::RWL2, ThreadId::AOCSThread), SenderReceiverThread::new(DeviceId::OBC, DeviceId::RWL2, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::RWL3, ThreadId::AOCSThread), SenderReceiverThread::new(DeviceId::OBC, DeviceId::RWL3, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::RWL4, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::MGM1, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::MGM2, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::MGM3, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::MGM4, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::SunSensor1, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::SunSensor2, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::SunSensor3, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::SunSensor4, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::SunSensor5, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::SunSensor6, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::StarTracker, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::MGM1, DeviceId::OBC, ThreadId::AOCSThread), SenderReceiverThread::new(DeviceId::MGM1, DeviceId::OBC, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::MGM2, DeviceId::OBC, ThreadId::AOCSThread), SenderReceiverThread::new(DeviceId::MGM2, DeviceId::OBC, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::MGM3, DeviceId::OBC, ThreadId::AOCSThread), SenderReceiverThread::new(DeviceId::MGM3, DeviceId::OBC, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::MGM4, DeviceId::OBC, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::SunSensor1, DeviceId::OBC, ThreadId::AOCSThread), SenderReceiverThread::new(DeviceId::SunSensor1, DeviceId::OBC, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::SunSensor2, DeviceId::OBC, ThreadId::AOCSThread), SenderReceiverThread::new(DeviceId::SunSensor2, DeviceId::OBC, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::SunSensor3, DeviceId::OBC, ThreadId::AOCSThread), SenderReceiverThread::new(DeviceId::SunSensor3, DeviceId::OBC, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::SunSensor4, DeviceId::OBC, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::SunSensor5, DeviceId::OBC, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::SunSensor6, DeviceId::OBC, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::StarTracker, DeviceId::OBC, ThreadId::AOCSThread), SenderReceiverThread::new(DeviceId::StarTracker, DeviceId::OBC, ThreadId::AOCSThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::All, ThreadId::TMThread), SenderReceiverThread::new(DeviceId:: OBC , DeviceId:: Camera , ThreadId:: PLDThread ),
SenderReceiverThread::new(DeviceId::MGM1, DeviceId::OBC, ThreadId::TMThread), SenderReceiverThread::new(DeviceId::Camera, DeviceId::OBC, ThreadId::PLDThread),
SenderReceiverThread::new(DeviceId::MGM2, DeviceId::OBC, ThreadId::TMThread), SenderReceiverThread::new(DeviceId::Camera, DeviceId::OBC, ThreadId::PLDThread),
SenderReceiverThread::new(DeviceId::MGM3, DeviceId::OBC, ThreadId::TMThread), SenderReceiverThread::new(DeviceId::Camera, DeviceId::OBC, ThreadId::PLDThread),
SenderReceiverThread::new(DeviceId::SunSensor1, DeviceId::OBC, ThreadId::TMThread),
SenderReceiverThread::new(DeviceId::SunSensor2, DeviceId::OBC, ThreadId::TMThread),
SenderReceiverThread::new(DeviceId::SunSensor3, DeviceId::OBC, ThreadId::TMThread),
SenderReceiverThread::new(DeviceId::StarTracker, DeviceId::OBC, ThreadId::TMThread),
SenderReceiverThread::new(DeviceId::MGT1, DeviceId::OBC, ThreadId::TMThread),
SenderReceiverThread::new(DeviceId::MGT2, DeviceId::OBC, ThreadId::TMThread),
SenderReceiverThread::new(DeviceId::MGT3, DeviceId::OBC, ThreadId::TMThread),
SenderReceiverThread::new(DeviceId::RWL1, DeviceId::OBC, ThreadId::TMThread),
SenderReceiverThread::new(DeviceId::RWL2, DeviceId::OBC, ThreadId::TMThread),
SenderReceiverThread::new(DeviceId::RWL3, DeviceId::OBC, ThreadId::TMThread),
SenderReceiverThread::new(DeviceId::OBC, DeviceId::Camera, ThreadId::TMThread),
SenderReceiverThread::new(DeviceId::Camera, DeviceId::OBC, ThreadId::TMThread),
SenderReceiverThread::new(DeviceId::Camera, DeviceId::OBC, ThreadId::TMThread),
SenderReceiverThread::new(DeviceId::Camera, DeviceId::OBC, ThreadId::TMThread),
]; ];
let mut i = 0; let mut i = 0;

View File

@ -1,6 +1,6 @@
use crate::tmtc::{MpscStoreAndSendError, PusTcSource, PUS_APID}; use crate::tmtc::{MpscStoreAndSendError, PusTcSource, PUS_APID};
use satrs_core::tmtc::{CcsdsPacketHandler, ReceivesCcsdsTc};
use satrs_core::spacepackets::{CcsdsPacket, SpHeader}; use satrs_core::spacepackets::{CcsdsPacket, SpHeader};
use satrs_core::tmtc::{CcsdsPacketHandler, ReceivesCcsdsTc};
pub struct CcsdsReceiver { pub struct CcsdsReceiver {
pub tc_source: PusTcSource, pub tc_source: PusTcSource,

View File

@ -1,5 +1,5 @@
use socketcan::{errors, frame, socket, CanFrame, Socket};
use crate::can_ids::DeviceId; use crate::can_ids::DeviceId;
use socketcan::{errors, frame, socket, CanFrame, Socket};
#[derive(Copy, Clone)] #[derive(Copy, Clone)]
pub enum DeviceState { pub enum DeviceState {

View File

@ -3,6 +3,7 @@ use crate::requests::{Request, RequestWithToken};
use crate::tmtc::{ use crate::tmtc::{
core_tmtc_task, OtherArgs, PusTcSource, TcArgs, TcStore, TmArgs, TmFunnel, TmStore, PUS_APID, core_tmtc_task, OtherArgs, PusTcSource, TcArgs, TcStore, TmArgs, TmFunnel, TmStore, PUS_APID,
}; };
use eurosim_obsw::{RequestTargetId, OBSW_SERVER_ADDR, SERVER_PORT};
use satrs_core::event_man::{ use satrs_core::event_man::{
EventManagerWithMpscQueue, MpscEventReceiver, MpscEventU32SendProvider, SendEventProvider, EventManagerWithMpscQueue, MpscEventReceiver, MpscEventU32SendProvider, SendEventProvider,
}; };
@ -18,21 +19,20 @@ use satrs_core::pus::verification::{
}; };
use satrs_core::pus::{EcssTmError, EcssTmSenderCore}; use satrs_core::pus::{EcssTmError, EcssTmSenderCore};
use satrs_core::seq_count::{SeqCountProviderSyncClonable, SequenceCountProvider}; use satrs_core::seq_count::{SeqCountProviderSyncClonable, SequenceCountProvider};
use eurosim_obsw::{RequestTargetId, OBSW_SERVER_ADDR, SERVER_PORT};
use satrs_core::{ use satrs_core::{
spacepackets::time::cds::TimeProvider, spacepackets::time::cds::TimeProvider,
spacepackets::time::TimeWriter, spacepackets::time::TimeWriter,
spacepackets::tm::{PusTm, PusTmSecondaryHeader}, spacepackets::tm::{PusTm, PusTmSecondaryHeader},
spacepackets::{SequenceFlags, SpHeader} spacepackets::{SequenceFlags, SpHeader},
}; };
use crate::EventTmSender;
use std::collections::HashMap; use std::collections::HashMap;
use std::net::{IpAddr, SocketAddr}; use std::net::{IpAddr, SocketAddr};
use std::sync::mpsc::{channel, TryRecvError}; use std::sync::mpsc::{channel, TryRecvError};
use std::sync::{mpsc, Arc, RwLock}; use std::sync::{mpsc, Arc, RwLock};
use std::thread; use std::thread;
use std::time::Duration; use std::time::Duration;
use crate::EventTmSender;
fn example_main() { fn example_main() {
let tm_pool = LocalPool::new(PoolCfg::new(vec![ let tm_pool = LocalPool::new(PoolCfg::new(vec![
@ -66,12 +66,12 @@ fn example_main() {
let verif_cfg = VerificationReporterCfg::new( let verif_cfg = VerificationReporterCfg::new(
PUS_APID, PUS_APID,
#[allow(clippy::box_default)] #[allow(clippy::box_default)]
Box::new(SeqCountProviderSyncClonable::default()), Box::new(SeqCountProviderSyncClonable::default()),
1, 1,
2, 2,
8, 8,
) )
.unwrap(); .unwrap();
let verif_reporter = VerificationReporterWithSender::new(&verif_cfg, Box::new(verif_sender)); let verif_reporter = VerificationReporterWithSender::new(&verif_cfg, Box::new(verif_sender));
// Create event handling components // Create event handling components

View File

@ -1,19 +1,21 @@
mod can;
mod can_ids;
mod ccsds; mod ccsds;
mod device_handler;
mod example_main;
mod hk; mod hk;
mod logger;
mod pus; mod pus;
mod requests; mod requests;
mod tmtc; mod tmtc;
mod example_main; mod aocs;
mod can;
mod can_ids;
mod device_handler;
mod logger;
use crate::hk::{AcsHkIds, HkRequest}; use crate::hk::{AcsHkIds, HkRequest};
use crate::requests::{Request, RequestWithToken}; use crate::requests::{Request, RequestWithToken};
use crate::tmtc::{ use crate::tmtc::{
core_tmtc_task, OtherArgs, PusTcSource, TcArgs, TcStore, TmArgs, TmFunnel, TmStore, PUS_APID, core_tmtc_task, OtherArgs, PusTcSource, TcArgs, TcStore, TmArgs, TmFunnel, TmStore, PUS_APID,
}; };
use eurosim_obsw::{RequestTargetId, OBSW_SERVER_ADDR, SERVER_PORT};
use satrs_core::event_man::{ use satrs_core::event_man::{
EventManagerWithMpscQueue, MpscEventReceiver, MpscEventU32SendProvider, SendEventProvider, EventManagerWithMpscQueue, MpscEventReceiver, MpscEventU32SendProvider, SendEventProvider,
}; };
@ -28,8 +30,9 @@ use satrs_core::pus::verification::{
MpscVerifSender, VerificationReporterCfg, VerificationReporterWithSender, MpscVerifSender, VerificationReporterCfg, VerificationReporterWithSender,
}; };
use satrs_core::pus::{EcssTmError, EcssTmErrorWithSend, EcssTmSenderCore}; use satrs_core::pus::{EcssTmError, EcssTmErrorWithSend, EcssTmSenderCore};
use satrs_core::seq_count::{SeqCountProviderSyncClonable, SequenceCountProvider, SequenceCountProviderCore}; use satrs_core::seq_count::{
use eurosim_obsw::{RequestTargetId, OBSW_SERVER_ADDR, SERVER_PORT}; SeqCountProviderSyncClonable, SequenceCountProvider, SequenceCountProviderCore,
};
use satrs_core::{ use satrs_core::{
spacepackets::time::cds::TimeProvider, spacepackets::time::cds::TimeProvider,
spacepackets::time::TimeWriter, spacepackets::time::TimeWriter,
@ -37,16 +40,16 @@ use satrs_core::{
spacepackets::{SequenceFlags, SpHeader}, spacepackets::{SequenceFlags, SpHeader},
}; };
use crate::can_ids::{can_id_to_package_id, load_package_ids, PackageId, PackageModel, ThreadId};
use embedded_can::{Id, StandardId};
use log::{info, warn};
use satrs_core::tmtc::tm_helper::PusTmWithCdsShortHelper;
use std::collections::HashMap; use std::collections::HashMap;
use std::net::{IpAddr, SocketAddr}; use std::net::{IpAddr, SocketAddr};
use std::sync::mpsc::{channel, TryRecvError}; use std::sync::mpsc::{channel, TryRecvError};
use std::sync::{mpsc, Arc, RwLock}; use std::sync::{mpsc, Arc, RwLock};
use std::thread; use std::thread;
use std::time::Duration; use std::time::Duration;
use embedded_can::{Id, StandardId};
use log::{info, warn};
use satrs_core::tmtc::tm_helper::PusTmWithCdsShortHelper;
use crate::can_ids::{can_id_to_package_id, load_package_ids, PackageId, PackageModel, ThreadId};
#[derive(Clone)] #[derive(Clone)]
struct EventTmSender { struct EventTmSender {
@ -68,7 +71,9 @@ impl EcssTmSenderCore for EventTmSender {
fn send_tm(&mut self, tm: PusTm) -> Result<(), EcssTmErrorWithSend<Self::Error>> { fn send_tm(&mut self, tm: PusTm) -> Result<(), EcssTmErrorWithSend<Self::Error>> {
let addr = self.store_helper.add_pus_tm(&tm); let addr = self.store_helper.add_pus_tm(&tm);
self.sender.send(addr).map_err(EcssTmErrorWithSend::SendError) self.sender
.send(addr)
.map_err(EcssTmErrorWithSend::SendError)
} }
} }
@ -111,13 +116,12 @@ fn main() {
let verif_cfg = VerificationReporterCfg::new( let verif_cfg = VerificationReporterCfg::new(
PUS_APID, PUS_APID,
#[allow(clippy::box_default)] #[allow(clippy::box_default)]
Box::new(seq_count_provider.clone()), Box::new(seq_count_provider.clone()),
1, 1,
2, 2,
8, 8,
) )
.unwrap(); .unwrap();
let verif_reporter = VerificationReporterWithSender::new(&verif_cfg, Box::new(verif_sender)); let verif_reporter = VerificationReporterWithSender::new(&verif_cfg, Box::new(verif_sender));
@ -166,12 +170,14 @@ fn main() {
}; };
let (aocs_can_tx, aocs_can_rx) = mpsc::channel::<PackageModel>(); let (aocs_can_tx, aocs_can_rx) = mpsc::channel::<PackageModel>();
let (tm_can_tx, tm_can_rx) = mpsc::channel::<PackageModel>(); let (power_can_tx, power_can_rx) = mpsc::channel::<PackageModel>();
let (pld_can_tx, pld_can_rx) = mpsc::channel::<PackageModel>();
// make tx thread id hashmap // make tx thread id hashmap
let mut can_senders = HashMap::new(); let mut can_senders = HashMap::new();
can_senders.insert(ThreadId::AOCSThread, aocs_can_tx); can_senders.insert(ThreadId::AOCSThread, aocs_can_tx);
can_senders.insert(ThreadId::TMThread, tm_can_tx); can_senders.insert(ThreadId::PowerThread, power_can_tx);
can_senders.insert(ThreadId::PLDThread, pld_can_tx);
// get package id hashmap // get package id hashmap
let package_ids_rx = load_package_ids(); let package_ids_rx = load_package_ids();
@ -232,11 +238,9 @@ fn main() {
let msg = aocs_can_rx.try_recv(); let msg = aocs_can_rx.try_recv();
//current_mgm_data.x = new_data //current_mgm_data.x = new_data
match aocs_can_rx.try_recv() { match aocs_can_rx.try_recv() {
Ok(package) => { Ok(package) => match package.package_id() {
match package.package_id() { _ => warn!("Incorrect Id"),
_ => warn!("Incorrect Id"), },
}
}
Err(_) => {} Err(_) => {}
} }
@ -249,29 +253,45 @@ fn main() {
HkRequest::OneShot(id) => { HkRequest::OneShot(id) => {
assert_eq!(id.target_id, RequestTargetId::AcsSubsystem as u32); assert_eq!(id.target_id, RequestTargetId::AcsSubsystem as u32);
if id.unique_id == 0 { if id.unique_id == 0 {
let mut sp_header = SpHeader::tm_unseg(0x02, aocs_seq_count_provider.get_and_increment(), 0).unwrap(); let mut sp_header = SpHeader::tm_unseg(
let cds_stamp = TimeProvider::from_now_with_u16_days().unwrap(); 0x02,
aocs_seq_count_provider.get_and_increment(),
0,
)
.unwrap();
let cds_stamp =
TimeProvider::from_now_with_u16_days().unwrap();
cds_stamp.write_to_bytes(&mut time_stamp_buf); cds_stamp.write_to_bytes(&mut time_stamp_buf);
let mut len = id.write_to_be_bytes(&mut huge_buf).unwrap(); let mut len = id.write_to_be_bytes(&mut huge_buf).unwrap();
let json_string = "asdf"; let json_string = "asdf";
huge_buf[8..json_string.len()+8].copy_from_slice(json_string.as_bytes()); huge_buf[8..json_string.len() + 8]
.copy_from_slice(json_string.as_bytes());
len += json_string.len(); len += json_string.len();
let tm_sec_header = PusTmSecondaryHeader::new_simple(3, Subservice::TmHkPacket as u8, &time_stamp_buf); let tm_sec_header = PusTmSecondaryHeader::new_simple(
let hk_tm = PusTm::new(&mut sp_header, tm_sec_header, Some(&huge_buf[0..len]), true); 3,
Subservice::TmHkPacket as u8,
&time_stamp_buf,
);
let hk_tm = PusTm::new(
&mut sp_header,
tm_sec_header,
Some(&huge_buf[0..len]),
true,
);
let addr = aocs_tm_store.add_pus_tm(&hk_tm); let addr = aocs_tm_store.add_pus_tm(&hk_tm);
aocs_tm_funnel_tx.send(addr).expect("sending failed"); aocs_tm_funnel_tx.send(addr).expect("sending failed");
/* let start_token = self //implement this for verification /* let start_token = self //implement this for verification
.verif_reporter .verif_reporter
.start_success(token, &self.time_stamp) .start_success(token, &self.time_stamp)
.expect("Error sending start success"); .expect("Error sending start success");
self.tm_tx self.tm_tx
.send(addr) .send(addr)
.expect("Sending TM to TM funnel failed"); .expect("Sending TM to TM funnel failed");
self.verif_reporter self.verif_reporter
.completion_success(start_token, &self.time_stamp) .completion_success(start_token, &self.time_stamp)
.expect("Error sending completion success"); .expect("Error sending completion success");
*/ */
} }
} }
HkRequest::Enable(_) => {} HkRequest::Enable(_) => {}
@ -284,8 +304,7 @@ fn main() {
Err(_) => {} Err(_) => {}
} }
} }
} });
);
println!("Starting TM funnel task"); println!("Starting TM funnel task");
let jh3 = thread::spawn(move || { let jh3 = thread::spawn(move || {
@ -304,7 +323,9 @@ fn main() {
}); });
jh0.join().expect("Joining UDP TMTC server thread failed"); jh0.join().expect("Joining UDP TMTC server thread failed");
jh1.unwrap().join().expect("Joining CAN Bus Listening thread failed"); jh1.unwrap()
.join()
.expect("Joining CAN Bus Listening thread failed");
jh2.unwrap().join().expect("Joing AOCS thread failed"); jh2.unwrap().join().expect("Joing AOCS thread failed");
jh3.join().expect("Joing AOCS thread failed"); jh3.join().expect("Joing AOCS thread failed");
@ -318,5 +339,5 @@ fn main() {
struct MgmData { struct MgmData {
x: i16, x: i16,
y: i16, y: i16,
z: i16 z: i16,
} }

View File

@ -1,6 +1,7 @@
use crate::hk::{CollectionIntervalFactor, HkRequest}; use crate::hk::{CollectionIntervalFactor, HkRequest};
use crate::requests::{Request, RequestWithToken}; use crate::requests::{Request, RequestWithToken};
use crate::tmtc::{PusTcSource, TmStore}; use crate::tmtc::{PusTcSource, TmStore};
use eurosim_obsw::{hk_err, tmtc_err};
use satrs_core::events::EventU32; use satrs_core::events::EventU32;
use satrs_core::pool::StoreAddr; use satrs_core::pool::StoreAddr;
use satrs_core::pus::event::Subservices; use satrs_core::pus::event::Subservices;
@ -12,13 +13,9 @@ use satrs_core::pus::verification::{
use satrs_core::res_code::ResultU16; use satrs_core::res_code::ResultU16;
use satrs_core::tmtc::tm_helper::PusTmWithCdsShortHelper; use satrs_core::tmtc::tm_helper::PusTmWithCdsShortHelper;
use satrs_core::tmtc::{AddressableId, PusServiceProvider}; use satrs_core::tmtc::{AddressableId, PusServiceProvider};
use eurosim_obsw::{hk_err, tmtc_err};
use satrs_core::{ use satrs_core::{
spacepackets::ecss::PusPacket, spacepackets::ecss::PusPacket, spacepackets::tc::PusTc, spacepackets::time::cds::TimeProvider,
spacepackets::tc::PusTc, spacepackets::time::TimeWriter, spacepackets::SpHeader,
spacepackets::time::cds::TimeProvider,
spacepackets::time::TimeWriter,
spacepackets::SpHeader,
}; };
use std::collections::HashMap; use std::collections::HashMap;

View File

@ -20,13 +20,10 @@ use satrs_core::tmtc::{
}; };
use satrs_core::{ use satrs_core::{
spacepackets::ecss::PusPacket, spacepackets::ecss::PusPacket, spacepackets::tc::PusTc, spacepackets::tm::PusTm,
spacepackets::tc::PusTc,
spacepackets::tm::PusTm,
spacepackets::SpHeader, spacepackets::SpHeader,
}; };
pub const PUS_APID: u16 = 0x02; pub const PUS_APID: u16 = 0x02;
pub struct OtherArgs { pub struct OtherArgs {