X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=drv%2Fser.h;h=1054f4fdd3ec16abce8f59888840d0e26d2e0374;hb=9fc47ff8814e045ac498acb1bc92946950a6a5f9;hp=ae8e0b2ae5f86b0d031f344700fbe09c22def7fa;hpb=8e67b786e5aa96e6d4628687cf230a8f64d3791a;p=bertos.git diff --git a/drv/ser.h b/drv/ser.h old mode 100755 new mode 100644 index ae8e0b2a..1054f4fd --- a/drv/ser.h +++ b/drv/ser.h @@ -1,9 +1,34 @@ /** * \file * * * \brief High level serial I/O API @@ -14,6 +39,15 @@ /*#* *#* $Log$ + *#* Revision 1.36 2007/01/29 11:30:30 batt + *#* Reimplement ser_clearstatus as a macro. + *#* + *#* Revision 1.35 2007/01/27 20:47:12 batt + *#* Add clear status. + *#* + *#* Revision 1.34 2006/11/20 15:07:40 batt + *#* Revert unneeded locked functions. + *#* *#* Revision 1.33 2006/11/17 17:03:58 batt *#* Implement ser_setstatus and ser_getstatus as functions to avoid race conditions. *#* @@ -122,6 +156,23 @@ /** \name Serial Error/status flags. */ /*\{*/ +#if CPU_ARM + typedef uint32_t serstatus_t; + + /* Software errors */ + #define SERRF_RXFIFOOVERRUN BV(0) /**< Rx FIFO buffer overrun */ + #define SERRF_RXTIMEOUT BV(1) /**< Receive timeout */ + #define SERRF_TXTIMEOUT BV(2) /**< Transmit timeout */ + + /* + * Hardware errors. + * These flags map directly to the ARM USART Channel Status Register (US_CSR). + */ + #define SERRF_RXSROVERRUN BV(5) /**< Rx shift register overrun */ + #define SERRF_FRAMEERROR BV(6) /**< Stop bit missing */ + #define SERRF_PARITYERROR BV(7) /**< Parity error */ + #define SERRF_NOISEERROR 0 /**< Unsupported */ + #if CPU_AVR typedef uint8_t serstatus_t; @@ -215,6 +266,10 @@ */ enum { +#if CPU_ARM_AT91 + SER_UART0, + SER_UART1, + SER_SPI, #if CPU_AVR_ATMEGA64 || CPU_AVR_ATMEGA128 || CPU_AVR_ATMEGA1281 SER_UART0, SER_UART1, @@ -303,7 +358,14 @@ extern void ser_drain(struct Serial *port); extern struct Serial *ser_open(unsigned int unit); extern void ser_close(struct Serial *port); -extern serstatus_t ser_getstatus(struct Serial *port); -extern void ser_setstatus(struct Serial *port, serstatus_t status); +/** + * \name Additional functions implemented as macros + * + * \{ + */ +#define ser_getstatus(h) ((h)->status) +#define ser_setstatus(h, x) ((h)->status = (x)) +#define ser_clearstatus(h) ser_setstatus(h, 0) +/* \} */ #endif /* DRV_SER_H */