Index: device/bluetooth/bluetooth_remote_gatt_service.h |
diff --git a/device/bluetooth/bluetooth_gatt_service_bluez.h b/device/bluetooth/bluetooth_remote_gatt_service.h |
similarity index 13% |
copy from device/bluetooth/bluetooth_gatt_service_bluez.h |
copy to device/bluetooth/bluetooth_remote_gatt_service.h |
index bdd03f0e0bd0336bf68d08acd396281ff5d901a4..e531fcdfdc49743e578c8cd97821b4e1348f005f 100644 |
--- a/device/bluetooth/bluetooth_gatt_service_bluez.h |
+++ b/device/bluetooth/bluetooth_remote_gatt_service.h |
@@ -2,80 +2,63 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef DEVICE_BLUETOOTH_BLUETOOTH_GATT_SERVICE_BLUEZ_H_ |
-#define DEVICE_BLUETOOTH_BLUETOOTH_GATT_SERVICE_BLUEZ_H_ |
+#ifndef DEVICE_BLUETOOTH_BLUETOOTH_REMOTE_GATT_SERVICE_H_ |
+#define DEVICE_BLUETOOTH_BLUETOOTH_REMOTE_GATT_SERVICE_H_ |
-#include <map> |
#include <string> |
#include <vector> |
#include "base/macros.h" |
-#include "dbus/object_path.h" |
+#include "device/bluetooth/bluetooth_export.h" |
#include "device/bluetooth/bluetooth_gatt_service.h" |
+#include "device/bluetooth/bluetooth_remote_gatt_characteristic.h" |
namespace device { |
-class BluetoothGattCharacteristic; |
- |
-} // namespace device |
- |
-namespace bluez { |
- |
-class BluetoothAdapterBlueZ; |
-class BluetoothDeviceBlueZ; |
-class BluetoothGattCharacteristicBlueZ; |
- |
-// The BluetoothGattServiceBlueZ class implements BluetootGattService |
-// for GATT services on platforms that use BlueZ. |
-class BluetoothGattServiceBlueZ : public device::BluetoothGattService { |
+class BluetoothDevice; |
+class BluetoothRemoteGattCharacteristic; |
+class BluetoothRemoteGattDescriptor; |
+ |
+// BluetoothRemoteGattService represents a remote GATT service. |
+// |
+// Instances of the BluetoothRemoteGATTService class are used to represent GATT |
+// attribute hierarchies that have been received from a |
+// remote Bluetooth GATT peripheral. Such BluetoothRemoteGattService instances |
+// are constructed and owned by a BluetoothDevice. |
+// |
+// Note: We use virtual inheritance on the GATT service since it will be |
+// inherited by platform specific versions of the GATT service classes also. The |
+// platform specific remote GATT service classes will inherit both this class |
+// and their GATT service class, hence causing an inheritance diamond. |
+class DEVICE_BLUETOOTH_EXPORT BluetoothRemoteGattService |
+ : public virtual BluetoothGattService { |
public: |
- // device::BluetoothGattService overrides. |
- std::string GetIdentifier() const override; |
- std::vector<device::BluetoothGattCharacteristic*> GetCharacteristics() |
- const override; |
- std::vector<device::BluetoothGattService*> GetIncludedServices() |
- const override; |
- device::BluetoothGattCharacteristic* GetCharacteristic( |
- const std::string& identifier) const override; |
- |
- // Object path of the underlying service. |
- const dbus::ObjectPath& object_path() const { return object_path_; } |
+ ~BluetoothRemoteGattService() override; |
- // Parses a named D-Bus error into a service error code. |
- static device::BluetoothGattService::GattErrorCode DBusErrorToServiceError( |
- const std::string error_name); |
+ // Returns the BluetoothDevice that this GATT service was received from, which |
+ // also owns this service. |
+ virtual BluetoothDevice* GetDevice() const = 0; |
- // Returns the adapter associated with this service. |
- BluetoothAdapterBlueZ* GetAdapter() const; |
+ // List of characteristics that belong to this service. |
+ virtual std::vector<BluetoothRemoteGattCharacteristic*> GetCharacteristics() |
+ const = 0; |
- protected: |
- BluetoothGattServiceBlueZ(BluetoothAdapterBlueZ* adapter, |
- const dbus::ObjectPath& object_path); |
- ~BluetoothGattServiceBlueZ() override; |
+ // List of GATT services that are included by this service. |
+ virtual std::vector<BluetoothRemoteGattService*> GetIncludedServices() |
+ const = 0; |
- // Does not take ownership of the characteristic object. |
- using CharacteristicMap = |
- std::map<dbus::ObjectPath, BluetoothGattCharacteristicBlueZ*>; |
+ // Returns the GATT characteristic with identifier |identifier| if it belongs |
+ // to this GATT service. |
+ virtual BluetoothRemoteGattCharacteristic* GetCharacteristic( |
+ const std::string& identifier) const = 0; |
- // 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_; |
+ protected: |
+ BluetoothRemoteGattService(); |
private: |
- friend class BluetoothDeviceBlueZ; |
- |
- // The adapter associated with this service. It's ok to store a raw pointer |
- // here since |adapter_| indirectly owns this instance. |
- BluetoothAdapterBlueZ* adapter_; |
- |
- // Object path of the GATT service. |
- dbus::ObjectPath object_path_; |
- |
- DISALLOW_COPY_AND_ASSIGN(BluetoothGattServiceBlueZ); |
+ DISALLOW_COPY_AND_ASSIGN(BluetoothRemoteGattService); |
}; |
-} // namespace bluez |
+} // namespace device |
-#endif // DEVICE_BLUETOOTH_BLUETOOTH_GATT_SERVICE_BLUEZ_H_ |
+#endif // DEVICE_BLUETOOTH_BLUETOOTH_REMOTE_GATT_SERVICE_H_ |