aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32/src/usart
diff options
context:
space:
mode:
authoretiennecollin <[email protected]>2025-08-25 21:10:59 +0200
committerDario Nieuwenhuis <[email protected]>2025-09-05 14:43:29 +0200
commit50e2e2ec60ca32a2da53b91f4a30c3a71d4e9f30 (patch)
treeffaed485eb5b2300b938d8093b3ea03efe4e6e81 /embassy-stm32/src/usart
parent4291a092bedb0f45d236a1847a9b85fd093d3af9 (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.rs5
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
89impl<'d> SetConfig for RingBufferedUartRx<'d> { 89impl<'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