btle 0.1.4

Lightweight Bluetooth Low Energy Drivers. WIP and very not stable yet!! Designed for https://github.com/AndrewGi/BluetoothMeshRust
Documentation
use crate::bytes::Storage;
use crate::hci::adapter::Error;
use crate::hci::adapters::UnrecognizedEventHandler;
use crate::hci::event::EventPacket;
use alloc::collections::VecDeque;

pub struct HCIEventBuffer<Buf> {
    deque: VecDeque<EventPacket<Buf>>,
}
impl<Buf> HCIEventBuffer<Buf> {
    pub fn new() -> Self {
        HCIEventBuffer {
            deque: VecDeque::new(),
        }
    }
    pub fn into_inner(self) -> VecDeque<EventPacket<Buf>> {
        self.deque
    }
    pub fn inner_mut(&mut self) -> &mut VecDeque<EventPacket<Buf>> {
        &mut self.deque
    }
    pub fn inner(&self) -> &VecDeque<EventPacket<Buf>> {
        &self.deque
    }
    pub fn push(&mut self, event: EventPacket<Buf>) {
        self.deque.push_back(event)
    }
    pub fn pop(&mut self) -> Option<EventPacket<Buf>> {
        self.deque.pop_front()
    }
    pub fn drain(
        &mut self,
        range: impl core::ops::RangeBounds<usize>,
    ) -> alloc::collections::vec_deque::Drain<EventPacket<Buf>> {
        self.deque.drain(range)
    }
}
impl<Buf> Iterator for HCIEventBuffer<Buf> {
    type Item = EventPacket<Buf>;

    fn next(&mut self) -> Option<Self::Item> {
        self.pop()
    }
}
impl<Buf: Storage<u8>> UnrecognizedEventHandler for HCIEventBuffer<Buf> {
    type Buf = Buf;

    fn handle(&mut self, event: EventPacket<Self::Buf>) -> Result<(), Error> {
        self.push(event);
        Ok(())
    }
}