| 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 |