From c8d4ab3ba3cdfd166b1523b6107f3417d60f4ecf Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 18 Apr 2025 19:51:45 +0200 Subject: [PATCH] Refactor fun_publishinfoviamqtt --- client/bin/src/main.rs | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/client/bin/src/main.rs b/client/bin/src/main.rs index 968c273..5b2f65b 100644 --- a/client/bin/src/main.rs +++ b/client/bin/src/main.rs @@ -297,6 +297,8 @@ fn render_strab(display: &mut UdpDisplay, straba_res: &NextDeparture) { // we need to wrap the data in a lock, like a Mutex or RwLock. type UserTopics = RwLock>; +const DEFAULT_REFRESH_INTERVAL: u32 = 50; + ///////////////////////////////////////////////////////////////////////////// // Define a struct to hold the INI configuration @@ -305,6 +307,7 @@ struct Config { mqttPrefix: String, mqttIPAddress: String, panelIPAddress: String, + refreshInterval: u32 } @@ -313,7 +316,9 @@ fn read_ini_file(filename: String) -> Result { let mut config = Config { mqttPrefix: "room/ledboard".to_string(), mqttIPAddress: String::new(), - panelIPAddress: String::new() }; + panelIPAddress: String::new(), + refreshInterval: DEFAULT_REFRESH_INTERVAL + }; let i = Ini::load_from_file(filename).unwrap(); for (sec, prop) in i.iter() { @@ -452,7 +457,9 @@ lazy_static! { static ref GlobalConfiguration: Config = Config { mqttIPAddress : "".to_string(), panelIPAddress : "".to_string(), - mqttPrefix : "test/ledboard".to_string() }; + mqttPrefix : "test/ledboard".to_string(), + refreshInterval: DEFAULT_REFRESH_INTERVAL + }; } @@ -500,7 +507,9 @@ fn main_function(parameter1: String, parameter2: Option) -> ExitCode { /* Panel and MQTT Configured*/ let mut config = Config { mqttPrefix: "room/ledboard".to_string(), mqttIPAddress: configOrMqttAddress.clone(), - panelIPAddress: parameter1.clone() }; + panelIPAddress: parameter1.clone(), + refreshInterval: DEFAULT_REFRESH_INTERVAL + }; //FIXME how is th global config updated ? } } @@ -606,14 +615,7 @@ fn main_function(parameter1: String, parameter2: Option) -> ExitCode { } else if GlobalConfiguration.mqttPrefix.len() > 0 { - let topicInStation: String = format!("{}{}", GlobalConfiguration.mqttPrefix, "/inbound/station"); - let stationName: String = format!("{}", straba_res.inbound_station); - if (mqtt_client.is_some()) { - publish_message(mqtt_client.unwrap(), topicInStation.as_str(), stationName.as_str()); - println!("MQTT published {:?} = {:?}s", topicInStation, straba_res.outbound_station); - } else { - println!("MQTT not ready... {:?} = {:?}s", topicInStation, straba_res.outbound_station); - } + fun_publishinfoviamqtt(mqtt_client, &straba_res); } @@ -635,7 +637,7 @@ fn main_function(parameter1: String, parameter2: Option) -> ExitCode { } } - if (straba_res.request_time + 50) < seconds as i64 { + if (straba_res.request_time + (GlobalConfiguration.refreshInterval as i64)) < seconds as i64 { if GlobalConfiguration.mqttIPAddress.len() > 0 { device_online = check_connection(GlobalConfiguration.mqttIPAddress.clone()); @@ -666,6 +668,17 @@ fn main_function(parameter1: String, parameter2: Option) -> ExitCode { } } +fn fun_publishinfoviamqtt(mqtt_client: Option, straba_res: &NextDeparture) { + let topicInStation: String = format!("{}{}", GlobalConfiguration.mqttPrefix, "/inbound/station"); + let stationName: String = format!("{}", straba_res.inbound_station); + if (mqtt_client.is_some()) { + publish_message(mqtt_client.unwrap(), topicInStation.as_str(), stationName.as_str()); + println!("MQTT published {:?} = {:?}s", topicInStation, straba_res.outbound_station); + } else { + println!("MQTT not ready... {:?} = {:?}s", topicInStation, straba_res.outbound_station); + } +} + fn main() -> ExitCode { let args: Vec = env::args().collect(); match args.len() {