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.
///
/// Data is aligned towards the end of the buffer.
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() {
self.write_buf(i, *data)
self.write_buf(start + i, *data)
}
let written = buf.len().min(self.cap());
Ok((written, self.cap() - written))