include/rtdm/rtserial.h

Go to the documentation of this file.
00001 
00078 #ifndef _RTSERIAL_H
00079 #define _RTSERIAL_H
00080 
00081 #include <rtdm/rtdm.h>
00082 
00087 #define RTSER_DEF_BAUD              9600
00088 
00094 #define RTSER_NO_PARITY             0x00
00095 #define RTSER_ODD_PARITY            0x01
00096 #define RTSER_EVEN_PARITY           0x03
00097 #define RTSER_DEF_PARITY            RTSER_NO_PARITY
00098 
00104 #define RTSER_5_BITS                0x00
00105 #define RTSER_6_BITS                0x01
00106 #define RTSER_7_BITS                0x02
00107 #define RTSER_8_BITS                0x03
00108 #define RTSER_DEF_BITS              RTSER_8_BITS
00109 
00115 #define RTSER_1_STOPB               0x00
00116 
00117 #define RTSER_1_5_STOPB             0x01
00118 #define RTSER_2_STOPB               0x01
00119 #define RTSER_DEF_STOPB             RTSER_1_STOPB
00120 
00126 #define RTSER_NO_HAND               0x00
00127 #define RTSER_RTSCTS_HAND           0x01
00128 #define RTSER_DEF_HAND              RTSER_NO_HAND
00129 
00135 #define RTSER_FIFO_DEPTH_1          0x00
00136 #define RTSER_FIFO_DEPTH_4          0x40
00137 #define RTSER_FIFO_DEPTH_8          0x80
00138 #define RTSER_FIFO_DEPTH_14         0xC0
00139 #define RTSER_DEF_FIFO_DEPTH        RTSER_FIFO_DEPTH_1
00140 
00146 #define RTSER_TIMEOUT_INFINITE      RTDM_TIMEOUT_INFINITE
00147 #define RTSER_TIMEOUT_NONE          RTDM_TIMEOUT_NONE
00148 #define RTSER_DEF_TIMEOUT           RTDM_TIMEOUT_INFINITE
00149 
00155 #define RTSER_RX_TIMESTAMP_HISTORY  0x01
00156 #define RTSER_DEF_TIMESTAMP_HISTORY 0x00
00157 
00163 #define RTSER_EVENT_RXPEND          0x01
00164 #define RTSER_EVENT_ERRPEND         0x02
00165 #define RTSER_EVENT_MODEMHI         0x04
00166 #define RTSER_EVENT_MODEMLO         0x08
00167 #define RTSER_DEF_EVENT_MASK        0x00
00168 
00175 #define RTSER_SET_BAUD              0x0001
00176 #define RTSER_SET_PARITY            0x0002
00177 #define RTSER_SET_DATA_BITS         0x0004
00178 #define RTSER_SET_STOP_BITS         0x0008
00179 #define RTSER_SET_HANDSHAKE         0x0010
00180 #define RTSER_SET_FIFO_DEPTH        0x0020
00181 #define RTSER_SET_TIMEOUT_RX        0x0100
00182 #define RTSER_SET_TIMEOUT_TX        0x0200
00183 #define RTSER_SET_TIMEOUT_EVENT     0x0400
00184 #define RTSER_SET_TIMESTAMP_HISTORY 0x0800
00185 #define RTSER_SET_EVENT_MASK        0x1000
00186 
00193 #define RTSER_LSR_DATA              0x01
00194 #define RTSER_LSR_OVERRUN_ERR       0x02
00195 #define RTSER_LSR_PARITY_ERR        0x04
00196 #define RTSER_LSR_FRAMING_ERR       0x08
00197 #define RTSER_LSR_BREAK_IND         0x10
00198 #define RTSER_LSR_THR_EMTPY         0x20
00199 #define RTSER_LSR_TRANSM_EMPTY      0x40
00200 #define RTSER_LSR_FIFO_ERR          0x80
00201 #define RTSER_SOFT_OVERRUN_ERR      0x0100
00202 
00209 #define RTSER_MSR_DCTS              0x01
00210 #define RTSER_MSR_DDSR              0x02
00211 #define RTSER_MSR_TERI              0x04
00212 #define RTSER_MSR_DDCD              0x08
00213 #define RTSER_MSR_CTS               0x10
00214 #define RTSER_MSR_DSR               0x20
00215 #define RTSER_MSR_RI                0x40
00216 #define RTSER_MSR_DCD               0x80
00217 
00224 #define RTSER_MCR_DTR               0x01
00225 #define RTSER_MCR_RTS               0x02
00226 #define RTSER_MCR_OUT1              0x04
00227 #define RTSER_MCR_OUT2              0x08
00228 #define RTSER_MCR_LOOP              0x10
00229 
00235 typedef struct rtser_config {
00237     int             config_mask;
00238 
00240     int             baud_rate;
00241 
00243     int             parity;
00244 
00246     int             data_bits;
00247 
00249     int             stop_bits;
00250 
00252     int             handshake;
00253 
00255     int             fifo_depth;
00256 
00258     nanosecs_rel_t  rx_timeout;
00259 
00261     nanosecs_rel_t  tx_timeout;
00262 
00264     nanosecs_rel_t  event_timeout;
00265 
00267     int             timestamp_history;
00268 
00271     int             event_mask;
00272 } rtser_config_t;
00273 
00277 typedef struct rtser_status {
00279     int             line_status;
00280 
00282     int             modem_status;
00283 } rtser_status_t;
00284 
00288 typedef struct rtser_event {
00290     int             events;
00291 
00293     int             rx_pending;
00294 
00296     nanosecs_abs_t  last_timestamp;
00297 
00299     nanosecs_abs_t  rxpend_timestamp;
00300 } rtser_event_t;
00301 
00302 
00303 #define RTIOC_TYPE_SERIAL           RTDM_CLASS_SERIAL
00304 
00305 
00309 #define RTDM_SUBCLASS_16550A        0
00310 
00335 #define RTSER_RTIOC_GET_CONFIG      \
00336     _IOR(RTIOC_TYPE_SERIAL, 0x00, struct rtser_config)
00337 
00365 #define RTSER_RTIOC_SET_CONFIG      \
00366     _IOW(RTIOC_TYPE_SERIAL, 0x01, struct rtser_config)
00367 
00391 #define RTSER_RTIOC_GET_STATUS      \
00392     _IOR(RTIOC_TYPE_SERIAL, 0x02, struct rtser_status)
00393 
00412 #define RTSER_RTIOC_GET_CONTROL     \
00413     _IOR(RTIOC_TYPE_SERIAL, 0x03, int)
00414 
00432 #define RTSER_RTIOC_SET_CONTROL     \
00433     _IOW(RTIOC_TYPE_SERIAL, 0x04, int)
00434 
00457 #define RTSER_RTIOC_WAIT_EVENT      \
00458     _IOR(RTIOC_TYPE_SERIAL, 0x05, struct rtser_event)
00459 
00463 #endif /* _RTSERIAL_H */

Generated on Mon Dec 25 13:57:10 2006 for Xenomai API by  doxygen 1.4.6