OLD | NEW |
| (Empty) |
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. | |
4 | |
5 // Use the <code>chrome.serial</code> API to read from and write to a device | |
6 // connected to a serial port. | |
7 namespace serial { | |
8 | |
9 dictionary DeviceInfo { | |
10 // The device's system path. This should be passed as the <code>path</code> | |
11 // argument to <code>chrome.serial.connect</code> in order to connect to | |
12 // this device. | |
13 DOMString path; | |
14 | |
15 // A PCI or USB vendor ID if one can be determined for the underlying | |
16 // device. | |
17 long? vendorId; | |
18 | |
19 // A USB product ID if one can be determined for the underlying device. | |
20 long? productId; | |
21 | |
22 // A human-readable display name for the underlying device if one can be | |
23 // queried from the host driver. | |
24 DOMString? displayName; | |
25 }; | |
26 | |
27 callback GetDevicesCallback = void (DeviceInfo[] ports); | |
28 | |
29 enum DataBits { seven, eight }; | |
30 enum ParityBit { no, odd, even }; | |
31 enum StopBits { one, two }; | |
32 | |
33 dictionary ConnectionOptions { | |
34 // Flag indicating whether or not the connection should be left open when | |
35 // the application is suspended (see | |
36 // <a href="http://developer.chrome.com/apps/app_lifecycle.html">Manage App | |
37 // Lifecycle</a>). The default value is "false." When the application is | |
38 // loaded, any serial connections previously opened with persistent=true | |
39 // can be fetched with <code>getConnections</code>. | |
40 boolean? persistent; | |
41 | |
42 // An application-defined string to associate with the connection. | |
43 DOMString? name; | |
44 | |
45 // The size of the buffer used to receive data. The default value is 4096. | |
46 long? bufferSize; | |
47 | |
48 // The requested bitrate of the connection to be opened. For compatibility | |
49 // with the widest range of hardware, this number should match one of | |
50 // commonly-available bitrates, such as 110, 300, 1200, 2400, 4800, 9600, | |
51 // 14400, 19200, 38400, 57600, 115200. There is no guarantee, of course, | |
52 // that the device connected to the serial port will support the requested | |
53 // bitrate, even if the port itself supports that bitrate. <code>9600</code> | |
54 // will be passed by default. | |
55 long? bitrate; | |
56 | |
57 // <code>"eight"</code> will be passed by default. | |
58 DataBits? dataBits; | |
59 | |
60 // <code>"no"</code> will be passed by default. | |
61 ParityBit? parityBit; | |
62 | |
63 // <code>"one"</code> will be passed by default. | |
64 StopBits? stopBits; | |
65 | |
66 // Flag indicating whether or not to enable RTS/CTS hardware flow control. | |
67 // Defaults to false. | |
68 boolean? ctsFlowControl; | |
69 | |
70 // The maximum amount of time (in milliseconds) to wait for new data before | |
71 // raising an <code>onReceiveError</code> event with a "timeout" error. | |
72 // If zero, receive timeout errors will not be raised for the connection. | |
73 // Defaults to 0. | |
74 long? receiveTimeout; | |
75 | |
76 // The maximum amount of time (in milliseconds) to wait for a | |
77 // <code>send</code> operation to complete before calling the callback with | |
78 // a "timeout" error. If zero, send timeout errors will not be triggered. | |
79 // Defaults to 0. | |
80 long? sendTimeout; | |
81 }; | |
82 | |
83 // Result of the <code>getInfo</code> method. | |
84 dictionary ConnectionInfo { | |
85 // The id of the serial port connection. | |
86 long connectionId; | |
87 | |
88 // Flag indicating whether the connection is blocked from firing onReceive | |
89 // events. | |
90 boolean paused; | |
91 | |
92 // See <code>ConnectionOptions.persistent</code> | |
93 boolean persistent; | |
94 | |
95 // See <code>ConnectionOptions.name</code> | |
96 DOMString name; | |
97 | |
98 // See <code>ConnectionOptions.bufferSize</code> | |
99 long bufferSize; | |
100 | |
101 // See <code>ConnectionOptions.receiveTimeout</code> | |
102 long receiveTimeout; | |
103 | |
104 // See <code>ConnectionOptions.sendTimeout</code> | |
105 long sendTimeout; | |
106 | |
107 // See <code>ConnectionOptions.bitrate</code>. This field may be omitted | |
108 // or inaccurate if a non-standard bitrate is in use, or if an error | |
109 // occurred while querying the underlying device. | |
110 long? bitrate; | |
111 | |
112 // See <code>ConnectionOptions.dataBits</code>. This field may be omitted | |
113 // if an error occurred while querying the underlying device. | |
114 DataBits? dataBits; | |
115 | |
116 // See <code>ConnectionOptions.parityBit</code>. This field may be omitted | |
117 // if an error occurred while querying the underlying device. | |
118 ParityBit? parityBit; | |
119 | |
120 // See <code>ConnectionOptions.stopBits</code>. This field may be omitted | |
121 // if an error occurred while querying the underlying device. | |
122 StopBits? stopBits; | |
123 | |
124 // See <code>ConnectionOptions.ctsFlowControl</code>. This field may be | |
125 // omitted if an error occurred while querying the underlying device. | |
126 boolean? ctsFlowControl; | |
127 }; | |
128 | |
129 // Callback from the <code>connect</code> method; | |
130 callback ConnectCallback = void (ConnectionInfo connectionInfo); | |
131 | |
132 // Callback from the <code>update</code> method. | |
133 callback UpdateCallback = void (boolean result); | |
134 | |
135 // Callback from the <code>disconnect</code> method. Returns true if the | |
136 // operation was successful. | |
137 callback DisconnectCallback = void (boolean result); | |
138 | |
139 // Callback from the <code>setPaused</code> method. | |
140 callback SetPausedCallback = void (); | |
141 | |
142 // Callback from the <code>getInfo</code> method. | |
143 callback GetInfoCallback = void (ConnectionInfo connectionInfo); | |
144 | |
145 // Callback from the <code>getConnections</code> method. | |
146 callback GetConnectionsCallback = void (ConnectionInfo[] connectionInfos); | |
147 | |
148 enum SendError { | |
149 // The connection was disconnected. | |
150 disconnected, | |
151 | |
152 // A send was already pending. | |
153 pending, | |
154 | |
155 // The send timed out. | |
156 timeout, | |
157 | |
158 // A system error occurred and the connection may be unrecoverable. | |
159 system_error | |
160 }; | |
161 | |
162 dictionary SendInfo { | |
163 // The number of bytes sent. | |
164 long bytesSent; | |
165 | |
166 // An error code if an error occurred. | |
167 SendError? error; | |
168 }; | |
169 | |
170 callback SendCallback = void (SendInfo sendInfo); | |
171 | |
172 callback FlushCallback = void (boolean result); | |
173 | |
174 // The set of control signals which may be sent to a connected serial device | |
175 // using <code>setControlSignals</code>. Note that support for these signals | |
176 // is device-dependent. | |
177 dictionary HostControlSignals { | |
178 // DTR (Data Terminal Ready). | |
179 boolean? dtr; | |
180 | |
181 // RTS (Request To Send). | |
182 boolean? rts; | |
183 }; | |
184 | |
185 // The set of control signals which may be set by a connected serial device. | |
186 // These can be queried using <code>getControlSignals</code>. Note that | |
187 // support for these signals is device-dependent. | |
188 dictionary DeviceControlSignals { | |
189 // DCD (Data Carrier Detect) or RLSD (Receive Line Signal/ Detect). | |
190 boolean dcd; | |
191 | |
192 // CTS (Clear To Send). | |
193 boolean cts; | |
194 | |
195 // RI (Ring Indicator). | |
196 boolean ri; | |
197 | |
198 // DSR (Data Set Ready). | |
199 boolean dsr; | |
200 }; | |
201 | |
202 // Returns a snapshot of current control signals. | |
203 callback GetControlSignalsCallback = void (DeviceControlSignals signals); | |
204 | |
205 // Returns true if operation was successful. | |
206 callback SetControlSignalsCallback = void (boolean result); | |
207 | |
208 // Data from an <code>onReceive</code> event. | |
209 dictionary ReceiveInfo { | |
210 // The connection identifier. | |
211 long connectionId; | |
212 | |
213 // The data received. | |
214 ArrayBuffer data; | |
215 }; | |
216 | |
217 enum ReceiveError { | |
218 // The connection was disconnected. | |
219 disconnected, | |
220 | |
221 // No data has been received for <code>receiveTimeout</code> milliseconds. | |
222 timeout, | |
223 | |
224 // The device was most likely disconnected from the host. | |
225 device_lost, | |
226 | |
227 // A system error occurred and the connection may be unrecoverable. | |
228 system_error | |
229 }; | |
230 | |
231 // Data from an <code>onReceiveError</code> event. | |
232 dictionary ReceiveErrorInfo { | |
233 // The connection identifier. | |
234 long connectionId; | |
235 | |
236 // An error code indicating what went wrong. | |
237 ReceiveError error; | |
238 }; | |
239 | |
240 interface Functions { | |
241 // Returns information about available serial devices on the system. | |
242 // The list is regenerated each time this method is called. | |
243 // |callback| : Called with the list of <code>DeviceInfo</code> objects. | |
244 static void getDevices(GetDevicesCallback callback); | |
245 | |
246 // Connects to a given serial port. | |
247 // |path| : The system path of the serial port to open. | |
248 // |options| : Port configuration options. | |
249 // |callback| : Called when the connection has been opened. | |
250 static void connect(DOMString path, | |
251 optional ConnectionOptions options, | |
252 ConnectCallback callback); | |
253 | |
254 // Update the option settings on an open serial port connection. | |
255 // |connectionId| : The id of the opened connection. | |
256 // |options| : Port configuration options. | |
257 // |callback| : Called when the configuation has completed. | |
258 static void update(long connectionId, | |
259 ConnectionOptions options, | |
260 UpdateCallback callback); | |
261 | |
262 // Disconnects from a serial port. | |
263 // |connectionId| : The id of the opened connection. | |
264 // |callback| : Called when the connection has been closed. | |
265 static void disconnect(long connectionId, DisconnectCallback callback); | |
266 | |
267 // Pauses or unpauses an open connection. | |
268 // |connectionId| : The id of the opened connection. | |
269 // |paused| : Flag to indicate whether to pause or unpause. | |
270 // |callback| : Called when the connection has been successfully paused or | |
271 // unpaused. | |
272 static void setPaused(long connectionId, | |
273 boolean paused, | |
274 SetPausedCallback callback); | |
275 | |
276 // Retrieves the state of a given connection. | |
277 // |connectionId| : The id of the opened connection. | |
278 // |callback| : Called with connection state information when available. | |
279 static void getInfo(long connectionId, GetInfoCallback callback); | |
280 | |
281 // Retrieves the list of currently opened serial port connections owned by | |
282 // the application. | |
283 // |callback| : Called with the list of connections when available. | |
284 static void getConnections(GetConnectionsCallback callback); | |
285 | |
286 // Writes data to the given connection. | |
287 // |connectionId| : The id of the connection. | |
288 // |data| : The data to send. | |
289 // |callback| : Called when the operation has completed. | |
290 static void send(long connectionId, | |
291 ArrayBuffer data, | |
292 SendCallback callback); | |
293 | |
294 // Flushes all bytes in the given connection's input and output buffers. | |
295 static void flush(long connectionId, FlushCallback callback); | |
296 | |
297 // Retrieves the state of control signals on a given connection. | |
298 // |connectionId| : The id of the connection. | |
299 // |callback| : Called when the control signals are available. | |
300 static void getControlSignals(long connectionId, | |
301 GetControlSignalsCallback callback); | |
302 | |
303 // Sets the state of control signals on a given connection. | |
304 // |connectionId| : The id of the connection. | |
305 // |signals| : The set of signal changes to send to the device. | |
306 // |callback| : Called once the control signals have been set. | |
307 static void setControlSignals(long connectionId, | |
308 HostControlSignals signals, | |
309 SetControlSignalsCallback callback); | |
310 }; | |
311 | |
312 interface Events { | |
313 // Event raised when data has been read from the connection. | |
314 // |info| : Event data. | |
315 static void onReceive(ReceiveInfo info); | |
316 | |
317 // Event raised when an error occurred while the runtime was waiting for | |
318 // data on the serial port. Once this event is raised, the connection may be | |
319 // set to <code>paused</code>. A <code>"timeout"</code> error does not pause | |
320 // the connection. | |
321 static void onReceiveError(ReceiveErrorInfo info); | |
322 }; | |
323 }; | |
OLD | NEW |