trouble-host

Crates

git

Versions

default

Flavors

Struct L2capChannel

Source
pub struct L2capChannel<'d> { /* private fields */ }
Expand description

Handle representing an L2CAP channel.

Implementations§

Source§

impl<'d> L2capChannel<'d>

Source

pub fn disconnect(&mut self)

Disconnect this channel.

Source

pub async fn send<T: Controller, const TX_MTU: usize>( &mut self, stack: &Stack<'_, T>, buf: &[u8], ) -> Result<(), BleHostError<T::Error>>

Send the provided buffer over this l2cap channel.

The buffer will be segmented to the maximum payload size agreed in the opening handshake.

If the channel has been closed or the channel id is not valid, an error is returned. If there are no available credits to send, waits until more credits are available.

Source

pub fn try_send<T: Controller + Controller, const TX_MTU: usize>( &mut self, stack: &Stack<'_, T>, buf: &[u8], ) -> Result<(), BleHostError<T::Error>>

Send the provided buffer over this l2cap channel.

The buffer will be segmented to the maximum payload size agreed in the opening handshake.

If the channel has been closed or the channel id is not valid, an error is returned. If there are no available credits to send, returns Error::Busy.

Source

pub async fn receive<T: Controller>( &mut self, stack: &Stack<'_, T>, buf: &mut [u8], ) -> Result<usize, BleHostError<T::Error>>

Receive data on this channel and copy it into the buffer.

The length provided buffer slice must be equal or greater to the agreed MTU.

Source

pub async fn accept<T: Controller>( stack: &'d Stack<'d, T>, connection: &Connection<'_>, psm: &[u16], config: &L2capChannelConfig, ) -> Result<Self, BleHostError<T::Error>>

Await an incoming connection request matching the list of PSM.

Source

pub async fn create<T: Controller>( stack: &'d Stack<'d, T>, connection: &Connection<'_>, psm: u16, config: &L2capChannelConfig, ) -> Result<Self, BleHostError<T::Error>>

Create a new connection request with the provided PSM.

Source

pub fn split(self) -> (L2capChannelWriter<'d>, L2capChannelReader<'d>)

Split the channel into a writer and reader for concurrently writing to/reading from the channel.

Source

pub fn merge( writer: L2capChannelWriter<'d>, reader: L2capChannelReader<'d>, ) -> Self

Merge writer and reader into a single channel again.

This function will panic if the channels are not referring to the same channel id.

Trait Implementations§

Source§

impl Drop for L2capChannel<'_>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Format for L2capChannel<'_>

Source§

fn format(&self, f: Formatter<'_>)

Writes the defmt representation of self to fmt.

Auto Trait Implementations§

§

impl<'d> Freeze for L2capChannel<'d>

§

impl<'d> !RefUnwindSafe for L2capChannel<'d>

§

impl<'d> !Send for L2capChannel<'d>

§

impl<'d> !Sync for L2capChannel<'d>

§

impl<'d> Unpin for L2capChannel<'d>

§

impl<'d> !UnwindSafe for L2capChannel<'d>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.