File tree Expand file tree Collapse file tree 1 file changed +10
-19
lines changed Expand file tree Collapse file tree 1 file changed +10
-19
lines changed Original file line number Diff line number Diff line change @@ -908,26 +908,17 @@ impl<'d> embedded_hal_02::serial::Read<u8> for BufferedUartRx<'d> {
908
908
type Error = Error ;
909
909
910
910
fn read ( & mut self ) -> Result < u8 , nb:: Error < Self :: Error > > {
911
- let r = self . info . regs ;
912
- unsafe {
913
- let sr = sr ( r) . read ( ) ;
914
- if sr. pe ( ) {
915
- rdr ( r) . read_volatile ( ) ;
916
- Err ( nb:: Error :: Other ( Error :: Parity ) )
917
- } else if sr. fe ( ) {
918
- rdr ( r) . read_volatile ( ) ;
919
- Err ( nb:: Error :: Other ( Error :: Framing ) )
920
- } else if sr. ne ( ) {
921
- rdr ( r) . read_volatile ( ) ;
922
- Err ( nb:: Error :: Other ( Error :: Noise ) )
923
- } else if sr. ore ( ) {
924
- rdr ( r) . read_volatile ( ) ;
925
- Err ( nb:: Error :: Other ( Error :: Overrun ) )
926
- } else if sr. rxne ( ) {
927
- Ok ( rdr ( r) . read_volatile ( ) )
928
- } else {
929
- Err ( nb:: Error :: WouldBlock )
911
+ let state = self . state ;
912
+ let mut rx_reader = unsafe { state. rx_buf . reader ( ) } ;
913
+
914
+ let do_pend = state. rx_buf . is_full ( ) ;
915
+ if let Some ( data) = rx_reader. pop_one ( ) {
916
+ if do_pend {
917
+ self . info . interrupt . pend ( ) ;
930
918
}
919
+ Ok ( data)
920
+ } else {
921
+ Err ( nb:: Error :: WouldBlock )
931
922
}
932
923
}
933
924
}
You can’t perform that action at this time.
0 commit comments