diff packages/io/serial/current/include/serialio.h @ 115:6ed91473a1cd ecos-sw-2000-08-21

Merge from eCos master repository on 2000-08-21-22:40:54-BST
author jlarmour
date Fri, 25 Aug 2000 17:32:38 +0000
parents 6512add4f5d6
children 0c2b7be0d798
line wrap: on
line diff
--- a/packages/io/serial/current/include/serialio.h
+++ b/packages/io/serial/current/include/serialio.h
@@ -116,6 +116,32 @@ typedef struct {
     cyg_uint32               flags;
 } cyg_serial_info_t;
 
+// cyg_serial_info_t flags
+#define CYGNUM_SERIAL_FLOW_NONE              (0)
+// receive flow control, send xon/xoff when necessary:
+#define CYGNUM_SERIAL_FLOW_XONXOFF_RX        (1<<0)  
+// transmit flow control, act on received xon/xoff:
+#define CYGNUM_SERIAL_FLOW_XONXOFF_TX        (1<<1)
+// receive flow control, send RTS when necessary:
+#define CYGNUM_SERIAL_FLOW_RTSCTS_RX         (1<<2)
+// transmit flow control, act when not CTS:
+#define CYGNUM_SERIAL_FLOW_RTSCTS_TX         (1<<3)
+// receive flow control, send DTR when necessary:
+#define CYGNUM_SERIAL_FLOW_DSRDTR_RX         (1<<4)
+// transmit flow control, act when not DSR:
+#define CYGNUM_SERIAL_FLOW_DSRDTR_TX         (1<<5)
+
+// arguments for CYG_IO_SET_CONFIG_SERIAL_FLOW_CONTROL_FORCE
+#define CYGNUM_SERIAL_FLOW_THROTTLE_RX       0
+#define CYGNUM_SERIAL_FLOW_RESTART_RX        1
+#define CYGNUM_SERIAL_FLOW_THROTTLE_TX       2
+#define CYGNUM_SERIAL_FLOW_RESTART_TX        3
+
+// arguments for CYG_IO_SET_CONFIG_SERIAL_HW_RX_FLOW_THROTTLE
+#define CYGNUM_SERIAL_FLOW_HW_UNTHROTTLE     0
+#define CYGNUM_SERIAL_FLOW_HW_THROTTLE       0
+#define CYGNUM_SERIAL_FLOW_HW_UNTHROTTLE     0
+
 typedef struct {  
     cyg_int32 rx_bufsize;
     cyg_int32 rx_count;
@@ -123,12 +149,33 @@ typedef struct {
     cyg_int32 tx_count;
 } cyg_serial_buf_info_t;
 
-
 #define CYG_SERIAL_INFO_INIT(_baud,_stop,_parity,_word_length,_flags) \
   { _baud, _stop, _parity, _word_length, _flags}
 
-// Control flags
-#define CYG_SERIAL_FLAGS_RTSCTS    0x0001
+#ifdef CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS
+
+# define CYGNUM_SERIAL_STATUS_FLOW          0
+# define CYGNUM_SERIAL_STATUS_BREAK         1
+# define CYGNUM_SERIAL_STATUS_FRAMEERR      2
+# define CYGNUM_SERIAL_STATUS_PARITYERR     3
+# define CYGNUM_SERIAL_STATUS_OVERRUNERR    4
+# define CYGNUM_SERIAL_STATUS_CARRIERDETECT 5
+# define CYGNUM_SERIAL_STATUS_RINGINDICATOR 6
+
+typedef struct {
+    cyg_uint32 which;        // one of CYGNUM_SERIAL_STATUS_* above
+    cyg_uint32 value;        // and its value
+} cyg_serial_line_status_t;
+
+typedef void (*cyg_serial_line_status_callback_fn_t)(
+                                                 cyg_serial_line_status_t *s,
+                                                 CYG_ADDRWORD priv );
+typedef struct {
+    cyg_serial_line_status_callback_fn_t fn;
+    CYG_ADDRWORD priv;
+} cyg_serial_line_status_callback_t;
+
+#endif // ifdef CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS
 
 // Default configuration
 #define CYG_SERIAL_BAUD_DEFAULT        CYGNUM_SERIAL_BAUD_38400
@@ -137,6 +184,16 @@ typedef struct {
 #define CYG_SERIAL_WORD_LENGTH_DEFAULT CYGNUM_SERIAL_WORD_LENGTH_8
 #define CYG_SERIAL_FLAGS_DEFAULT       0
 
+#ifdef CYGDAT_IO_SERIAL_FLOW_CONTROL_DEFAULT_XONXOFF
+# define CYG_SERIAL_FLAGS_DEFAULT      CYG_SERIAL_FLOW_XONXOFF
+#elif defined(CYGDAT_IO_SERIAL_FLOW_CONTROL_DEFAULT_RTSCTS)
+# define CYG_SERIAL_FLAGS_DEFAULT      CYG_SERIAL_FLOW_RTSCTS
+#elif defined(CYGDAT_IO_SERIAL_FLOW_CONTROL_DEFAULT_DSRDTR)
+# define CYG_SERIAL_FLAGS_DEFAULT      CYG_SERIAL_FLOW_DSRDTR
+#else 
+# define CYG_SERIAL_FLAGS_DEFAULT      0
+#endif
+
 #ifdef __cplusplus
 }
 #endif