A RPi Pico powered Lightning Detector
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add striker-proto initial integration

+18 -19
+10
Cargo.lock
··· 1460 1460 "sachy-sntp", 1461 1461 "serde", 1462 1462 "static_cell", 1463 + "striker-proto", 1463 1464 ] 1464 1465 1465 1466 [[package]] ··· 1897 1898 checksum = "0530892bb4fa575ee0da4b86f86c667132a94b74bb72160f58ee5a4afec74c23" 1898 1899 dependencies = [ 1899 1900 "portable-atomic", 1901 + ] 1902 + 1903 + [[package]] 1904 + name = "striker-proto" 1905 + version = "0.1.0" 1906 + source = "git+https://tangled.org/sachy.dev/striker#1435f9c442cd90c3d80a4f0b3b51dd7b9b218534" 1907 + dependencies = [ 1908 + "postcard", 1909 + "serde", 1900 1910 ] 1901 1911 1902 1912 [[package]]
+1
Cargo.toml
··· 49 49 ] } 50 50 sachy-mdns = { git = "https://tangled.org/sachy.dev/sachy-embed-core", package = "sachy-mdns" } 51 51 sachy-fmt = { git = "https://tangled.org/sachy.dev/sachy-embed-core", package = "sachy-fmt" } 52 + striker-proto = { git = "https://tangled.org/sachy.dev/striker", package = "striker-proto" } 52 53 53 54 embassy-embedded-hal = { version = "0.5.0" } 54 55 embassy-sync = { version = "0.7.2" }
+2 -2
src/detector/data.rs
··· 2 2 3 3 pub(super) fn transmit_level_update(timestamp: i64, warn_level: u16, net_data: &NetDataSender) { 4 4 net_data 5 - .try_send(crate::updates::Update::Warning { 5 + .try_send(striker_proto::Update::Warning { 6 6 timestamp, 7 7 level: warn_level, 8 8 }) ··· 17 17 net_data: &NetDataSender, 18 18 ) { 19 19 net_data 20 - .try_send(crate::updates::Update::Strike { 20 + .try_send(striker_proto::Update::Strike { 21 21 timestamp, 22 22 peaks: peaks.to_vec(), 23 23 samples: samples
+4 -1
src/net.rs
··· 139 139 140 140 if tcp 141 141 .write_with(|buf| { 142 - let written = unwrap!(postcard::to_slice(&data, buf)); 142 + let written = unwrap!(postcard::to_slice( 143 + &striker_proto::StrikerResponse::Update(data), 144 + buf 145 + )); 143 146 144 147 (written.len(), ()) 145 148 })
+1 -16
src/updates.rs
··· 1 - use alloc::vec::Vec; 2 - 3 1 use embassy_sync::channel::{Channel, Receiver, Sender}; 2 + use striker_proto::Update; 4 3 5 4 use crate::{ 6 5 locks::NetDataLock, ··· 10 9 pub type NetDataChannel = Channel<NetDataLock, Update, 8>; 11 10 pub type NetDataSender = Sender<'static, NetDataLock, Update, 8>; 12 11 pub type NetDataReceiver = Receiver<'static, NetDataLock, Update, 8>; 13 - 14 - #[derive(Debug, serde::Serialize)] 15 - pub enum Update { 16 - Warning { 17 - timestamp: i64, 18 - level: u16, 19 - }, 20 - Strike { 21 - timestamp: i64, 22 - peaks: Vec<u16>, 23 - samples: Vec<i16>, 24 - average: u16, 25 - }, 26 - } 27 12 28 13 static NET_CHANNEL: NetDataChannel = Channel::new(); 29 14