A RPi Pico powered Lightning Detector
at main 35 lines 1.2 kB view raw
1use striker_proto::{Request, Response, StrikerRequest, StrikerResponse}; 2 3use crate::updates::{DetectorConfigUpdate, DetectorConfigurationHandle}; 4 5pub struct RpcServer; 6 7impl RpcServer { 8 pub async fn handle_request(req: StrikerRequest) -> Option<StrikerResponse> { 9 match req.request { 10 Request::Ping => Some(StrikerResponse::Response(Response::Pong)), 11 Request::DetectorInfo => { 12 let config = DetectorConfigurationHandle::get_config(); 13 14 Some(StrikerResponse::Response(Response::DetectorInfo { 15 blip_threshold: config.blip_threshold(), 16 blip_size: config.blip_size(), 17 })) 18 } 19 Request::SetDetectorConfig { 20 blip_size, 21 blip_threshold, 22 } => { 23 DetectorConfigurationHandle::set_config(DetectorConfigUpdate { 24 blip_threshold, 25 blip_size, 26 }); 27 28 Some(StrikerResponse::Response(Response::SetDetectorConfig { 29 success: true, 30 message: None, 31 })) 32 } 33 } 34 } 35}