Merge from kseries.
[bertos.git] / drv / ser.h
index 27f022cd947b6ab532a8c57922e6e7b0a7edfc7f..d184ad886dc9400a81a7cad44ec4abeb95a7c686 100755 (executable)
--- a/drv/ser.h
+++ b/drv/ser.h
 
 /*#*
  *#* $Log$
+ *#* 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 +278,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;
@@ -291,6 +306,8 @@ extern void ser_resync(struct Serial *port, mtime_t delay);
 extern void ser_purge(struct Serial *port);
 extern void ser_drain(struct Serial *port);
 
+extern void ser_clearstatus(struct Serial *port);
+
 extern struct Serial *ser_open(unsigned int unit);
 extern void ser_close(struct Serial *port);