Added PacketQueue::init()

This commit is contained in:
Davide Della Giustina 2023-02-28 14:22:54 +00:00
parent 28b695e7c9
commit 90f2939bf6
No known key found for this signature in database
2 changed files with 25 additions and 1 deletions

View file

@ -39,6 +39,24 @@ impl<const TX: usize, const RX: usize> PacketQueue<TX, RX> {
rx_buf: [Packet([0; RX_BUFFER_SIZE]); RX],
}
}
// Allow to initialize a Self without requiring it to go on the stack
#[cfg(feature = "nightly")]
pub const unsafe fn init(this: &mut core::mem::MaybeUninit<Self>) {
let this: &mut Self = unsafe { this.assume_init_mut() };
let mut i = 0;
while i < TX {
this.tx_desc[i] = TDes::new();
this.tx_buf[i] = Packet([0; TX_BUFFER_SIZE]);
i += 1;
}
i = 0;
while i < RX {
this.rx_desc[i] = RDes::new();
this.rx_buf[i] = Packet([0; RX_BUFFER_SIZE]);
i += 1;
}
}
}
static WAKER: AtomicWaker = AtomicWaker::new();

View file

@ -1,7 +1,13 @@
#![no_std]
#![cfg_attr(
feature = "nightly",
feature(type_alias_impl_trait, async_fn_in_trait, impl_trait_projections)
feature(
type_alias_impl_trait,
async_fn_in_trait,
impl_trait_projections,
const_mut_refs,
const_maybe_uninit_assume_init
)
)]
#![cfg_attr(feature = "nightly", allow(incomplete_features))]