diff --git a/src/serial.rs b/src/serial.rs index be071b51465c94f49e03ef9266872294bb0235d3..d988cf789cba92828747a1a720b2889ffa7b3552 100644 --- a/src/serial.rs +++ b/src/serial.rs @@ -295,9 +295,7 @@ where } else if sr.rxne().bit_is_set() { // NOTE(read_volatile) the register is 9 bits big but we'll only // work with the first 8 bits - Ok(unsafe { - ptr::read_volatile(&usart2.dr as *const _ as *const u8) - }) + Ok(unsafe { ptr::read_volatile(&usart2.dr as *const _ as *const u8) }) } else { Err(nb::Error::WouldBlock) } @@ -405,7 +403,7 @@ pub struct U8Writer<'a> { impl<'a> U8Writer<'a> { /// pub fn new(buf: &'a mut [u8]) -> Self { - U8Writer { + U8Writer { buf: buf, offset: 0, } @@ -432,14 +430,7 @@ impl<'a> fmt::Write for U8Writer<'a> { /// outside rtfm tasks. #[macro_export] macro_rules! uprint { - ($T:ident, $USART:expr, $DMA:expr, $TX_BUFFER:expr, $s:expr) => { - use core::fmt::Write; - // Claim the transmit buffer and write a string literal into it - $TX_BUFFER.claim_mut($T, |tx, _| { - let len = (*tx).deref().borrow().len(); - let buf = &mut (*tx).deref().borrow_mut(); - write!(U8Writer::new(&mut buf[..len]), $s).unwrap(); - }); + ($T:ident, $USART:expr, $DMA:expr, $TX_BUFFER:expr) => { // Transmit the contents of the buffer using DMA $TX_BUFFER.claim($T, |tx, t| { $DMA.claim(t, |dma, t| { @@ -450,22 +441,28 @@ macro_rules! uprint { }); }); }; + ($T:ident, $USART:expr, $DMA:expr, $TX_BUFFER:expr, $s:expr) => { + use rtfm::{Resource}; + use core::fmt::Write; + use f4::U8Writer; + // Claim the transmit buffer and write a string literal into it + $TX_BUFFER.claim_mut($T, |tx, _| { + let len = (*tx).deref().borrow().len(); + let buf = &mut (*tx).deref().borrow_mut(); + write!(U8Writer::new(&mut buf[..len]), $s).unwrap(); + }); + uprint!($T, $USART, $DMA, $TX_BUFFER); + }; ($T:ident, $USART:expr, $DMA:expr, $TX_BUFFER:expr, $($arg:tt)* ) => { + use rtfm::{Resource}; use core::fmt::Write; + use f4::U8Writer; // Claim the transmit buffer and write a formatted string into it $TX_BUFFER.claim_mut($T, |tx, _| { let len = (*tx).deref().borrow().len(); let buf = &mut (*tx).deref().borrow_mut(); write!(U8Writer::new(&mut buf[..len]), $($arg)*).unwrap(); }); - // Transmit the contents of the buffer using DMA - $TX_BUFFER.claim($T, |tx, t| { - $DMA.claim(t, |dma, t| { - $USART.claim(t, |usart, _| { - let serial = Serial(&**usart); - serial.write_all(dma, tx).unwrap(); - }); - }); - }); - } + uprint!($T, $USART, $DMA, $TX_BUFFER); + }; }