OLD | NEW |
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_TASK_MANAGER_WIN_H_ | 5 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_TASK_MANAGER_WIN_H_ |
6 #define DEVICE_BLUETOOTH_BLUETOOTH_TASK_MANAGER_WIN_H_ | 6 #define DEVICE_BLUETOOTH_BLUETOOTH_TASK_MANAGER_WIN_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <string> | 10 #include <string> |
11 #include <vector> | 11 #include <vector> |
12 | 12 |
13 #include "base/files/file_path.h" | 13 #include "base/files/file_path.h" |
14 #include "base/macros.h" | 14 #include "base/macros.h" |
15 #include "base/memory/ref_counted.h" | 15 #include "base/memory/ref_counted.h" |
16 #include "base/memory/scoped_vector.h" | 16 #include "base/memory/scoped_vector.h" |
17 #include "base/observer_list.h" | 17 #include "base/observer_list.h" |
18 #include "base/win/scoped_handle.h" | 18 #include "base/win/scoped_handle.h" |
19 #include "device/bluetooth/bluetooth_adapter.h" | 19 #include "device/bluetooth/bluetooth_adapter.h" |
20 #include "device/bluetooth/bluetooth_export.h" | 20 #include "device/bluetooth/bluetooth_export.h" |
| 21 #include "device/bluetooth/bluetooth_low_energy_win.h" |
21 | 22 |
22 namespace base { | 23 namespace base { |
23 | 24 |
24 class SequencedTaskRunner; | 25 class SequencedTaskRunner; |
25 class SequencedWorkerPool; | 26 class SequencedWorkerPool; |
26 | 27 |
27 } // namespace base | 28 } // namespace base |
28 | 29 |
29 namespace device { | 30 namespace device { |
30 | 31 |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 // to an active discovery session. Note that for a given device (address), | 97 // to an active discovery session. Note that for a given device (address), |
97 // the associated state can change over time. For example, during a | 98 // the associated state can change over time. For example, during a |
98 // discovery session, the "friendly" name may initially be "unknown" before | 99 // discovery session, the "friendly" name may initially be "unknown" before |
99 // the actual name is retrieved in subsequent poll events. | 100 // the actual name is retrieved in subsequent poll events. |
100 virtual void DevicesPolled(const ScopedVector<DeviceState>& devices) {} | 101 virtual void DevicesPolled(const ScopedVector<DeviceState>& devices) {} |
101 }; | 102 }; |
102 | 103 |
103 explicit BluetoothTaskManagerWin( | 104 explicit BluetoothTaskManagerWin( |
104 scoped_refptr<base::SequencedTaskRunner> ui_task_runner); | 105 scoped_refptr<base::SequencedTaskRunner> ui_task_runner); |
105 | 106 |
| 107 static BluetoothUUID BluetoothLowEnergyUuidToBluetoothUuid( |
| 108 const BTH_LE_UUID& bth_le_uuid); |
| 109 |
106 void AddObserver(Observer* observer); | 110 void AddObserver(Observer* observer); |
107 void RemoveObserver(Observer* observer); | 111 void RemoveObserver(Observer* observer); |
108 | 112 |
109 void Initialize(); | 113 void Initialize(); |
110 void InitializeWithBluetoothTaskRunner( | 114 void InitializeWithBluetoothTaskRunner( |
111 scoped_refptr<base::SequencedTaskRunner> bluetooth_task_runner); | 115 scoped_refptr<base::SequencedTaskRunner> bluetooth_task_runner); |
112 void Shutdown(); | 116 void Shutdown(); |
113 | 117 |
114 void PostSetPoweredBluetoothTask( | 118 void PostSetPoweredBluetoothTask( |
115 bool powered, | 119 bool powered, |
116 const base::Closure& callback, | 120 const base::Closure& callback, |
117 const BluetoothAdapter::ErrorCallback& error_callback); | 121 const BluetoothAdapter::ErrorCallback& error_callback); |
118 void PostStartDiscoveryTask(); | 122 void PostStartDiscoveryTask(); |
119 void PostStopDiscoveryTask(); | 123 void PostStopDiscoveryTask(); |
120 | 124 |
| 125 // Callbacks of asynchronous operations of GATT service. |
| 126 typedef base::Callback< |
| 127 void(scoped_ptr<BTH_LE_GATT_CHARACTERISTIC>, uint16_t, HRESULT)> |
| 128 GetGattIncludedCharacteristicsCallback; |
| 129 |
| 130 // Get all included characteristics of a given service. The service is |
| 131 // uniquely identified by its |uuid| and |attribute_handle| with service |
| 132 // device |service_path|. The result is returned asynchronously through |
| 133 // |callback|. |
| 134 void PostGetGattIncludedCharacteristics( |
| 135 const base::FilePath& service_path, |
| 136 const BluetoothUUID& uuid, |
| 137 uint16_t attribute_handle, |
| 138 const GetGattIncludedCharacteristicsCallback& callback); |
| 139 |
121 private: | 140 private: |
122 friend class base::RefCountedThreadSafe<BluetoothTaskManagerWin>; | 141 friend class base::RefCountedThreadSafe<BluetoothTaskManagerWin>; |
123 friend class BluetoothTaskManagerWinTest; | 142 friend class BluetoothTaskManagerWinTest; |
124 | 143 |
125 static const int kPollIntervalMs; | 144 static const int kPollIntervalMs; |
126 | 145 |
127 virtual ~BluetoothTaskManagerWin(); | 146 virtual ~BluetoothTaskManagerWin(); |
128 | 147 |
129 // Logs Win32 errors occurring during polling on the worker thread. The method | 148 // Logs Win32 errors occurring during polling on the worker thread. The method |
130 // may discard messages to avoid logging being too verbose. | 149 // may discard messages to avoid logging being too verbose. |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 bool DiscoverLowEnergyDeviceServices( | 220 bool DiscoverLowEnergyDeviceServices( |
202 const base::FilePath& device_path, | 221 const base::FilePath& device_path, |
203 ScopedVector<ServiceRecordState>* service_record_states); | 222 ScopedVector<ServiceRecordState>* service_record_states); |
204 | 223 |
205 // Search for device paths of the GATT services in |*service_record_states| | 224 // Search for device paths of the GATT services in |*service_record_states| |
206 // from |device_address|. | 225 // from |device_address|. |
207 bool SearchForGattServiceDevicePaths( | 226 bool SearchForGattServiceDevicePaths( |
208 const std::string device_address, | 227 const std::string device_address, |
209 ScopedVector<ServiceRecordState>* service_record_states); | 228 ScopedVector<ServiceRecordState>* service_record_states); |
210 | 229 |
| 230 // GATT service related functions. |
| 231 void GetGattIncludedCharacteristics( |
| 232 base::FilePath device_path, |
| 233 BluetoothUUID uuid, |
| 234 uint16_t attribute_handle, |
| 235 const GetGattIncludedCharacteristicsCallback& callback); |
| 236 |
211 // UI task runner reference. | 237 // UI task runner reference. |
212 scoped_refptr<base::SequencedTaskRunner> ui_task_runner_; | 238 scoped_refptr<base::SequencedTaskRunner> ui_task_runner_; |
213 | 239 |
214 scoped_refptr<base::SequencedWorkerPool> worker_pool_; | 240 scoped_refptr<base::SequencedWorkerPool> worker_pool_; |
215 scoped_refptr<base::SequencedTaskRunner> bluetooth_task_runner_; | 241 scoped_refptr<base::SequencedTaskRunner> bluetooth_task_runner_; |
216 | 242 |
217 // List of observers interested in event notifications. | 243 // List of observers interested in event notifications. |
218 base::ObserverList<Observer> observers_; | 244 base::ObserverList<Observer> observers_; |
219 | 245 |
220 // Weak reference of the adapter handle, let BluetoothClassicWrapper handle | 246 // Weak reference of the adapter handle, let BluetoothClassicWrapper handle |
221 // the close of |adapter_handle_|. | 247 // the close of |adapter_handle_|. |
222 HANDLE adapter_handle_; | 248 HANDLE adapter_handle_; |
223 | 249 |
224 // indicates whether the adapter is in discovery mode or not. | 250 // indicates whether the adapter is in discovery mode or not. |
225 bool discovering_; | 251 bool discovering_; |
226 | 252 |
227 // Use for discarding too many log messages. | 253 // Use for discarding too many log messages. |
228 base::TimeTicks current_logging_batch_ticks_; | 254 base::TimeTicks current_logging_batch_ticks_; |
229 int current_logging_batch_count_; | 255 int current_logging_batch_count_; |
230 | 256 |
231 DISALLOW_COPY_AND_ASSIGN(BluetoothTaskManagerWin); | 257 DISALLOW_COPY_AND_ASSIGN(BluetoothTaskManagerWin); |
232 }; | 258 }; |
233 | 259 |
234 } // namespace device | 260 } // namespace device |
235 | 261 |
236 #endif // DEVICE_BLUETOOTH_BLUETOOTH_TASK_MANAGER_WIN_H_ | 262 #endif // DEVICE_BLUETOOTH_BLUETOOTH_TASK_MANAGER_WIN_H_ |
OLD | NEW |