Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: device/serial/test_serial_io_handler.cc

Issue 873903002: Set serial connection parameters immediately on connect. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "device/serial/test_serial_io_handler.h" 5 #include "device/serial/test_serial_io_handler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "device/serial/serial.mojom.h" 10 #include "device/serial/serial.mojom.h"
11 11
12 namespace device { 12 namespace device {
13 13
14 TestSerialIoHandler::TestSerialIoHandler() 14 TestSerialIoHandler::TestSerialIoHandler()
15 : SerialIoHandler(NULL, NULL), 15 : SerialIoHandler(NULL, NULL),
16 opened_(false), 16 opened_(false),
17 dtr_(false), 17 dtr_(false),
18 rts_(false), 18 rts_(false),
19 flushes_(0) { 19 flushes_(0) {
20 } 20 }
21 21
22 scoped_refptr<SerialIoHandler> TestSerialIoHandler::Create() { 22 scoped_refptr<SerialIoHandler> TestSerialIoHandler::Create() {
23 return scoped_refptr<SerialIoHandler>(new TestSerialIoHandler); 23 return scoped_refptr<SerialIoHandler>(new TestSerialIoHandler);
24 } 24 }
25 25
26 void TestSerialIoHandler::Open(const std::string& port, 26 void TestSerialIoHandler::Open(const std::string& port,
27 const serial::ConnectionOptions& options,
27 const OpenCompleteCallback& callback) { 28 const OpenCompleteCallback& callback) {
28 DCHECK(!opened_); 29 DCHECK(!opened_);
29 opened_ = true; 30 opened_ = true;
31 ConfigurePort(options);
30 callback.Run(true); 32 callback.Run(true);
31 } 33 }
32 34
33 bool TestSerialIoHandler::ConfigurePort(
34 const serial::ConnectionOptions& options) {
35 if (options.bitrate)
36 info_.bitrate = options.bitrate;
37 if (options.data_bits != serial::DATA_BITS_NONE)
38 info_.data_bits = options.data_bits;
39 if (options.parity_bit != serial::PARITY_BIT_NONE)
40 info_.parity_bit = options.parity_bit;
41 if (options.stop_bits != serial::STOP_BITS_NONE)
42 info_.stop_bits = options.stop_bits;
43 if (options.has_cts_flow_control)
44 info_.cts_flow_control = options.cts_flow_control;
45 return true;
46 }
47
48 void TestSerialIoHandler::ReadImpl() { 35 void TestSerialIoHandler::ReadImpl() {
49 if (!pending_read_buffer()) 36 if (!pending_read_buffer())
50 return; 37 return;
51 if (buffer_.empty()) 38 if (buffer_.empty())
52 return; 39 return;
53 40
54 size_t num_bytes = 41 size_t num_bytes =
55 std::min(buffer_.size(), static_cast<size_t>(pending_read_buffer_len())); 42 std::min(buffer_.size(), static_cast<size_t>(pending_read_buffer_len()));
56 memcpy(pending_read_buffer(), buffer_.c_str(), num_bytes); 43 memcpy(pending_read_buffer(), buffer_.c_str(), num_bytes);
57 buffer_ = buffer_.substr(num_bytes); 44 buffer_ = buffer_.substr(num_bytes);
(...skipping 14 matching lines...) Expand all
72 buffer_ += std::string(pending_write_buffer(), pending_write_buffer_len()); 59 buffer_ += std::string(pending_write_buffer(), pending_write_buffer_len());
73 WriteCompleted(pending_write_buffer_len(), serial::SEND_ERROR_NONE); 60 WriteCompleted(pending_write_buffer_len(), serial::SEND_ERROR_NONE);
74 if (pending_read_buffer()) 61 if (pending_read_buffer())
75 ReadImpl(); 62 ReadImpl();
76 } 63 }
77 64
78 void TestSerialIoHandler::CancelWriteImpl() { 65 void TestSerialIoHandler::CancelWriteImpl() {
79 WriteCompleted(0, write_cancel_reason()); 66 WriteCompleted(0, write_cancel_reason());
80 } 67 }
81 68
69 bool TestSerialIoHandler::ConfigurePortImpl() {
70 info_.bitrate = options().bitrate;
71 info_.data_bits = options().data_bits;
72 info_.parity_bit = options().parity_bit;
73 info_.stop_bits = options().stop_bits;
74 info_.cts_flow_control = options().cts_flow_control;
75 return true;
76 }
77
82 serial::DeviceControlSignalsPtr TestSerialIoHandler::GetControlSignals() const { 78 serial::DeviceControlSignalsPtr TestSerialIoHandler::GetControlSignals() const {
83 serial::DeviceControlSignalsPtr signals(serial::DeviceControlSignals::New()); 79 serial::DeviceControlSignalsPtr signals(serial::DeviceControlSignals::New());
84 *signals = device_control_signals_; 80 *signals = device_control_signals_;
85 return signals.Pass(); 81 return signals.Pass();
86 } 82 }
87 83
88 serial::ConnectionInfoPtr TestSerialIoHandler::GetPortInfo() const { 84 serial::ConnectionInfoPtr TestSerialIoHandler::GetPortInfo() const {
89 serial::ConnectionInfoPtr info(serial::ConnectionInfo::New()); 85 serial::ConnectionInfoPtr info(serial::ConnectionInfo::New());
90 *info = info_; 86 *info = info_;
91 return info.Pass(); 87 return info.Pass();
(...skipping 10 matching lines...) Expand all
102 dtr_ = signals.dtr; 98 dtr_ = signals.dtr;
103 if (signals.has_rts) 99 if (signals.has_rts)
104 rts_ = signals.rts; 100 rts_ = signals.rts;
105 return true; 101 return true;
106 } 102 }
107 103
108 TestSerialIoHandler::~TestSerialIoHandler() { 104 TestSerialIoHandler::~TestSerialIoHandler() {
109 } 105 }
110 106
111 } // namespace device 107 } // namespace device
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698