some bugfixes

This commit is contained in:
Robin Müller 2024-05-02 13:35:58 +02:00
parent f4d0a86d7d
commit 9282526392
Signed by: muellerr
GPG Key ID: A649FB78196E3849
7 changed files with 40 additions and 51 deletions

View File

@ -55,32 +55,30 @@ pub enum GroupId {
pub const TEST_EVENT: EventU32TypedSev<SeverityInfo> = pub const TEST_EVENT: EventU32TypedSev<SeverityInfo> =
EventU32TypedSev::<SeverityInfo>::new(GroupId::Tmtc as u16, 0); EventU32TypedSev::<SeverityInfo>::new(GroupId::Tmtc as u16, 0);
pub fn set_up_home_path() { pub fn set_up_home_path() -> PathBuf {
let mut home_path = PathBuf::new(); let mut home_path = PathBuf::new();
let home_path_default = homedir::get_my_home() if cfg!(feature = "host") {
.expect("Getting home dir from OS failed.") home_path = std::env::current_dir()
.expect("No home dir found."); .expect("getting current dir failed")
.to_path_buf();
home_path.push(if Path::new(HOME_FOLDER_EXPERIMENT).exists() {
HOME_FOLDER_EXPERIMENT
} else { } else {
home_path_default let home_path_default = homedir::get_my_home()
.to_str() .expect("Getting home dir from OS failed.")
.expect("Error converting to string.") .expect("No home dir found.");
}); if Path::new(HOME_FOLDER_EXPERIMENT).exists() {
home_path.push(HOME_FOLDER_EXPERIMENT);
} else {
home_path = home_path_default;
}
}
HOME_PATH HOME_PATH
.set(home_path) .set(home_path.clone())
.expect("attempting to set once cell twice") .expect("attempting to set once cell twice");
home_path
} }
pub fn set_up_low_prio_ground_dir(base_path: PathBuf) { pub fn set_up_low_prio_ground_dir(home_path: PathBuf) {
/* let mut to_ground_lp_dir = home_path.to_path_buf();
#[cfg(feature = "host")]
let mut to_ground_lp_dir = std::env::current_dir().expect("getting current dir failed");
#[cfg(not(feature = "host"))]
let mut to_ground_lp_dir = home_path;
*/
let mut to_ground_lp_dir = base_path.to_path_buf();
to_ground_lp_dir.push(TO_GROUND_LP_FOLDER_NAME); to_ground_lp_dir.push(TO_GROUND_LP_FOLDER_NAME);
if !Path::new(&to_ground_lp_dir).exists() { if !Path::new(&to_ground_lp_dir).exists() {
log::info!( log::info!(
@ -99,14 +97,8 @@ pub fn set_up_low_prio_ground_dir(base_path: PathBuf) {
.expect("attemting to set once cell twice"); .expect("attemting to set once cell twice");
} }
pub fn set_up_ground_dir(base_path: PathBuf) { pub fn set_up_ground_dir(home_path: PathBuf) {
/* let mut to_ground_dir = home_path.to_path_buf();
#[cfg(feature = "host")]
let mut to_ground_dir = std::env::current_dir().expect("getting current dir failed");
#[cfg(not(feature = "host"))]
let mut to_ground_dir = HOME_PATH.clone();
*/
let mut to_ground_dir = base_path.to_path_buf();
to_ground_dir.push(TO_GROUND_FOLDER_NAME); to_ground_dir.push(TO_GROUND_FOLDER_NAME);
if !Path::new(&to_ground_dir).exists() { if !Path::new(&to_ground_dir).exists() {
log::info!("creating to ground directory at {:?}", to_ground_dir); log::info!("creating to ground directory at {:?}", to_ground_dir);

View File

@ -54,11 +54,10 @@ pub struct ControllerPathCollection {
pub to_ground_low_prio_dir: PathBuf, pub to_ground_low_prio_dir: PathBuf,
} }
impl Default for ControllerPathCollection { impl ControllerPathCollection {
fn default() -> Self { pub fn new(base_path: &Path) -> Self {
let home_path = HOME_PATH.get().unwrap(); let home_path = base_path.to_path_buf();
let mut home_path_stop_file = PathBuf::new(); let mut home_path_stop_file = home_path.clone();
home_path_stop_file.push(home_path);
home_path_stop_file.push(STOP_FILE_NAME); home_path_stop_file.push(STOP_FILE_NAME);
let mut tmp_path_stop_file = temp_dir(); let mut tmp_path_stop_file = temp_dir();
tmp_path_stop_file.push(STOP_FILE_NAME); tmp_path_stop_file.push(STOP_FILE_NAME);
@ -77,6 +76,7 @@ impl Default for ControllerPathCollection {
} }
} }
} }
pub struct ExperimentController { pub struct ExperimentController {
pub composite_request_rx: mpsc::Receiver<GenericMessage<CompositeRequest>>, pub composite_request_rx: mpsc::Receiver<GenericMessage<CompositeRequest>>,
pub action_reply_tx: mpsc::Sender<GenericMessage<ActionReplyPus>>, pub action_reply_tx: mpsc::Sender<GenericMessage<ActionReplyPus>>,

View File

@ -58,17 +58,11 @@ fn main() {
println!("OPS-SAT Rust Experiment OBSW v{}", version_str); println!("OPS-SAT Rust Experiment OBSW v{}", version_str);
setup_logger().expect("setting up logging with fern failed"); setup_logger().expect("setting up logging with fern failed");
set_up_home_path(); let home_path = set_up_home_path();
#[cfg(feature = "host")] set_up_low_prio_ground_dir(home_path.clone());
let base_dir = std::env::current_dir() set_up_ground_dir(home_path.clone());
.expect("getting current dir failed")
.to_path_buf();
#[cfg(not(feature = "host"))]
let base_dir = HOME_PATH.get().unwrap();
set_up_low_prio_ground_dir(base_dir.clone());
set_up_ground_dir(base_dir.clone());
let app_cfg = create_app_config(base_dir.clone()); let app_cfg = create_app_config(home_path.clone());
info!("App Configuration: {:?}", app_cfg); info!("App Configuration: {:?}", app_cfg);
let stop_signal = Arc::new(AtomicBool::new(false)); let stop_signal = Arc::new(AtomicBool::new(false));
@ -201,7 +195,7 @@ fn main() {
stop_signal.clone(), stop_signal.clone(),
); );
let mut home_path_stop_file = base_dir.clone(); let mut home_path_stop_file = home_path.clone();
home_path_stop_file.push(STOP_FILE_NAME); home_path_stop_file.push(STOP_FILE_NAME);
let mut tmp_path_stop_file = temp_dir(); let mut tmp_path_stop_file = temp_dir();
tmp_path_stop_file.push(STOP_FILE_NAME); tmp_path_stop_file.push(STOP_FILE_NAME);
@ -209,7 +203,7 @@ fn main() {
controller_composite_rx, controller_composite_rx,
pus_action_reply_tx.clone(), pus_action_reply_tx.clone(),
stop_signal.clone(), stop_signal.clone(),
ControllerPathCollection::default(), ControllerPathCollection::new(&home_path),
); );
let mut tcp_spp_client = TcpSppClientStd::new( let mut tcp_spp_client = TcpSppClientStd::new(

View File

@ -66,7 +66,8 @@ impl DirectPusService for EventServiceWrapper {
Self::SERVICE_STR, Self::SERVICE_STR,
e e
); );
return HandlingStatus::HandledOne; // To avoid permanent loops.
return HandlingStatus::Empty;
} }
match result.unwrap() { match result.unwrap() {
DirectPusPacketHandlerResult::Handled(handling_status) => return handling_status, DirectPusPacketHandlerResult::Handled(handling_status) => return handling_status,

View File

@ -171,7 +171,7 @@ pub trait TargetedPusService {
let result = self.poll_and_handle_next_tc(time_stamp); let result = self.poll_and_handle_next_tc(time_stamp);
if let Err(e) = result { if let Err(e) = result {
log::error!( log::error!(
"PUS service {}({})packet handling error: {:?}", "PUS service {}({}) packet handling error: {:?}",
Self::SERVICE_ID, Self::SERVICE_ID,
Self::SERVICE_STR, Self::SERVICE_STR,
e e
@ -187,7 +187,7 @@ pub trait TargetedPusService {
self.poll_and_handle_next_reply(time_stamp) self.poll_and_handle_next_reply(time_stamp)
.unwrap_or_else(|e| { .unwrap_or_else(|e| {
warn!( warn!(
"PUS servce {}({}): Handling reply failed with error {:?}", "PUS service {}({}): handling reply failed with error {:?}",
Self::SERVICE_ID, Self::SERVICE_ID,
Self::SERVICE_STR, Self::SERVICE_STR,
e e

View File

@ -57,7 +57,8 @@ impl DirectPusService for SchedulingService {
Self::SERVICE_STR, Self::SERVICE_STR,
e e
); );
return HandlingStatus::HandledOne; // To avoid permanent loops.
return HandlingStatus::Empty;
} }
match result.unwrap() { match result.unwrap() {
DirectPusPacketHandlerResult::Handled(handling_status) => return handling_status, DirectPusPacketHandlerResult::Handled(handling_status) => return handling_status,

View File

@ -67,7 +67,8 @@ impl DirectPusService for TestCustomServiceWrapper {
Self::SERVICE_STR, Self::SERVICE_STR,
e e
); );
return HandlingStatus::HandledOne; // To avoid permanent loops.
return HandlingStatus::Empty;
} }
match res.unwrap() { match res.unwrap() {
DirectPusPacketHandlerResult::Handled(handling_status) => { DirectPusPacketHandlerResult::Handled(handling_status) => {