5 * Copyright (C) Bob 2009
7 * boblight is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * boblight is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15 * See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License along
18 * with this program. If not, see <http://www.gnu.org/licenses/>.
21 #include "os-dependent.h"
29 #include "../util/threads.h"
30 #include "../util/buffer.h"
34 typedef struct serial_cancel_options
36 CSerialPort
*instance
;
38 } serial_cancel_options
;
52 virtual ~CSerialPort();
54 bool Open(std::string name
, int baudrate
, int databits
= 8, int stopbits
= 1, int parity
= PAR_NONE
);
56 int Write(std::vector
<uint8_t> data
)
58 return Write(&data
[0], data
.size());
61 int Write(uint8_t* data
, int len
);
62 int Read(uint8_t* data
, int len
, int iTimeoutMs
= -1);
64 std::string
GetError() { return m_name
+ ": " + m_error
; }
65 std::string
GetName() { return m_name
; }
67 bool SetBaudRate(int baudrate
);
69 int IntToRate(int baudrate
)
71 for (unsigned int i
= 0; i
< sizeof(baudrates
) / sizeof(sbaudrate
) - 1; i
++)
73 if (baudrates
[i
].rate
== baudrate
)
75 return baudrates
[i
].symbol
;
82 bool IsOpen() const { return m_bIsOpen
; }
84 bool IsOpen() const { return m_fd
!= -1; }
92 bool SetTimeouts(bool bBlocking
);
101 CecBuffer
<uint8_t> m_buffer
;
104 struct termios m_options
;