Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Side by Side Diff: device/bluetooth/bluetooth_device.h

Issue 2421713002: arc: bluetooth: Expose missing advertise data. (Closed)
Patch Set: fix comment Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_H_ 5 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_H_
6 #define DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_H_ 6 #define DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
11 #include <memory> 11 #include <memory>
12 #include <set> 12 #include <set>
13 #include <string> 13 #include <string>
14 #include <unordered_map>
14 #include <unordered_set> 15 #include <unordered_set>
15 #include <vector> 16 #include <vector>
16 17
17 #include "base/callback.h" 18 #include "base/callback.h"
18 #include "base/containers/scoped_ptr_hash_map.h" 19 #include "base/containers/scoped_ptr_hash_map.h"
19 #include "base/gtest_prod_util.h" 20 #include "base/gtest_prod_util.h"
20 #include "base/memory/ref_counted.h" 21 #include "base/memory/ref_counted.h"
21 #include "base/optional.h" 22 #include "base/optional.h"
22 #include "base/strings/string16.h" 23 #include "base/strings/string16.h"
23 #include "base/time/time.h" 24 #include "base/time/time.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 ERROR_WRITE_NOT_PERMITTED, 96 ERROR_WRITE_NOT_PERMITTED,
96 NUM_CONNECT_ERROR_CODES // Keep as last enum. 97 NUM_CONNECT_ERROR_CODES // Keep as last enum.
97 }; 98 };
98 99
99 typedef std::vector<BluetoothUUID> UUIDList; 100 typedef std::vector<BluetoothUUID> UUIDList;
100 typedef std::unordered_set<BluetoothUUID, BluetoothUUIDHash> UUIDSet; 101 typedef std::unordered_set<BluetoothUUID, BluetoothUUIDHash> UUIDSet;
101 typedef std::unordered_map<BluetoothUUID, 102 typedef std::unordered_map<BluetoothUUID,
102 std::vector<uint8_t>, 103 std::vector<uint8_t>,
103 BluetoothUUIDHash> 104 BluetoothUUIDHash>
104 ServiceDataMap; 105 ServiceDataMap;
106 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.
107 typedef std::unordered_map<ManufacturerID, std::vector<uint8_t>>
108 ManufacturerDataMap;
109 typedef std::unordered_set<ManufacturerID> ManufacturerIDSet;
105 110
106 // Mapping from the platform-specific GATT service identifiers to 111 // Mapping from the platform-specific GATT service identifiers to
107 // BluetoothRemoteGattService objects. 112 // BluetoothRemoteGattService objects.
108 typedef base::ScopedPtrHashMap<std::string, 113 typedef base::ScopedPtrHashMap<std::string,
109 std::unique_ptr<BluetoothRemoteGattService>> 114 std::unique_ptr<BluetoothRemoteGattService>>
110 GattServiceMap; 115 GattServiceMap;
111 116
112 // Interface for negotiating pairing of bluetooth devices. 117 // Interface for negotiating pairing of bluetooth devices.
113 class PairingDelegate { 118 class PairingDelegate {
114 public: 119 public:
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 317
313 // Returns the UUIDs of services for which the device advertises Service Data. 318 // Returns the UUIDs of services for which the device advertises Service Data.
314 // Returns an empty set if the adapter is not discovering. 319 // Returns an empty set if the adapter is not discovering.
315 UUIDSet GetServiceDataUUIDs() const; 320 UUIDSet GetServiceDataUUIDs() const;
316 321
317 // Returns a pointer to the Service Data for Service with |uuid|. Returns 322 // Returns a pointer to the Service Data for Service with |uuid|. Returns
318 // nullptr if |uuid| has no Service Data. 323 // nullptr if |uuid| has no Service Data.
319 const std::vector<uint8_t>* GetServiceDataForUUID( 324 const std::vector<uint8_t>* GetServiceDataForUUID(
320 const BluetoothUUID& uuid) const; 325 const BluetoothUUID& uuid) const;
321 326
327 // Returns advertised Manufacturer Data. Keys are 16 bits Manufacturer IDs
328 // followed by its byte array value. Returns an empty map if the device
329 // does not advertise any Manufacturer Data.
330 // 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.
331 //
332 // Note that only BlueZ supports this now. This method returns an empty map
333 // 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.
334 const ManufacturerDataMap& GetManufacturerData() const;
335
336 // Returns the Manufacturer Data IDs of Manufacturers for which the device
337 // advertises Manufacturer Data.
338 // Returns cached value if the adapter is not discovering.
339 ManufacturerIDSet GetManufacturerDataIDs() const;
340
341 // Returns a pointer to the Manufacturer Data for Manufacturer with
342 // |manufacturerID|. Returns nullptr if |manufacturerID| has no Manufacturer
343 // Data. Returns cached value if the adapter is not discovering.
344 const std::vector<uint8_t>* GetManufacturerDataForID(
345 const ManufacturerID manufacturerID) const;
346
322 // The received signal strength, in dBm. This field is avaliable and valid 347 // The received signal strength, in dBm. This field is avaliable and valid
323 // only during discovery. 348 // only during discovery.
324 // TODO(http://crbug.com/580406): Devirtualize once BlueZ sets inquiry_rssi_. 349 // TODO(http://crbug.com/580406): Devirtualize once BlueZ sets inquiry_rssi_.
325 virtual base::Optional<int8_t> GetInquiryRSSI() const; 350 virtual base::Optional<int8_t> GetInquiryRSSI() const;
326 351
327 // The transmitted power level. This field is avaliable only for LE devices 352 // The transmitted power level. This field is avaliable only for LE devices
328 // that include this field in AD. It is avaliable and valid only during 353 // that include this field in AD. It is avaliable and valid only during
329 // discovery. 354 // discovery.
330 // TODO(http://crbug.com/580406): Devirtualize once BlueZ sets 355 // TODO(http://crbug.com/580406): Devirtualize once BlueZ sets
331 // inquiry_tx_power_. 356 // inquiry_tx_power_.
332 virtual base::Optional<int8_t> GetInquiryTxPower() const; 357 virtual base::Optional<int8_t> GetInquiryTxPower() const;
333 358
359 // Returns Advertising Data Flags.
360 // Returns cached value if the adapter is not discovering.
361 //
362 // 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.
363 // on platforms that don't use BlueZ.
364 virtual base::Optional<uint8_t> GetAdvertisingDataFlags() const;
365
334 // The ErrorCallback is used for methods that can fail in which case it 366 // The ErrorCallback is used for methods that can fail in which case it
335 // is called, in the success case the callback is simply not called. 367 // is called, in the success case the callback is simply not called.
336 typedef base::Callback<void()> ErrorCallback; 368 typedef base::Callback<void()> ErrorCallback;
337 369
338 // The ConnectErrorCallback is used for methods that can fail with an error, 370 // The ConnectErrorCallback is used for methods that can fail with an error,
339 // passed back as an error code argument to this callback. 371 // passed back as an error code argument to this callback.
340 // In the success case this callback is not called. 372 // In the success case this callback is not called.
341 typedef base::Callback<void(enum ConnectErrorCode)> ConnectErrorCallback; 373 typedef base::Callback<void(enum ConnectErrorCode)> ConnectErrorCallback;
342 374
343 typedef base::Callback<void(const ConnectionInfo&)> ConnectionInfoCallback; 375 typedef base::Callback<void(const ConnectionInfo&)> ConnectionInfoCallback;
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 650
619 // Tx Power advertised by the device. 651 // Tx Power advertised by the device.
620 base::Optional<int8_t> inquiry_tx_power_; 652 base::Optional<int8_t> inquiry_tx_power_;
621 653
622 // Class that holds the union of Advertised UUIDs and Service UUIDs. 654 // Class that holds the union of Advertised UUIDs and Service UUIDs.
623 DeviceUUIDs device_uuids_; 655 DeviceUUIDs device_uuids_;
624 656
625 // Map of BluetoothUUIDs to their advertised Service Data. 657 // Map of BluetoothUUIDs to their advertised Service Data.
626 ServiceDataMap service_data_; 658 ServiceDataMap service_data_;
627 659
660 // Map of Manufacturer IDs to their advertised Manufacturer Data.
661 ManufacturerDataMap manufacturer_data_;
662
628 // Timestamp for when an advertisement was last seen. 663 // Timestamp for when an advertisement was last seen.
629 base::Time last_update_time_; 664 base::Time last_update_time_;
630 665
631 private: 666 private:
632 // Returns a localized string containing the device's bluetooth address and 667 // Returns a localized string containing the device's bluetooth address and
633 // a device type for display when |name_| is empty. 668 // a device type for display when |name_| is empty.
634 base::string16 GetAddressWithLocalizedDeviceTypeName() const; 669 base::string16 GetAddressWithLocalizedDeviceTypeName() const;
635 }; 670 };
636 671
637 } // namespace device 672 } // namespace device
638 673
639 #endif // DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_H_ 674 #endif // DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698