Bevy+Ratutui powered Monitoring of Pico-Strike devices
at main 69 lines 1.6 kB view raw
1#![no_std] 2 3use alloc::{string::String, vec::Vec}; 4 5extern crate alloc; 6 7#[derive(Debug, serde::Serialize, serde::Deserialize)] 8pub struct StrikerRequest { 9 pub request: Request, 10} 11 12#[derive(Debug, serde::Serialize, serde::Deserialize)] 13pub enum Request { 14 Ping, 15 DetectorInfo, 16 SetDetectorConfig { 17 blip_threshold: Option<u16>, 18 blip_size: Option<usize>, 19 }, 20} 21 22#[derive(Debug, serde::Serialize, serde::Deserialize)] 23pub enum StrikerResponse { 24 Response(Response), 25 Update(Update), 26} 27 28#[derive(Debug, serde::Serialize, serde::Deserialize)] 29pub enum Response { 30 Pong, 31 DetectorInfo { 32 blip_threshold: u16, 33 blip_size: usize, 34 }, 35 SetDetectorConfig { 36 success: bool, 37 message: Option<String>, 38 }, 39} 40 41#[derive(Debug, serde::Serialize, serde::Deserialize)] 42pub enum Update { 43 Warning { 44 timestamp: i64, 45 level: u16, 46 }, 47 Strike { 48 timestamp: i64, 49 peaks: Vec<(usize, u16)>, 50 samples: Vec<i16>, 51 average: u16, 52 }, 53} 54 55pub fn send_response(response: StrikerResponse, buf: &mut [u8]) -> Result<&mut [u8], postcard::Error> { 56 postcard::to_slice(&response, buf) 57} 58 59pub fn receive_response(buf: &mut [u8]) -> Result<StrikerResponse, postcard::Error> { 60 postcard::from_bytes(buf) 61} 62 63pub fn send_request(request: StrikerRequest, buf: &mut [u8]) -> Result<&mut [u8], postcard::Error> { 64 postcard::to_slice(&request, buf) 65} 66 67pub fn receive_request(buf: &mut [u8]) -> Result<StrikerRequest, postcard::Error> { 68 postcard::from_bytes(buf) 69}