Struct L2capChannel

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

Handle representing an L2CAP channel.

Implementations§

Source§

impl<'d, P: PacketPool> L2capChannel<'d, P>

Source

pub fn disconnect(&mut self)

Disconnect this channel.

Source

pub fn psm(&self) -> u16

Get the PSM for this channel.

Source

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

Send the provided buffer over this l2cap channel.

The buffer must be equal to or smaller than the MTU agreed for the channel.

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>( &mut self, stack: &Stack<'_, T, P>, buf: &[u8], ) -> Result<(), BleHostError<T::Error>>

Send the provided buffer over this l2cap channel.

The buffer must be equal to or smaller than the MTU agreed for the channel.

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, P>, 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 receive_sdu<T: Controller>( &mut self, stack: &Stack<'_, T, P>, ) -> Result<Sdu<P::Packet>, BleHostError<T::Error>>

Receive the next SDU available on this channel.

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, P>, connection: &Connection<'_, P>, 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, P>, connection: &Connection<'_, P>, 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, P>, L2capChannelReader<'d, P>)

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

Source

pub fn merge( writer: L2capChannelWriter<'d, P>, reader: L2capChannelReader<'d, P>, ) -> 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<P: PacketPool> Drop for L2capChannel<'_, P>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

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

§

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

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.