29 : pimpl_(new
SerialImpl(port_name, baudrate, timeout, bytesize, parity, stopbits, flowcontrol)) {
50 return pimpl_->available();
54 return pimpl_->waitReadable(
pimpl_->getTimeout().getReadConstant());
58 return pimpl_->waitWritable(
pimpl_->getTimeout().getWriteConstant());
62 pimpl_->waitByteTimes(count);
67 return pimpl_->read(buffer, size);
72 std::unique_ptr<uint8_t[]> buf(
new uint8_t[size]);
73 size_t bytes_read =
pimpl_->read(buf.get(), size);
74 buffer.insert(buffer.end(), buf.get(), buf.get() + bytes_read);
80 std::unique_ptr<uint8_t[]> buf(
new uint8_t[size]);
81 size_t bytes_read =
pimpl_->read(buf.get(), size);
82 buffer.append(
reinterpret_cast<const char *
>(buf.get()), bytes_read);
93 std::unique_ptr<uint8_t[]> buffer(
new uint8_t[size]);
94 size_t eol_len = eol.length();
95 size_t read_so_far = 0;
96 while (read_so_far < size) {
97 size_t bytes_read =
pimpl_->read(buffer.get() + read_so_far, 1);
98 read_so_far += bytes_read;
99 if (bytes_read == 0) {
102 if (read_so_far >= eol_len && std::string(
reinterpret_cast<const char *
>(buffer.get() + read_so_far - eol_len), eol_len) == eol) {
106 line.append(
reinterpret_cast<const char *
>(buffer.get()), read_so_far);
111 std::lock_guard<std::mutex> read_lock(
read_mutex_);
116 std::lock_guard<std::mutex> read_lock(
read_mutex_);
123 std::lock_guard<std::mutex> read_lock(
read_mutex_);
124 std::vector<std::string> lines;
127 lines.push_back(line);
136 return pimpl_->write(
reinterpret_cast<const uint8_t *
>(data.c_str()), data.length());
141 return pimpl_->write(&data[0], data.size());
146 return pimpl_->write(data, size);
150 std::lock_guard<std::mutex> read_lock(
read_mutex_);
152 bool was_open =
pimpl_->isOpen();
156 pimpl_->setPort(port_name);
167 pimpl_->setTimeout(timeout);
170 void Serial::setTimeout(uint32_t inter_byte, uint32_t read_constant, uint32_t read_multiplier, uint32_t write_constant, uint32_t write_multiplier) {
171 setTimeout(
Timeout(inter_byte, read_constant, read_multiplier, write_constant, write_multiplier));
175 return pimpl_->getTimeout();
179 pimpl_->setBaudrate(baudrate);
183 return uint32_t(
pimpl_->getBaudrate());
187 pimpl_->setBytesize(bytesize);
191 return pimpl_->getBytesize();
195 pimpl_->setParity(parity);
199 return pimpl_->getParity();
203 pimpl_->setStopbits(stopbits);
207 return pimpl_->getStopbits();
211 pimpl_->setFlowcontrol(flowcontrol);
215 return pimpl_->getFlowcontrol();
219 std::lock_guard<std::mutex> read_lock(
read_mutex_);
225 std::lock_guard<std::mutex> read_lock(
read_mutex_);
235 pimpl_->sendBreak(duration);
251 pimpl_->waitForModemChanges();