1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_SERIAL_SERIAL_API_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_SERIAL_SERIAL_API_H_
10 #include "base/memory/ref_counted.h"
11 #include "chrome/browser/extensions/api/api_function.h"
12 #include "chrome/browser/extensions/api/api_resource_manager.h"
13 #include "chrome/common/extensions/api/serial.h"
14 #include "net/base/io_buffer.h"
16 namespace serial = extensions::api::serial;
18 namespace extensions {
20 class SerialConnection;
22 extern const char kConnectionIdKey[];
24 class SerialAsyncApiFunction : public AsyncApiFunction {
26 SerialAsyncApiFunction();
29 virtual ~SerialAsyncApiFunction();
32 virtual bool PrePrepare() OVERRIDE;
34 SerialConnection* GetSerialConnection(int api_resource_id);
35 void RemoveSerialConnection(int api_resource_id);
37 ApiResourceManager<SerialConnection>* manager_;
40 class SerialGetPortsFunction : public SerialAsyncApiFunction {
42 DECLARE_EXTENSION_FUNCTION("serial.getPorts", SERIAL_GETPORTS)
44 SerialGetPortsFunction();
47 virtual ~SerialGetPortsFunction() {}
50 virtual bool Prepare() OVERRIDE;
51 virtual void Work() OVERRIDE;
52 virtual bool Respond() OVERRIDE;
55 class SerialOpenFunction : public SerialAsyncApiFunction {
57 DECLARE_EXTENSION_FUNCTION("serial.open", SERIAL_OPEN)
62 virtual ~SerialOpenFunction();
65 virtual bool Prepare() OVERRIDE;
66 virtual void AsyncWorkStart() OVERRIDE;
67 virtual void Work() OVERRIDE;
68 virtual bool Respond() OVERRIDE;
70 // Overrideable for testing.
71 virtual SerialConnection* CreateSerialConnection(
72 const std::string& port,
74 serial::DataBit databit,
75 serial::ParityBit parity,
76 serial::StopBit stopbit,
77 const std::string& owner_extension_id);
79 virtual bool DoesPortExist(const std::string& port);
82 scoped_ptr<api::serial::Open::Params> params_;
84 api::serial::DataBit databit_;
85 api::serial::ParityBit parity_;
86 api::serial::StopBit stopbit_;
89 class SerialCloseFunction : public SerialAsyncApiFunction {
91 DECLARE_EXTENSION_FUNCTION("serial.close", SERIAL_CLOSE)
93 SerialCloseFunction();
96 virtual ~SerialCloseFunction();
99 virtual bool Prepare() OVERRIDE;
100 virtual void Work() OVERRIDE;
101 virtual bool Respond() OVERRIDE;
104 scoped_ptr<api::serial::Close::Params> params_;
107 class SerialReadFunction : public SerialAsyncApiFunction {
109 DECLARE_EXTENSION_FUNCTION("serial.read", SERIAL_READ)
111 SerialReadFunction();
114 virtual ~SerialReadFunction();
117 virtual bool Prepare() OVERRIDE;
118 virtual void Work() OVERRIDE;
119 virtual bool Respond() OVERRIDE;
122 scoped_ptr<api::serial::Read::Params> params_;
125 class SerialWriteFunction : public SerialAsyncApiFunction {
127 DECLARE_EXTENSION_FUNCTION("serial.write", SERIAL_WRITE)
129 SerialWriteFunction();
132 virtual ~SerialWriteFunction();
135 virtual bool Prepare() OVERRIDE;
136 virtual void Work() OVERRIDE;
137 virtual bool Respond() OVERRIDE;
140 scoped_ptr<api::serial::Write::Params> params_;
141 scoped_refptr<net::IOBuffer> io_buffer_;
142 size_t io_buffer_size_;
145 class SerialFlushFunction : public SerialAsyncApiFunction {
147 DECLARE_EXTENSION_FUNCTION("serial.flush", SERIAL_FLUSH)
149 SerialFlushFunction();
152 virtual ~SerialFlushFunction();
155 virtual bool Prepare() OVERRIDE;
156 virtual void Work() OVERRIDE;
157 virtual bool Respond() OVERRIDE;
160 scoped_ptr<api::serial::Flush::Params> params_;
163 class SerialGetControlSignalsFunction : public SerialAsyncApiFunction {
165 DECLARE_EXTENSION_FUNCTION("serial.getControlSignals",
166 SERIAL_GETCONTROLSIGNALS)
168 SerialGetControlSignalsFunction();
171 virtual ~SerialGetControlSignalsFunction();
174 virtual bool Prepare() OVERRIDE;
175 virtual void Work() OVERRIDE;
176 virtual bool Respond() OVERRIDE;
179 scoped_ptr<api::serial::GetControlSignals::Params> params_;
183 class SerialSetControlSignalsFunction : public SerialAsyncApiFunction {
185 DECLARE_EXTENSION_FUNCTION("serial.setControlSignals",
186 SERIAL_SETCONTROLSIGNALS)
188 SerialSetControlSignalsFunction();
191 virtual ~SerialSetControlSignalsFunction();
194 virtual bool Prepare() OVERRIDE;
195 virtual void Work() OVERRIDE;
196 virtual bool Respond() OVERRIDE;
199 scoped_ptr<api::serial::SetControlSignals::Params> params_;
202 } // namespace extensions
204 #endif // CHROME_BROWSER_EXTENSIONS_API_SERIAL_SERIAL_API_H_