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
3 // found in the LICENSE file.
5 // Use the <code>chrome.serial</code> API to read from and write to a device
6 // connected to a serial port.
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
15 // A PCI or USB vendor ID if one can be determined for the underlying
19 // A USB product ID if one can be determined for the underlying device.
22 // A human-readable display name for the underlying device if one can be
23 // queried from the host driver.
24 DOMString? displayName
;
27 callback GetDevicesCallback
= void (DeviceInfo
[] ports
);
29 enum DataBits
{ seven
, eight
};
30 enum ParityBit
{ no
, odd
, even
};
31 enum StopBits
{ one
, two
};
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>.
42 // An application-defined string to associate with the connection.
45 // The size of the buffer used to receive data. The default value is 4096.
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.
57 // <code>"eight"</code> will be passed by default.
60 // <code>"no"</code> will be passed by default.
63 // <code>"one"</code> will be passed by default.
66 // Flag indicating whether or not to enable RTS/CTS hardware flow control.
68 boolean? ctsFlowControl
;
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.
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.
83 // Result of the <code>getInfo</code> method.
84 dictionary ConnectionInfo
{
85 // The id of the serial port connection.
88 // Flag indicating whether the connection is blocked from firing onReceive
92 // See <code>ConnectionOptions.persistent</code>
95 // See <code>ConnectionOptions.name</code>
98 // See <code>ConnectionOptions.bufferSize</code>
101 // See <code>ConnectionOptions.receiveTimeout</code>
104 // See <code>ConnectionOptions.sendTimeout</code>
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.
112 // See <code>ConnectionOptions.dataBits</code>. This field may be omitted
113 // if an error occurred while querying the underlying device.
116 // See <code>ConnectionOptions.parityBit</code>. This field may be omitted
117 // if an error occurred while querying the underlying device.
118 ParityBit? parityBit
;
120 // See <code>ConnectionOptions.stopBits</code>. This field may be omitted
121 // if an error occurred while querying the underlying device.
124 // See <code>ConnectionOptions.ctsFlowControl</code>. This field may be
125 // omitted if an error occurred while querying the underlying device.
126 boolean? ctsFlowControl
;
129 // Callback from the <code>connect</code> method;
130 callback ConnectCallback
= void (ConnectionInfo connectionInfo
);
132 // Callback from the <code>update</code> method.
133 callback UpdateCallback
= void (boolean result
);
135 // Callback from the <code>disconnect</code> method. Returns true if the
136 // operation was successful.
137 callback DisconnectCallback
= void (boolean result
);
139 // Callback from the <code>setPaused</code> method.
140 callback SetPausedCallback
= void ();
142 // Callback from the <code>getInfo</code> method.
143 callback GetInfoCallback
= void (ConnectionInfo connectionInfo
);
145 // Callback from the <code>getConnections</code> method.
146 callback GetConnectionsCallback
= void (ConnectionInfo
[] connectionInfos
);
149 // The connection was disconnected.
152 // A send was already pending.
155 // The send timed out.
158 // A system error occurred and the connection may be unrecoverable.
162 dictionary SendInfo
{
163 // The number of bytes sent.
166 // An error code if an error occurred.
170 callback SendCallback
= void (SendInfo sendInfo
);
172 callback FlushCallback
= void (boolean result
);
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).
181 // RTS (Request To Send).
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).
192 // CTS (Clear To Send).
195 // RI (Ring Indicator).
198 // DSR (Data Set Ready).
202 // Returns a snapshot of current control signals.
203 callback GetControlSignalsCallback
= void (DeviceControlSignals signals
);
205 // Returns true if operation was successful.
206 callback SetControlSignalsCallback
= void (boolean result
);
208 // Data from an <code>onReceive</code> event.
209 dictionary ReceiveInfo
{
210 // The connection identifier.
213 // The data received.
218 // The connection was disconnected.
221 // No data has been received for <code>receiveTimeout</code> milliseconds.
224 // The device was most likely disconnected from the host.
227 // A system error occurred and the connection may be unrecoverable.
231 // Data from an <code>onReceiveError</code> event.
232 dictionary ReceiveErrorInfo
{
233 // The connection identifier.
236 // An error code indicating what went wrong.
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);
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);
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);
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);
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
272 static
void setPaused
(long connectionId
,
274 SetPausedCallback
callback);
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);
281 // Retrieves the list of currently opened serial port connections owned by
283 // |callback| : Called with the list of connections when available.
284 static
void getConnections
(GetConnectionsCallback
callback);
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
,
292 SendCallback
callback);
294 // Flushes all bytes in the given connection's input and output buffers.
295 static
void flush
(long connectionId
, FlushCallback
callback);
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);
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);
313 // Event raised when data has been read from the connection.
314 // |info| : Event data.
315 static
void onReceive
(ReceiveInfo info
);
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
321 static
void onReceiveError
(ReceiveErrorInfo info
);