Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 module bluetooth.mojom; | 5 module bluetooth.mojom; |
| 6 | 6 |
| 7 import "device/bluetooth/public/interfaces/device.mojom"; | 7 import "device/bluetooth/public/interfaces/device.mojom"; |
| 8 | 8 |
| 9 // Possible errors sent as a response by Adapter.ConnectToDevice on a Device | 9 // Possible errors sent as a response by Adapter.ConnectToDevice on a Device |
| 10 // connection request. | 10 // connection request. |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 32 struct AdapterInfo { | 32 struct AdapterInfo { |
| 33 string address; | 33 string address; |
| 34 string name; | 34 string name; |
| 35 bool initialized; | 35 bool initialized; |
| 36 bool present; | 36 bool present; |
| 37 bool powered; | 37 bool powered; |
| 38 bool discoverable; | 38 bool discoverable; |
| 39 bool discovering; | 39 bool discovering; |
| 40 }; | 40 }; |
| 41 | 41 |
| 42 interface DiscoverySession { | |
| 43 // Returns true if the session is active, false otherwise. If false, the | |
| 44 // adapter might still be discovering as there might still be other active | |
| 45 // sessions; this just means that this instance no longer has a say in | |
| 46 // whether or not discovery should continue. In this case, a new | |
| 47 // DiscoverySession should be started to make sure that device discovery | |
| 48 // continues. | |
| 49 IsActive() => (bool active); | |
| 50 | |
| 51 // Requests this discovery session instance to stop. If this instance is | |
| 52 // active, the session will stop. After a successful invocation, the | |
| 53 // adapter may or may not stop device discovery, depending on whether or not | |
| 54 // other active discovery sessions are present. Users are highly encouraged | |
| 55 // to call this method to end a discovery session, instead of relying on | |
| 56 // disconnecting the message pipe, so that they can respond to the result. | |
| 57 // Returns true on success. Returns false if this session is inactive or an | |
| 58 // error occurs while stopping the session. | |
| 59 Stop() => (bool success); | |
| 60 }; | |
| 61 | |
| 42 interface Adapter { | 62 interface Adapter { |
| 43 // Gets basic information about the adapter. | |
| 44 GetInfo() => (AdapterInfo info); | |
| 45 | |
| 46 // Creates a GATT connection to the device with |address| and returns a | 63 // Creates a GATT connection to the device with |address| and returns a |
| 47 // Device if the connection was succesful. The GATT connection is tied to the | 64 // Device if the connection was succesful. The GATT connection is tied to the |
| 48 // the lifetime of the Device message pipe. | 65 // the lifetime of the Device message pipe. |
| 49 ConnectToDevice(string address) => (ConnectResult result, Device? device); | 66 ConnectToDevice(string address) => (ConnectResult result, Device? device); |
| 50 | 67 |
| 51 // Retrieves the list of the devices known by the adapter including Connected | 68 // Retrieves the list of the devices known by the adapter including Connected |
| 52 // Devices, GATT Connected Devices, Paired Devices and Devices discovered | 69 // Devices, GATT Connected Devices, Paired Devices and Devices discovered |
| 53 // during a classic or low-energy scan. | 70 // during a classic or low-energy scan. |
| 54 GetDevices() => (array<DeviceInfo> devices); | 71 GetDevices() => (array<DeviceInfo> devices); |
| 55 | 72 |
| 73 // Gets basic information about the adapter. | |
| 74 GetInfo() => (AdapterInfo info); | |
| 75 | |
| 56 // Sets the client that listens for the adapter's events. | 76 // Sets the client that listens for the adapter's events. |
| 57 SetClient(AdapterClient client); | 77 SetClient(AdapterClient client); |
|
dcheng
2017/01/05 22:28:23
Btw, is there ever a time when we'd want to create
mbrunson
2017/01/06 01:18:56
The bluetooth-internals is currently the only user
dcheng
2017/01/06 02:45:50
Would we create multiple BluetoothAdapter mojo imp
mbrunson
2017/01/06 03:09:41
Every Adapter that is requested is a new strongly
dcheng
2017/01/06 22:45:31
Hmm. I'm not really sure what the best long-term a
mbrunson
2017/01/06 23:14:37
SGTM
| |
| 78 | |
| 79 // Requests the adapter to start a new discovery session. Returns null if | |
| 80 // session not created successfully. | |
| 81 StartDiscoverySession() => (DiscoverySession? session); | |
| 58 }; | 82 }; |
| 59 | 83 |
| 60 interface AdapterClient { | 84 interface AdapterClient { |
| 85 // Called when the discovering state of the adapter changes. | |
| 86 DiscoveringChanged(bool discovering); | |
| 87 | |
| 61 // Called the first time a device is discovered. | 88 // Called the first time a device is discovered. |
| 62 DeviceAdded(DeviceInfo device); | 89 DeviceAdded(DeviceInfo device); |
| 63 | 90 |
| 64 // Called after the device hasn't been seen for 3 minutes. | |
| 65 DeviceRemoved(DeviceInfo device); | |
| 66 | |
| 67 // Called when one of the following properties of a device changes: | 91 // Called when one of the following properties of a device changes: |
| 68 // Address, appearance, Bluetooth class, Inquiry RSSI, Inquiry TX Power, | 92 // Address, appearance, Bluetooth class, Inquiry RSSI, Inquiry TX Power, |
| 69 // Service UUIDs, Connectionable state, Connection state, Pairing state, | 93 // Service UUIDs, Connectionable state, Connection state, Pairing state, |
| 70 // Trustable state. | 94 // Trustable state. |
|
dcheng
2017/01/05 22:28:23
What properties of DeviceInfo *can't* change? IOW,
mbrunson
2017/01/06 01:18:56
Almost all properties of a device could change exc
dcheng
2017/01/06 02:45:50
It's not necessary in this CL, but I would prefer
mbrunson
2017/01/06 03:09:41
Hmm. My main concern is that Device and DeviceInfo
dcheng
2017/01/06 22:45:31
This isn't a blocker for this CL, but one of the n
mbrunson
2017/01/06 23:14:37
So, there would be some kind of message in the Ada
| |
| 71 // Generally called for each advertisement packet recevied, but this is not | 95 // Generally called for each advertisement packet recevied, but this is not |
| 72 // guaranteed on ChromeOS or Linux. Because the RSSI is always changing, | 96 // guaranteed on ChromeOS or Linux. Because the RSSI is always changing, |
| 73 // it's very likely this will be called for each advertising packet. | 97 // it's very likely this will be called for each advertising packet. |
| 74 DeviceChanged(DeviceInfo device); | 98 DeviceChanged(DeviceInfo device); |
| 99 | |
| 100 // Called after the device hasn't been seen for 3 minutes. | |
| 101 DeviceRemoved(DeviceInfo device); | |
| 102 | |
| 75 }; | 103 }; |
| 76 | 104 |
| 77 interface AdapterFactory { | 105 interface AdapterFactory { |
| 78 // Gets an Adapter interface. Returns null if Bluetooth is not supported. | 106 // Gets an Adapter interface. Returns null if Bluetooth is not supported. |
| 79 GetAdapter() => (Adapter? adapter); | 107 GetAdapter() => (Adapter? adapter); |
| 80 }; | 108 }; |
| OLD | NEW |