diff options
Diffstat (limited to 'src/response.rs')
| -rw-r--r-- | src/response.rs | 79 |
1 files changed, 42 insertions, 37 deletions
diff --git a/src/response.rs b/src/response.rs index f68e881..9e95c19 100644 --- a/src/response.rs +++ b/src/response.rs @@ -1,19 +1,18 @@ - +use crate::packet_content::PeerToPeerCipher; use bytes::{Buf, Bytes}; use chrono::{DateTime, Utc}; -use crate::packet_content::PeerToPeerCipher; #[derive(PartialEq, Debug, Clone)] pub struct Response { pub(crate) cipher: PeerToPeerCipher, - pub cleartext: Option<ClearResponse> + pub cleartext: Option<ClearResponse>, } impl From<Bytes> for Response { fn from(value: Bytes) -> Self { Response { cipher: PeerToPeerCipher::from(value), - cleartext: None + cleartext: None, } } } @@ -34,29 +33,27 @@ pub enum ResponseContent { #[repr(C)] #[derive(PartialEq, Debug, Clone)] pub struct RepeaterStats { - pub batt_milli_volts: u16, - pub curr_tx_queue_len: u16, - pub noise_floor: i16, - pub last_rssi: i16, - pub n_packets_recv: u32, - pub n_packets_sent: u32, - pub total_air_time_secs: u32, - pub total_up_time_secs: u32, - pub n_sent_flood: u32, - pub n_sent_direct: u32, - pub n_recv_flood: u32, - pub n_recv_direct: u32, - pub err_events: u16, - pub last_snr: i16, - pub n_direct_dups: u16, - pub n_flood_dups: u16, - pub total_rx_air_time_secs: u32, + pub batt_milli_volts: u16, + pub curr_tx_queue_len: u16, + pub noise_floor: i16, + pub last_rssi: i16, + pub n_packets_recv: u32, + pub n_packets_sent: u32, + pub total_air_time_secs: u32, + pub total_up_time_secs: u32, + pub n_sent_flood: u32, + pub n_sent_direct: u32, + pub n_recv_flood: u32, + pub n_recv_direct: u32, + pub err_events: u16, + pub last_snr: i16, + pub n_direct_dups: u16, + pub n_flood_dups: u16, + pub total_rx_air_time_secs: u32, } #[derive(PartialEq, Debug, Clone)] -pub struct Telemetry { - -} +pub struct Telemetry {} impl From<Bytes> for ClearResponse { fn from(value: Bytes) -> Self { @@ -64,10 +61,12 @@ impl From<Bytes> for ClearResponse { let mut clear_response = ClearResponse { timestamp: DateTime::from_timestamp(0, 0).unwrap(), - content: ResponseContent::Invalid + content: ResponseContent::Invalid, }; - if bytes.len() < 4 { return clear_response } + if bytes.len() < 4 { + return clear_response; + } if let Some(timestamp) = DateTime::from_timestamp(bytes.get_u32_le() as i64, 0) { clear_response.timestamp = timestamp; } @@ -78,9 +77,9 @@ impl From<Bytes> for ClearResponse { // are exactly 0x0174 then we'll assume it's a telemetry packet. // let maybe_cayenne = bytes.clone().get_u16(); // if maybe_cayenne == 0x0174 { - // println!("CayenneLPP: {} bytes: {}", bytes.len(), encode(&bytes)); + // println!("CayenneLPP: {} bytes: {}", bytes.len(), encode(&bytes)); // } else { - // println!("{} bytes: {}", value.len(), encode(&value)); + // println!("{} bytes: {}", value.len(), encode(&value)); // } clear_response @@ -89,10 +88,9 @@ impl From<Bytes> for ClearResponse { impl core::fmt::Display for Response { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - f.write_fmt(format_args!("({:2x?}) -> ({:2x?}) MAC: {:4x?} ", - self.cipher.source, - self.cipher.destination, - self.cipher.mac + f.write_fmt(format_args!( + "({:2x?}) -> ({:2x?}) MAC: {:4x?} ", + self.cipher.source, self.cipher.destination, self.cipher.mac ))?; if let Some(_cleartext) = &self.cipher.cleartext { @@ -105,11 +103,16 @@ impl core::fmt::Display for Response { #[cfg(test)] mod tests { - use std::str::FromStr; + use crate::{ + packet::*, + packet_content::{PacketContent, PeerToPeerCipher}, + response::Response, + std_identity::KeystoreInput, + }; use bytes::Bytes; use hex::decode; + use std::str::FromStr; use tinyvec::ArrayVec; - use crate::{std_identity::KeystoreInput, packet::*, packet_content::{PacketContent, PeerToPeerCipher}, response::Response}; #[test] fn response_encrypted() { @@ -136,7 +139,10 @@ mod tests { let rhs_packet = Packet::from_str(sample).unwrap(); assert_eq!(lhs_packet, rhs_packet); - assert_eq!(format!("{}", lhs_packet), " Direct | v1 | | [] | | RESPONSE | (12) -> (34) MAC: b900 ENCRYPTED") + assert_eq!( + format!("{}", lhs_packet), + " Direct | v1 | | [] | | RESPONSE | (12) -> (34) MAC: b900 ENCRYPTED" + ) } #[test] @@ -269,7 +275,6 @@ mod tests { // assert_eq!(lhs_packet, rhs_packet); } - #[test] fn telemetry_response() { let sample = "06003412187C3AE03E52D347B957D634221DB5E86815"; @@ -301,4 +306,4 @@ mod tests { println!("{:#?}", rhs_packet); // assert_eq!(lhs_packet, rhs_packet); } -}
\ No newline at end of file +} |
