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 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 scoped_refptr<base::SequencedTaskRunner> bluetooth_task_runner); | 112 scoped_refptr<base::SequencedTaskRunner> bluetooth_task_runner); |
112 void Shutdown(); | 113 void Shutdown(); |
113 | 114 |
114 void PostSetPoweredBluetoothTask( | 115 void PostSetPoweredBluetoothTask( |
115 bool powered, | 116 bool powered, |
116 const base::Closure& callback, | 117 const base::Closure& callback, |
117 const BluetoothAdapter::ErrorCallback& error_callback); | 118 const BluetoothAdapter::ErrorCallback& error_callback); |
118 void PostStartDiscoveryTask(); | 119 void PostStartDiscoveryTask(); |
119 void PostStopDiscoveryTask(); | 120 void PostStopDiscoveryTask(); |
120 | 121 |
| 122 // Callbacks of asynchronous operations of GATT service. |
| 123 typedef base::Callback< |
| 124 void(scoped_ptr<BTH_LE_GATT_SERVICE>, uint16_t, HRESULT)> |
| 125 GetGattIncludedServicesCallback; |
| 126 typedef base::Callback< |
| 127 void(scoped_ptr<BTH_LE_GATT_CHARACTERISTIC>, uint16_t, HRESULT)> |
| 128 GetGattIncludedCharacteristicsCallback; |
| 129 |
| 130 // Get all included services of a given service. The service is uniquely |
| 131 // identified by its |uuid| and |attribute_handle| with service device |
| 132 // |service_path|. The result is returned asynchronously through |callback|. |
| 133 void PostGetGattIncludedServices( |
| 134 const base::FilePath& service_path, |
| 135 const BluetoothUUID& uuid, |
| 136 uint16_t attribute_handle, |
| 137 const GetGattIncludedServicesCallback& callback); |
| 138 |
| 139 // Get all included characteristics of a given service. The service is |
| 140 // uniquely identified by its |uuid| and |attribute_handle| with service |
| 141 // device |service_path|. The result is returned asynchronously through |
| 142 // |callback|. |
| 143 void PostGetGattIncludedCharacteristics( |
| 144 const base::FilePath& service_path, |
| 145 const BluetoothUUID& uuid, |
| 146 uint16_t attribute_handle, |
| 147 const GetGattIncludedCharacteristicsCallback& callback); |
| 148 |
| 149 BluetoothUUID BluetoothLowEnergyUuidToBluetoothUuid( |
| 150 const BTH_LE_UUID& bth_le_uuid); |
| 151 |
121 private: | 152 private: |
122 friend class base::RefCountedThreadSafe<BluetoothTaskManagerWin>; | 153 friend class base::RefCountedThreadSafe<BluetoothTaskManagerWin>; |
123 friend class BluetoothTaskManagerWinTest; | 154 friend class BluetoothTaskManagerWinTest; |
124 | 155 |
125 static const int kPollIntervalMs; | 156 static const int kPollIntervalMs; |
126 | 157 |
127 virtual ~BluetoothTaskManagerWin(); | 158 virtual ~BluetoothTaskManagerWin(); |
128 | 159 |
129 // Logs Win32 errors occurring during polling on the worker thread. The method | 160 // Logs Win32 errors occurring during polling on the worker thread. The method |
130 // may discard messages to avoid logging being too verbose. | 161 // 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( | 232 bool DiscoverLowEnergyDeviceServices( |
202 const base::FilePath& device_path, | 233 const base::FilePath& device_path, |
203 ScopedVector<ServiceRecordState>* service_record_states); | 234 ScopedVector<ServiceRecordState>* service_record_states); |
204 | 235 |
205 // Search for device paths of the GATT services in |*service_record_states| | 236 // Search for device paths of the GATT services in |*service_record_states| |
206 // from |device_address|. | 237 // from |device_address|. |
207 bool SearchForGattServiceDevicePaths( | 238 bool SearchForGattServiceDevicePaths( |
208 const std::string device_address, | 239 const std::string device_address, |
209 ScopedVector<ServiceRecordState>* service_record_states); | 240 ScopedVector<ServiceRecordState>* service_record_states); |
210 | 241 |
| 242 // GATT service related functions. |
| 243 void GetGattIncludedServices(base::FilePath service_path, |
| 244 BluetoothUUID uuid, |
| 245 uint16_t attribute_handle, |
| 246 const GetGattIncludedServicesCallback& callback); |
| 247 void GetGattIncludedCharacteristics( |
| 248 base::FilePath device_path, |
| 249 BluetoothUUID uuid, |
| 250 uint16_t attribute_handle, |
| 251 const GetGattIncludedCharacteristicsCallback& callback); |
| 252 |
211 // UI task runner reference. | 253 // UI task runner reference. |
212 scoped_refptr<base::SequencedTaskRunner> ui_task_runner_; | 254 scoped_refptr<base::SequencedTaskRunner> ui_task_runner_; |
213 | 255 |
214 scoped_refptr<base::SequencedWorkerPool> worker_pool_; | 256 scoped_refptr<base::SequencedWorkerPool> worker_pool_; |
215 scoped_refptr<base::SequencedTaskRunner> bluetooth_task_runner_; | 257 scoped_refptr<base::SequencedTaskRunner> bluetooth_task_runner_; |
216 | 258 |
217 // List of observers interested in event notifications. | 259 // List of observers interested in event notifications. |
218 base::ObserverList<Observer> observers_; | 260 base::ObserverList<Observer> observers_; |
219 | 261 |
220 // Weak reference of the adapter handle, let BluetoothClassicWrapper handle | 262 // Weak reference of the adapter handle, let BluetoothClassicWrapper handle |
221 // the close of |adapter_handle_|. | 263 // the close of |adapter_handle_|. |
222 HANDLE adapter_handle_; | 264 HANDLE adapter_handle_; |
223 | 265 |
224 // indicates whether the adapter is in discovery mode or not. | 266 // indicates whether the adapter is in discovery mode or not. |
225 bool discovering_; | 267 bool discovering_; |
226 | 268 |
227 // Use for discarding too many log messages. | 269 // Use for discarding too many log messages. |
228 base::TimeTicks current_logging_batch_ticks_; | 270 base::TimeTicks current_logging_batch_ticks_; |
229 int current_logging_batch_count_; | 271 int current_logging_batch_count_; |
230 | 272 |
231 DISALLOW_COPY_AND_ASSIGN(BluetoothTaskManagerWin); | 273 DISALLOW_COPY_AND_ASSIGN(BluetoothTaskManagerWin); |
232 }; | 274 }; |
233 | 275 |
234 } // namespace device | 276 } // namespace device |
235 | 277 |
236 #endif // DEVICE_BLUETOOTH_BLUETOOTH_TASK_MANAGER_WIN_H_ | 278 #endif // DEVICE_BLUETOOTH_BLUETOOTH_TASK_MANAGER_WIN_H_ |
OLD | NEW |