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

Unified Diff: device/bluetooth/bluetooth_task_manager_win.h

Issue 1606013002: BLE GATT service implementation in Chrome for Windows 8 and later (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update Build.gn Created 4 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 side-by-side diff with in-line comments
Download patch
Index: device/bluetooth/bluetooth_task_manager_win.h
diff --git a/device/bluetooth/bluetooth_task_manager_win.h b/device/bluetooth/bluetooth_task_manager_win.h
index 8882d42f935b7a4e7dcb9aaeed517a53f7901a02..b9f2ff2223a970120b9db33e5f255ae36a1916e9 100644
--- a/device/bluetooth/bluetooth_task_manager_win.h
+++ b/device/bluetooth/bluetooth_task_manager_win.h
@@ -18,6 +18,7 @@
#include "base/win/scoped_handle.h"
#include "device/bluetooth/bluetooth_adapter.h"
#include "device/bluetooth/bluetooth_export.h"
+#include "device/bluetooth/bluetooth_low_energy_win.h"
namespace base {
@@ -56,6 +57,8 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothTaskManagerWin
std::vector<uint8_t> sdp_bytes;
// Properties specific to Bluetooth LE devices.
BluetoothUUID gatt_uuid;
+ uint16_t gatt_attribute_handle;
+ base::FilePath path;
};
struct DEVICE_BLUETOOTH_EXPORT DeviceState {
@@ -112,6 +115,105 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothTaskManagerWin
void PostStartDiscoveryTask();
void PostStopDiscoveryTask();
+ // Callbacks of asynchronous operations of GATT services, characteristics and
+ // descriptors.
+ typedef base::Callback<void(HRESULT)> HResultCallback;
+ typedef base::Callback<void(PBTH_LE_GATT_SERVICE, uint16_t, HRESULT)>
+ GetGattIncludedServicesCallback;
+ typedef base::Callback<void(PBTH_LE_GATT_CHARACTERISTIC, uint16_t, HRESULT)>
+ GetGattIncludedCharacteristicsCallback;
+ typedef base::Callback<void(PBTH_LE_GATT_CHARACTERISTIC_VALUE, HRESULT)>
+ ReadCharacteristicValueCallback;
+ typedef base::Callback<void(PBTH_LE_GATT_DESCRIPTOR, uint16_t, HRESULT)>
+ GetGattIncludedDescriptorsCallback;
+ typedef base::Callback<void(PBTH_LE_GATT_DESCRIPTOR_VALUE, HRESULT)>
+ ReadDescriptorValueCallback;
+ typedef base::Callback<void(BLUETOOTH_GATT_EVENT_HANDLE, HRESULT)>
+ GattEventRegistrationCallback;
+
+ // Get all included services of a given service. The service is uniquely
+ // identified by its |uuid| and |attribute_handle| on service device
+ // |service_path|. The result is returned asynchronously through |callback|.
+ void PostGetGattIncludedServices(
+ const base::FilePath& service_path,
+ const BluetoothUUID& uuid,
+ uint16_t attribute_handle,
+ const GetGattIncludedServicesCallback& callback);
+
+ // Get all included characteristics of a given service. The service is
+ // uniquely identified by its |uuid| and |attribute_handle| on service device
+ // |service_path|. The result is returned asynchronously through |callback|.
+ void PostGetGattIncludedCharacteristics(
+ const base::FilePath& service_path,
+ const BluetoothUUID& uuid,
+ uint16_t attribute_handle,
+ const GetGattIncludedCharacteristicsCallback& callback);
+
+ // Read the value of a given |characteristic| in service |service_path|. The
+ // result is returned asynchronously through |callback|.
+ void PostReadCharacteristicValue(
+ const base::FilePath& device_path,
+ const PBTH_LE_GATT_CHARACTERISTIC characteristic,
+ const ReadCharacteristicValueCallback& callback);
+
+ // Write the value of a given |characteristic| in service |service_path| with
+ // the |new_value|. The operation result is returned asynchronously through
+ // |callback|.
+ void PostWriteCharacteristicValue(
+ const base::FilePath& service_path,
+ const PBTH_LE_GATT_CHARACTERISTIC characteristic,
+ const std::vector<uint8_t>& new_value,
+ const HResultCallback& callback);
+
+ // Reliable write the value of a given |characteristic| in service
+ // |service_path| with the |new_value|. The operation result is returned
+ // asynchronously through |callback|.
+ void PostReliableWriteCharacteristicValue(
+ const base::FilePath& service_path,
+ const PBTH_LE_GATT_CHARACTERISTIC characteristic,
+ const std::vector<uint8_t>& new_value,
+ const HResultCallback& callback);
+
+ // Get included descriptors of a given |characterisitc| in service
+ // |service_path|. The result is returned asynchronously through |callback|.
+ void PostGetGattIncludedDescriptors(
+ const base::FilePath& service_path,
+ const PBTH_LE_GATT_CHARACTERISTIC characteristic,
+ const GetGattIncludedDescriptorsCallback& callback);
+
+ // Read a given |descriptor| value in service |service_path|. The result is
+ // returned asynchronously through |callback|.
+ void PostReadDescriptorValue(const base::FilePath& service_path,
+ const PBTH_LE_GATT_DESCRIPTOR descriptor,
+ const ReadDescriptorValueCallback& callback);
+
+ // Write a given |descriptor| value in service |service_path| with the
+ // |new_value|. The operation result is returned asynchronously through
+ // |callback|.
+ void PostWriteDescriptorValue(const base::FilePath& service_path,
+ const PBTH_LE_GATT_DESCRIPTOR descriptor,
+ const std::vector<uint8_t>& new_value,
+ const HResultCallback& callback);
+
+ // Register a given |characteristic|'s value change notification of a service
+ // |service_path| with |registered_callback|. |context| is the given void
+ // pointer send back to caller through |registered_callback|. The operation
+ // result is returned asynchronously through |callback|.
+ void PostRegisterCharacteristicValueChangedEvent(
+ const base::FilePath& service_path,
+ const PBTH_LE_GATT_CHARACTERISTIC characteristic,
+ const GattEventRegistrationCallback& callback,
+ PFNBLUETOOTH_GATT_EVENT_CALLBACK registered_callback,
+ void* context);
+
+ // Unregister characteristic value change notification. |event_handle| was
+ // returned by PostRegisterCharacteristicValueChangedEvent.
+ void UnregisterCharacteristicValueChangedEvent(
+ BLUETOOTH_GATT_EVENT_HANDLE event_handle);
+
+ BluetoothUUID BluetoothLowEnergyUuidToBluetoothUuid(
+ const BTH_LE_UUID& bth_le_uuid);
+
private:
friend class base::RefCountedThreadSafe<BluetoothTaskManagerWin>;
friend class BluetoothTaskManagerWinTest;
@@ -139,6 +241,46 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothTaskManagerWin
const base::Closure& callback,
const BluetoothAdapter::ErrorCallback& error_callback);
+ // Gatt services related functions.
+ void GetGattIncludedServices(base::FilePath service_path,
+ BluetoothUUID uuid,
+ uint16_t attribute_handle,
+ const GetGattIncludedServicesCallback& callback);
+ void GetGattIncludedCharacteristics(
+ base::FilePath device_path,
+ BluetoothUUID uuid,
+ uint16_t attribute_handle,
+ const GetGattIncludedCharacteristicsCallback& callback);
+ void ReadCharacteristicValue(base::FilePath service_path,
+ BTH_LE_GATT_CHARACTERISTIC characteristic,
+ const ReadCharacteristicValueCallback& callback);
+ void WriteCharacteristicValue(base::FilePath device_path,
+ BTH_LE_GATT_CHARACTERISTIC characteristic,
+ std::vector<uint8_t> new_value,
+ const HResultCallback& callback);
+ void ReliableWriteCharacteristicValue(
+ base::FilePath service_path,
+ BTH_LE_GATT_CHARACTERISTIC characteristic,
+ std::vector<uint8_t> new_value,
+ const HResultCallback& callback);
+ void GetGattIncludedDescriptors(
+ base::FilePath service_path,
+ BTH_LE_GATT_CHARACTERISTIC characteristic,
+ const GetGattIncludedDescriptorsCallback& callback);
+ void ReadDescriptorValue(base::FilePath service_path,
+ BTH_LE_GATT_DESCRIPTOR descriptor,
+ const ReadDescriptorValueCallback& callback);
+ void WriteDescriptorValue(base::FilePath service_path,
+ BTH_LE_GATT_DESCRIPTOR descriptor,
+ std::vector<uint8_t> new_value,
+ const HResultCallback& callback);
+ void RegisterCharacteristicValueChangedEvent(
+ base::FilePath service_path,
+ BTH_LE_GATT_CHARACTERISTIC characteristic,
+ const GattEventRegistrationCallback& callback,
+ PFNBLUETOOTH_GATT_EVENT_CALLBACK registered_callback,
+ void* context);
+
// Starts discovery. Once the discovery starts, it issues a discovery inquiry
// with a short timeout, then issues more inquiries with greater timeout
// values. The discovery finishes when StopDiscovery() is called or timeout
@@ -194,8 +336,12 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothTaskManagerWin
// Discover Bluetooth Low Energy services for the given |device_path|.
bool DiscoverLowEnergyDeviceServices(
const base::FilePath& device_path,
+ const std::string device_address,
ScopedVector<ServiceRecordState>* service_record_states);
+ bool BluetoothUUIDToBLEUUIDWin(const BluetoothUUID& uuid,
+ BTH_LE_UUID* win_uuid);
+
// UI task runner reference.
scoped_refptr<base::SequencedTaskRunner> ui_task_runner_;

Powered by Google App Engine
This is Rietveld 408576698