phm_icd/
lib.rs

1#![no_std]
2
3use heapless::Vec;
4use serde::{Deserialize, Serialize};
5
6// TODO: Something better than this
7pub type Error = ();
8
9#[cfg_attr(feature = "use-defmt", derive(defmt::Format))]
10#[derive(Debug, Serialize, Deserialize)]
11pub enum ToMcu {
12    I2c(ToMcuI2c),
13    Spi(ToMcuSpi),
14    Uart(ToMcuUart),
15    Ping,
16}
17
18#[cfg_attr(feature = "use-defmt", derive(defmt::Format))]
19#[derive(Debug, Serialize, Deserialize)]
20pub enum ToMcuI2c {
21    Write {
22        addr: u8,
23        output: Vec<u8, 64>,
24    },
25    Read {
26        addr: u8,
27        to_read: u32,
28    },
29    WriteThenRead {
30        addr: u8,
31        output: Vec<u8, 64>,
32        to_read: u32,
33    },
34}
35
36#[cfg_attr(feature = "use-defmt", derive(defmt::Format))]
37#[derive(Debug, Serialize, Deserialize)]
38pub enum ToMcuSpi {
39    Write { output: Vec<u8, 64> },
40    Transfer { output: Vec<u8, 64> },
41}
42
43#[cfg_attr(feature = "use-defmt", derive(defmt::Format))]
44#[derive(Debug, Serialize, Deserialize)]
45pub enum ToMcuUart {
46    Write { output: Vec<u8, 64> },
47    Flush,
48    Read,
49}
50
51#[cfg_attr(feature = "use-defmt", derive(defmt::Format))]
52#[derive(Debug, Serialize, Deserialize)]
53pub enum ToPc {
54    I2c(ToPcI2c),
55    Spi(ToPcSpi),
56    Uart(ToPcUart),
57    Pong,
58}
59
60#[cfg_attr(feature = "use-defmt", derive(defmt::Format))]
61#[derive(Debug, Serialize, Deserialize)]
62pub enum ToPcI2c {
63    WriteComplete { addr: u8 },
64    Read { addr: u8, data_read: Vec<u8, 64> },
65    WriteThenRead { addr: u8, data_read: Vec<u8, 64> },
66}
67
68#[cfg_attr(feature = "use-defmt", derive(defmt::Format))]
69#[derive(Debug, Serialize, Deserialize)]
70pub enum ToPcSpi {
71    WriteComplete,
72    Transfer { data_read: Vec<u8, 64> },
73}
74
75#[cfg_attr(feature = "use-defmt", derive(defmt::Format))]
76#[derive(Debug, Serialize, Deserialize)]
77pub enum ToPcUart {
78    WriteComplete,
79    Read { data_read: Vec<u8, 64> },
80}