blob: 1febc8b127194e344045bb84bdfbd7f2af3cbd1d [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. All functions report failures via chrome.runtime.lastError.
namespace bluetooth {
// Allocation authorities for Vendor IDs.
enum VendorIdSource {bluetooth, usb};
// Common device types recognized by Chrome.
enum DeviceType {computer, phone, modem, audio, carAudio, video, peripheral,
joystick, gamepad, keyboard, mouse, tablet,
keyboardMouseCombo};
// Information about the state of the Bluetooth adapter.
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;
};
// Callback from the <code>getAdapterState</code> method.
// |adapterInfo| : Object containing the adapter information.
callback AdapterStateCallback = void(AdapterState adapterInfo);
// Information about the state of a known Bluetooth device.
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;
// The class of the device, a bit-field defined by
// http://www.bluetooth.org/en-us/specification/assigned-numbers/baseband.
long? deviceClass;
// The Device ID record of the device, where available.
VendorIdSource? vendorIdSource;
long? vendorId;
long? productId;
long? deviceId;
// The type of the device, if recognized by Chrome. This is obtained from
// the |deviceClass| field and only represents a small fraction of the
// possible device types. When in doubt you should use the |deviceClass|
// field directly.
DeviceType? type;
// 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;
// Indicates the RSSI ("received signal strength indication") of the
// connection to the device, measured in dBm, to a resolution of 1dBm.
// If the device is currently connected, then measures the RSSI of the
// connection signal. Otherwise, measures the RSSI of the last inquiry sent
// to the device, where available. Absent if unavailable.
[nodoc] long? rssi;
// Indicates the host's current transmit power ("Tx power") for the
// connection to the device, measured in dBm, to a resolution of 1dBm.
// This value is only available if the device is currently connected.
[nodoc] long? currentHostTransmitPower;
// Indicates the host's maximum transmit power ("Tx power") for the
// connection to the device, measured in dBm, to a resolution of 1dBm.
// This value is only available if the device is currently connected.
[nodoc] long? maximumHostTransmitPower;
// UUIDs of protocols, profiles and services advertised by the device.
// For classic Bluetooth devices, this list is obtained from EIR data and
// SDP tables. For Low Energy devices, this list is obtained from AD and
// GATT primary services. For dual mode devices this may be obtained from
// both.
DOMString[]? uuids;
};
// Callback from the <code>getDevice</code> method.
// |deviceInfo| : Object containing the device information.
callback GetDeviceCallback = void(Device deviceInfo);
// Callback from the <code>getDevices</code> method.
// |deviceInfos| : Array of object containing device information.
callback GetDevicesCallback = void(Device[] deviceInfos);
// Callback from the <code>startDiscovery</code> method.
callback StartDiscoveryCallback = void();
// Callback from the <code>stopDiscovery</code> method.
callback StopDiscoveryCallback = void();
// These functions all report failures via chrome.runtime.lastError.
interface Functions {
// Get information about the Bluetooth adapter.
// |callback| : Called with an AdapterState object describing the adapter
// state.
static void getAdapterState(AdapterStateCallback callback);
// Get information about a Bluetooth device known to the system.
// |deviceAddress| : Address of device to get.
// |callback| : Called with the Device object describing the device.
static void getDevice(DOMString deviceAddress, GetDeviceCallback callback);
// Get a list of Bluetooth devices known to the system, including paired
// and recently discovered devices.
// |callback| : Called when the search is completed.
static void getDevices(GetDevicesCallback callback);
// Start discovery. Newly discovered devices will be returned via the
// onDeviceAdded event. Previously discovered devices already known to
// the adapter must be obtained using getDevices and will only be updated
// using the |onDeviceChanged| event if information about them changes.
//
// Discovery will fail to start if this application has already called
// startDiscovery. Discovery can be resource intensive: stopDiscovery
// should be called as soon as possible.
// |callback| : Called to indicate success or failure.
static void startDiscovery(optional StartDiscoveryCallback callback);
// Stop discovery.
// |callback| : Called to indicate success or failure.
static void stopDiscovery(optional StopDiscoveryCallback 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 information about a new Bluetooth device is available.
static void onDeviceAdded(Device device);
// Fired when information about a known Bluetooth device has changed.
static void onDeviceChanged(Device device);
// Fired when a Bluetooth device that was previously discovered has been
// out of range for long enough to be considered unavailable again, and
// when a paired device is removed.
static void onDeviceRemoved(Device device);
};
};