aboutsummaryrefslogtreecommitdiffstats
path: root/src/response.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/response.rs')
-rw-r--r--src/response.rs79
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
+}