blob: d1774b7c0ba1705e3ba682f941fe4428a371fe09 [file] [log] [blame]
// 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);
};
};