Rename remaining instances of 'abort' to 'except'.
[bertos.git] / drv / ser.h
index 5b07fbc1aa5a7adbead7dae6c6847a6578fee744..ba8eab97573ad1f3a5db17fc666f8300434e0d10 100755 (executable)
--- a/drv/ser.h
+++ b/drv/ser.h
 
 /*#*
  *#* $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.
+ *#*
+ *#* 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.
  *#*
  */
 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 +281,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;
@@ -304,6 +319,7 @@ extern void ser_close(struct Serial *port);
  */
 #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 */