| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Use the <code>chrome.bluetooth</code> API to connect to a Bluetooth |
| // device. |
| namespace bluetooth { |
| dictionary AdapterState { |
| // The address of the adapter, in the format 'XX:XX:XX:XX:XX:XX'. |
| DOMString address; |
| |
| // The human-readable name of the adapter. |
| DOMString name; |
| |
| // Indicates whether or not the adapter has power. |
| boolean powered; |
| |
| // Indicates whether or not the adapter is available (i.e. enabled). |
| boolean available; |
| |
| // Indicates whether or not the adapter is currently discovering. |
| boolean discovering; |
| }; |
| |
| dictionary Device { |
| // The address of the device, in the format 'XX:XX:XX:XX:XX:XX'. |
| DOMString address; |
| |
| // The human-readable name of the device. |
| DOMString? name; |
| |
| // Indicates whether or not the device is paired with the system. |
| boolean? paired; |
| |
| // Indicates whether the device is currently connected to the system. |
| boolean? connected; |
| }; |
| |
| dictionary Profile { |
| // Unique profile identifier, e.g. 00001401-0000-1000-8000-00805F9B23FB |
| DOMString uuid; |
| |
| // Human-readable name of the Profile, e.g. "Health Device" |
| DOMString? name; |
| |
| // The RFCOMM channel id, used when the profile is to be exported to remote |
| // devices. |
| long? channel; |
| |
| // The LS2CAP PSM number, used when the profile is to be exported to remote |
| // deviecs. |
| long? psm; |
| |
| // Specifies whether pairing (and encryption) is required to be able to |
| // connect. |
| boolean? requireAuthentication; |
| |
| // Specifies whether user authorization is required to be able to connect. |
| boolean? requireAuthorization; |
| |
| // Specifies whether this profile will be automatically connected if any |
| // other profile of device also exporting this profile connects to the host. |
| boolean? autoConnect; |
| |
| // Specifies the implemented version of the profile. |
| long? version; |
| |
| // Specifies the profile-specific bit field of features the implementation |
| // supports. |
| long? features; |
| }; |
| |
| dictionary ServiceRecord { |
| // The name of the service. |
| DOMString name; |
| |
| // The UUID of the service. |
| DOMString? uuid; |
| }; |
| |
| dictionary Socket { |
| // The remote Bluetooth device associated with this socket. |
| Device device; |
| |
| // The remote Bluetooth profile associated with this socket. |
| Profile profile; |
| |
| // An identifier for this socket that should be used with the |
| // read/write/disconnect methods. |
| long id; |
| }; |
| |
| dictionary OutOfBandPairingData { |
| // Simple Pairing Hash C. |
| // Always 16 octets long. |
| ArrayBuffer hash; |
| |
| // Simple Pairing Randomizer R. |
| // Always 16 octets long. |
| ArrayBuffer randomizer; |
| }; |
| |
| callback AdapterStateCallback = void(AdapterState result); |
| callback AddressCallback = void (DOMString result); |
| callback BooleanCallback = void (boolean result); |
| callback DataCallback = void (optional ArrayBuffer result); |
| callback DeviceCallback = void (Device device); |
| callback DevicesCallback = void (Device[] result); |
| callback NameCallback = void (DOMString result); |
| callback OutOfBandPairingDataCallback = void (OutOfBandPairingData data); |
| callback ProfilesCallback = void(Profile[] result); |
| callback ResultCallback = void (); |
| callback ServicesCallback = void(ServiceRecord[] result); |
| callback SizeCallback = void (long result); |
| callback SocketCallback = void (Socket result); |
| |
| // Options for the getDevices function. If |profile| is not provided, all |
| // devices known to the system are returned. |
| dictionary GetDevicesOptions { |
| // Only devices providing |profile| will be returned. |
| Profile? profile; |
| |
| // Called for each matching device. Note that a service discovery request |
| // must be made to each non-matching device before it can be definitively |
| // excluded. This can take some time. |
| DeviceCallback deviceCallback; |
| }; |
| |
| // Options for the getProfiles function. |
| dictionary GetProfilesOptions { |
| // The remote Bluetooth device to retrieve the exported profiles list from. |
| Device device; |
| }; |
| |
| // Options for the getServices function. |
| dictionary GetServicesOptions { |
| // The address of the device to inquire about. |deviceAddress| should be |
| // in the format 'XX:XX:XX:XX:XX:XX'. |
| DOMString deviceAddress; |
| }; |
| |
| // Options for the connect function. |
| dictionary ConnectOptions { |
| // The connection is made to |device|. |
| Device device; |
| |
| // The connection is made to |profile|. |
| Profile profile; |
| }; |
| |
| // Options for the disconnect function. |
| dictionary DisconnectOptions { |
| // The socket to disconnect. |
| Socket socket; |
| }; |
| |
| // Options for the read function. |
| dictionary ReadOptions { |
| // The socket to read from. |
| Socket socket; |
| }; |
| |
| // Options for the write function. |
| dictionary WriteOptions { |
| // The socket to write to. |
| Socket socket; |
| |
| // The data to write. |
| ArrayBuffer data; |
| }; |
| |
| // Options for the setOutOfBandPairingData function. |
| dictionary SetOutOfBandPairingDataOptions { |
| // The address of the remote device that the data should be associated |
| // with. |deviceAddress| should be in the format 'XX:XX:XX:XX:XX:XX'. |
| DOMString address; |
| |
| // The Out Of Band Pairing Data. If this is omitted, the data for the |
| // device is cleared instead. |
| OutOfBandPairingData? data; |
| }; |
| |
| // Options for the startDiscovery function. |
| dictionary StartDiscoveryOptions { |
| // Called for each device that is discovered. |
| DeviceCallback deviceCallback; |
| }; |
| |
| // These functions all report failures via chrome.runtime.lastError. |
| interface Functions { |
| // Registers the JavaScript application as an implementation for the given |
| // Profile; if a channel or PSM is specified, the profile will be exported |
| // in the host's SDP and GATT tables and advertised to other devices. |
| static void addProfile(Profile profile, ResultCallback callback); |
| |
| // Unregisters the JavaScript application as an implementation for the given |
| // Profile; only the uuid field of the Profile object is used. |
| static void removeProfile(Profile profile, ResultCallback callback); |
| |
| // Get information about the Bluetooth adapter. |
| // |callback| : Called with an AdapterState object describing the adapter |
| // state. |
| static void getAdapterState(AdapterStateCallback callback); |
| |
| // Get a bluetooth devices known to the system. Known devices are either |
| // currently paired, or have been paired in the past. |
| // |options| : Controls which devices are returned and provides |
| // |deviceCallback|, which is called for each matching device. |
| // |callback| : Called when the search is completed. |
| // |options.deviceCallback| will not be called after |
| // |callback| has been called. |
| static void getDevices(GetDevicesOptions options, |
| ResultCallback callback); |
| |
| // Returns the set of exported profiles for the device specified in options. |
| // This function will not initiate a connection to the remote device. |
| static void getProfiles(GetProfilesOptions options, |
| ProfilesCallback callback); |
| |
| // Get a list of services provided by a device. |
| static void getServices(GetServicesOptions options, |
| ServicesCallback callback); |
| |
| // Connect to a service on a device. |
| // |options| : The options for the connection. |
| // |callback| : Called to indicate success or failure. |
| static void connect(ConnectOptions options, |
| ResultCallback callback); |
| |
| // Close a Bluetooth connection. |
| // |options| : The options for this function. |
| // |callback| : Called to indicate success or failure. |
| static void disconnect(DisconnectOptions options, |
| optional ResultCallback callback); |
| |
| // Read data from a Bluetooth connection. |
| // |options| : The options for this function. |
| // |callback| : Called with the data when it is available. |
| static void read(ReadOptions options, |
| DataCallback callback); |
| |
| // Write data to a Bluetooth connection. |
| // |options| : The options for this function. |
| // |callback| : Called with the number of bytes written. |
| static void write(WriteOptions options, |
| optional SizeCallback callback); |
| |
| // Get the local Out of Band Pairing data. |
| // |callback| : Called with the data. |
| static void getLocalOutOfBandPairingData( |
| OutOfBandPairingDataCallback callback); |
| |
| // Set the Out of Band Pairing data for a remote device. |
| // Any previous Out Of Band Pairing Data for this device is overwritten. |
| // |options| : The options for this function. |
| // |callback| : Called to indicate success or failure. |
| static void setOutOfBandPairingData(SetOutOfBandPairingDataOptions options, |
| optional ResultCallback callback); |
| |
| // Start discovery. Discovered devices will be returned via the |
| // |onDeviceDiscovered| callback. Discovery will fail to start if it is |
| // already in progress. Discovery can be resource intensive: stopDiscovery |
| // should be called as soon as possible. |
| // |options| : The options for this function. |
| // |callback| : Called to indicate success or failure. |
| static void startDiscovery( |
| StartDiscoveryOptions options, |
| optional ResultCallback callback); |
| |
| // Stop discovery. |
| // |callback| : Called to indicate success or failure. |
| static void stopDiscovery( |
| optional ResultCallback callback); |
| }; |
| |
| interface Events { |
| // Fired when the state of the Bluetooth adapter changes. |
| // |state| : The new state of the adapter. |
| static void onAdapterStateChanged(AdapterState state); |
| |
| // Fired when a connection has been made for a registered profile. |
| // |socket| : The socket for the connection. |
| static void onConnection(Socket socket); |
| }; |
| }; |