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

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

Issue 2370373002: Move chrome.bluetoothLowEnergy out of //chrome. (Closed)
Patch Set: build fix Created 4 years, 2 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
(Empty)
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.
4
5 // The <code>chrome.bluetoothLowEnergy</code> API is used to communicate with
6 // Bluetooth Smart (Low Energy) devices using the
7 // <a href="https://developer.bluetooth.org/TechnologyOverview/Pages/GATT.aspx">
8 // Generic Attribute Profile (GATT)</a>.
9 namespace bluetoothLowEnergy {
10 // Values representing the possible properties of a characteristic.
11 // Characteristic permissions are inferred from these properties.
12 // Please see the Bluetooth 4.x spec to see the meaning of each individual
13 // property.
14 enum CharacteristicProperty {
15 broadcast, read, writeWithoutResponse, write, notify, indicate,
16 authenticatedSignedWrites, extendedProperties, reliableWrite,
17 writableAuxiliaries, encryptRead, encryptWrite, encryptAuthenticatedRead,
18 encryptAuthenticatedWrite
19 };
20
21 // Values representing possible permissions for a descriptor.
22 // Please see the Bluetooth 4.x spec to see the meaning of each individual
23 // permission.
24 enum DescriptorPermission {
25 read, write, encryptedRead, encryptedWrite, encryptedAuthenticatedRead,
26 encryptedAuthenticatedWrite
27 };
28
29 // Type of advertisement. If 'broadcast' is chosen, the sent advertisement
30 // type will be ADV_NONCONN_IND and the device will broadcast with a random
31 // MAC Address. If set to 'peripheral', the advertisement type will be
32 // ADV_IND or ADV_SCAN_IND and the device will broadcast with real Bluetooth
33 // Adapter's MAC Address.
34 enum AdvertisementType {broadcast, peripheral};
35
36 // Represents a bluetooth central device that is connected to the local GATT
37 // server.
38 dictionary Device {
39 // The address of the device, in the format 'XX:XX:XX:XX:XX:XX'.
40 DOMString address;
41
42 // The human-readable name of the device.
43 DOMString? name;
44
45 // The class of the device, a bit-field defined by
46 // http://www.bluetooth.org/en-us/specification/assigned-numbers/baseband.
47 long? deviceClass;
48 };
49
50 // Represents a peripheral's Bluetooth GATT Service, a collection of
51 // characteristics and relationships to other services that encapsulate
52 // the behavior of part of a device.
53 dictionary Service {
54 // The UUID of the service, e.g. 0000180d-0000-1000-8000-00805f9b34fb.
55 DOMString uuid;
56
57 // Indicates whether the type of this service is primary or secondary.
58 boolean isPrimary;
59
60 // Returns the identifier assigned to this service. Use the instance ID to
61 // distinguish between services from a peripheral with the same UUID and
62 // to make function calls that take in a service identifier. Present, if
63 // this instance represents a remote service.
64 DOMString? instanceId;
65
66 // The device address of the remote peripheral that the GATT service belongs
67 // to. Present, if this instance represents a remote service.
68 DOMString? deviceAddress;
69 };
70
71 // Represents a GATT characteristic, which is a basic data element that
72 // provides further information about a peripheral's service.
73 dictionary Characteristic {
74 // The UUID of the characteristic, e.g.
75 // 00002a37-0000-1000-8000-00805f9b34fb.
76 DOMString uuid;
77
78 // The GATT service this characteristic belongs to.
79 Service? service;
80
81 // The properties of this characteristic.
82 CharacteristicProperty[] properties;
83
84 // Returns the identifier assigned to this characteristic. Use the instance
85 // ID to distinguish between characteristics from a peripheral with the same
86 // UUID and to make function calls that take in a characteristic identifier.
87 // Present, if this instance represents a remote characteristic.
88 DOMString? instanceId;
89
90 // The currently cached characteristic value. This value gets updated when
91 // the value of the characteristic is read or updated via a notification
92 // or indication.
93 ArrayBuffer? value;
94 };
95
96 // Represents a GATT characteristic descriptor, which provides further
97 // information about a characteristic's value.
98 dictionary Descriptor {
99 // The UUID of the characteristic descriptor, e.g.
100 // 00002902-0000-1000-8000-00805f9b34fb.
101 DOMString uuid;
102
103 // The GATT characteristic this descriptor belongs to.
104 Characteristic? characteristic;
105
106 // The permissions of this descriptor.
107 DescriptorPermission[] permissions;
108
109 // Returns the identifier assigned to this descriptor. Use the instance ID
110 // to distinguish between descriptors from a peripheral with the same UUID
111 // and to make function calls that take in a descriptor identifier. Present,
112 // if this instance represents a remote characteristic.
113 DOMString? instanceId;
114
115 // The currently cached descriptor value. This value gets updated when
116 // the value of the descriptor is read.
117 ArrayBuffer? value;
118 };
119
120 // The connection properties specified during a call to $(ref:connect).
121 dictionary ConnectProperties {
122 // Flag indicating whether a connection to the device is left open when the
123 // event page of the application is unloaded (see <a
124 // href="http://developer.chrome.com/apps/app_lifecycle.html">Manage App
125 // Lifecycle</a>). The default value is <code>false.</code>
126 boolean persistent;
127 };
128
129 // Optional characteristic notification session properties specified during a
130 // call to $(ref:startCharacteristicNotifications).
131 dictionary NotificationProperties {
132 // Flag indicating whether the app should receive notifications when the
133 // event page of the application is unloaded (see <a
134 // href="http://developer.chrome.com/apps/app_lifecycle.html">Manage App
135 // Lifecycle</a>). The default value is <code>false</code>.
136 boolean persistent;
137 };
138
139 // Represents an entry of the "Manufacturer Specific Data" field of Bluetooth
140 // LE advertisement data.
141 dictionary ManufacturerData {
142 long id;
143 long[] data;
144 };
145
146 // Represents an entry of the "Service Data" field of Bluetooth LE advertiseme nt
147 // data.
148 dictionary ServiceData {
149 DOMString uuid;
150 long[] data;
151 };
152
153 // Represents a Bluetooth LE advertisement instance.
154 dictionary Advertisement {
155 // Type of advertisement.
156 AdvertisementType type;
157
158 // List of UUIDs to include in the "Service UUIDs" field of the Advertising
159 // Data. These UUIDs can be of the 16bit, 32bit or 128 formats.
160 DOMString[]? serviceUuids;
161
162 // List of manufacturer specific data to be included in "Manufacturer Specif ic
163 // Data" fields of the advertising data.
164 ManufacturerData[]? manufacturerData;
165
166 // List of UUIDs to include in the "Solicit UUIDs" field of the Advertising
167 // Data. These UUIDs can be of the 16bit, 32bit or 128 formats.
168 DOMString[]? solicitUuids;
169
170 // List of service data to be included in "Service Data" fields of the adver tising
171 // data.
172 ServiceData[]? serviceData;
173 };
174
175 // Represents a an attribute read/write request.
176 dictionary Request {
177 // Unique ID for this request. Use this ID when responding to this request.
178 long requestId;
179 // Device that send this request.
180 Device device;
181 // Value to write (if this is a write request).
182 ArrayBuffer? value;
183 };
184
185 // Represents a response to an attribute read/write request.
186 dictionary Response {
187 // Id of the request this is a response to.
188 long requestId;
189 // If this is an error response, this should be true.
190 boolean isError;
191 // Response value. Write requests and error responses will ignore this
192 // parameter.
193 ArrayBuffer? value;
194 };
195
196 // Represents a notification to be sent to a remote device.
197 dictionary Notification {
198 // New value of the characteristic.
199 ArrayBuffer value;
200 // Optional flag for sending an indication instead of a notification.
201 boolean? shouldIndicate;
202 };
203
204 callback CharacteristicCallback = void(Characteristic result);
205 callback CreateCharacteristicCallback = void(DOMString characteristicId);
206 callback CharacteristicsCallback = void(Characteristic[] result);
207 callback DescriptorCallback = void(Descriptor result);
208 callback CreateDescriptorCallback = void(DOMString descriptorId);
209 callback DescriptorsCallback = void(Descriptor[] result);
210 callback ResultCallback = void();
211 callback ServiceCallback = void(Service result);
212 callback CreateServiceCallback = void(DOMString serviceId);
213 callback ServicesCallback = void(Service[] result);
214 callback RegisterAdvertisementCallback = void (long advertisementId);
215
216 // These functions all report failures via chrome.runtime.lastError.
217 interface Functions {
218 // Establishes a connection between the application and the device with the
219 // given address. A device may be already connected and its GATT services
220 // available without calling <code>connect</code>, however, an app that
221 // wants to access GATT services of a device should call this function to
222 // make sure that a connection to the device is maintained. If the device
223 // is not connected, all GATT services of the device will be discovered
224 // after a successful call to <code>connect</code>.
225 // |deviceAddress|: The Bluetooth address of the remote device to which a
226 // GATT connection should be opened.
227 // |properties|: Connection properties (optional).
228 // |callback|: Called when the connect request has completed.
229 static void connect(DOMString deviceAddress,
230 optional ConnectProperties properties,
231 ResultCallback callback);
232
233 // Closes the app's connection to the device with the given address. Note
234 // that this will not always destroy the physical link itself, since there
235 // may be other apps with open connections.
236 // |deviceAddress|: The Bluetooth address of the remote device.
237 // |callback|: Called when the disconnect request has completed.
238 static void disconnect(DOMString deviceAddress,
239 optional ResultCallback callback);
240
241 // Get the GATT service with the given instance ID.
242 // |serviceId|: The instance ID of the requested GATT service.
243 // |callback|: Called with the requested Service object.
244 static void getService(DOMString serviceId, ServiceCallback callback);
245
246 // Create a locally hosted GATT service. This service can be registered
247 // to be available on a local GATT server.
248 // This function is only available if the app has both the
249 // bluetooth:low_energy and the bluetooth:peripheral permissions set to
250 // true. The peripheral permission may not be available to all apps.
251 // |service|: The service to create.
252 // |callback|: Called with the created services's unique ID.
253 static void createService(Service service, CreateServiceCallback callback);
254
255 // Get all the GATT services that were discovered on the remote device with
256 // the given device address.
257 // |deviceAddress|: The Bluetooth address of the remote device whose GATT
258 // services should be returned.
259 // |callback|: Called with the list of requested Service objects.
260 static void getServices(DOMString deviceAddress, ServicesCallback callback);
261
262 // Get the GATT characteristic with the given instance ID that belongs to
263 // the given GATT service, if the characteristic exists.
264 // |characteristicId|: The instance ID of the requested GATT
265 // characteristic.
266 // |callback|: Called with the requested Characteristic object.
267 static void getCharacteristic(DOMString characteristicId,
268 CharacteristicCallback callback);
269
270 // Create a locally hosted GATT characteristic. This characteristic must
271 // be hosted under a valid service. If the service ID is not valid, the
272 // lastError will be set.
273 // This function is only available if the app has both the
274 // bluetooth:low_energy and the bluetooth:peripheral permissions set to
275 // true. The peripheral permission may not be available to all apps.
276 // |characteristic|: The characteristic to create.
277 // |serviceId|: ID of the service to create this characteristic for.
278 // |callback|: Called with the created characteristic's unique ID.
279 static void createCharacteristic(Characteristic characteristic,
280 DOMString serviceId,
281 CreateCharacteristicCallback callback);
282
283 // Get a list of all discovered GATT characteristics that belong to the
284 // given service.
285 // |serviceId|: The instance ID of the GATT service whose characteristics
286 // should be returned.
287 // |callback|: Called with the list of characteristics that belong to the
288 // given service.
289 static void getCharacteristics(DOMString serviceId,
290 CharacteristicsCallback callback);
291
292 // Get a list of GATT services that are included by the given service.
293 // |serviceId|: The instance ID of the GATT service whose included
294 // services should be returned.
295 // |callback|: Called with the list of GATT services included from the
296 // given service.
297 static void getIncludedServices(DOMString serviceId,
298 ServicesCallback callback);
299
300 // Get the GATT characteristic descriptor with the given instance ID.
301 // |descriptorId|: The instance ID of the requested GATT characteristic
302 // descriptor.
303 // |callback|: Called with the requested Descriptor object.
304 static void getDescriptor(DOMString descriptorId,
305 DescriptorCallback callback);
306
307 // Create a locally hosted GATT descriptor. This descriptor must
308 // be hosted under a valid characteristic. If the characteristic ID is not
309 // valid, the lastError will be set.
310 // This function is only available if the app has both the
311 // bluetooth:low_energy and the bluetooth:peripheral permissions set to
312 // true. The peripheral permission may not be available to all apps.
313 // |descriptor|: The descriptor to create.
314 // |characteristicId|: ID of the characteristic to create this descriptor
315 // for.
316 // |callback|: Called with the created descriptor's unique ID.
317 static void createDescriptor(Descriptor descriptor,
318 DOMString characteristicId,
319 CreateDescriptorCallback callback);
320
321 // Get a list of GATT characteristic descriptors that belong to the given
322 // characteristic.
323 // |characteristicId|: The instance ID of the GATT characteristic whose
324 // descriptors should be returned.
325 // |callback|: Called with the list of descriptors that belong to the given
326 // characteristic.
327 static void getDescriptors(DOMString characteristicId,
328 DescriptorsCallback callback);
329
330 // Retrieve the value of a specified characteristic from a remote
331 // peripheral.
332 // |characteristicId|: The instance ID of the GATT characteristic whose
333 // value should be read from the remote device.
334 // |callback|: Called with the Characteristic object whose value was
335 // requested. The <code>value</code> field of the returned Characteristic
336 // object contains the result of the read request.
337 static void readCharacteristicValue(DOMString characteristicId,
338 CharacteristicCallback callback);
339
340 // Write the value of a specified characteristic from a remote peripheral.
341 // |characteristicId|: The instance ID of the GATT characteristic whose
342 // value should be written to.
343 // |value|: The value that should be sent to the remote characteristic as
344 // part of the write request.
345 // |callback|: Called when the write request has completed.
346 static void writeCharacteristicValue(DOMString characteristicId,
347 ArrayBuffer value,
348 ResultCallback callback);
349
350 // Enable value notifications/indications from the specified characteristic.
351 // Once enabled, an application can listen to notifications using the
352 // $(ref:onCharacteristicValueChanged) event.
353 // |characteristicId|: The instance ID of the GATT characteristic that
354 // notifications should be enabled on.
355 // |properties|: Notification session properties (optional).
356 // |callback|: Called when the request has completed.
357 static void startCharacteristicNotifications(
358 DOMString characteristicId,
359 optional NotificationProperties properties,
360 ResultCallback callback);
361
362 // Disable value notifications/indications from the specified
363 // characteristic. After a successful call, the application will stop
364 // receiving notifications/indications from this characteristic.
365 // |characteristicId|: The instance ID of the GATT characteristic on which
366 // this app's notification session should be stopped.
367 // |callback|: Called when the request has completed (optional).
368 static void stopCharacteristicNotifications(
369 DOMString characteristicId,
370 optional ResultCallback callback);
371
372 // Notify a remote device of a new value for a characteristic. If the
373 // shouldIndicate flag in the notification object is true, an indication
374 // will be sent instead of a notification. Note, the characteristic needs
375 // to correctly set the 'notify' or 'indicate' property during creation for
376 // this call to succeed.
377 // This function is only available if the app has both the
378 // bluetooth:low_energy and the bluetooth:peripheral permissions set to
379 // true. The peripheral permission may not be available to all apps.
380 // |characteristicId|: The characteristic to send the notication for.
381 // |notifcation|: The notification to send.
382 // |callback|: Callback called once the notification or indication has
383 // been sent successfully.
384 static void notifyCharacteristicValueChanged(DOMString characteristicId,
385 Notification notification,
386 ResultCallback callback);
387
388 // Retrieve the value of a specified characteristic descriptor from a remote
389 // peripheral.
390 // |descriptorId|: The instance ID of the GATT characteristic descriptor
391 // whose value should be read from the remote device.
392 // |callback|: Called with the Descriptor object whose value was requested.
393 // The <code>value</code> field of the returned Descriptor object contains
394 // the result of the read request.
395 static void readDescriptorValue(DOMString descriptorId,
396 DescriptorCallback callback);
397
398 // Write the value of a specified characteristic descriptor from a remote
399 // peripheral.
400 // |descriptorId|: The instance ID of the GATT characteristic descriptor
401 // whose value should be written to.
402 // |value|: The value that should be sent to the remote descriptor as part
403 // of the write request.
404 // |callback|: Called when the write request has completed.
405 static void writeDescriptorValue(DOMString descriptorId,
406 ArrayBuffer value,
407 ResultCallback callback);
408
409 // Register the given service with the local GATT server. If the service
410 // ID is invalid, the lastError will be set.
411 // This function is only available if the app has both the
412 // bluetooth:low_energy and the bluetooth:peripheral permissions set to
413 // true. The peripheral permission may not be available to all apps.
414 // |serviceId|: Unique ID of a created service.
415 // |callback|: Callback with the result of the register operation.
416 static void registerService(
417 DOMString serviceId, ResultCallback callback);
418
419 // Unregister the given service with the local GATT server. If the service
420 // ID is invalid, the lastError will be set.
421 // This function is only available if the app has both the
422 // bluetooth:low_energy and the bluetooth:peripheral permissions set to
423 // true. The peripheral permission may not be available to all apps.
424 // |serviceId|: Unique ID of a current registered service.
425 // |callback|: Callback with the result of the register operation.
426 static void unregisterService(
427 DOMString serviceId, ResultCallback callback);
428
429 // Remove the specified service, unregistering it if it was registered.
430 // If the service ID is invalid, the lastError will be set.
431 // This function is only available if the app has both the
432 // bluetooth:low_energy and the bluetooth:peripheral permissions set to
433 // true. The peripheral permission may not be available to all apps.
434 // |serviceId|: Unique ID of a current registered service.
435 // |callback|: Callback called once the service is removed.
436 static void removeService(
437 DOMString serviceId, optional ResultCallback callback);
438
439 // Create an advertisement and register it for advertising. To call this
440 // function, the app must have the bluetooth:low_energy and
441 // bluetooth:peripheral permissions set to true. Additionally this API
442 // is only available to auto launched apps in Kiosk Mode of by setting
443 // the 'enable-ble-advertising-in-apps' flag.
444 // See https://developer.chrome.com/apps/manifest/bluetooth
445 // Note: On some hardware, central and peripheral modes at the same time is
446 // supported but on hardware that doesn't support this, making this call
447 // will switch the device to peripheral mode. In the case of hardware which
448 // does not support both central and peripheral mode, attempting to use the
449 // device in both modes will lead to undefined behavior or prevent other
450 // central-role applications from behaving correctly (including the
451 // discovery of Bluetooth Low Energy devices).
452 // |advertisement|: The advertisement to advertise.
453 // |callback|: Called once the registeration is done and we've started
454 // advertising. Returns the id of the created advertisement.
455 static void registerAdvertisement(
456 Advertisement advertisement, RegisterAdvertisementCallback callback);
457
458 // Unregisters an advertisement and stops its advertising. If the
459 // advertisement fails to unregister the only way to stop advertising
460 // might be to restart the device.
461 // |advertisementId|: Id of the advertisement to unregister.
462 // |callback|: Called once the advertisement is unregistered and is no
463 // longer being advertised.
464 static void unregisterAdvertisement(long advertisementId,
465 ResultCallback callback);
466
467 // Set's the interval betweeen two consecutive advertisements. Note:
468 // This is a best effort. The actual interval may vary non-trivially
469 // from the requested intervals. On some hardware, there is a minimum
470 // interval of 100ms. The minimum and maximum values cannot exceed the
471 // the range allowed by the Bluetooth 4.2 specification.
472 // |minInterval|: Minimum interval between advertisments (in
473 // milliseconds). This cannot be lower than 20ms (as per the spec).
474 // |maxInterval|: Maximum interval between advertisments (in
475 // milliseconds). This cannot be more than 10240ms (as per the spec).
476 // |callback|: Called once the interval has been set.
477 static void setAdvertisingInterval(long minInterval, long maxInterval,
478 ResultCallback callback);
479
480 // Sends a response for a characteristic or descriptor read/write
481 // request.
482 // This function is only available if the app has both the
483 // bluetooth:low_energy and the bluetooth:peripheral permissions set to
484 // true. The peripheral permission may not be available to all apps.
485 // |response|: The response to the request.
486 static void sendRequestResponse(Response response);
487 };
488
489 interface Events {
490 // Fired whan a new GATT service has been discovered on a remote device.
491 // |service|: The GATT service that was added.
492 static void onServiceAdded(Service service);
493
494 // Fired when the state of a remote GATT service changes. This involves any
495 // characteristics and/or descriptors that get added or removed from the
496 // service, as well as "ServiceChanged" notifications from the remote
497 // device.
498 // |service|: The GATT service whose state has changed.
499 static void onServiceChanged(Service service);
500
501 // Fired when a GATT service that was previously discovered on a remote
502 // device has been removed.
503 // |service|: The GATT service that was removed.
504 static void onServiceRemoved(Service service);
505
506 // Fired when the value of a remote GATT characteristic changes, either as
507 // a result of a read request, or a value change notification/indication
508 // This event will only be sent if the app has enabled notifications by
509 // calling $(ref:startCharacteristicNotifications).
510 // |characteristic|: The GATT characteristic whose value has changed.
511 static void onCharacteristicValueChanged(Characteristic characteristic);
512
513 // Fired when the value of a remote GATT characteristic descriptor changes,
514 // usually as a result of a read request. This event exists
515 // mostly for convenience and will always be sent after a successful
516 // call to $(ref:readDescriptorValue).
517 // |descriptor|: The GATT characteristic descriptor whose value has
518 // changed.
519 static void onDescriptorValueChanged(Descriptor descriptor);
520
521 // Fired when a connected central device requests to read the value of a
522 // characteristic registered on the local GATT server. Not responding
523 // to this request for a long time may lead to a disconnection.
524 // This event is only available if the app has both the
525 // bluetooth:low_energy and the bluetooth:peripheral permissions set to
526 // true. The peripheral permission may not be available to all apps.
527 // |request|: Request data for this request.
528 // |characteristic|: The GATT characteristic whose value is requested.
529 static void onCharacteristicReadRequest(
530 Request request, DOMString characteristicId);
531
532 // Fired when a connected central device requests to write the value of a
533 // characteristic registered on the local GATT server. Not responding
534 // to this request for a long time may lead to a disconnection.
535 // This event is only available if the app has both the
536 // bluetooth:low_energy and the bluetooth:peripheral permissions set to
537 // true. The peripheral permission may not be available to all apps.
538 // |request|: Request data for this request.
539 // |characteristic|: The GATT characteristic whose value is being written.
540 static void onCharacteristicWriteRequest(
541 Request request, DOMString characteristicId);
542
543 // Fired when a connected central device requests to read the value of a
544 // descriptor registered on the local GATT server. Not responding to
545 // this request for a long time may lead to a disconnection.
546 // This event is only available if the app has both the
547 // bluetooth:low_energy and the bluetooth:peripheral permissions set to
548 // true. The peripheral permission may not be available to all apps.
549 // |request|: Request data for this request.
550 // |descriptor|: The GATT descriptor whose value is requested.
551 static void onDescriptorReadRequest(
552 Request request, DOMString descriptorId);
553
554 // Fired when a connected central device requests to write the value of a
555 // descriptor registered on the local GATT server. Not responding to
556 // this request for a long time may lead to a disconnection.
557 // This event is only available if the app has both the
558 // bluetooth:low_energy and the bluetooth:peripheral permissions set to
559 // true. The peripheral permission may not be available to all apps.
560 // |request|: Request data for this request.
561 // |descriptor|: The GATT descriptor whose value is being written.
562 static void onDescriptorWriteRequest(
563 Request request, DOMString descriptorId);
564 };
565 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698