X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=drv%2Fser.h;h=ae8e0b2ae5f86b0d031f344700fbe09c22def7fa;hb=8e67b786e5aa96e6d4628687cf230a8f64d3791a;hp=5b07fbc1aa5a7adbead7dae6c6847a6578fee744;hpb=7920ccf2c9be523f680d88ef7d681d09af7da209;p=bertos.git diff --git a/drv/ser.h b/drv/ser.h index 5b07fbc1..ae8e0b2a 100755 --- a/drv/ser.h +++ b/drv/ser.h @@ -14,6 +14,12 @@ /*#* *#* $Log$ + *#* Revision 1.33 2006/11/17 17:03:58 batt + *#* Implement ser_setstatus and ser_getstatus as functions to avoid race conditions. + *#* + *#* Revision 1.32 2006/11/17 16:01:12 batt + *#* Serial status MUST be volatile. + *#* *#* Revision 1.31 2006/09/13 18:22:48 bernie *#* Typo. *#* @@ -209,7 +215,7 @@ */ enum { -#if CPU_AVR_ATMEGA64 || CPU_AVR_ATMEGA128 +#if CPU_AVR_ATMEGA64 || CPU_AVR_ATMEGA128 || CPU_AVR_ATMEGA1281 SER_UART0, SER_UART1, SER_SPI, @@ -266,7 +272,7 @@ typedef struct Serial #endif /** Holds the flags defined above. Will be 0 when no errors have occurred. */ - serstatus_t status; + volatile serstatus_t status; /** Low-level interface to hardware. */ struct SerialHardware* hw; @@ -297,13 +303,7 @@ extern void ser_drain(struct Serial *port); extern struct Serial *ser_open(unsigned int unit); extern void ser_close(struct Serial *port); -/** - * \name Additional functions implemented as macros - * - * \{ - */ -#define ser_getstatus(h) ((h)->status) -#define ser_setstatus(h, x) ((h)->status = (x)) -/* \} */ +extern serstatus_t ser_getstatus(struct Serial *port); +extern void ser_setstatus(struct Serial *port, serstatus_t status); #endif /* DRV_SER_H */