Index: device/bluetooth/bluetooth_device.h |
diff --git a/device/bluetooth/bluetooth_device.h b/device/bluetooth/bluetooth_device.h |
index 803dd8f8ef32600f8deb24f241aa066c0721a02c..d47d2e895e8238460e08d8d04e13bd2b0cbc3dd9 100644 |
--- a/device/bluetooth/bluetooth_device.h |
+++ b/device/bluetooth/bluetooth_device.h |
@@ -11,6 +11,7 @@ |
#include <memory> |
#include <set> |
#include <string> |
+#include <unordered_map> |
#include <unordered_set> |
#include <vector> |
@@ -102,6 +103,10 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothDevice { |
std::vector<uint8_t>, |
BluetoothUUIDHash> |
ServiceDataMap; |
+ typedef uint16_t ManufacturerID; |
ortuno
2016/10/18 01:41:18
nit: s/ID/Id/ here and below. Though it really doe
puthik_chromium
2016/11/02 23:20:38
Done.
|
+ typedef std::unordered_map<ManufacturerID, std::vector<uint8_t>> |
+ ManufacturerDataMap; |
+ typedef std::unordered_set<ManufacturerID> ManufacturerIDSet; |
// Mapping from the platform-specific GATT service identifiers to |
// BluetoothRemoteGattService objects. |
@@ -319,6 +324,26 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothDevice { |
const std::vector<uint8_t>* GetServiceDataForUUID( |
const BluetoothUUID& uuid) const; |
+ // Returns advertised Manufacturer Data. Keys are 16 bits Manufacturer IDs |
+ // followed by its byte array value. Returns an empty map if the device |
+ // does not advertise any Manufacturer Data. |
+ // Returns cached value if the adapter is not discovering. |
ortuno
2016/10/18 01:41:18
What about changing Manufacturer Data? Does BlueZ
puthik_chromium
2016/11/02 23:20:38
Done.
|
+ // |
+ // Note that only BlueZ supports this now. This method returns an empty map |
+ // on platforms that don't use BlueZ. |
ortuno
2016/10/18 01:41:18
Could you open an issue to implement this on other
puthik_chromium
2016/11/02 23:20:38
Done.
|
+ const ManufacturerDataMap& GetManufacturerData() const; |
+ |
+ // Returns the Manufacturer Data IDs of Manufacturers for which the device |
+ // advertises Manufacturer Data. |
+ // Returns cached value if the adapter is not discovering. |
+ ManufacturerIDSet GetManufacturerDataIDs() const; |
+ |
+ // Returns a pointer to the Manufacturer Data for Manufacturer with |
+ // |manufacturerID|. Returns nullptr if |manufacturerID| has no Manufacturer |
+ // Data. Returns cached value if the adapter is not discovering. |
+ const std::vector<uint8_t>* GetManufacturerDataForID( |
+ const ManufacturerID manufacturerID) const; |
+ |
// The received signal strength, in dBm. This field is avaliable and valid |
// only during discovery. |
// TODO(http://crbug.com/580406): Devirtualize once BlueZ sets inquiry_rssi_. |
@@ -331,6 +356,13 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothDevice { |
// inquiry_tx_power_. |
virtual base::Optional<int8_t> GetInquiryTxPower() const; |
+ // Returns Advertising Data Flags. |
+ // Returns cached value if the adapter is not discovering. |
+ // |
+ // Note that only BlueZ supports this now. This method returns base::nullopt |
ortuno
2016/10/18 01:41:18
s/BlueZ/Chrome OS/ Also could you open an issue re
puthik_chromium
2016/11/02 23:20:38
Done.
|
+ // on platforms that don't use BlueZ. |
+ virtual base::Optional<uint8_t> GetAdvertisingDataFlags() const; |
+ |
// The ErrorCallback is used for methods that can fail in which case it |
// is called, in the success case the callback is simply not called. |
typedef base::Callback<void()> ErrorCallback; |
@@ -625,6 +657,9 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothDevice { |
// Map of BluetoothUUIDs to their advertised Service Data. |
ServiceDataMap service_data_; |
+ // Map of Manufacturer IDs to their advertised Manufacturer Data. |
+ ManufacturerDataMap manufacturer_data_; |
+ |
// Timestamp for when an advertisement was last seen. |
base::Time last_update_time_; |