merge main
This commit is contained in:
@ -8,7 +8,8 @@ use std::net::Ipv4Addr;
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
pub const STOP_FILE_NAME: &str = "stop-experiment";
|
||||
pub const HOME_FOLDER_EXPERIMENT: &str = "/home/exp278";
|
||||
pub const CONFIG_FILE_NAME: &str = "exp278.toml";
|
||||
pub const HOME_FOLER_EXPERIMENT: &str = "/home/exp278";
|
||||
pub const LOG_FOLDER: &str = "logs";
|
||||
|
||||
pub const OBSW_SERVER_ADDR: Ipv4Addr = Ipv4Addr::UNSPECIFIED;
|
||||
@ -21,7 +22,8 @@ pub const VALID_PACKET_ID_LIST: &[PacketId] = &[PacketId::new_for_tc(true, EXPER
|
||||
|
||||
// TODO: Would be nice if this can be commanded as well..
|
||||
/// Can be enabled to print all SPP packets received from the SPP server on port 4096.
|
||||
pub const SPP_CLIENT_WIRETAPPING_RX: bool = false;
|
||||
pub const SPP_CLIENT_WIRETAPPING_RX: bool = true;
|
||||
pub const SPP_CLIENT_WIRETAPPING_TX: bool = true;
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Eq, Debug, TryFromPrimitive, IntoPrimitive)]
|
||||
#[repr(u8)]
|
||||
@ -52,6 +54,80 @@ lazy_static! {
|
||||
};
|
||||
}
|
||||
|
||||
pub mod cfg_file {
|
||||
use std::{
|
||||
fs::File,
|
||||
io::Read,
|
||||
path::{Path, PathBuf},
|
||||
};
|
||||
|
||||
use super::{CONFIG_FILE_NAME, HOME_PATH, TCP_SPP_SERVER_PORT};
|
||||
|
||||
pub const SPP_CLIENT_PORT_CFG_KEY: &str = "tcp_spp_server_port";
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct AppCfg {
|
||||
pub tcp_spp_server_port: u16,
|
||||
}
|
||||
|
||||
impl Default for AppCfg {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
tcp_spp_server_port: TCP_SPP_SERVER_PORT,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn create_app_config() -> AppCfg {
|
||||
let mut cfg_path = HOME_PATH.clone();
|
||||
cfg_path.push(CONFIG_FILE_NAME);
|
||||
let cfg_path_home = cfg_path.as_path();
|
||||
let relevant_path = if Path::new(CONFIG_FILE_NAME).exists() {
|
||||
Some(PathBuf::from(Path::new(CONFIG_FILE_NAME)))
|
||||
} else if cfg_path_home.exists() {
|
||||
Some(PathBuf::from(cfg_path_home))
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
let mut app_cfg = AppCfg::default();
|
||||
if relevant_path.is_none() {
|
||||
log::warn!("No config file found, using default values");
|
||||
return app_cfg;
|
||||
}
|
||||
let relevant_path = relevant_path.unwrap();
|
||||
match File::open(relevant_path.as_path()) {
|
||||
Ok(mut file) => {
|
||||
let mut toml_str = String::new();
|
||||
match file.read_to_string(&mut toml_str) {
|
||||
Ok(_size) => match toml_str.parse::<toml::Table>() {
|
||||
Ok(table) => {
|
||||
handle_config_file_table(table, &mut app_cfg);
|
||||
}
|
||||
Err(e) => log::error!("error parsing TOML config file: {e}"),
|
||||
},
|
||||
Err(e) => log::error!("error reading TOML config file: {e}"),
|
||||
}
|
||||
}
|
||||
Err(e) => log::error!("error opening TOML config file: {e}"),
|
||||
}
|
||||
app_cfg
|
||||
}
|
||||
|
||||
#[allow(clippy::collapsible_match)]
|
||||
pub fn handle_config_file_table(table: toml::Table, app_cfg: &mut AppCfg) {
|
||||
if let Some(value) = table.get(SPP_CLIENT_PORT_CFG_KEY) {
|
||||
if let toml::Value::Integer(port) = value {
|
||||
if *port < 0 {
|
||||
log::warn!("invalid port value, is negative");
|
||||
} else {
|
||||
app_cfg.tcp_spp_server_port = *port as u16
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub mod tmtc_err {
|
||||
use super::*;
|
||||
use satrs::res_code::ResultU16;
|
||||
@ -144,11 +220,14 @@ pub mod components {
|
||||
}
|
||||
|
||||
pub mod tasks {
|
||||
use std::time::Duration;
|
||||
|
||||
pub const FREQ_MS_UDP_TMTC: u64 = 200;
|
||||
pub const FREQ_MS_EVENT_HANDLING: u64 = 400;
|
||||
pub const FREQ_MS_AOCS: u64 = 500;
|
||||
pub const FREQ_MS_PUS_STACK: u64 = 200;
|
||||
pub const FREQ_MS_CTRL: u64 = 400;
|
||||
|
||||
pub const STOP_CHECK_FREQUENCY: u64 = 400;
|
||||
pub const STOP_CHECK_FREQUENCY_MS: u64 = 400;
|
||||
pub const STOP_CHECK_FREQUENCY: Duration = Duration::from_millis(STOP_CHECK_FREQUENCY_MS);
|
||||
}
|
||||
|
Reference in New Issue
Block a user