Go to the documentation of this file.00001
00077 #ifndef _RTSERIAL_H
00078 #define _RTSERIAL_H
00079
00080 #include <rtdm/rtdm.h>
00081
00082 #define RTSER_PROFILE_VER 3
00083
00088 #define RTSER_DEF_BAUD 9600
00089
00095 #define RTSER_NO_PARITY 0x00
00096 #define RTSER_ODD_PARITY 0x01
00097 #define RTSER_EVEN_PARITY 0x03
00098 #define RTSER_DEF_PARITY RTSER_NO_PARITY
00099
00105 #define RTSER_5_BITS 0x00
00106 #define RTSER_6_BITS 0x01
00107 #define RTSER_7_BITS 0x02
00108 #define RTSER_8_BITS 0x03
00109 #define RTSER_DEF_BITS RTSER_8_BITS
00110
00116 #define RTSER_1_STOPB 0x00
00117
00118 #define RTSER_1_5_STOPB 0x01
00119 #define RTSER_2_STOPB 0x01
00120 #define RTSER_DEF_STOPB RTSER_1_STOPB
00121
00127 #define RTSER_NO_HAND 0x00
00128 #define RTSER_RTSCTS_HAND 0x01
00129 #define RTSER_DEF_HAND RTSER_NO_HAND
00130
00136 #define RTSER_RS485_DISABLE 0x00
00137 #define RTSER_RS485_ENABLE 0x01
00138 #define RTSER_DEF_RS485 RTSER_RS485_DISABLE
00139
00145 #define RTSER_FIFO_DEPTH_1 0x00
00146 #define RTSER_FIFO_DEPTH_4 0x40
00147 #define RTSER_FIFO_DEPTH_8 0x80
00148 #define RTSER_FIFO_DEPTH_14 0xC0
00149 #define RTSER_DEF_FIFO_DEPTH RTSER_FIFO_DEPTH_1
00150
00156 #define RTSER_TIMEOUT_INFINITE RTDM_TIMEOUT_INFINITE
00157 #define RTSER_TIMEOUT_NONE RTDM_TIMEOUT_NONE
00158 #define RTSER_DEF_TIMEOUT RTDM_TIMEOUT_INFINITE
00159
00165 #define RTSER_RX_TIMESTAMP_HISTORY 0x01
00166 #define RTSER_DEF_TIMESTAMP_HISTORY 0x00
00167
00173 #define RTSER_EVENT_RXPEND 0x01
00174 #define RTSER_EVENT_ERRPEND 0x02
00175 #define RTSER_EVENT_MODEMHI 0x04
00176 #define RTSER_EVENT_MODEMLO 0x08
00177 #define RTSER_EVENT_TXEMPTY 0x10
00178 #define RTSER_DEF_EVENT_MASK 0x00
00179
00186 #define RTSER_SET_BAUD 0x0001
00187 #define RTSER_SET_PARITY 0x0002
00188 #define RTSER_SET_DATA_BITS 0x0004
00189 #define RTSER_SET_STOP_BITS 0x0008
00190 #define RTSER_SET_HANDSHAKE 0x0010
00191 #define RTSER_SET_FIFO_DEPTH 0x0020
00192 #define RTSER_SET_TIMEOUT_RX 0x0100
00193 #define RTSER_SET_TIMEOUT_TX 0x0200
00194 #define RTSER_SET_TIMEOUT_EVENT 0x0400
00195 #define RTSER_SET_TIMESTAMP_HISTORY 0x0800
00196 #define RTSER_SET_EVENT_MASK 0x1000
00197 #define RTSER_SET_RS485 0x2000
00198
00205 #define RTSER_LSR_DATA 0x01
00206 #define RTSER_LSR_OVERRUN_ERR 0x02
00207 #define RTSER_LSR_PARITY_ERR 0x04
00208 #define RTSER_LSR_FRAMING_ERR 0x08
00209 #define RTSER_LSR_BREAK_IND 0x10
00210 #define RTSER_LSR_THR_EMTPY 0x20
00211 #define RTSER_LSR_TRANSM_EMPTY 0x40
00212 #define RTSER_LSR_FIFO_ERR 0x80
00213 #define RTSER_SOFT_OVERRUN_ERR 0x0100
00214
00221 #define RTSER_MSR_DCTS 0x01
00222 #define RTSER_MSR_DDSR 0x02
00223 #define RTSER_MSR_TERI 0x04
00224 #define RTSER_MSR_DDCD 0x08
00225 #define RTSER_MSR_CTS 0x10
00226 #define RTSER_MSR_DSR 0x20
00227 #define RTSER_MSR_RI 0x40
00228 #define RTSER_MSR_DCD 0x80
00229
00236 #define RTSER_MCR_DTR 0x01
00237 #define RTSER_MCR_RTS 0x02
00238 #define RTSER_MCR_OUT1 0x04
00239 #define RTSER_MCR_OUT2 0x08
00240 #define RTSER_MCR_LOOP 0x10
00241
00248 #define RTSER_BREAK_CLR 0x00
00249 #define RTSER_BREAK_SET 0x01
00250
00251
00255 typedef struct rtser_config {
00257 int config_mask;
00258
00260 int baud_rate;
00261
00263 int parity;
00264
00266 int data_bits;
00267
00269 int stop_bits;
00270
00272 int handshake;
00273
00275 int fifo_depth;
00276
00277 int reserved;
00278
00281 nanosecs_rel_t rx_timeout;
00282
00285 nanosecs_rel_t tx_timeout;
00286
00288 nanosecs_rel_t event_timeout;
00289
00291 int timestamp_history;
00292
00295 int event_mask;
00296
00298 int rs485;
00299 } rtser_config_t;
00300
00304 typedef struct rtser_status {
00306 int line_status;
00307
00309 int modem_status;
00310 } rtser_status_t;
00311
00315 typedef struct rtser_event {
00317 int events;
00318
00320 int rx_pending;
00321
00323 nanosecs_abs_t last_timestamp;
00324
00326 nanosecs_abs_t rxpend_timestamp;
00327 } rtser_event_t;
00328
00329
00330 #define RTIOC_TYPE_SERIAL RTDM_CLASS_SERIAL
00331
00332
00336 #define RTDM_SUBCLASS_16550A 0
00337
00362 #define RTSER_RTIOC_GET_CONFIG \
00363 _IOR(RTIOC_TYPE_SERIAL, 0x00, struct rtser_config)
00364
00392 #define RTSER_RTIOC_SET_CONFIG \
00393 _IOW(RTIOC_TYPE_SERIAL, 0x01, struct rtser_config)
00394
00418 #define RTSER_RTIOC_GET_STATUS \
00419 _IOR(RTIOC_TYPE_SERIAL, 0x02, struct rtser_status)
00420
00439 #define RTSER_RTIOC_GET_CONTROL \
00440 _IOR(RTIOC_TYPE_SERIAL, 0x03, int)
00441
00459 #define RTSER_RTIOC_SET_CONTROL \
00460 _IOW(RTIOC_TYPE_SERIAL, 0x04, int)
00461
00484 #define RTSER_RTIOC_WAIT_EVENT \
00485 _IOR(RTIOC_TYPE_SERIAL, 0x05, struct rtser_event)
00486
00508 #define RTSER_RTIOC_BREAK_CTL \
00509 _IOR(RTIOC_TYPE_SERIAL, 0x06, int)
00510
00520 #endif