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

Side by Side Diff: chromeos/components/tether/ble_scanner.h

Issue 2604063003: [CrOS Tether] Create BleScanner, a class which scan BLE advertisements and identifies nearby device… (Closed)
Patch Set: Adjusted comment. Created 3 years, 11 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef CHROMEOS_COMPONENTS_BLE_SCANNER_H_
6 #define CHROMEOS_COMPONENTS_BLE_SCANNER_H_
7
8 #include <map>
9
10 #include "base/macros.h"
11 #include "base/memory/weak_ptr.h"
12 #include "base/observer_list.h"
13 #include "chromeos/components/tether/local_device_data_provider.h"
14 #include "components/cryptauth/eid_generator.h"
15 #include "device/bluetooth/bluetooth_adapter.h"
16 #include "device/bluetooth/bluetooth_adapter_factory.h"
17
18 namespace device {
19 class BluetoothDevice;
20 class BluetoothDiscoverySession;
21 }
22
23 namespace chromeos {
24
25 namespace tether {
26
27 class BleScanner : public device::BluetoothAdapter::Observer {
28 public:
29 class Observer {
30 public:
31 virtual void OnReceivedAdvertisementFromDevice(
32 const device::BluetoothDevice* bluetooth_device,
33 cryptauth::RemoteDevice remote_device) = 0;
34 };
35
36 BleScanner(const LocalDeviceDataProvider* local_device_data_provider);
37 ~BleScanner() override;
38
39 bool RegisterScanFilterForDevice(const cryptauth::RemoteDevice& device);
40 bool UnregisterScanFilterForDevice(const cryptauth::RemoteDevice& device);
41
42 bool IsDeviceRegistered(const std::string& device_id);
43
44 void AddObserver(Observer* observer);
45 void RemoveObserver(Observer* observer);
46
47 // device::BluetoothAdapter::Observer
48 void AdapterPoweredChanged(device::BluetoothAdapter* adapter,
49 bool powered) override;
50 void DeviceAdded(device::BluetoothAdapter* adapter,
51 device::BluetoothDevice* device) override;
Ryan Hansberry 2017/01/04 00:01:03 nit: because there are mixed mentions of RemoteDev
Kyle Horimoto 2017/01/04 18:35:43 Done.
52 void DeviceChanged(device::BluetoothAdapter* adapter,
53 device::BluetoothDevice* device) override;
54
55 private:
56 friend class BleScannerTest;
57
58 class Delegate {
59 public:
60 virtual ~Delegate() {}
61 virtual bool IsBluetoothAdapterAvailable() const = 0;
62 virtual void GetAdapter(
63 const device::BluetoothAdapterFactory::AdapterCallback& callback) = 0;
64 virtual const std::vector<uint8_t>* GetServiceDataForUUID(
65 const device::BluetoothUUID& service_uuid,
66 device::BluetoothDevice* device) = 0;
67 };
68
69 class DelegateImpl : public Delegate {
70 public:
71 DelegateImpl();
72 ~DelegateImpl() override;
73 bool IsBluetoothAdapterAvailable() const override;
74 void GetAdapter(const device::BluetoothAdapterFactory::AdapterCallback&
75 callback) override;
76 const std::vector<uint8_t>* GetServiceDataForUUID(
77 const device::BluetoothUUID& service_uuid,
78 device::BluetoothDevice* device) override;
79 };
80
81 BleScanner(std::unique_ptr<Delegate> delegate,
82 const cryptauth::EidGenerator* eid_generator,
83 const LocalDeviceDataProvider* local_device_data_provider);
84
85 void UpdateDiscoveryStatus();
86 void InitializeBluetoothAdapter();
87 void OnAdapterInitialized(scoped_refptr<device::BluetoothAdapter> adapter);
88 void StartDiscoverySession();
89 void OnDiscoverySessionStarted(
90 std::unique_ptr<device::BluetoothDiscoverySession> discovery_session);
91 void OnStartDiscoverySessionError();
92 void StopDiscoverySession();
93 void HandleDeviceUpdated(device::BluetoothDevice* device);
94 void CheckForMatchingScanFilters(device::BluetoothDevice* device,
95 std::string& service_data);
96
97 std::unique_ptr<Delegate> delegate_;
98
99 // |eid_generator_| and |local_device_data_provider_| are not owned by this
100 // instance and must outlive it.
101 const cryptauth::EidGenerator* eid_generator_;
102 const LocalDeviceDataProvider* local_device_data_provider_;
103
104 bool initializing_adapter_;
Ryan Hansberry 2017/01/04 00:01:03 nit: can you prefix this and 'initializing_discove
Kyle Horimoto 2017/01/04 18:35:43 Done.
105 scoped_refptr<device::BluetoothAdapter> adapter_;
106
107 bool initializing_discovery_session_;
108 std::unique_ptr<device::BluetoothDiscoverySession> discovery_session_;
109
110 std::vector<cryptauth::RemoteDevice> registered_devices_;
Ryan Hansberry 2017/01/04 00:01:04 Similar comment to my nit above: this would be bet
Kyle Horimoto 2017/01/04 18:35:43 Done.
111
112 base::ObserverList<Observer> observer_list_;
113
114 base::WeakPtrFactory<BleScanner> weak_ptr_factory_;
115
116 DISALLOW_COPY_AND_ASSIGN(BleScanner);
117 };
118
119 } // namespace tether
120
121 } // namespace chromeos
122
123 #endif // CHROMEOS_COMPONENTS_BLE_SCANNER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698