1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#![no_std]
#[macro_use]
extern crate bitflags;
mod codec;
mod ids;
#[derive(Debug, Clone, PartialEq)]
pub enum Err<E> {
Parsing(nom::Err<()>),
CRCMismatch,
TXErr,
NotOurs,
RPCErr(E),
ResponseOverrun,
Unknown,
}
impl<E> From<nom::Err<()>> for Err<E> {
fn from(nom_err: nom::Err<()>) -> Self {
Err::Parsing::<E>(nom_err)
}
}
pub use codec::{FrameHeader, Header};
pub trait RPC {
type ReturnValue;
type Error;
fn header(&self, seq: u32) -> Header;
fn args(&self, _buff: &mut heapless::Vec<u8, heapless::consts::U64>) {}
fn parse(&mut self, data: &[u8]) -> Result<Self::ReturnValue, Err<Self::Error>>;
}
mod system_rpcs;
mod wifi_rpcs;
pub mod rpcs {
pub use crate::system_rpcs::*;
pub use crate::wifi_rpcs::*;
}