OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 #ifndef CHROME_BROWSER_EXTENSIONS_API_SERIAL_SERIAL_CONNECTION_H_ | 5 #ifndef EXTENSIONS_BROWSER_API_SERIAL_SERIAL_CONNECTION_H_ |
6 #define CHROME_BROWSER_EXTENSIONS_API_SERIAL_SERIAL_CONNECTION_H_ | 6 #define EXTENSIONS_BROWSER_API_SERIAL_SERIAL_CONNECTION_H_ |
7 | 7 |
8 #include <set> | |
9 #include <string> | 8 #include <string> |
10 | 9 |
11 #include "base/callback.h" | 10 #include "base/callback.h" |
12 #include "base/memory/ref_counted.h" | |
13 #include "base/memory/weak_ptr.h" | 11 #include "base/memory/weak_ptr.h" |
14 #include "base/message_loop/message_loop.h" | |
15 #include "base/time/time.h" | 12 #include "base/time/time.h" |
16 #include "chrome/common/extensions/api/serial.h" | |
17 #include "content/public/browser/browser_thread.h" | 13 #include "content/public/browser/browser_thread.h" |
18 #include "device/serial/serial_io_handler.h" | 14 #include "device/serial/serial_io_handler.h" |
19 #include "extensions/browser/api/api_resource.h" | 15 #include "extensions/browser/api/api_resource.h" |
20 #include "extensions/browser/api/api_resource_manager.h" | 16 #include "extensions/browser/api/api_resource_manager.h" |
| 17 #include "extensions/common/api/serial.h" |
21 | 18 |
22 using content::BrowserThread; | 19 using content::BrowserThread; |
23 | 20 |
24 namespace extensions { | 21 namespace extensions { |
25 | 22 |
26 // Encapsulates an open serial port. | 23 // Encapsulates an open serial port. |
27 // NOTE: Instances of this object should only be constructed on the IO thread, | 24 // NOTE: Instances of this object should only be constructed on the IO thread, |
28 // and all methods should only be called on the IO thread unless otherwise | 25 // and all methods should only be called on the IO thread unless otherwise |
29 // noted. | 26 // noted. |
30 class SerialConnection : public ApiResource, | 27 class SerialConnection : public ApiResource, |
31 public base::SupportsWeakPtr<SerialConnection> { | 28 public base::SupportsWeakPtr<SerialConnection> { |
32 public: | 29 public: |
33 typedef device::SerialIoHandler::OpenCompleteCallback OpenCompleteCallback; | 30 typedef device::SerialIoHandler::OpenCompleteCallback OpenCompleteCallback; |
34 | 31 |
35 // This is the callback type expected by Receive. Note that an error result | 32 // This is the callback type expected by Receive. Note that an error result |
36 // does not necessarily imply an empty |data| string, since a receive may | 33 // does not necessarily imply an empty |data| string, since a receive may |
37 // complete partially before being interrupted by an error condition. | 34 // complete partially before being interrupted by an error condition. |
38 typedef base::Callback< | 35 typedef base::Callback< |
39 void(const std::string& data, api::serial::ReceiveError error)> | 36 void(const std::string& data, core_api::serial::ReceiveError error)> |
40 ReceiveCompleteCallback; | 37 ReceiveCompleteCallback; |
41 | 38 |
42 // This is the callback type expected by Send. Note that an error result | 39 // This is the callback type expected by Send. Note that an error result |
43 // does not necessarily imply 0 bytes sent, since a send may complete | 40 // does not necessarily imply 0 bytes sent, since a send may complete |
44 // partially before being interrupted by an error condition. | 41 // partially before being interrupted by an error condition. |
45 typedef base::Callback<void(int bytes_sent, api::serial::SendError error)> | 42 typedef base::Callback< |
| 43 void(int bytes_sent, core_api::serial::SendError error)> |
46 SendCompleteCallback; | 44 SendCompleteCallback; |
47 | 45 |
48 SerialConnection(const std::string& port, | 46 SerialConnection(const std::string& port, |
49 const std::string& owner_extension_id); | 47 const std::string& owner_extension_id); |
50 virtual ~SerialConnection(); | 48 virtual ~SerialConnection(); |
51 | 49 |
52 // ApiResource override. | 50 // ApiResource override. |
53 virtual bool IsPersistent() const OVERRIDE; | 51 virtual bool IsPersistent() const OVERRIDE; |
54 | 52 |
55 void set_persistent(bool persistent) { persistent_ = persistent; } | 53 void set_persistent(bool persistent) { persistent_ = persistent; } |
(...skipping 28 matching lines...) Expand all Loading... |
84 // is already pending is a no-op and returns |false| without calling | 82 // is already pending is a no-op and returns |false| without calling |
85 // |callback|. | 83 // |callback|. |
86 bool Send(const std::string& data, const SendCompleteCallback& callback); | 84 bool Send(const std::string& data, const SendCompleteCallback& callback); |
87 | 85 |
88 // Flushes input and output buffers. | 86 // Flushes input and output buffers. |
89 bool Flush() const; | 87 bool Flush() const; |
90 | 88 |
91 // Configures some subset of port options for this connection. | 89 // Configures some subset of port options for this connection. |
92 // Omitted options are unchanged. Returns |true| iff the configuration | 90 // Omitted options are unchanged. Returns |true| iff the configuration |
93 // changes were successful. | 91 // changes were successful. |
94 bool Configure(const api::serial::ConnectionOptions& options); | 92 bool Configure(const core_api::serial::ConnectionOptions& options); |
95 | 93 |
96 // Connection configuration query. Fills values in an existing | 94 // Connection configuration query. Fills values in an existing |
97 // ConnectionInfo. Returns |true| iff the connection's information | 95 // ConnectionInfo. Returns |true| iff the connection's information |
98 // was successfully retrieved. | 96 // was successfully retrieved. |
99 bool GetInfo(api::serial::ConnectionInfo* info) const; | 97 bool GetInfo(core_api::serial::ConnectionInfo* info) const; |
100 | 98 |
101 // Reads current control signals (DCD, CTS, etc.) into an existing | 99 // Reads current control signals (DCD, CTS, etc.) into an existing |
102 // DeviceControlSignals structure. Returns |true| iff the signals were | 100 // DeviceControlSignals structure. Returns |true| iff the signals were |
103 // successfully read. | 101 // successfully read. |
104 bool GetControlSignals( | 102 bool GetControlSignals( |
105 api::serial::DeviceControlSignals* control_signals) const; | 103 core_api::serial::DeviceControlSignals* control_signals) const; |
106 | 104 |
107 // Sets one or more control signals (DTR and/or RTS). Returns |true| iff | 105 // Sets one or more control signals (DTR and/or RTS). Returns |true| iff |
108 // the signals were successfully set. Unininitialized flags in the | 106 // the signals were successfully set. Unininitialized flags in the |
109 // HostControlSignals structure are left unchanged. | 107 // HostControlSignals structure are left unchanged. |
110 bool SetControlSignals( | 108 bool SetControlSignals( |
111 const api::serial::HostControlSignals& control_signals); | 109 const core_api::serial::HostControlSignals& control_signals); |
112 | 110 |
113 // Overrides |io_handler_| for testing. | 111 // Overrides |io_handler_| for testing. |
114 void SetIoHandlerForTest(scoped_refptr<device::SerialIoHandler> handler); | 112 void SetIoHandlerForTest(scoped_refptr<device::SerialIoHandler> handler); |
115 | 113 |
116 static const BrowserThread::ID kThreadId = BrowserThread::IO; | 114 static const BrowserThread::ID kThreadId = BrowserThread::IO; |
117 | 115 |
118 private: | 116 private: |
119 friend class ApiResourceManager<SerialConnection>; | 117 friend class ApiResourceManager<SerialConnection>; |
120 static const char* service_name() { return "SerialConnectionManager"; } | 118 static const char* service_name() { return "SerialConnectionManager"; } |
121 | 119 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 // Asynchronous I/O handler. | 188 // Asynchronous I/O handler. |
191 scoped_refptr<device::SerialIoHandler> io_handler_; | 189 scoped_refptr<device::SerialIoHandler> io_handler_; |
192 }; | 190 }; |
193 | 191 |
194 } // namespace extensions | 192 } // namespace extensions |
195 | 193 |
196 namespace mojo { | 194 namespace mojo { |
197 | 195 |
198 template <> | 196 template <> |
199 class TypeConverter<device::serial::HostControlSignalsPtr, | 197 class TypeConverter<device::serial::HostControlSignalsPtr, |
200 extensions::api::serial::HostControlSignals> { | 198 extensions::core_api::serial::HostControlSignals> { |
201 public: | 199 public: |
202 static device::serial::HostControlSignalsPtr ConvertFrom( | 200 static device::serial::HostControlSignalsPtr ConvertFrom( |
203 const extensions::api::serial::HostControlSignals& input); | 201 const extensions::core_api::serial::HostControlSignals& input); |
204 }; | 202 }; |
205 | 203 |
206 template <> | 204 template <> |
207 class TypeConverter<device::serial::ConnectionOptionsPtr, | 205 class TypeConverter<device::serial::ConnectionOptionsPtr, |
208 extensions::api::serial::ConnectionOptions> { | 206 extensions::core_api::serial::ConnectionOptions> { |
209 public: | 207 public: |
210 static device::serial::ConnectionOptionsPtr ConvertFrom( | 208 static device::serial::ConnectionOptionsPtr ConvertFrom( |
211 const extensions::api::serial::ConnectionOptions& input); | 209 const extensions::core_api::serial::ConnectionOptions& input); |
212 }; | 210 }; |
213 | 211 |
214 } // namespace mojo | 212 } // namespace mojo |
215 | 213 |
216 #endif // CHROME_BROWSER_EXTENSIONS_API_SERIAL_SERIAL_CONNECTION_H_ | 214 #endif // EXTENSIONS_BROWSER_API_SERIAL_SERIAL_CONNECTION_H_ |
OLD | NEW |