1mod net;
2
3pub mod dirt;
4pub mod f1;
5
6pub type TelemetryPacket = [u8];
8
9pub trait TelemetryEvent {
11 fn from_packet(packet: &TelemetryPacket) -> Result<Self, Box<dyn std::error::Error>>
12 where
13 Self: Sized;
14}
15
16pub struct TelemetryServer<T: TelemetryEvent> {
19 srv: net::Server,
20 phantom: std::marker::PhantomData<T>, }
22
23impl<T: TelemetryEvent> TelemetryServer<T> {
24 pub fn new(address: &'static str) -> Result<TelemetryServer<T>, std::io::Error> {
26 let srv = net::Server::new(address)?;
27 Ok(TelemetryServer {
28 srv,
29 phantom: std::marker::PhantomData,
30 })
31 }
32
33 pub fn next(&self) -> Result<T, Box<dyn std::error::Error>> {
36 let packet = self.srv.recv()?;
37 T::from_packet(&packet)
38 }
39}