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

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

Issue 1739383002: Implement read & write remote GATT characteristic value for Windows (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments Created 4 years, 9 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_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>
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 virtual void DiscoveryStarted(bool success) {} 92 virtual void DiscoveryStarted(bool success) {}
93 virtual void DiscoveryStopped() {} 93 virtual void DiscoveryStopped() {}
94 // Called when the adapter has just been polled for the list of *all* known 94 // Called when the adapter has just been polled for the list of *all* known
95 // devices. This includes devices previously paired, devices paired using 95 // devices. This includes devices previously paired, devices paired using
96 // the underlying Operating System UI, and devices discovered recently due 96 // the underlying Operating System UI, and devices discovered recently due
97 // 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),
98 // the associated state can change over time. For example, during a 98 // the associated state can change over time. For example, during a
99 // discovery session, the "friendly" name may initially be "unknown" before 99 // discovery session, the "friendly" name may initially be "unknown" before
100 // the actual name is retrieved in subsequent poll events. 100 // the actual name is retrieved in subsequent poll events.
101 virtual void DevicesPolled(const ScopedVector<DeviceState>& devices) {} 101 virtual void DevicesPolled(const ScopedVector<DeviceState>& devices) {}
102 virtual void OnAttemptReadGattCharacteristic() {}
103 virtual void OnAttemptWriteGattCharacteristic() {}
102 }; 104 };
103 105
104 explicit BluetoothTaskManagerWin( 106 explicit BluetoothTaskManagerWin(
105 scoped_refptr<base::SequencedTaskRunner> ui_task_runner); 107 scoped_refptr<base::SequencedTaskRunner> ui_task_runner);
106 108
107 static BluetoothUUID BluetoothLowEnergyUuidToBluetoothUuid( 109 static BluetoothUUID BluetoothLowEnergyUuidToBluetoothUuid(
108 const BTH_LE_UUID& bth_le_uuid); 110 const BTH_LE_UUID& bth_le_uuid);
109 111
110 void AddObserver(Observer* observer); 112 void AddObserver(Observer* observer);
111 void RemoveObserver(Observer* observer); 113 void RemoveObserver(Observer* observer);
112 114
113 void Initialize(); 115 void Initialize();
114 void InitializeWithBluetoothTaskRunner( 116 void InitializeWithBluetoothTaskRunner(
115 scoped_refptr<base::SequencedTaskRunner> bluetooth_task_runner); 117 scoped_refptr<base::SequencedTaskRunner> bluetooth_task_runner);
116 void Shutdown(); 118 void Shutdown();
117 119
118 void PostSetPoweredBluetoothTask( 120 void PostSetPoweredBluetoothTask(
119 bool powered, 121 bool powered,
120 const base::Closure& callback, 122 const base::Closure& callback,
121 const BluetoothAdapter::ErrorCallback& error_callback); 123 const BluetoothAdapter::ErrorCallback& error_callback);
122 void PostStartDiscoveryTask(); 124 void PostStartDiscoveryTask();
123 void PostStopDiscoveryTask(); 125 void PostStopDiscoveryTask();
124 126
125 // Callbacks of asynchronous operations of GATT service. 127 // Callbacks of asynchronous operations of GATT service.
128 typedef base::Callback<void(HRESULT)> HResultCallback;
126 typedef base::Callback< 129 typedef base::Callback<
127 void(scoped_ptr<BTH_LE_GATT_CHARACTERISTIC>, uint16_t, HRESULT)> 130 void(scoped_ptr<BTH_LE_GATT_CHARACTERISTIC>, uint16_t, HRESULT)>
128 GetGattIncludedCharacteristicsCallback; 131 GetGattIncludedCharacteristicsCallback;
129 typedef base::Callback< 132 typedef base::Callback<
130 void(scoped_ptr<BTH_LE_GATT_DESCRIPTOR>, uint16_t, HRESULT)> 133 void(scoped_ptr<BTH_LE_GATT_DESCRIPTOR>, uint16_t, HRESULT)>
131 GetGattIncludedDescriptorsCallback; 134 GetGattIncludedDescriptorsCallback;
135 typedef base::Callback<void(scoped_ptr<BTH_LE_GATT_CHARACTERISTIC_VALUE>,
136 HRESULT)>
137 ReadGattCharacteristicValueCallback;
132 138
133 // Get all included characteristics of a given service. The service is 139 // Get all included characteristics of a given service. The service is
134 // uniquely identified by its |uuid| and |attribute_handle| with service 140 // uniquely identified by its |uuid| and |attribute_handle| with service
135 // device |service_path|. The result is returned asynchronously through 141 // device |service_path|. The result is returned asynchronously through
136 // |callback|. 142 // |callback|.
137 void PostGetGattIncludedCharacteristics( 143 void PostGetGattIncludedCharacteristics(
138 const base::FilePath& service_path, 144 const base::FilePath& service_path,
139 const BluetoothUUID& uuid, 145 const BluetoothUUID& uuid,
140 uint16_t attribute_handle, 146 uint16_t attribute_handle,
141 const GetGattIncludedCharacteristicsCallback& callback); 147 const GetGattIncludedCharacteristicsCallback& callback);
142 148
143 // Get all included descriptors of a given |characterisitc| in service 149 // Get all included descriptors of a given |characterisitc| in service
144 // with |service_path|. The result is returned asynchronously through 150 // with |service_path|. The result is returned asynchronously through
145 // |callback|. 151 // |callback|.
146 void PostGetGattIncludedDescriptors( 152 void PostGetGattIncludedDescriptors(
147 const base::FilePath& service_path, 153 const base::FilePath& service_path,
148 const PBTH_LE_GATT_CHARACTERISTIC characteristic, 154 const PBTH_LE_GATT_CHARACTERISTIC characteristic,
149 const GetGattIncludedDescriptorsCallback& callback); 155 const GetGattIncludedDescriptorsCallback& callback);
150 156
157 // Post read the value of a given |characteristic| in service with
158 // |service_path|. The result is returned asynchronously through |callback|.
159 void PostReadGattCharacteristicValue(
160 const base::FilePath& device_path,
161 const PBTH_LE_GATT_CHARACTERISTIC characteristic,
162 const ReadGattCharacteristicValueCallback& callback);
163
164 // Post write the value of a given |characteristic| in service with
165 // |service_path| to |new_value|. The operation result is returned
166 // asynchronously through |callback|.
167 void PostWriteGattCharacteristicValue(
168 const base::FilePath& service_path,
169 const PBTH_LE_GATT_CHARACTERISTIC characteristic,
170 const std::vector<uint8_t>& new_value,
171 const HResultCallback& callback);
172
151 private: 173 private:
152 friend class base::RefCountedThreadSafe<BluetoothTaskManagerWin>; 174 friend class base::RefCountedThreadSafe<BluetoothTaskManagerWin>;
153 friend class BluetoothTaskManagerWinTest; 175 friend class BluetoothTaskManagerWinTest;
154 176
155 static const int kPollIntervalMs; 177 static const int kPollIntervalMs;
156 178
157 virtual ~BluetoothTaskManagerWin(); 179 virtual ~BluetoothTaskManagerWin();
158 180
159 // Logs Win32 errors occurring during polling on the worker thread. The method 181 // Logs Win32 errors occurring during polling on the worker thread. The method
160 // may discard messages to avoid logging being too verbose. 182 // may discard messages to avoid logging being too verbose.
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 // GATT service related functions. 263 // GATT service related functions.
242 void GetGattIncludedCharacteristics( 264 void GetGattIncludedCharacteristics(
243 base::FilePath device_path, 265 base::FilePath device_path,
244 BluetoothUUID uuid, 266 BluetoothUUID uuid,
245 uint16_t attribute_handle, 267 uint16_t attribute_handle,
246 const GetGattIncludedCharacteristicsCallback& callback); 268 const GetGattIncludedCharacteristicsCallback& callback);
247 void GetGattIncludedDescriptors( 269 void GetGattIncludedDescriptors(
248 base::FilePath service_path, 270 base::FilePath service_path,
249 BTH_LE_GATT_CHARACTERISTIC characteristic, 271 BTH_LE_GATT_CHARACTERISTIC characteristic,
250 const GetGattIncludedDescriptorsCallback& callback); 272 const GetGattIncludedDescriptorsCallback& callback);
273 void ReadGattCharacteristicValue(
274 base::FilePath device_path,
275 BTH_LE_GATT_CHARACTERISTIC characteristic,
276 const ReadGattCharacteristicValueCallback& callback);
277 void WriteGattCharacteristicValue(base::FilePath service_path,
278 BTH_LE_GATT_CHARACTERISTIC characteristic,
279 std::vector<uint8_t> new_value,
280 const HResultCallback& callback);
251 281
252 // UI task runner reference. 282 // UI task runner reference.
253 scoped_refptr<base::SequencedTaskRunner> ui_task_runner_; 283 scoped_refptr<base::SequencedTaskRunner> ui_task_runner_;
254 284
255 scoped_refptr<base::SequencedWorkerPool> worker_pool_; 285 scoped_refptr<base::SequencedWorkerPool> worker_pool_;
256 scoped_refptr<base::SequencedTaskRunner> bluetooth_task_runner_; 286 scoped_refptr<base::SequencedTaskRunner> bluetooth_task_runner_;
257 287
258 // List of observers interested in event notifications. 288 // List of observers interested in event notifications.
259 base::ObserverList<Observer> observers_; 289 base::ObserverList<Observer> observers_;
260 290
261 // Weak reference of the adapter handle, let BluetoothClassicWrapper handle 291 // Weak reference of the adapter handle, let BluetoothClassicWrapper handle
262 // the close of |adapter_handle_|. 292 // the close of |adapter_handle_|.
263 HANDLE adapter_handle_; 293 HANDLE adapter_handle_;
264 294
265 // indicates whether the adapter is in discovery mode or not. 295 // indicates whether the adapter is in discovery mode or not.
266 bool discovering_; 296 bool discovering_;
267 297
268 // Use for discarding too many log messages. 298 // Use for discarding too many log messages.
269 base::TimeTicks current_logging_batch_ticks_; 299 base::TimeTicks current_logging_batch_ticks_;
270 int current_logging_batch_count_; 300 int current_logging_batch_count_;
271 301
272 DISALLOW_COPY_AND_ASSIGN(BluetoothTaskManagerWin); 302 DISALLOW_COPY_AND_ASSIGN(BluetoothTaskManagerWin);
273 }; 303 };
274 304
275 } // namespace device 305 } // namespace device
276 306
277 #endif // DEVICE_BLUETOOTH_BLUETOOTH_TASK_MANAGER_WIN_H_ 307 #endif // DEVICE_BLUETOOTH_BLUETOOTH_TASK_MANAGER_WIN_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698