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

Unified Diff: chrome/browser/extensions/api/serial/serial_connection.cc

Issue 363583002: Convert SerialIoHandler to use Mojo types. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/serial/serial_connection.cc
diff --git a/chrome/browser/extensions/api/serial/serial_connection.cc b/chrome/browser/extensions/api/serial/serial_connection.cc
index 3d1006e45f3a0bff4ce6097fd2bea03cea6b6236..1c9d6e3fca403d2ca4fcaf4568563d54e7f6188a 100644
--- a/chrome/browser/extensions/api/serial/serial_connection.cc
+++ b/chrome/browser/extensions/api/serial/serial_connection.cc
@@ -16,8 +16,118 @@ namespace extensions {
namespace {
const int kDefaultBufferSize = 4096;
+
+api::serial::SendError ConvertSendErrorFromMojo(device::SendError input) {
+ switch (input) {
+ case device::SEND_ERROR_NONE:
+ default:
raymes 2014/07/02 00:57:48 It's often good to get rid of the "default" case s
Sam McNally 2014/07/02 04:50:49 Done.
+ return api::serial::SEND_ERROR_NONE;
+ case device::SEND_ERROR_DISCONNECTED:
+ return api::serial::SEND_ERROR_DISCONNECTED;
+ case device::SEND_ERROR_PENDING:
+ return api::serial::SEND_ERROR_PENDING;
+ case device::SEND_ERROR_TIMEOUT:
+ return api::serial::SEND_ERROR_TIMEOUT;
+ case device::SEND_ERROR_SYSTEM_ERROR:
+ return api::serial::SEND_ERROR_SYSTEM_ERROR;
+ }
+}
+
+api::serial::ReceiveError ConvertReceiveErrorFromMojo(
+ device::ReceiveError input) {
+ switch (input) {
+ case device::RECEIVE_ERROR_NONE:
+ default:
+ return api::serial::RECEIVE_ERROR_NONE;
+ case device::RECEIVE_ERROR_DISCONNECTED:
+ return api::serial::RECEIVE_ERROR_DISCONNECTED;
+ case device::RECEIVE_ERROR_TIMEOUT:
+ return api::serial::RECEIVE_ERROR_TIMEOUT;
+ case device::RECEIVE_ERROR_DEVICE_LOST:
+ return api::serial::RECEIVE_ERROR_DEVICE_LOST;
+ case device::RECEIVE_ERROR_SYSTEM_ERROR:
+ return api::serial::RECEIVE_ERROR_SYSTEM_ERROR;
+ }
+}
+
+api::serial::DataBits ConvertDataBitsFromMojo(device::DataBits input) {
+ switch (input) {
+ case device::DATA_BITS_NONE:
+ default:
+ return api::serial::DATA_BITS_NONE;
+ case device::DATA_BITS_SEVEN:
+ return api::serial::DATA_BITS_SEVEN;
+ case device::DATA_BITS_EIGHT:
+ return api::serial::DATA_BITS_EIGHT;
+ }
+}
+
+device::DataBits ConvertDataBitsToMojo(api::serial::DataBits input) {
+ switch (input) {
+ case api::serial::DATA_BITS_NONE:
+ default:
+ return device::DATA_BITS_NONE;
+ case api::serial::DATA_BITS_SEVEN:
+ return device::DATA_BITS_SEVEN;
+ case api::serial::DATA_BITS_EIGHT:
+ return device::DATA_BITS_EIGHT;
+ }
}
+api::serial::ParityBit ConvertParityBitFromMojo(device::ParityBit input) {
+ switch (input) {
+ case device::PARITY_BIT_NONE:
+ default:
+ return api::serial::PARITY_BIT_NONE;
+ case device::PARITY_BIT_ODD:
+ return api::serial::PARITY_BIT_ODD;
+ case device::PARITY_BIT_NO:
+ return api::serial::PARITY_BIT_NO;
+ case device::PARITY_BIT_EVEN:
+ return api::serial::PARITY_BIT_EVEN;
+ }
+}
+
+device::ParityBit ConvertParityBitToMojo(api::serial::ParityBit input) {
+ switch (input) {
+ case api::serial::PARITY_BIT_NONE:
+ default:
+ return device::PARITY_BIT_NONE;
+ case api::serial::PARITY_BIT_NO:
+ return device::PARITY_BIT_NO;
+ case api::serial::PARITY_BIT_ODD:
+ return device::PARITY_BIT_ODD;
+ case api::serial::PARITY_BIT_EVEN:
+ return device::PARITY_BIT_EVEN;
+ }
+}
+
+api::serial::StopBits ConvertStopBitsFromMojo(device::StopBits input) {
+ switch (input) {
+ case device::STOP_BITS_NONE:
+ default:
+ return api::serial::STOP_BITS_NONE;
+ case device::STOP_BITS_ONE:
+ return api::serial::STOP_BITS_ONE;
+ case device::STOP_BITS_TWO:
+ return api::serial::STOP_BITS_TWO;
+ }
+}
+
+device::StopBits ConvertStopBitsToMojo(api::serial::StopBits input) {
+ switch (input) {
+ case api::serial::STOP_BITS_NONE:
+ default:
+ return device::STOP_BITS_NONE;
+ case api::serial::STOP_BITS_ONE:
+ return device::STOP_BITS_ONE;
+ case api::serial::STOP_BITS_TWO:
+ return device::STOP_BITS_TWO;
+ }
+}
+
+} // namespace
+
static base::LazyInstance<
BrowserContextKeyedAPIFactory<ApiResourceManager<SerialConnection> > >
g_factory = LAZY_INSTANCE_INITIALIZER;
@@ -46,8 +156,8 @@ SerialConnection::SerialConnection(const std::string& port,
}
SerialConnection::~SerialConnection() {
- io_handler_->CancelRead(api::serial::RECEIVE_ERROR_DISCONNECTED);
- io_handler_->CancelWrite(api::serial::SEND_ERROR_DISCONNECTED);
+ io_handler_->CancelRead(device::RECEIVE_ERROR_DISCONNECTED);
+ io_handler_->CancelWrite(device::SEND_ERROR_DISCONNECTED);
}
bool SerialConnection::IsPersistent() const { return persistent(); }
@@ -67,7 +177,7 @@ void SerialConnection::set_send_timeout(int send_timeout) {
void SerialConnection::set_paused(bool paused) {
paused_ = paused;
if (paused) {
- io_handler_->CancelRead(api::serial::RECEIVE_ERROR_NONE);
+ io_handler_->CancelRead(device::RECEIVE_ERROR_NONE);
}
}
@@ -120,8 +230,9 @@ bool SerialConnection::Configure(
set_receive_timeout(*options.receive_timeout);
if (options.send_timeout.get())
set_send_timeout(*options.send_timeout);
- bool success = io_handler_->ConfigurePort(options);
- io_handler_->CancelRead(api::serial::RECEIVE_ERROR_NONE);
+ bool success =
+ io_handler_->ConfigurePort(*device::ConnectionOptions::From(options));
+ io_handler_->CancelRead(device::RECEIVE_ERROR_NONE);
return success;
}
@@ -141,7 +252,16 @@ bool SerialConnection::GetInfo(api::serial::ConnectionInfo* info) const {
info->buffer_size = buffer_size_;
info->receive_timeout = receive_timeout_;
info->send_timeout = send_timeout_;
- return io_handler_->GetPortInfo(info);
+ device::ConnectionInfoPtr port_info = io_handler_->GetPortInfo();
+ if (!port_info)
+ return false;
+
+ info->bitrate.reset(new int(port_info->bitrate));
+ info->data_bits = ConvertDataBitsFromMojo(port_info->data_bits);
+ info->parity_bit = ConvertParityBitFromMojo(port_info->parity_bit);
+ info->stop_bits = ConvertStopBitsFromMojo(port_info->stop_bits);
+ info->cts_flow_control.reset(new bool(port_info->cts_flow_control));
+ return true;
}
bool SerialConnection::Flush() const {
@@ -150,42 +270,51 @@ bool SerialConnection::Flush() const {
bool SerialConnection::GetControlSignals(
api::serial::DeviceControlSignals* control_signals) const {
- return io_handler_->GetControlSignals(control_signals);
+ device::DeviceControlSignalsPtr signals = io_handler_->GetControlSignals();
+ if (!signals)
+ return false;
+
+ control_signals->dcd = signals->dcd;
+ control_signals->cts = signals->cts;
+ control_signals->ri = signals->ri;
+ control_signals->dsr = signals->dsr;
+ return true;
}
bool SerialConnection::SetControlSignals(
const api::serial::HostControlSignals& control_signals) {
- return io_handler_->SetControlSignals(control_signals);
+ return io_handler_->SetControlSignals(
+ *device::HostControlSignals::From(control_signals));
}
void SerialConnection::OnReceiveTimeout() {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
- io_handler_->CancelRead(api::serial::RECEIVE_ERROR_TIMEOUT);
+ io_handler_->CancelRead(device::RECEIVE_ERROR_TIMEOUT);
}
void SerialConnection::OnSendTimeout() {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
- io_handler_->CancelWrite(api::serial::SEND_ERROR_TIMEOUT);
+ io_handler_->CancelWrite(device::SEND_ERROR_TIMEOUT);
}
void SerialConnection::OnAsyncReadComplete(const std::string& data,
- api::serial::ReceiveError error) {
+ device::ReceiveError error) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
DCHECK(!receive_complete_.is_null());
ReceiveCompleteCallback callback = receive_complete_;
receive_complete_.Reset();
receive_timeout_task_.reset();
- callback.Run(data, error);
+ callback.Run(data, ConvertReceiveErrorFromMojo(error));
}
void SerialConnection::OnAsyncWriteComplete(int bytes_sent,
- api::serial::SendError error) {
+ device::SendError error) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
DCHECK(!send_complete_.is_null());
SendCompleteCallback callback = send_complete_;
send_complete_.Reset();
send_timeout_task_.reset();
- callback.Run(bytes_sent, error);
+ callback.Run(bytes_sent, ConvertSendErrorFromMojo(error));
}
SerialConnection::TimeoutTask::TimeoutTask(const base::Closure& closure,
@@ -202,3 +331,42 @@ SerialConnection::TimeoutTask::~TimeoutTask() {}
void SerialConnection::TimeoutTask::Run() const { closure_.Run(); }
} // namespace extensions
+
+namespace mojo {
+
+// static
+device::HostControlSignalsPtr
+TypeConverter<device::HostControlSignalsPtr,
+ extensions::api::serial::HostControlSignals>::
+ ConvertFrom(const extensions::api::serial::HostControlSignals& input) {
+ device::HostControlSignalsPtr output(device::HostControlSignals::New());
+ if (input.dtr.get()) {
+ output->has_dtr = true;
+ output->dtr = *input.dtr;
+ }
+ if (input.rts.get()) {
+ output->has_rts = true;
+ output->rts = *input.rts;
+ }
+ return output.Pass();
+}
+
+// static
+device::ConnectionOptionsPtr
+TypeConverter<device::ConnectionOptionsPtr,
+ extensions::api::serial::ConnectionOptions>::
+ ConvertFrom(const extensions::api::serial::ConnectionOptions& input) {
+ device::ConnectionOptionsPtr output(device::ConnectionOptions::New());
+ if (input.bitrate.get() && *input.bitrate > 0)
+ output->bitrate = *input.bitrate;
+ output->data_bits = extensions::ConvertDataBitsToMojo(input.data_bits);
+ output->parity_bit = extensions::ConvertParityBitToMojo(input.parity_bit);
+ output->stop_bits = extensions::ConvertStopBitsToMojo(input.stop_bits);
+ if (input.cts_flow_control.get()) {
+ output->has_cts_flow_control = true;
+ output->cts_flow_control = *input.cts_flow_control;
+ }
+ return output.Pass();
+}
+
+} // namespace mojo
« no previous file with comments | « chrome/browser/extensions/api/serial/serial_connection.h ('k') | chrome/browser/extensions/api/serial/serial_io_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698