Save some more RAM on AVR.
[bertos.git] / drv / ser.h
index a11e0fb6e09f32e46e45ab60f1abf233bbf4e943..167bb959073c7a0a89d87fec58e782d4c47539dc 100755 (executable)
--- a/drv/ser.h
+++ b/drv/ser.h
 
 /*#*
  *#* $Log$
+ *#* Revision 1.17  2004/11/16 21:54:56  bernie
+ *#* Changes for SC Monoboard support.
+ *#*
+ *#* Revision 1.16  2004/10/19 11:48:05  bernie
+ *#* Reformat.
+ *#*
+ *#* Revision 1.15  2004/10/19 08:11:53  bernie
+ *#* SERRF_TX, SERRF_RX: New macros; Enhance documentation.
+ *#*
  *#* Revision 1.14  2004/10/03 18:43:18  bernie
  *#* Fix a nasty bug caused by confusion between old-style and new-style configuration macros.
  *#*
 #include <compiler.h>
 #include <config.h>
 
-/*!
- * \name Serial Error/status flags
- *
- * Some of these flags map directly to the flags
- * in AVR UART Status Register(USR).
- * \todo  flags of DSP56k aren't mapped to these flags. Luckily
- *        these flags doesn't collide with the DSP56k ones,
- *        which are from 0x0100 to 0x8000
- */
+/*! \name Serial Error/status flags. */
 /*\{*/
 #if CPU_AVR
        typedef uint8_t serstatus_t;
        #define SERRF_RXTIMEOUT      BV(5)  /*!< Receive timeout */
        #define SERRF_TXTIMEOUT      BV(6)  /*!< Transmit timeout */
 
-       /* Hardware errors */
+       /*
+        * Hardware errors.
+         * These flags map directly to the AVR UART Status Register (USR).
+        */
        #define SERRF_RXSROVERRUN    BV(3)  /*!< Rx shift register overrun */
        #define SERRF_FRAMEERROR     BV(4)  /*!< Stop bit missing */
        #define SERRF_PARITYERROR    BV(7)  /*!< Parity error */
+       #define SERRF_NOISEERROR     0      /*!< Unsupported */
 #elif CPU_DSP56K
        typedef uint16_t serstatus_t;
 
        #define SERRF_RXTIMEOUT      BV(1)  /*!< Receive timeout */
        #define SERRF_TXTIMEOUT      BV(2)  /*!< Transmit timeout */
 
-       /* Hardware errors */
+       /*
+        * Hardware errors.
+        * These flags map directly to the SCI Control Register.
+        */
        #define SERRF_PARITYERROR    BV(8)  /*!< Parity error */
        #define SERRF_FRAMEERROR     BV(9)  /*!< Stop bit missing */
        #define SERRF_NOISEERROR     BV(10) /*!< Noise error */
 #endif
 /*\}*/
 
-/*! \name Parity settings for ser_setparity() */
+/*! \name Masks to group TX/RX errors. */
+/*\{*/
+#define SERRF_RX  (SERRF_RXFIFOOVERRUN \
+       | SERRF_RXTIMEOUT \
+       | SERRF_RXSROVERRUN \
+       | SERRF_PARITYERROR \
+       | SERRF_FRAMEERROR \
+       | SERRF_NOISEERROR)
+#define SERRF_TX  (SERRF_TXTIMEOUT)
+/*\}*/
+
+
+/*!
+ * \name Parity settings for ser_setparity().
+ *
+ * \note Values are AVR-specific for performance reasons.
+ *       Other processors should either decode them or
+ *       redefine these macros.
+ */
 /*\{*/
 #define SER_PARITY_NONE  0
 #define SER_PARITY_EVEN  2
@@ -123,8 +149,10 @@ enum
        SER_UART0,
        SER_SPI,
 #elif CPU_DSP56K
+       // \todo since we now support "fake" multiplexed serials, this should be moved to hw.h
        SER_UART0,
-       SER_UART1,
+       SER_PUNTALI,
+       SER_BARCODE,
 #else
        #error unknown architecture
 #endif