blob: f3ff4ba07f9af7d4f2eb4d98d3fbe32be7393184 [file] [log] [blame]
// Copyright 2015 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.bluetoothPrivate</code> API to control the Bluetooth
// adapter state and handle device pairing.
// NOTE: This IDL is dependent on bluetooth.idl.
[implemented_in = "extensions/browser/api/bluetooth/bluetooth_private_api.h"]
namespace bluetoothPrivate {
// Events that can occur during pairing. The method used for pairing varies
// depending on the capability of the two devices.
enum PairingEventType {
// An alphanumeric PIN code is required to be entered by the user.
requestPincode,
// Display a PIN code to the user.
displayPincode,
// A numeric passkey is required to be entered by the user.
requestPasskey,
// Display a zero padded 6 digit numeric passkey that the user entered on
// the remote device. This event may occur multiple times during pairing to
// update the entered passkey.
displayPasskey,
// The number of keys inputted by the user on the remote device when
// entering a passkey. This event may be called multiple times during
// pairing to update the number of keys inputted.
keysEntered,
// Requests that a 6 digit passkey be displayed and the user confirms that
// both devies show the same passkey.
confirmPasskey,
// Requests authorization for a pairing under the just-works model. It is up
// to the app to ask for user confirmation.
requestAuthorization,
// Pairing is completed.
complete
};
// Results for connect(). See function declaration for details.
enum ConnectResultType {
alreadyConnected,
authCanceled,
authFailed,
authRejected,
authTimeout,
failed,
inProgress,
success,
unknownError,
unsupportedDevice
};
// Valid pairing responses.
enum PairingResponse {
confirm, reject, cancel
};
enum TransportType {
le, bredr, dual
};
// A pairing event received from a Bluetooth device.
dictionary PairingEvent {
PairingEventType pairing;
bluetooth.Device device;
DOMString? pincode;
long? passkey;
long? enteredKey;
};
dictionary NewAdapterState {
// The human-readable name of the adapter.
DOMString? name;
// Whether or not the adapter has power.
boolean? powered;
// Whether the adapter is discoverable by other devices.
boolean? discoverable;
};
dictionary SetPairingResponseOptions {
// The remote device to send the pairing response.
bluetooth.Device device;
// The response type.
PairingResponse response;
// A 1-16 character alphanumeric set in response to
// <code>requestPincode</code>.
DOMString? pincode;
// An integer between 0-999999 set in response to
// <code>requestPasskey</code>.
long? passkey;
};
dictionary DiscoveryFilter {
// Transport type.
TransportType? transport;
// uuid of service or array of uuids
(DOMString or DOMString[])? uuids;
// RSSI ranging value. Only devices with RSSI higher than this value will be
// reported.
long? rssi;
// Pathloss ranging value. Only devices with pathloss lower than this value
// will be reported.
long? pathloss;
};
callback VoidCallback = void();
callback ConnectCallback = void(ConnectResultType result);
// These functions all report failures via chrome.runtime.lastError.
interface Functions {
// Changes the state of the Bluetooth adapter.
// |adapterState|: The new state of the adapter.
// |callback|: Called when all the state changes have been completed.
static void setAdapterState(NewAdapterState adapterState,
optional VoidCallback callback);
static void setPairingResponse(SetPairingResponseOptions options,
optional VoidCallback callback);
// Tears down all connections to the given device.
static void disconnectAll(DOMString deviceAddress,
optional VoidCallback callback);
// Forgets the given device.
static void forgetDevice(DOMString deviceAddress,
optional VoidCallback callback);
// Set or clear discovery filter.
static void setDiscoveryFilter(DiscoveryFilter discoveryFilter,
optional VoidCallback callback);
// Connects to the given device. This will only throw an error if the
// device address is invalid or the device is already connected. Otherwise
// this will succeed and invoke |callback| with ConnectResultType.
static void connect(DOMString deviceAddress,
optional ConnectCallback callback);
// Pairs the given device.
static void pair(DOMString deviceAddress, optional VoidCallback callback);
};
interface Events {
// Fired when a pairing event occurs.
// |pairingEvent|: A pairing event.
[maxListeners=1] static void onPairing(PairingEvent pairingEvent);
};
};