bt_hci/controller/
blocking.rs1use crate::controller::ErrorType;
3use crate::{data, ControllerToHostPacket, FromHciBytesError};
4
5pub trait Controller: ErrorType {
7 fn write_acl_data(&self, packet: &data::AclPacket) -> Result<(), Self::Error>;
9
10 fn write_sync_data(&self, packet: &data::SyncPacket) -> Result<(), Self::Error>;
12
13 fn write_iso_data(&self, packet: &data::IsoPacket) -> Result<(), Self::Error>;
15
16 fn try_write_acl_data(&self, packet: &data::AclPacket) -> Result<(), TryError<Self::Error>>;
20
21 fn try_write_sync_data(&self, packet: &data::SyncPacket) -> Result<(), TryError<Self::Error>>;
25
26 fn try_write_iso_data(&self, packet: &data::IsoPacket) -> Result<(), TryError<Self::Error>>;
30
31 fn read<'a>(&self, buf: &'a mut [u8]) -> Result<ControllerToHostPacket<'a>, Self::Error>;
33
34 fn try_read<'a>(&self, buf: &'a mut [u8]) -> Result<ControllerToHostPacket<'a>, TryError<Self::Error>>;
38}
39
40#[derive(Debug)]
43#[cfg_attr(feature = "defmt", derive(defmt::Format))]
44pub enum TryError<E> {
45 Error(E),
47 Busy,
49}
50
51impl<E: From<FromHciBytesError>> From<FromHciBytesError> for TryError<E> {
52 fn from(value: FromHciBytesError) -> Self {
53 TryError::Error(E::from(value))
54 }
55}