Blink roll 25b6bd3a7a131ffe68d809546ad1a20707915cdc:3a503f41ae42e5b79cfcd2ff10e65afde...
[chromium-blink-merge.git] / extensions / common / api / bluetooth_low_energy.idl
blob517a81347820a93e62f2a8a7ac18fcb3c0e289ee
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 // 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 enum CharacteristicProperty {broadcast, read, writeWithoutResponse, write,
12 notify, indicate, authenticatedSignedWrites,
13 extendedProperties, reliableWrite,
14 writableAuxiliaries};
16 // Represents a peripheral's Bluetooth GATT Service, a collection of
17 // characteristics and relationships to other services that encapsulate
18 // the behavior of part of a device.
19 dictionary Service {
20 // The UUID of the service, e.g. 0000180d-0000-1000-8000-00805f9b34fb.
21 DOMString uuid;
23 // Indicates whether the type of this service is primary or secondary.
24 boolean isPrimary;
26 // Indicates whether this service represents a local service hosted by the
27 // application and available to other peripherals, or a remote service
28 // hosted and received from a remote peripheral.
29 [nodoc] boolean isLocal;
31 // Returns the identifier assigned to this service. Use the instance ID to
32 // distinguish between services from a peripheral with the same UUID and
33 // to make function calls that take in a service identifier. Present, if
34 // this instance represents a remote service.
35 DOMString? instanceId;
37 // The device address of the remote peripheral that the GATT service belongs
38 // to. Present, if this instance represents a remote service.
39 DOMString? deviceAddress;
42 // Represents a GATT characteristic, which is a basic data element that
43 // provides further information about a peripheral's service.
44 dictionary Characteristic {
45 // The UUID of the characteristic, e.g.
46 // 00002a37-0000-1000-8000-00805f9b34fb.
47 DOMString uuid;
49 // Indicates whether this characteristic represents a local characteristic
50 // hosted by the application and available to other peripherals, or a remote
51 // characteristic hosted and received from a remote peripheral.
52 [nodoc] boolean isLocal;
54 // The GATT service this characteristic belongs to.
55 Service service;
57 // The properties of this characteristic.
58 CharacteristicProperty[] properties;
60 // Returns the identifier assigned to this characteristic. Use the instance
61 // ID to distinguish between characteristics from a peripheral with the same
62 // UUID and to make function calls that take in a characteristic identifier.
63 // Present, if this instance represents a remote characteristic.
64 DOMString? instanceId;
66 // The currently cached characteristic value. This value gets updated when
67 // the value of the characteristic is read or updated via a notification
68 // or indication.
69 ArrayBuffer? value;
72 // Represents a GATT characteristic descriptor, which provides further
73 // information about a characteristic's value.
74 dictionary Descriptor {
75 // The UUID of the characteristic descriptor, e.g.
76 // 00002902-0000-1000-8000-00805f9b34fb.
77 DOMString uuid;
79 // Indicates whether this descriptor represents a local descriptor
80 // hosted by the application and available to other peripherals, or a remote
81 // descriptor hosted and received from a remote peripheral.
82 [nodoc] boolean isLocal;
84 // The GATT characteristic this descriptor belongs to.
85 Characteristic characteristic;
87 // Returns the identifier assigned to this descriptor. Use the instance ID
88 // to distinguish between descriptors from a peripheral with the same UUID
89 // and to make function calls that take in a descriptor identifier. Present,
90 // if this instance represents a remote characteristic.
91 DOMString? instanceId;
93 // The currently cached descriptor value. This value gets updated when
94 // the value of the descriptor is read.
95 ArrayBuffer? value;
98 // The connection properties specified during a call to $(ref:connect).
99 dictionary ConnectProperties {
100 // Flag indicating whether a connection to the device is left open when the
101 // event page of the application is unloaded (see <a
102 // href="http://developer.chrome.com/apps/app_lifecycle.html">Manage App
103 // Lifecycle</a>). The default value is <code>false.</code>
104 boolean persistent;
107 // Optional characteristic notification session properties specified during a
108 // call to $(ref:startCharacteristicNotifications).
109 dictionary NotificationProperties {
110 // Flag indicating whether the app should receive notifications when the
111 // event page of the application is unloaded (see <a
112 // href="http://developer.chrome.com/apps/app_lifecycle.html">Manage App
113 // Lifecycle</a>). The default value is <code>false</code>.
114 boolean persistent;
117 callback CharacteristicCallback = void(Characteristic result);
118 callback CharacteristicsCallback = void(Characteristic[] result);
119 callback DescriptorCallback = void(Descriptor result);
120 callback DescriptorsCallback = void(Descriptor[] result);
121 callback ResultCallback = void();
122 callback ServiceCallback = void(Service result);
123 callback ServicesCallback = void(Service[] result);
125 // These functions all report failures via chrome.runtime.lastError.
126 interface Functions {
127 // Establishes a connection between the application and the device with the
128 // given address. A device may be already connected and its GATT services
129 // available without calling <code>connect</code>, however, an app that
130 // wants to access GATT services of a device should call this function to
131 // make sure that a connection to the device is maintained. If the device
132 // is not connected, all GATT services of the device will be discovered
133 // after a successful call to <code>connect</code>.
134 // |deviceAddress| : The Bluetooth address of the remote device to which a
135 // GATT connection should be opened.
136 // |properties| : Connection properties (optional).
137 // |callback| : Called when the connect request has completed.
138 static void connect(DOMString deviceAddress,
139 optional ConnectProperties properties,
140 ResultCallback callback);
142 // Closes the app's connection to the device with the given address. Note
143 // that this will not always destroy the physical link itself, since there
144 // may be other apps with open connections.
145 // |deviceAddress| : The Bluetooth address of the remote device.
146 // |callback| : Called when the disconnect request has completed.
147 static void disconnect(DOMString deviceAddress,
148 optional ResultCallback callback);
150 // Get the GATT service with the given instance ID.
151 // |serviceId| : The instance ID of the requested GATT service.
152 // |callback| : Called with the requested Service object.
153 static void getService(DOMString serviceId, ServiceCallback callback);
155 // Get all the GATT services that were discovered on the remote device with
156 // the given device address.
157 // |deviceAddress| : The Bluetooth address of the remote device whose GATT
158 // services should be returned.
159 // |callback| : Called with the list of requested Service objects.
160 static void getServices(DOMString deviceAddress, ServicesCallback callback);
162 // Get the GATT characteristic with the given instance ID that belongs to
163 // the given GATT service, if the characteristic exists.
164 // |characteristicId| : The instance ID of the requested GATT
165 // characteristic.
166 // |callback| : Called with the requested Characteristic object.
167 static void getCharacteristic(DOMString characteristicId,
168 CharacteristicCallback callback);
170 // Get a list of all discovered GATT characteristics that belong to the
171 // given service.
172 // |serviceId| : The instance ID of the GATT service whose characteristics
173 // should be returned.
174 // |callback| : Called with the list of characteristics that belong to the
175 // given service.
176 static void getCharacteristics(DOMString serviceId,
177 CharacteristicsCallback callback);
179 // Get a list of GATT services that are included by the given service.
180 // |serviceId| : The instance ID of the GATT service whose included
181 // services should be returned.
182 // |callback| : Called with the list of GATT services included from the
183 // given service.
184 static void getIncludedServices(DOMString serviceId,
185 ServicesCallback callback);
187 // Get the GATT characteristic descriptor with the given instance ID.
188 // |descriptorId| : The instance ID of the requested GATT characteristic
189 // descriptor.
190 // |callback| : Called with the requested Descriptor object.
191 static void getDescriptor(DOMString descriptorId,
192 DescriptorCallback callback);
194 // Get a list of GATT characteristic descriptors that belong to the given
195 // characteristic.
196 // |characteristicId| : The instance ID of the GATT characteristic whose
197 // descriptors should be returned.
198 // |callback| : Called with the list of descriptors that belong to the given
199 // characteristic.
200 static void getDescriptors(DOMString characteristicId,
201 DescriptorsCallback callback);
203 // Retrieve the value of a specified characteristic from a remote
204 // peripheral.
205 // |characteristicId| : The instance ID of the GATT characteristic whose
206 // value should be read from the remote device.
207 // |callback| : Called with the Characteristic object whose value was
208 // requested. The <code>value</code> field of the returned Characteristic
209 // object contains the result of the read request.
210 static void readCharacteristicValue(DOMString characteristicId,
211 CharacteristicCallback callback);
213 // Write the value of a specified characteristic from a remote peripheral.
214 // |characteristicId| : The instance ID of the GATT characteristic whose
215 // value should be written to.
216 // |value| : The value that should be sent to the remote characteristic as
217 // part of the write request.
218 // |callback| : Called when the write request has completed.
219 static void writeCharacteristicValue(DOMString characteristicId,
220 ArrayBuffer value,
221 ResultCallback callback);
223 // Enable value notifications/indications from the specified characteristic.
224 // Once enabled, an application can listen to notifications using the
225 // $(ref:onCharacteristicValueChanged) event.
226 // |characteristicId| : The instance ID of the GATT characteristic that
227 // notifications should be enabled on.
228 // |properties| : Notification session properties (optional).
229 // |callback| : Called when the request has completed.
230 static void startCharacteristicNotifications(
231 DOMString characteristicId,
232 optional NotificationProperties properties,
233 ResultCallback callback);
235 // Disable value notifications/indications from the specified
236 // characteristic. After a successful call, the application will stop
237 // receiving notifications/indications from this characteristic.
238 // |characteristicId| : The instance ID of the GATT characteristic on which
239 // this app's notification session should be stopped.
240 // |callback| : Called when the request has completed (optional).
241 static void stopCharacteristicNotifications(
242 DOMString characteristicId,
243 optional ResultCallback callback);
245 // Retrieve the value of a specified characteristic descriptor from a remote
246 // peripheral.
247 // |descriptorId| : The instance ID of the GATT characteristic descriptor
248 // whose value should be read from the remote device.
249 // |callback| : Called with the Descriptor object whose value was requested.
250 // The <code>value</code> field of the returned Descriptor object contains
251 // the result of the read request.
252 static void readDescriptorValue(DOMString descriptorId,
253 DescriptorCallback callback);
255 // Write the value of a specified characteristic descriptor from a remote
256 // peripheral.
257 // |descriptorId| : The instance ID of the GATT characteristic descriptor
258 // whose value should be written to.
259 // |value| : The value that should be sent to the remote descriptor as part
260 // of the write request.
261 // |callback| : Called when the write request has completed.
262 static void writeDescriptorValue(DOMString descriptorId,
263 ArrayBuffer value,
264 ResultCallback callback);
267 interface Events {
268 // Fired whan a new GATT service has been discovered on a remote device.
269 // |service| : The GATT service that was added.
270 static void onServiceAdded(Service service);
272 // Fired when the state of a remote GATT service changes. This involves any
273 // characteristics and/or descriptors that get added or removed from the
274 // service, as well as "ServiceChanged" notifications from the remote
275 // device.
276 // |service| : The GATT service whose state has changed.
277 static void onServiceChanged(Service service);
279 // Fired when a GATT service that was previously discovered on a remote
280 // device has been removed.
281 // |service| : The GATT service that was removed.
282 static void onServiceRemoved(Service service);
284 // Fired when the value of a remote GATT characteristic changes, either as
285 // a result of a read request, or a value change notification/indication
286 // This event will only be sent if the app has enabled notifications by
287 // calling $(ref:startCharacteristicNotifications).
288 // |characteristic| : The GATT characteristic whose value has changed.
289 static void onCharacteristicValueChanged(Characteristic characteristic);
291 // Fired when the value of a remote GATT characteristic descriptor changes,
292 // usually as a result of a read request. This event exists
293 // mostly for convenience and will always be sent after a successful
294 // call to $(ref:readDescriptorValue).
295 // |descriptor| : The GATT characteristic descriptor whose value has
296 // changed.
297 static void onDescriptorValueChanged(Descriptor descriptor);