1 /////////////////////////////////////////////////////////////////////////
2 // $Id: serial_raw.h,v 1.13 2007/11/03 16:47:49 vruppert Exp $
3 /////////////////////////////////////////////////////////////////////////
9 #include <linux/serial.h>
13 // experimental raw serial receive support on win32
14 //#define WIN32_RECEIVE_RAW
23 #define RAW_EVENT_BREAK -1
24 #define RAW_EVENT_CTS_ON -2
25 #define RAW_EVENT_CTS_OFF -3
26 #define RAW_EVENT_DSR_ON -4
27 #define RAW_EVENT_DSR_OFF -5
28 #define RAW_EVENT_RING_ON -6
29 #define RAW_EVENT_RING_OFF -7
30 #define RAW_EVENT_RLSD_ON -8
31 #define RAW_EVENT_RLSD_OFF -9
32 #define RAW_EVENT_FRAME -10
33 #define RAW_EVENT_OVERRUN -11
34 #define RAW_EVENT_PARITY -12
36 #define THREAD_RX_BUFSIZE 8192
37 #define RX_BUFSIZE 256
39 class serial_raw
: public logfunctions
{
41 serial_raw(const char *devname
);
42 virtual ~serial_raw();
43 void set_baudrate(int rate
);
44 void set_data_bits(int);
45 void set_stop_bits(int);
46 void set_parity_mode(int mode
);
47 void set_break(int mode
);
48 void set_modem_control(int ctrl
);
49 int get_modem_status();
50 void transmit(Bit8u byte
);
51 bx_bool
ready_transmit();
52 bx_bool
ready_receive();
54 #ifdef WIN32_RECEIVE_RAW
60 #ifdef WIN32_RECEIVE_RAW
61 void enq_event(Bit16s event
);
64 unsigned rxdata_count
;
70 Bit16s rxdata_buffer
[RX_BUFSIZE
];
71 #ifdef WIN32_RECEIVE_RAW
72 HANDLE hRawSerialThread
;
76 OVERLAPPED thread_ovl
;
77 unsigned thread_rxdata_count
;
78 Bit16s thread_rxdata_buffer
[THREAD_RX_BUFSIZE
];