1 /******************************************************************************** 2 / 3 / File: SerialPort.h 4 / 5 / Description: Serial Port class header. 6 / 7 / Copyright 1995-98, Be Incorporated, All Rights Reserved. 8 / 9 ********************************************************************************/ 10 11 12 #ifndef _SERIAL_PORT_H 13 #define _SERIAL_PORT_H 14 15 #include <BeBuild.h> 16 #include <stddef.h> 17 #include <OS.h> 18 #include <SupportDefs.h> 19 20 class BList; 21 22 enum data_rate { B_0_BPS = 0, B_50_BPS, B_75_BPS, B_110_BPS, B_134_BPS, 23 B_150_BPS, B_200_BPS, B_300_BPS, B_600_BPS, B_1200_BPS, 24 B_1800_BPS, B_2400_BPS, B_4800_BPS, B_9600_BPS, B_19200_BPS, 25 B_38400_BPS, B_57600_BPS, B_115200_BPS, 26 B_230400_BPS, B_31250_BPS }; 27 28 enum data_bits { B_DATA_BITS_7, B_DATA_BITS_8 }; 29 30 enum stop_bits { B_STOP_BITS_1, B_STOP_BITS_2 }; 31 #define B_STOP_BIT_1 B_STOP_BITS_1 32 33 enum parity_mode { B_NO_PARITY, B_ODD_PARITY, B_EVEN_PARITY }; 34 35 enum { B_NOFLOW_CONTROL = 0, B_HARDWARE_CONTROL = 0x00000001, 36 B_SOFTWARE_CONTROL = 0x00000002 }; 37 38 /* -----------------------------------------------------------------------*/ 39 class BSerialPort { 40 41 public: 42 BSerialPort(); 43 virtual ~BSerialPort(); 44 45 status_t Open(const char *portName); 46 void Close(void); 47 48 ssize_t Read(void *buf, size_t count); 49 ssize_t Write(const void *buf, size_t count); 50 void SetBlocking(bool Blocking); 51 status_t SetTimeout(bigtime_t microSeconds); 52 53 status_t SetDataRate(data_rate bitsPerSecond); 54 data_rate DataRate(void); 55 56 void SetDataBits(data_bits numBits); 57 data_bits DataBits(void); 58 void SetStopBits(stop_bits numBits); 59 stop_bits StopBits(void); 60 61 void SetParityMode(parity_mode which); 62 parity_mode ParityMode(void); 63 64 void ClearInput(void); 65 void ClearOutput(void); 66 67 void SetFlowControl(uint32 method); 68 uint32 FlowControl(void); 69 70 status_t SetDTR(bool asserted); 71 status_t SetRTS(bool asserted); 72 status_t NumCharsAvailable(int32 *wait_until_this_many); 73 74 bool IsCTS(void); 75 bool IsDSR(void); 76 bool IsRI(void); 77 bool IsDCD(void); 78 ssize_t WaitForInput(void); 79 /* -----------------------------------------------------------------------*/ 80 81 int32 CountDevices(); 82 status_t GetDeviceName(int32 n, char * name, 83 size_t bufSize = B_OS_NAME_LENGTH); 84 85 private: 86 87 void ScanDevices(); 88 89 virtual void _ReservedSerialPort1(); 90 virtual void _ReservedSerialPort2(); 91 virtual void _ReservedSerialPort3(); 92 virtual void _ReservedSerialPort4(); 93 94 int ffd; 95 data_rate fBaudRate; 96 data_bits fDataBits; 97 stop_bits fStopBits; 98 parity_mode fParityMode; 99 uint32 fFlow; 100 bigtime_t fTimeout; 101 bool fBlocking; 102 103 int DriverControl(); 104 105 BList * _fDevices; 106 uint32 _fReserved[3]; 107 }; 108 109 #endif 110