A RPi Pico powered Lightning Detector
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}