Index: device/bluetooth/bluetooth_remote_gatt_service.h |
diff --git a/device/bluetooth/bluetooth_remote_gatt_service.h b/device/bluetooth/bluetooth_remote_gatt_service.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..392b5e81182ec4b6a229f9209d4edd548f7d4ff0 |
--- /dev/null |
+++ b/device/bluetooth/bluetooth_remote_gatt_service.h |
@@ -0,0 +1,75 @@ |
+// 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_H_ |
+#define DEVICE_BLUETOOTH_BLUETOOTH_REMOTE_GATT_SERVICE_H_ |
+ |
+#include <string> |
+#include <vector> |
+ |
+#include "base/macros.h" |
+#include "device/bluetooth/bluetooth_export.h" |
+#include "device/bluetooth/bluetooth_gatt_service.h" |
+#include "device/bluetooth/bluetooth_remote_gatt_characteristic.h" |
+#include "device/bluetooth/bluetooth_uuid.h" |
+ |
+namespace device { |
+ |
+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: |
+ ~BluetoothRemoteGattService() override; |
+ |
+ // The Bluetooth-specific UUID of the service. |
+ virtual BluetoothUUID GetUUID() const = 0; |
+ |
+ // Returns the BluetoothDevice that this GATT service was received from, which |
+ // also owns this service. |
+ virtual BluetoothDevice* GetDevice() const = 0; |
+ |
+ // Indicates whether the type of this service is primary or secondary. A |
+ // primary service describes the primary function of the peripheral that |
+ // hosts it, while a secondary service only makes sense in the presence of a |
+ // primary service. A primary service may include other primary or secondary |
+ // services. |
+ virtual bool IsPrimary() const = 0; |
+ |
+ // List of characteristics that belong to this service. |
+ virtual std::vector<BluetoothRemoteGattCharacteristic*> GetCharacteristics() |
+ const = 0; |
+ |
+ // List of GATT services that are included by this service. |
+ virtual std::vector<BluetoothRemoteGattService*> GetIncludedServices() |
+ const = 0; |
+ |
+ // Returns the GATT characteristic with identifier |identifier| if it belongs |
+ // to this GATT service. |
+ virtual BluetoothRemoteGattCharacteristic* GetCharacteristic( |
+ const std::string& identifier) const = 0; |
+ |
+ protected: |
+ BluetoothRemoteGattService(); |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(BluetoothRemoteGattService); |
+}; |
+ |
+} // namespace device |
+ |
+#endif // DEVICE_BLUETOOTH_BLUETOOTH_REMOTE_GATT_SERVICE_H_ |