1use defmt::Format;
4
5use crate::{EspError, ble::HciPkt};
6
7const PRIO_Q_SERIAL: u8 = 0;
8const PRIO_Q_BT: u8 = 1;
9const PRIO_Q_OTHERS: u8 = 2;
10const MAX_PRIORITY_QUEUES: u8 = 3;
11const MAC_SIZE_BYTES: u8 = 6;
12
13const SERIAL_IF_FILE: &str = "/dev/esps0";
15
16pub(crate) const RPC_EP_NAME_RSP: &str = "RPCRsp";
19pub(crate) const RPC_EP_NAME_EVT: &str = "RPCEvt";
20
21#[derive(Clone, Copy, PartialEq, Default, Format)]
22pub enum PacketType {
23 #[default]
24 None,
25 ESP_PACKET_TYPE_EVENT,
27 ESP_PRIV_EVENT_INIT,
29 Hci(HciPkt),
30}
31
32impl PacketType {
33 pub fn val(&self) -> u8 {
34 match self {
35 Self::None => 0,
36 Self::ESP_PACKET_TYPE_EVENT => 0x33,
37 Self::ESP_PRIV_EVENT_INIT => 0x22,
38 Self::Hci(v) => *v as u8,
39 }
40 }
41
42 pub fn from_byte(b: u8) -> Result<Self, EspError> {
43 Ok(match b {
44 0 => Self::None,
45 0x33 => Self::ESP_PACKET_TYPE_EVENT,
46 0x22 => Self::ESP_PRIV_EVENT_INIT,
47 _ => Self::Hci(HciPkt::try_from(b).map_err(|_| EspError::InvalidData)?),
48 })
49 }
50}
51
52#[repr(u8)]
53pub(crate) enum SLAVE_CONFIG_PRIV_TAG_TYPE {
54 HOST_CAPABILITIES = 0x44,
55 RCVD_ESP_FIRMWARE_CHIP_ID,
56 SLV_CONFIG_TEST_RAW_TP,
57 SLV_CONFIG_THROTTLE_HIGH_THRESHOLD,
58 SLV_CONFIG_THROTTLE_LOW_THRESHOLD,
59}
60
61pub(crate) const ESP_TRANSPORT_SDIO_MAX_BUF_SIZE: u16 = 1536;
62pub(crate) const ESP_TRANSPORT_SPI_MAX_BUF_SIZE: u16 = 1600;
63pub(crate) const ESP_TRANSPORT_SPI_HD_MAX_BUF_SIZE: u16 = 1600;
64pub(crate) const ESP_TRANSPORT_UART_MAX_BUF_SIZE: u16 = 1600;
65
66pub(crate) struct esp_priv_event {
67 event_type: u8,
68 event_len: u8,
69 event_data: u8, }
71
72pub(crate) fn compute_checksum(buf: &[u8]) -> u16 {
74 let mut checksum = 0;
75 let mut i = 0;
76
77 while i < buf.len() {
78 checksum += buf[i] as u16;
79 i += 1;
80 }
81
82 checksum
83}