diff --git a/src/main.rs b/src/main.rs index 444729c..dd834fc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,6 +2,7 @@ use chrono::Local; use clap::Parser; use nmea::Nmea; use nmea::SentenceType; +use riglib::kenwood::KenwoodRig; use serialport::DataBits; use serialport::Parity; use serialport::StopBits; @@ -13,7 +14,7 @@ use std::thread::sleep; use std::time::Duration; use riglib::{Rig as Rig_riglib, ReceiverId}; use riglib::kenwood::KenwoodBuilder; -use riglib::kenwood::models::ts_890s; +use riglib::kenwood::models::ts_990s; use riglib::s_units_from_dbm; /// Command-line arguments using Clap. @@ -167,7 +168,7 @@ fn get_rig(x: &str) -> Rig { "ic-7300" => build_rig("ic-7300", 115200, 8, 1, "none", "1502", "FA"), _ => { // This prints a message every loop but that's OK. - println!("Rig '{x}' in rig list. Using default connection values."); + println!("Rig '{x}' not in rig list. Using default connection values."); build_rig("qmx", 9600, 8, 2, "none", "SM", "FA") } } @@ -334,39 +335,61 @@ async fn main() -> anyhow::Result<()> { println!("Press Ctrl + C to quit"); - let rig1 = KenwoodBuilder::new(ts_890s()) - .serial_port(&com) - .build() - .await?; + - let info = rig1.info(); - println!("Connected: {} {}\n", info.manufacturer, info.model_name); - let rx = ReceiverId::VFO_A; - dbg!(rx); - let freq = rig1.get_frequency(ReceiverId::VFO_A).await?; - println!("VFO-A: {} Hz", freq); - //rig1.set_frequency(ReceiverId::VFO_A,).await?; - // let s_val = rig1.get_s_meter(rx).await?; - // println!("{s_val}"); - - // Simple test loop to make sure we are getting values each time - //for _i in 1..11 { loop { // Get location let ll = get_loc(gps.clone()); // Get datestamp let date = Local::now(); - // Get S-meter - //let s_val = get_smeter(&com, &rig_name, frequency); + + // If not QMX, use riglib + let mut s_val; + let mut s_val_i; + if rig_name != "qmx" { + let rig1 = KenwoodBuilder::new(ts_990s()) + .serial_port(&com) + .build() + .await?; + + //let info = rig1.info(); + //println!("Connected: {} {}\n", info.manufacturer, info.model_name); + let rx = ReceiverId::VFO_A; + //let freq = rig1.get_frequency(ReceiverId::VFO_A).await?; + //println!("VFO-A: {} Hz", freq); + let s_val = rig1.get_s_meter(rx).await?; // this is failing on the QMX using TS-890 unless I mess with source - let s_units = s_units_from_dbm(s_val); - //println!("{a}"); let s_val_i = s_val as i32; - // dbg!(n); + let s_units = s_units_from_dbm(s_val); + } else if rig_name == "qmx" { + //println!("Connecting to QMX..."); + // TODO make both of these numbers eventually + + let s_val = get_smeter(&com, &rig_name, frequency); + let s_val_i = s_val; + } + + + // Get S-meter + // If not QMX, use riglib + // let s: (String, String, String) = match rig_name { + // "qmx" => { + // let s_val = get_smeter(&com, &rig_name, frequency); + // let s_val_i = s_val; + // (s_val, s_val_i, "".to_string()) + // }, + // _ => { + // let s_val = rig1.get_s_meter(rx).await?; // this is failing on the QMX using TS-890 unless I mess with source + // let s_units = s_units_from_dbm(s_val); + // let s_val_i = s_val as i32; + // (s_val.to_string(), s_val_i.to_string(), s_units.to_string()) + // } + // } + println!( - "{} {:04} {} {}", + "{} {} {} {}", date.format("%Y-%m-%d %H:%M:%S").to_string(), - s_val_i, + s_val, if s_val_i > 0 { "#".repeat(s_val_i.try_into().unwrap()) } else { @@ -374,16 +397,7 @@ async fn main() -> anyhow::Result<()> { }, s_units ); - // match s_val { - // // Simple graph as we go. Eventually this will be replaced. - // Ok(n) => println!( - // "{} {} {}", - // date.format("%Y-%m-%d %H:%M:%S").to_string(), - // s_val, - // "#".repeat(n.try_into().unwrap()) - // ), - // Err(_e) => todo!(), - //} + // If they provided a file name if file_out != "no file" { if let Err(err) = write_row(