| // Copyright 2016 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. |
| |
| module bluetooth.mojom; |
| |
| import "device/bluetooth/public/mojom/device.mojom"; |
| |
| // Possible errors sent as a response by Adapter.ConnectToDevice on a Device |
| // connection request. |
| enum ConnectResult { |
| SUCCESS, |
| AUTH_CANCELED, |
| AUTH_FAILED, |
| AUTH_REJECTED, |
| AUTH_TIMEOUT, |
| FAILED, |
| INPROGRESS, |
| UNKNOWN, |
| UNSUPPORTED_DEVICE, |
| DEVICE_NO_LONGER_IN_RANGE, |
| }; |
| |
| struct AdapterInfo { |
| string address; |
| string name; |
| bool initialized; |
| bool present; |
| bool powered; |
| bool discoverable; |
| bool discovering; |
| }; |
| |
| interface DiscoverySession { |
| // Returns true if the session is active, false otherwise. If false, the |
| // adapter might still be discovering as there might still be other active |
| // sessions; this just means that this instance no longer has a say in |
| // whether or not discovery should continue. In this case, a new |
| // DiscoverySession should be started to make sure that device discovery |
| // continues. |
| IsActive() => (bool active); |
| |
| // Requests this discovery session instance to stop. If this instance is |
| // active, the session will stop. After a successful invocation, the |
| // adapter may or may not stop device discovery, depending on whether or not |
| // other active discovery sessions are present. Users are highly encouraged |
| // to call this method to end a discovery session, instead of relying on |
| // disconnecting the message pipe, so that they can respond to the result. |
| // Returns true on success. Returns false if this session is inactive or an |
| // error occurs while stopping the session. |
| Stop() => (bool success); |
| }; |
| |
| interface Adapter { |
| // Creates a GATT connection to the device with |address| and returns a |
| // Device if the connection was succesful. The GATT connection is tied to the |
| // the lifetime of the Device message pipe. |
| ConnectToDevice(string address) => (ConnectResult result, Device? device); |
| |
| // Retrieves the list of the devices known by the adapter including Connected |
| // Devices, GATT Connected Devices, Paired Devices and Devices discovered |
| // during a classic or low-energy scan. |
| GetDevices() => (array<DeviceInfo> devices); |
| |
| // Gets basic information about the adapter. |
| GetInfo() => (AdapterInfo info); |
| |
| // Sets the client that listens for the adapter's events. |
| SetClient(AdapterClient client); |
| |
| // Requests the adapter to start a new discovery session. Returns null if |
| // session not created successfully. |
| StartDiscoverySession() => (DiscoverySession? session); |
| }; |
| |
| interface AdapterClient { |
| // Called when the presence of the adapter changes. |
| PresentChanged(bool present); |
| |
| // Called when the radio power state of the adapter changes. |
| PoweredChanged(bool powered); |
| |
| // Called when the discoverability state of the adapter changes. |
| DiscoverableChanged(bool discoverable); |
| |
| // Called when the discovering state of the adapter changes. |
| DiscoveringChanged(bool discovering); |
| |
| // Called the first time a device is discovered. |
| DeviceAdded(DeviceInfo device); |
| |
| // Called when one of the following properties of a device changes: |
| // Address, appearance, Bluetooth class, Inquiry RSSI, Inquiry TX Power, |
| // Service UUIDs, Connectionable state, Connection state, Pairing state, |
| // Trustable state. |
| // Generally called for each advertisement packet recevied, but this is not |
| // guaranteed on ChromeOS or Linux. Because the RSSI is always changing, |
| // it's very likely this will be called for each advertising packet. |
| DeviceChanged(DeviceInfo device); |
| |
| // Called after the device hasn't been seen for 3 minutes. |
| DeviceRemoved(DeviceInfo device); |
| }; |
| |