diff options
| author | etiennecollin <[email protected]> | 2025-08-25 21:10:59 +0200 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2025-09-05 14:43:29 +0200 |
| commit | 50e2e2ec60ca32a2da53b91f4a30c3a71d4e9f30 (patch) | |
| tree | ffaed485eb5b2300b938d8093b3ea03efe4e6e81 /embassy-stm32/src/usart | |
| parent | 4291a092bedb0f45d236a1847a9b85fd093d3af9 (diff) | |
feat: add new_with_table() initializer for ring-buffers and removal of RegisterUpdaters
- It is now possible to pass a linked-list table to the ring-buffer with
the `new_with_table()` function or use the `new()` function for a basic
ring-buffer setup.
- A `simple_ring_buffer_table()` function was added to the read and
write ring-buffers to generate the same table as the one created by
`new()` in case the user only wants to customize the default table
options.
- RegisterUpdaters have been removed as the user now has direct access
to the table and its items if needed.
See: https://github.com/elagil/embassy/pull/1#issuecomment-2891997294
Diffstat (limited to 'embassy-stm32/src/usart')
| -rw-r--r-- | embassy-stm32/src/usart/ringbuffered.rs | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/embassy-stm32/src/usart/ringbuffered.rs b/embassy-stm32/src/usart/ringbuffered.rs index 78bf4b72f..8a607a31a 100644 --- a/embassy-stm32/src/usart/ringbuffered.rs +++ b/embassy-stm32/src/usart/ringbuffered.rs | |||
| @@ -83,7 +83,7 @@ pub struct RingBufferedUartRx<'d> { | |||
| 83 | kernel_clock: Hertz, | 83 | kernel_clock: Hertz, |
| 84 | rx: Option<Peri<'d, AnyPin>>, | 84 | rx: Option<Peri<'d, AnyPin>>, |
| 85 | rts: Option<Peri<'d, AnyPin>>, | 85 | rts: Option<Peri<'d, AnyPin>>, |
| 86 | ring_buf: ReadableRingBuffer<'d, u8>, | 86 | ring_buf: ReadableRingBuffer<'d, u8, 2>, |
| 87 | } | 87 | } |
| 88 | 88 | ||
| 89 | impl<'d> SetConfig for RingBufferedUartRx<'d> { | 89 | impl<'d> SetConfig for RingBufferedUartRx<'d> { |
| @@ -103,7 +103,6 @@ impl<'d> UartRx<'d, Async> { | |||
| 103 | assert!(!dma_buf.is_empty() && dma_buf.len() <= 0xFFFF); | 103 | assert!(!dma_buf.is_empty() && dma_buf.len() <= 0xFFFF); |
| 104 | 104 | ||
| 105 | let opts = Default::default(); | 105 | let opts = Default::default(); |
| 106 | let updaters = Default::default(); | ||
| 107 | 106 | ||
| 108 | // Safety: we forget the struct before this function returns. | 107 | // Safety: we forget the struct before this function returns. |
| 109 | let rx_dma = self.rx_dma.as_mut().unwrap(); | 108 | let rx_dma = self.rx_dma.as_mut().unwrap(); |
| @@ -113,7 +112,7 @@ impl<'d> UartRx<'d, Async> { | |||
| 113 | let info = self.info; | 112 | let info = self.info; |
| 114 | let state = self.state; | 113 | let state = self.state; |
| 115 | let kernel_clock = self.kernel_clock; | 114 | let kernel_clock = self.kernel_clock; |
| 116 | let ring_buf = unsafe { ReadableRingBuffer::new(rx_dma, request, rdr(info.regs), dma_buf, opts, updaters) }; | 115 | let ring_buf = unsafe { ReadableRingBuffer::new(rx_dma, request, rdr(info.regs), dma_buf, opts) }; |
| 117 | let rx = unsafe { self.rx.as_ref().map(|x| x.clone_unchecked()) }; | 116 | let rx = unsafe { self.rx.as_ref().map(|x| x.clone_unchecked()) }; |
| 118 | let rts = unsafe { self.rts.as_ref().map(|x| x.clone_unchecked()) }; | 117 | let rts = unsafe { self.rts.as_ref().map(|x| x.clone_unchecked()) }; |
| 119 | 118 | ||
