From 3c20baf05cdb73a94afa8ed0a7f3cc3f7014912a Mon Sep 17 00:00:00 2001 From: Stephen D <webmaster@scd31.com> Date: Sat, 9 Dec 2023 12:02:58 -0400 Subject: [PATCH] update to latest ham-cats --- Cargo.lock | 76 ++++++++++++++++++++++++++--------------------------- src/gate.rs | 5 ++-- src/util.rs | 41 ++++++++++++++++------------- 3 files changed, 64 insertions(+), 58 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 16cf146..2a585e8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -43,9 +43,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6" dependencies = [ "anstyle", "anstyle-parse", @@ -63,30 +63,30 @@ checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -319,9 +319,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.10" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fffed7514f420abec6d183b1d3acfd9099c79c3a10a06ade4f8203f1411272" +checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2" dependencies = [ "clap_builder", "clap_derive", @@ -329,9 +329,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.9" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63361bae7eef3771745f02d8d892bec2fee5f6e34af316ba556e7f97a7069ff1" +checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb" dependencies = [ "anstream", "anstyle", @@ -448,9 +448,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" dependencies = [ "powerfmt", "serde", @@ -630,8 +630,8 @@ dependencies = [ [[package]] name = "ham-cats" -version = "0.1.0" -source = "git+https://gitlab.scd31.com/cats/ham-cats#2662fd88ededffad2598ece932a58e1049325aaa" +version = "0.2.0" +source = "git+https://gitlab.scd31.com/cats/ham-cats#79ba39217c85f023b8571d789f279e96eac548b8" dependencies = [ "arrayvec", "bitvec", @@ -695,9 +695,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -834,9 +834,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" @@ -906,9 +906,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "wasi", @@ -966,9 +966,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl-probe" @@ -1231,9 +1231,9 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.6" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684d5e6e18f669ccebf64a92236bb7db9a34f07be010e3627368182027180866" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" dependencies = [ "cc", "getrandom", @@ -1266,9 +1266,9 @@ checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustix" -version = "0.38.26" +version = "0.38.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9470c4bf8246c8daf25f9598dca807fb6510347b1e1cfa55749113850c79d88a" +checksum = "bfeae074e687625746172d639330f1de242a178bf3189b51e35a7a21573513ac" dependencies = [ "bitflags 2.4.1", "errno", @@ -1279,9 +1279,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.9" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", "ring", @@ -1594,9 +1594,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.34.0" +version = "1.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" +checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c" dependencies = [ "backtrace", "bytes", @@ -1808,9 +1808,9 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "unicode-ident" @@ -2091,9 +2091,9 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.5.19" +version = "0.5.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +checksum = "b67b5f0a4e7a27a64c651977932b9dc5667ca7fc31ac44b03ed37a0cf42fdfff" dependencies = [ "memchr", ] diff --git a/src/gate.rs b/src/gate.rs index c94f20a..1dd83d4 100644 --- a/src/gate.rs +++ b/src/gate.rs @@ -9,6 +9,7 @@ use anyhow::{anyhow, Context}; use async_stream::stream; use half::f16; use ham_cats::buffer::Buffer; +use ham_cats::identity::Identity; use ham_cats::whisker::NodeInfoBuilder; use ham_cats::{ packet::Packet, @@ -216,7 +217,7 @@ pub async fn packet_handler( } } - match packet.should_digipeat(&callsign, ssid) { + match packet.should_digipeat(Identity::new(&callsign, ssid)) { Ok(()) => { if let Err(e) = packet.append_to_route(&callsign, ssid, Some(rssi)) { eprintln!( @@ -321,7 +322,7 @@ pub async fn felinet_receive_once( .ok() .and_then(|_| Packet::semi_decode(buf).ok()) { - if pkt.should_digipeat(callsign, ssid).is_ok() { + if pkt.should_digipeat(Identity::new(callsign, ssid)).is_ok() { print_packet(&pkt, None); let mut buf2 = [0; MAX_PACKET_LEN]; diff --git a/src/util.rs b/src/util.rs index bf07211..4dff884 100644 --- a/src/util.rs +++ b/src/util.rs @@ -2,8 +2,9 @@ use crate::radio::MAX_PACKET_LEN; use anyhow::anyhow; use colored::{Color, Colorize}; use ham_cats::{ + identity::Identity, packet::Packet, - whisker::{Route, RouteIdentity, RouteNode}, + whisker::{PastHop, Route, RouteHop}, }; pub fn print_packet(pkt: &Packet<MAX_PACKET_LEN>, rssi: Option<f64>) { @@ -35,16 +36,21 @@ pub fn print_packet(pkt: &Packet<MAX_PACKET_LEN>, rssi: Option<f64>) { let r_str = route .iter() .map(|rn| match rn { - ham_cats::whisker::RouteNode::Internet => "[NET]".to_string(), - ham_cats::whisker::RouteNode::Identity(ident) => { - let s = if ident.is_future() { "*" } else { "" }; + RouteHop::Internet => "[NET]".to_string(), + RouteHop::Past(past_hop) => { + let ident = past_hop.identity(); let rc = ident.callsign(); let rs = ident.ssid(); - let rssi = match ident.rssi() { - Some(x) => format!("[{x:.1} dbm]"), + let rssi = match past_hop.rssi() { + Some(x) => format!(" [{x:.1} dbm]"), None => "".to_string(), }; - format!("{rc}-{rs}{s} {rssi}") + format!("{rc}-{rs}{rssi}") + } + RouteHop::Future(ident) => { + let rc = ident.callsign(); + let rs = ident.ssid(); + format!("{rc}-{rs}*") } }) .collect::<Vec<String>>() @@ -146,7 +152,7 @@ pub fn append_internet_to_packet_route( let mut route = packet.route().unwrap_or(Route::new(0)); let first_future = route.iter().find_map(|rn| match rn { - RouteNode::Identity(ident) if ident.is_future() => Some((ident.callsign(), ident.ssid())), + RouteHop::Future(ident) => Some((ident.callsign(), ident.ssid())), _ => None, }); @@ -154,28 +160,27 @@ pub fn append_internet_to_packet_route( if rc == callsign && rs == ssid { // we can just do the normal thing // since we're replacing the existing future node, this should never fail, unless we run out of byte space - route.append_node(callsign, ssid, Some(rssi)).ok()?; + route + .append_hop(PastHop::new(Identity::new(callsign, ssid), Some(rssi))) + .ok()?; } else { // rip off all the futures and add ourselves let mut new_route = Route::new(route.max_hops); for r in route.iter() { match r { - RouteNode::Internet => new_route.push_internet()?, - RouteNode::Identity(ident) => { - if ident.is_future() { - break; - } - - new_route.push_callsign(ident); + RouteHop::Internet => new_route.push_internet()?, + RouteHop::Past(past) => { + new_route.push_past(past)?; } + RouteHop::Future(_) => break, } } route = new_route; - route.push_callsign(RouteIdentity::new(callsign, ssid, Some(rssi), false)); + route.push_past(PastHop::new(Identity::new(callsign, ssid), Some(rssi)))?; } } else { - route.push_callsign(RouteIdentity::new(callsign, ssid, Some(rssi), false))?; + route.push_past(PastHop::new(Identity::new(callsign, ssid), Some(rssi)))?; } route.push_internet()?; -- GitLab