Index: device/bluetooth/bluez/bluetooth_remote_gatt_service_bluez.h |
diff --git a/device/bluetooth/bluetooth_remote_gatt_service_bluez.h b/device/bluetooth/bluez/bluetooth_remote_gatt_service_bluez.h |
similarity index 69% |
rename from device/bluetooth/bluetooth_remote_gatt_service_bluez.h |
rename to device/bluetooth/bluez/bluetooth_remote_gatt_service_bluez.h |
index 9be0eef949555c94185c50d24fd4cb7fb372763f..46192a794da576c8a0128af55ae63fd842cfb198 100644 |
--- a/device/bluetooth/bluetooth_remote_gatt_service_bluez.h |
+++ b/device/bluetooth/bluez/bluetooth_remote_gatt_service_bluez.h |
@@ -1,20 +1,21 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef DEVICE_BLUETOOTH_BLUETOOTH_REMOTE_GATT_SERVICE_BLUEZ_H_ |
-#define DEVICE_BLUETOOTH_BLUETOOTH_REMOTE_GATT_SERVICE_BLUEZ_H_ |
+#ifndef DEVICE_BLUETOOTH_BLUEZ_BLUETOOTH_REMOTE_GATT_SERVICE_BLUEZ_H_ |
+#define DEVICE_BLUETOOTH_BLUEZ_BLUETOOTH_REMOTE_GATT_SERVICE_BLUEZ_H_ |
#include <stdint.h> |
+#include <map> |
#include <string> |
#include <vector> |
-#include "base/callback_forward.h" |
#include "base/macros.h" |
#include "base/memory/weak_ptr.h" |
#include "dbus/object_path.h" |
-#include "device/bluetooth/bluetooth_gatt_service_bluez.h" |
+#include "device/bluetooth/bluetooth_remote_gatt_service.h" |
#include "device/bluetooth/bluetooth_uuid.h" |
+#include "device/bluetooth/bluez/bluetooth_gatt_service_bluez.h" |
#include "device/bluetooth/dbus/bluetooth_gatt_characteristic_client.h" |
#include "device/bluetooth/dbus/bluetooth_gatt_service_client.h" |
@@ -22,7 +23,7 @@ namespace device { |
class BluetoothAdapter; |
class BluetoothDevice; |
-class BluetoothGattCharacteristic; |
+class BluetoothRemoteGattCharacteristic; |
} // namespace device |
@@ -31,27 +32,26 @@ namespace bluez { |
class BluetoothAdapterBlueZ; |
class BluetoothDeviceBlueZ; |
class BluetoothRemoteGattCharacteristicBlueZ; |
-class BluetoothGattDescriptorBlueZ; |
+class BluetoothRemoteGattDescriptorBlueZ; |
// The BluetoothRemoteGattServiceBlueZ class implements BluetootGattService |
// for remote GATT services for platforms that use BlueZ. |
class BluetoothRemoteGattServiceBlueZ |
: public BluetoothGattServiceBlueZ, |
public BluetoothGattServiceClient::Observer, |
- public BluetoothGattCharacteristicClient::Observer { |
+ public BluetoothGattCharacteristicClient::Observer, |
+ public device::BluetoothRemoteGattService { |
public: |
- // device::BluetoothGattService overrides. |
+ // device::BluetoothRemoteGattService overrides. |
device::BluetoothUUID GetUUID() const override; |
- bool IsLocal() const override; |
- bool IsPrimary() const override; |
device::BluetoothDevice* GetDevice() const override; |
- bool AddCharacteristic( |
- device::BluetoothGattCharacteristic* characteristic) override; |
- bool AddIncludedService(device::BluetoothGattService* service) override; |
- void Register(const base::Closure& callback, |
- const ErrorCallback& error_callback) override; |
- void Unregister(const base::Closure& callback, |
- const ErrorCallback& error_callback) override; |
+ bool IsPrimary() const override; |
+ std::vector<device::BluetoothRemoteGattCharacteristic*> GetCharacteristics() |
+ const override; |
+ std::vector<device::BluetoothRemoteGattService*> GetIncludedServices() |
+ const override; |
+ device::BluetoothRemoteGattCharacteristic* GetCharacteristic( |
+ const std::string& identifier) const override; |
// Notifies its observers that the GATT service has changed. This is mainly |
// used by BluetoothRemoteGattCharacteristicBlueZ instances to notify |
@@ -66,7 +66,7 @@ class BluetoothRemoteGattServiceBlueZ |
// be sent. |
void NotifyDescriptorAddedOrRemoved( |
BluetoothRemoteGattCharacteristicBlueZ* characteristic, |
- BluetoothGattDescriptorBlueZ* descriptor, |
+ BluetoothRemoteGattDescriptorBlueZ* descriptor, |
bool added); |
// Notifies its observers that the value of a descriptor has changed. Called |
@@ -74,7 +74,7 @@ class BluetoothRemoteGattServiceBlueZ |
// observers. |
void NotifyDescriptorValueChanged( |
BluetoothRemoteGattCharacteristicBlueZ* characteristic, |
- BluetoothGattDescriptorBlueZ* descriptor, |
+ BluetoothRemoteGattDescriptorBlueZ* descriptor, |
const std::vector<uint8_t>& value); |
private: |
@@ -100,6 +100,17 @@ class BluetoothRemoteGattServiceBlueZ |
// here since |device_| owns this instance. |
BluetoothDeviceBlueZ* device_; |
+ // TODO(rkc): Investigate and fix ownership of the characteristic objects in |
+ // this map. See crbug.com/604166. |
+ using CharacteristicMap = |
+ std::map<dbus::ObjectPath, BluetoothRemoteGattCharacteristicBlueZ*>; |
+ |
+ // Mapping from GATT characteristic object paths to characteristic objects. |
+ // owned by this service. Since the BlueZ implementation uses object |
+ // paths as unique identifiers, we also use this mapping to return |
+ // characteristics by identifier. |
+ CharacteristicMap characteristics_; |
+ |
// Indicates whether or not the characteristics of this service are known to |
// have been discovered. |
bool discovery_complete_; |
@@ -113,4 +124,4 @@ class BluetoothRemoteGattServiceBlueZ |
} // namespace bluez |
-#endif // DEVICE_BLUETOOTH_BLUETOOTH_REMOTE_GATT_SERVICE_BLUEZ_H_ |
+#endif // DEVICE_BLUETOOTH_BLUEZ_BLUETOOTH_REMOTE_GATT_SERVICE_BLUEZ_H_ |