Use riglib to interact with rigs #21

Open
W1CDN wants to merge 3 commits from riglib into main
Showing only changes of commit 2929fc5038 - Show all commits
+49 -35
View File
@@ -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(