Open Dirbaio opened 3 years ago
Maybe embedded-dma could provide an (unsafe, obviously) API to use any buffer with minimal fuss?
Something like this:
struct UnsafeWriteBuffer<'a, T: ?Sized>{ inner: &'a mut T, } impl<'a, T:?Sized> UnsafeWriteBuffer<'a, T>{ pub unsafe fn new(inner: &'a mut T) -> Self{ Self { inner } } } impl<'a, T:?Sized> Deref for UnsafeWriteBuffer<'a, T>{ type Target = T; fn deref(&self) -> &Self::Target { self.inner } } impl<'a, T:?Sized> DerefMut for UnsafeWriteBuffer<'a, T>{ fn deref_mut(&mut self) -> &mut Self::Target { self.inner } } unsafe impl<'a, T:?Sized> StableDeref for UnsafeWriteBuffer<'a, T>{ } unsafe impl<'a, T: WriteTarget + ?Sized> WriteBuffer for UnsafeWriteBuffer<'a, T>{ type Word = T::Word; unsafe fn write_buffer(&mut self) -> (*mut Self::Word, usize) { self.inner.as_write_buffer() } }
Maybe embedded-dma could provide an (unsafe, obviously) API to use any buffer with minimal fuss?
Something like this: