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

Unified Diff: device/bluetooth/bluetooth_remote_gatt_service_chromeos.h

Issue 228643004: device/bluetooth: Add chromeos::BluetoothRemoteGattCharacteristicChromeOS. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed potentially flaky expectation from unit test. Created 6 years, 8 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_remote_gatt_service_chromeos.h
diff --git a/device/bluetooth/bluetooth_remote_gatt_service_chromeos.h b/device/bluetooth/bluetooth_remote_gatt_service_chromeos.h
index d2c8c6c6f3d9e313348ee0f63829f76ce8744264..cfb00c60b12d8bbef5df37f2d6433c5201e071a7 100644
--- a/device/bluetooth/bluetooth_remote_gatt_service_chromeos.h
+++ b/device/bluetooth/bluetooth_remote_gatt_service_chromeos.h
@@ -5,11 +5,13 @@
#ifndef DEVICE_BLUETOOTH_BLUETOOTH_REMOTE_GATT_SERVICE_CHROMEOS_H_
#define DEVICE_BLUETOOTH_BLUETOOTH_REMOTE_GATT_SERVICE_CHROMEOS_H_
+#include <map>
#include <string>
#include <vector>
#include "base/memory/weak_ptr.h"
#include "base/observer_list.h"
+#include "chromeos/dbus/bluetooth_gatt_characteristic_client.h"
#include "chromeos/dbus/bluetooth_gatt_service_client.h"
#include "dbus/object_path.h"
#include "device/bluetooth/bluetooth_gatt_service.h"
@@ -24,26 +26,30 @@ class BluetoothGattCharacteristic;
namespace chromeos {
class BluetoothDeviceChromeOS;
+class BluetoothRemoteGattCharacteristicChromeOS;
// The BluetoothRemoteGattServiceChromeOS class implements BluetootGattService
// for remote GATT services on the the Chrome OS platform.
class BluetoothRemoteGattServiceChromeOS
: public device::BluetoothGattService,
- public BluetoothGattServiceClient::Observer {
+ public BluetoothGattServiceClient::Observer,
+ public BluetoothGattCharacteristicClient::Observer {
public:
// device::BluetoothGattService overrides.
+ virtual void AddObserver(
+ device::BluetoothGattService::Observer* observer) OVERRIDE;
+ virtual void RemoveObserver(
+ device::BluetoothGattService::Observer* observer) OVERRIDE;
virtual std::string GetIdentifier() const OVERRIDE;
virtual device::BluetoothUUID GetUUID() const OVERRIDE;
virtual bool IsLocal() const OVERRIDE;
virtual bool IsPrimary() const OVERRIDE;
- virtual const std::vector<device::BluetoothGattCharacteristic*>&
+ virtual std::vector<device::BluetoothGattCharacteristic*>
GetCharacteristics() const OVERRIDE;
- virtual const std::vector<device::BluetoothGattService*>&
+ virtual std::vector<device::BluetoothGattService*>
GetIncludedServices() const OVERRIDE;
- virtual void AddObserver(
- device::BluetoothGattService::Observer* observer) OVERRIDE;
- virtual void RemoveObserver(
- device::BluetoothGattService::Observer* observer) OVERRIDE;
+ virtual device::BluetoothGattCharacteristic* GetCharacteristic(
+ const std::string& identifier) OVERRIDE;
virtual bool AddCharacteristic(
device::BluetoothGattCharacteristic* characteristic) OVERRIDE;
virtual bool AddIncludedService(
@@ -68,6 +74,15 @@ class BluetoothRemoteGattServiceChromeOS
const dbus::ObjectPath& object_path,
const std::string& property_name) OVERRIDE;
+ // BluetoothGattCharacteristicClient::Observer override.
+ virtual void GattCharacteristicAdded(
+ const dbus::ObjectPath& object_path) OVERRIDE;
+ virtual void GattCharacteristicRemoved(
+ const dbus::ObjectPath& object_path) OVERRIDE;
+ virtual void GattCharacteristicPropertyChanged(
+ const dbus::ObjectPath& object_path,
+ const std::string& property_name) OVERRIDE;
+
// Object path of the GATT service.
dbus::ObjectPath object_path_;
@@ -77,11 +92,13 @@ class BluetoothRemoteGattServiceChromeOS
// The device this GATT service belongs to.
BluetoothDeviceChromeOS* device_;
- // The list of characteristics that belong to this service.
- std::vector<device::BluetoothGattCharacteristic*> characteristics_;
-
- // The list of GATT services included by this service.
- std::vector<device::BluetoothGattService*> includes_;
+ // Mapping from GATT characteristic object paths to characteristic objects.
+ // owned by this service. Since the Chrome OS implementation uses object
+ // paths as unique identifiers, we also use this mapping to return
+ // characteristics by identifier.
+ typedef std::map<dbus::ObjectPath, BluetoothRemoteGattCharacteristicChromeOS*>
+ CharacteristicMap;
+ CharacteristicMap characteristics_;
// Note: This should remain the last member so it'll be destroyed and
// invalidate its weak pointers before any other members are destroyed.

Powered by Google App Engine
This is Rietveld 408576698