Rename remaining instances of 'abort' to 'except'.
[bertos.git] / drv / ser.h
index 27f022cd947b6ab532a8c57922e6e7b0a7edfc7f..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.
+ *#*
  *#* Revision 1.30  2006/09/13 18:21:23  bernie
  *#* Add configurable SPI pin mapping.
  *#*
 #define SERRF_TX  (SERRF_TXTIMEOUT)
 /*\}*/
 
-/** LSB or MSB first data order, used with SPI AVR serial */
+/**
  * \name LSB or MSB first data order, used with SPI AVR serial
  * \{
  */
  */
 enum
 {
-#if CPU_AVR_ATMEGA64 || CPU_AVR_ATMEGA128
+#if CPU_AVR_ATMEGA64 || CPU_AVR_ATMEGA128 || CPU_AVR_ATMEGA1281
        SER_UART0,
        SER_UART1,
        SER_SPI,
@@ -263,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;
@@ -301,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 */