diff options
| author | Davide Della Giustina <[email protected]> | 2023-02-28 14:22:54 +0000 |
|---|---|---|
| committer | Davide Della Giustina <[email protected]> | 2023-02-28 14:22:54 +0000 |
| commit | 90f2939bf6ad02c68c3ada800d4ed7ddb66619a0 (patch) | |
| tree | 4fb31287da087f575c47aee5a835db7fdcf274bb | |
| parent | 28b695e7c9b134cafcdfb5897d26b00e396c7776 (diff) | |
Added PacketQueue::init()
| -rw-r--r-- | embassy-stm32/src/eth/mod.rs | 18 | ||||
| -rw-r--r-- | embassy-stm32/src/lib.rs | 8 |
2 files changed, 25 insertions, 1 deletions
diff --git a/embassy-stm32/src/eth/mod.rs b/embassy-stm32/src/eth/mod.rs index 9f62b61ee..9b500bfd6 100644 --- a/embassy-stm32/src/eth/mod.rs +++ b/embassy-stm32/src/eth/mod.rs | |||
| @@ -39,6 +39,24 @@ impl<const TX: usize, const RX: usize> PacketQueue<TX, RX> { | |||
| 39 | rx_buf: [Packet([0; RX_BUFFER_SIZE]); RX], | 39 | rx_buf: [Packet([0; RX_BUFFER_SIZE]); RX], |
| 40 | } | 40 | } |
| 41 | } | 41 | } |
| 42 | |||
| 43 | // Allow to initialize a Self without requiring it to go on the stack | ||
| 44 | #[cfg(feature = "nightly")] | ||
| 45 | pub const unsafe fn init(this: &mut core::mem::MaybeUninit<Self>) { | ||
| 46 | let this: &mut Self = unsafe { this.assume_init_mut() }; | ||
| 47 | let mut i = 0; | ||
| 48 | while i < TX { | ||
| 49 | this.tx_desc[i] = TDes::new(); | ||
| 50 | this.tx_buf[i] = Packet([0; TX_BUFFER_SIZE]); | ||
| 51 | i += 1; | ||
| 52 | } | ||
| 53 | i = 0; | ||
| 54 | while i < RX { | ||
| 55 | this.rx_desc[i] = RDes::new(); | ||
| 56 | this.rx_buf[i] = Packet([0; RX_BUFFER_SIZE]); | ||
| 57 | i += 1; | ||
| 58 | } | ||
| 59 | } | ||
| 42 | } | 60 | } |
| 43 | 61 | ||
| 44 | static WAKER: AtomicWaker = AtomicWaker::new(); | 62 | static WAKER: AtomicWaker = AtomicWaker::new(); |
diff --git a/embassy-stm32/src/lib.rs b/embassy-stm32/src/lib.rs index eeaa04f67..7c0b2d516 100644 --- a/embassy-stm32/src/lib.rs +++ b/embassy-stm32/src/lib.rs | |||
| @@ -1,7 +1,13 @@ | |||
| 1 | #![no_std] | 1 | #![no_std] |
| 2 | #![cfg_attr( | 2 | #![cfg_attr( |
| 3 | feature = "nightly", | 3 | feature = "nightly", |
| 4 | feature(type_alias_impl_trait, async_fn_in_trait, impl_trait_projections) | 4 | feature( |
| 5 | type_alias_impl_trait, | ||
| 6 | async_fn_in_trait, | ||
| 7 | impl_trait_projections, | ||
| 8 | const_mut_refs, | ||
| 9 | const_maybe_uninit_assume_init | ||
| 10 | ) | ||
| 5 | )] | 11 | )] |
| 6 | #![cfg_attr(feature = "nightly", allow(incomplete_features))] | 12 | #![cfg_attr(feature = "nightly", allow(incomplete_features))] |
| 7 | 13 | ||
