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

Side by Side Diff: chrome/common/extensions/api/bluetooth.idl

Issue 180163009: chrome.bluetooth API improvements. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address code review feedback. Created 6 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 // Use the <code>chrome.bluetooth</code> API to connect to a Bluetooth 5 // Use the <code>chrome.bluetooth</code> API to connect to a Bluetooth
6 // device. All functions report failures via chrome.runtime.lastError. 6 // device. All functions report failures via chrome.runtime.lastError.
7 namespace bluetooth { 7 namespace bluetooth {
8 // Allocation authorities for Vendor IDs. 8 // Allocation authorities for Vendor IDs.
9 enum VendorIdSource {bluetooth, usb}; 9 enum VendorIdSource {bluetooth, usb};
10 10
11 // Common device types recognized by Chrome. 11 // Common device types recognized by Chrome.
12 enum DeviceType {computer, phone, modem, audio, carAudio, video, peripheral, 12 enum DeviceType {computer, phone, modem, audio, carAudio, video, peripheral,
13 joystick, gamepad, keyboard, mouse, tablet, 13 joystick, gamepad, keyboard, mouse, tablet,
14 keyboardMouseCombo}; 14 keyboardMouseCombo};
15 15
16 // Information about the state of the Bluetooth adapater.
16 dictionary AdapterState { 17 dictionary AdapterState {
17 // The address of the adapter, in the format 'XX:XX:XX:XX:XX:XX'. 18 // The address of the adapter, in the format 'XX:XX:XX:XX:XX:XX'.
18 DOMString address; 19 DOMString address;
19 20
20 // The human-readable name of the adapter. 21 // The human-readable name of the adapter.
21 DOMString name; 22 DOMString name;
22 23
23 // Indicates whether or not the adapter has power. 24 // Indicates whether or not the adapter has power.
24 boolean powered; 25 boolean powered;
25 26
26 // Indicates whether or not the adapter is available (i.e. enabled). 27 // Indicates whether or not the adapter is available (i.e. enabled).
27 boolean available; 28 boolean available;
28 29
29 // Indicates whether or not the adapter is currently discovering. 30 // Indicates whether or not the adapter is currently discovering.
30 boolean discovering; 31 boolean discovering;
31 }; 32 };
32 33
34 // Information about the state of a known Bluetooth device.
33 dictionary Device { 35 dictionary Device {
34 // The address of the device, in the format 'XX:XX:XX:XX:XX:XX'. 36 // The address of the device, in the format 'XX:XX:XX:XX:XX:XX'.
35 DOMString address; 37 DOMString address;
36 38
37 // The human-readable name of the device. 39 // The human-readable name of the device.
38 DOMString? name; 40 DOMString? name;
39 41
40 // The class of the device, a bit-field defined by 42 // The class of the device, a bit-field defined by
41 // http://www.bluetooth.org/en-us/specification/assigned-numbers/baseband. 43 // http://www.bluetooth.org/en-us/specification/assigned-numbers/baseband.
42 long? deviceClass; 44 long? deviceClass;
(...skipping 17 matching lines...) Expand all
60 boolean? connected; 62 boolean? connected;
61 63
62 // UUIDs of protocols, profiles and services advertised by the device. 64 // UUIDs of protocols, profiles and services advertised by the device.
63 // For classic Bluetooth devices, this list is obtained from EIR data and 65 // For classic Bluetooth devices, this list is obtained from EIR data and
64 // SDP tables. For Low Energy devices, this list is obtained from AD and 66 // SDP tables. For Low Energy devices, this list is obtained from AD and
65 // GATT primary services. For dual mode devices this may be obtained from 67 // GATT primary services. For dual mode devices this may be obtained from
66 // both. 68 // both.
67 DOMString[]? uuids; 69 DOMString[]? uuids;
68 }; 70 };
69 71
72 // Information about a Bluetooth profile.
70 dictionary Profile { 73 dictionary Profile {
71 // Unique profile identifier, e.g. 00001401-0000-1000-8000-00805F9B23FB 74 // Unique profile identifier, e.g. 00001401-0000-1000-8000-00805F9B23FB
72 DOMString uuid; 75 DOMString uuid;
73 76
74 // Human-readable name of the Profile, e.g. "Health Device" 77 // Human-readable name of the Profile, e.g. "Health Device"
75 DOMString? name; 78 DOMString? name;
76 79
77 // The RFCOMM channel id, used when the profile is to be exported to remote 80 // The RFCOMM channel id, used when the profile is to be exported to remote
78 // devices. 81 // devices.
79 long? channel; 82 long? channel;
80 83
81 // The LS2CAP PSM number, used when the profile is to be exported to remote 84 // The LS2CAP PSM number, used when the profile is to be exported to remote
82 // deviecs. 85 // devices.
83 long? psm; 86 long? psm;
84 87
85 // Specifies whether pairing (and encryption) is required to be able to 88 // Specifies whether pairing (and encryption) is required to be able to
86 // connect. 89 // connect.
87 boolean? requireAuthentication; 90 boolean? requireAuthentication;
88 91
89 // Specifies whether user authorization is required to be able to connect. 92 // Specifies whether user authorization is required to be able to connect.
90 boolean? requireAuthorization; 93 boolean? requireAuthorization;
91 94
92 // Specifies whether this profile will be automatically connected if any 95 // Specifies whether this profile will be automatically connected if any
93 // other profile of device also exporting this profile connects to the host. 96 // other profile of device also exporting this profile connects to the host.
94 boolean? autoConnect; 97 boolean? autoConnect;
95 98
96 // Specifies the implemented version of the profile. 99 // Specifies the implemented version of the profile.
97 long? version; 100 long? version;
98 101
99 // Specifies the profile-specific bit field of features the implementation 102 // Specifies the profile-specific bit field of features the implementation
100 // supports. 103 // supports.
101 long? features; 104 long? features;
102 }; 105 };
103 106
104 dictionary ServiceRecord { 107 // The socket properties specified in the $ref:update function. Each property
105 // The name of the service. 108 // is optional. If a property value is not specified, the existing value if
106 DOMString name; 109 // preserved when calling $ref:update.
110 dictionary SocketProperties {
111 // Flag indicating if the socket is left open when the event page of the
miket_OOO 2014/03/28 20:48:43 Meggin will change "if" to whether, so might as we
rpaquay 2014/03/31 15:39:19 Done.
112 // application is unloaded (see <a
113 // href="http://developer.chrome.com/apps/app_lifecycle.html">Manage App
114 // Lifecycle</a>). The default value is "false." When the application is
115 // loaded, any sockets previously opened with persistent=true can be fetched
116 // with $ref:getSockets.
117 boolean? persistent;
107 118
108 // The UUID of the service. 119 // An application-defined string associated with the socket.
109 DOMString? uuid; 120 DOMString? name;
121
122 // The size of the buffer used to receive data. The default value is 4096.
123 long? bufferSize;
110 }; 124 };
111 125
112 dictionary Socket { 126 dictionary Socket {
127 // The socket identifier.
128 long id;
129
113 // The remote Bluetooth device associated with this socket. 130 // The remote Bluetooth device associated with this socket.
114 Device device; 131 Device device;
115 132
116 // The remote Bluetooth profile associated with this socket. 133 // The remote Bluetooth uuid associated with this socket.
117 Profile profile; 134 DOMString uuid;
118 135
119 // An identifier for this socket that should be used with the 136 // Flag indicating whether the socket is left open when the application is
miket_OOO 2014/03/28 20:48:43 good!
rpaquay 2014/03/31 15:39:19 Done.
120 // read/write/disconnect methods. 137 // suspended (see <code>SocketProperties.persistent</code>).
121 long id; 138 boolean persistent;
139
140 // Application-defined string associated with the socket.
141 DOMString? name;
142
143 // The size of the buffer used to receive data. If no buffer size has been
144 // specified explictly, the value is not provided.
miket_OOO 2014/03/28 20:48:43 Nit: I wonder whether "field" is more accurate tha
rpaquay 2014/03/31 15:39:19 Done.
145 long? bufferSize;
146
147 // Flag indicating whether a connected socket blocks its peer from sending
148 // more data (see <code>setPaused</code>).
149 boolean paused;
122 }; 150 };
123 151
124 dictionary OutOfBandPairingData { 152 dictionary OutOfBandPairingData {
125 // Simple Pairing Hash C. 153 // Simple Pairing Hash C.
126 // Always 16 octets long. 154 // Always 16 octets long.
127 ArrayBuffer hash; 155 ArrayBuffer hash;
128 156
129 // Simple Pairing Randomizer R. 157 // Simple Pairing Randomizer R.
130 // Always 16 octets long. 158 // Always 16 octets long.
131 ArrayBuffer randomizer; 159 ArrayBuffer randomizer;
(...skipping 15 matching lines...) Expand all
147 dictionary ConnectOptions { 175 dictionary ConnectOptions {
148 // The connection is made to |device|. 176 // The connection is made to |device|.
149 Device device; 177 Device device;
150 178
151 // The connection is made to |profile|. 179 // The connection is made to |profile|.
152 Profile profile; 180 Profile profile;
153 }; 181 };
154 182
155 // Options for the disconnect function. 183 // Options for the disconnect function.
156 dictionary DisconnectOptions { 184 dictionary DisconnectOptions {
157 // The socket to disconnect. 185 // The socket identifier.
158 Socket socket; 186 long socketId;
159 };
160
161 // Options for the read function.
162 dictionary ReadOptions {
163 // The socket to read from.
164 Socket socket;
165 };
166
167 // Options for the write function.
168 dictionary WriteOptions {
169 // The socket to write to.
170 Socket socket;
171
172 // The data to write.
173 ArrayBuffer data;
174 }; 187 };
175 188
176 // Options for the setOutOfBandPairingData function. 189 // Options for the setOutOfBandPairingData function.
177 dictionary SetOutOfBandPairingDataOptions { 190 dictionary SetOutOfBandPairingDataOptions {
178 // The address of the remote device that the data should be associated 191 // The address of the remote device that the data should be associated
179 // with. |deviceAddress| should be in the format 'XX:XX:XX:XX:XX:XX'. 192 // with. |deviceAddress| should be in the format 'XX:XX:XX:XX:XX:XX'.
180 DOMString address; 193 DOMString address;
181 194
182 // The Out Of Band Pairing Data. If this is omitted, the data for the 195 // The Out Of Band Pairing Data. If this is omitted, the data for the
183 // device is cleared instead. 196 // device is cleared instead.
184 OutOfBandPairingData? data; 197 OutOfBandPairingData? data;
185 }; 198 };
186 199
200 // Callback from the <code>getSocket</code> method.
201 // |socket| : Object containing the socket information.
202 callback GetSocketCallback = void (Socket socket);
203
204 // Callback from the <code>getSockets</code> method.
205 // |sockets| : Array of object containing socket information.
206 callback GetSocketsCallback = void (Socket[] sockets);
207
208 // Data from an <code>onReceive</code> event.
209 dictionary ReceiveInfo {
210 // The socket identifier.
211 long socketId;
212
213 // The data received, with a maxium size of <code>bufferSize</code>.
miket_OOO 2014/03/28 20:48:43 maximum (spelling)
rpaquay 2014/03/31 15:39:19 Done.
214 ArrayBuffer data;
215 };
216
217 enum ReceiveError {
218 // The connection was disconnected.
219 disconnected,
220
221 // A system error occurred and the connection may be unrecoverable.
222 system_error
223 };
224
225 // Data from an <code>onReceiveError</code> event.
226 dictionary ReceiveErrorInfo {
227 // The socket identifier.
228 long socketId;
229
230 // The error message.
231 DOMString errorMessage;
232
233 // An error code indicating what went wrong.
234 ReceiveError error;
235 };
236
187 // These functions all report failures via chrome.runtime.lastError. 237 // These functions all report failures via chrome.runtime.lastError.
188 interface Functions { 238 interface Functions {
189 // Registers the JavaScript application as an implementation for the given
190 // Profile; if a channel or PSM is specified, the profile will be exported
191 // in the host's SDP and GATT tables and advertised to other devices.
192 static void addProfile(Profile profile, ResultCallback callback);
193
194 // Unregisters the JavaScript application as an implementation for the given
195 // Profile; only the uuid field of the Profile object is used.
196 static void removeProfile(Profile profile, ResultCallback callback);
197
198 // Get information about the Bluetooth adapter. 239 // Get information about the Bluetooth adapter.
199 // |callback| : Called with an AdapterState object describing the adapter 240 // |callback| : Called with an AdapterState object describing the adapter
200 // state. 241 // state.
201 static void getAdapterState(AdapterStateCallback callback); 242 static void getAdapterState(AdapterStateCallback callback);
202 243
203 // Get a list of Bluetooth devices known to the system, including paired 244 // Get a list of Bluetooth devices known to the system, including paired
204 // and recently discovered devices. 245 // and recently discovered devices.
205 // |callback| : Called when the search is completed. 246 // |callback| : Called when the search is completed.
206 static void getDevices(DevicesCallback callback); 247 static void getDevices(DevicesCallback callback);
207 248
208 // Get information about a Bluetooth device known to the system. 249 // Get information about a Bluetooth device known to the system.
209 // |deviceAddress| : Address of device to get. 250 // |deviceAddress| : Address of device to get.
210 // |callback| : Called with the Device object describing the device. 251 // |callback| : Called with the Device object describing the device.
211 static void getDevice(DOMString deviceAddress, DeviceCallback callback); 252 static void getDevice(DOMString deviceAddress, DeviceCallback callback);
212 253
254 // Registers the JavaScript application as an implementation for the given
255 // Profile; if a channel or PSM is specified, the profile will be exported
256 // in the host's SDP and GATT tables and advertised to other devices.
257 static void addProfile(Profile profile, ResultCallback callback);
258
259 // Unregisters the JavaScript application as an implementation for the given
260 // Profile; only the uuid field of the Profile object is used.
261 static void removeProfile(Profile profile, ResultCallback callback);
262
213 // Connect to a service on a device. 263 // Connect to a service on a device.
214 // |options| : The options for the connection. 264 // |options| : The options for the connection.
215 // |callback| : Called to indicate success or failure. 265 // |callback| : Called to indicate success or failure.
216 static void connect(ConnectOptions options, 266 static void connect(ConnectOptions options,
217 ResultCallback callback); 267 ResultCallback callback);
218 268
219 // Close a Bluetooth connection. 269 // Closes a Bluetooth connection.
220 // |options| : The options for this function. 270 // |options| : The options for this function.
221 // |callback| : Called to indicate success or failure. 271 // |callback| : Called to indicate success or failure.
222 static void disconnect(DisconnectOptions options, 272 static void disconnect(DisconnectOptions options,
223 optional ResultCallback callback); 273 optional ResultCallback callback);
224 274
225 // Read data from a Bluetooth connection. The |callback| will be called 275 // Sends data to a Bluetooth connection.
226 // with the current data in the buffer even if it is empty. This function 276 // |socketId| : The socket identifier.
227 // should be polled to read incoming data. 277 // |data| : The data to send.
228 // |options| : The options for this function. 278 // |callback| : Called with the number of bytes sent.
229 // |callback| : Called with the data read from the socket buffer. 279 static void send(long socketId,
230 static void read(ReadOptions options, 280 ArrayBuffer data,
231 DataCallback callback); 281 optional SizeCallback callback);
232 282
233 // Write data to a Bluetooth connection. 283 // Updates the socket properties.
234 // |options| : The options for this function. 284 // |socketId| : The socket identifier.
235 // |callback| : Called with the number of bytes written. 285 // |properties| : The properties to update.
236 static void write(WriteOptions options, 286 // |callback| : Called when the properties are updated.
237 optional SizeCallback callback); 287 static void updateSocket(long socketId,
288 SocketProperties properties,
289 optional ResultCallback callback);
290
291 // Enables or disables the application from receiving messages from its
292 // peer. The default value is "false". Pausing a socket is typically used by
miket_OOO 2014/03/28 20:48:43 Convention seems to be to wrap in <code>
rpaquay 2014/03/31 15:39:19 Done.
293 // an application to throttle data sent by its peer. When a socket is
294 // paused, no $ref:onReceive event is raised. When a socket is connected and
295 // un-paused, $ref:onReceive events are raised again when messages are
296 // received.
297 static void setSocketPaused(long socketId,
298 boolean paused,
299 optional ResultCallback callback);
300
301 // Retrieves the state of the given socket.
302 // |socketId| : The socket identifier.
303 // |callback| : Called when the socket state is available.
304 static void getSocket(long socketId,
305 GetSocketCallback callback);
306
307 // Retrieves the list of currently opened sockets owned by the application.
308 // |callback| : Called when the list of sockets is available.
309 static void getSockets(GetSocketsCallback callback);
238 310
239 // Get the local Out of Band Pairing data. 311 // Get the local Out of Band Pairing data.
240 // |callback| : Called with the data. 312 // |callback| : Called with the data.
241 static void getLocalOutOfBandPairingData( 313 static void getLocalOutOfBandPairingData(
242 OutOfBandPairingDataCallback callback); 314 OutOfBandPairingDataCallback callback);
243 315
244 // Set the Out of Band Pairing data for a remote device. 316 // Set the Out of Band Pairing data for a remote device.
245 // Any previous Out Of Band Pairing Data for this device is overwritten. 317 // Any previous Out Of Band Pairing Data for this device is overwritten.
246 // |options| : The options for this function. 318 // |options| : The options for this function.
247 // |callback| : Called to indicate success or failure. 319 // |callback| : Called to indicate success or failure.
(...skipping 30 matching lines...) Expand all
278 static void onDeviceChanged(Device device); 350 static void onDeviceChanged(Device device);
279 351
280 // Fired when a Bluetooth device that was previously discovered has been 352 // Fired when a Bluetooth device that was previously discovered has been
281 // out of range for long enough to be considered unavailable again, and 353 // out of range for long enough to be considered unavailable again, and
282 // when a paired device is removed. 354 // when a paired device is removed.
283 static void onDeviceRemoved(Device device); 355 static void onDeviceRemoved(Device device);
284 356
285 // Fired when a connection has been made for a registered profile. 357 // Fired when a connection has been made for a registered profile.
286 // |socket| : The socket for the connection. 358 // |socket| : The socket for the connection.
287 static void onConnection(Socket socket); 359 static void onConnection(Socket socket);
360
361 // Event raised when data has been received for a given socket.
362 // |info| : The event data.
363 static void onReceive(ReceiveInfo info);
364
365 // Event raised when a network error occured while the runtime was waiting
366 // for data on the socket. Once this event is raised, the socket is set to
367 // <code>paused</code> and no more <code>onReceive</code> events are raised
368 // for this socket.
369 // |info| : The event data.
370 static void onReceiveError(ReceiveErrorInfo info);
288 }; 371 };
289 }; 372 };
OLDNEW
« no previous file with comments | « chrome/chrome_tests_unit.gypi ('k') | chrome/test/data/extensions/api_test/bluetooth/on_connection/runtest.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698