fix: make write_immediate() for ring buffers right-aligned

This commit is contained in:
elagil 2024-11-28 17:36:14 +01:00
parent 8954c053fb
commit 152d8ee0d9

View File

@ -252,9 +252,13 @@ impl<'a, W: Word> WritableDmaRingBuffer<'a, W> {
} }
/// Write elements directly to the buffer. /// Write elements directly to the buffer.
///
/// Data is aligned towards the end of the buffer.
pub fn write_immediate(&mut self, buf: &[W]) -> Result<(usize, usize), Error> { pub fn write_immediate(&mut self, buf: &[W]) -> Result<(usize, usize), Error> {
let start = self.cap() - buf.len();
for (i, data) in buf.iter().enumerate() { for (i, data) in buf.iter().enumerate() {
self.write_buf(i, *data) self.write_buf(start + i, *data)
} }
let written = buf.len().min(self.cap()); let written = buf.len().min(self.cap());
Ok((written, self.cap() - written)) Ok((written, self.cap() - written))