| Index: device/bluetooth/bluetooth_remote_gatt_characteristic.h
|
| diff --git a/device/bluetooth/bluetooth_gatt_characteristic.h b/device/bluetooth/bluetooth_remote_gatt_characteristic.h
|
| similarity index 32%
|
| copy from device/bluetooth/bluetooth_gatt_characteristic.h
|
| copy to device/bluetooth/bluetooth_remote_gatt_characteristic.h
|
| index 6426c6df8f8c01d0a1a9dd944f918006252e0f4b..d8f9ff6dbdb8d0d9d0340d6bc37d60558e6fa8ab 100644
|
| --- a/device/bluetooth/bluetooth_gatt_characteristic.h
|
| +++ b/device/bluetooth/bluetooth_remote_gatt_characteristic.h
|
| @@ -1,89 +1,40 @@
|
| -// 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_GATT_CHARACTERISTIC_H_
|
| -#define DEVICE_BLUETOOTH_BLUETOOTH_GATT_CHARACTERISTIC_H_
|
| +#ifndef DEVICE_BLUETOOTH_BLUETOOTH_REMOTE_GATT_CHARACTERISTIC_H_
|
| +#define DEVICE_BLUETOOTH_BLUETOOTH_REMOTE_GATT_CHARACTERISTIC_H_
|
|
|
| #include <stdint.h>
|
| -
|
| -#include <memory>
|
| #include <string>
|
| #include <vector>
|
|
|
| #include "base/callback.h"
|
| +#include "base/callback_forward.h"
|
| #include "base/macros.h"
|
| #include "device/bluetooth/bluetooth_export.h"
|
| -#include "device/bluetooth/bluetooth_gatt_service.h"
|
| +#include "device/bluetooth/bluetooth_gatt_characteristic.h"
|
| #include "device/bluetooth/bluetooth_uuid.h"
|
|
|
| namespace device {
|
|
|
| -class BluetoothGattDescriptor;
|
| class BluetoothGattNotifySession;
|
| +class BluetoothRemoteGattDescriptor;
|
| +class BluetoothRemoteGattService;
|
|
|
| -// BluetoothGattCharacteristic represents a local or remote GATT characteristic.
|
| -// A GATT characteristic is a basic data element used to construct a GATT
|
| -// service. Hence, instances of a BluetoothGattCharacteristic are associated
|
| -// with a BluetoothGattService. There are two ways in which this class is used:
|
| +// BluetoothRemoteGattCharacteristic represents a remote GATT characteristic.
|
| +// This class is used to represent GATT characteristics that belong to a service
|
| +// hosted by a remote device. In this case the characteristic will be
|
| +// constructed by the subsystem.
|
| //
|
| -// 1. To represent GATT characteristics that belong to a service hosted by a
|
| -// remote device. In this case the characteristic will be constructed by
|
| -// the subsystem.
|
| -// 2. To represent GATT characteristics that belong to a locally hosted
|
| -// service. To achieve this, users can construct instances of
|
| -// BluetoothGattCharacteristic directly and add it to the desired
|
| -// BluetoothGattService instance that represents a local service.
|
| -class DEVICE_BLUETOOTH_EXPORT BluetoothGattCharacteristic {
|
| +// Note: We use virtual inheritance on the GATT characteristic since it will be
|
| +// inherited by platform specific versions of the GATT characteristic classes
|
| +// also. The platform specific remote GATT characteristic classes will inherit
|
| +// both this class and their GATT characteristic class, hence causing an
|
| +// inheritance diamond.
|
| +class DEVICE_BLUETOOTH_EXPORT BluetoothRemoteGattCharacteristic
|
| + : public virtual BluetoothGattCharacteristic {
|
| public:
|
| - // Values representing the possible properties of a characteristic, which
|
| - // define how the characteristic can be used. Each of these properties serve
|
| - // a role as defined in the Bluetooth Specification.
|
| - // |PROPERTY_EXTENDED_PROPERTIES| is a special property that, if present,
|
| - // indicates that there is a characteristic descriptor (namely the
|
| - // "Characteristic Extended Properties Descriptor" with UUID 0x2900) that
|
| - // contains additional properties pertaining to the characteristic.
|
| - // The properties "ReliableWrite| and |WriteAuxiliaries| are retrieved from
|
| - // that characteristic.
|
| - enum Property {
|
| - PROPERTY_NONE = 0,
|
| - PROPERTY_BROADCAST = 1 << 0,
|
| - PROPERTY_READ = 1 << 1,
|
| - PROPERTY_WRITE_WITHOUT_RESPONSE = 1 << 2,
|
| - PROPERTY_WRITE = 1 << 3,
|
| - PROPERTY_NOTIFY = 1 << 4,
|
| - PROPERTY_INDICATE = 1 << 5,
|
| - PROPERTY_AUTHENTICATED_SIGNED_WRITES = 1 << 6,
|
| - PROPERTY_EXTENDED_PROPERTIES = 1 << 7,
|
| - PROPERTY_RELIABLE_WRITE = 1 << 8,
|
| - PROPERTY_WRITABLE_AUXILIARIES = 1 << 9
|
| - };
|
| - typedef uint32_t Properties;
|
| -
|
| - // Values representing read, write, and encryption permissions for a
|
| - // characteristic's value. While attribute permissions for all GATT
|
| - // definitions have been set by the Bluetooth specification, characteristic
|
| - // value permissions are left up to the higher-level profile.
|
| - //
|
| - // Attribute permissions are distinct from the characteristic properties. For
|
| - // example, a characteristic may have the property |PROPERTY_READ| to make
|
| - // clients know that it is possible to read the characteristic value and have
|
| - // the permission |PERMISSION_READ_ENCRYPTED| to require a secure connection.
|
| - // It is up to the application to properly specify the permissions and
|
| - // properties for a local characteristic.
|
| - enum Permission {
|
| - PERMISSION_NONE = 0,
|
| - PERMISSION_READ = 1 << 0,
|
| - PERMISSION_WRITE = 1 << 1,
|
| - PERMISSION_READ_ENCRYPTED = 1 << 2,
|
| - PERMISSION_WRITE_ENCRYPTED = 1 << 3
|
| - };
|
| - typedef uint32_t Permissions;
|
| -
|
| - // The ErrorCallback is used by methods to asynchronously report errors.
|
| - typedef base::Callback<void(BluetoothGattService::GattErrorCode)>
|
| - ErrorCallback;
|
| -
|
| // The ValueCallback is used to return the value of a remote characteristic
|
| // upon a read request.
|
| typedef base::Callback<void(const std::vector<uint8_t>&)> ValueCallback;
|
| @@ -93,56 +44,13 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothGattCharacteristic {
|
| typedef base::Callback<void(std::unique_ptr<BluetoothGattNotifySession>)>
|
| NotifySessionCallback;
|
|
|
| - // Constructs a BluetoothGattCharacteristic that can be associated with a
|
| - // local GATT service when the adapter is in the peripheral role. To
|
| - // associate the returned characteristic with a service, add it to a local
|
| - // service by calling BluetoothGattService::AddCharacteristic.
|
| - //
|
| - // This method constructs a characteristic with UUID |uuid|, initial cached
|
| - // value |value|, properties |properties|, and permissions |permissions|.
|
| - // |value| will be cached and returned for read requests and automatically set
|
| - // for write requests by default, unless an instance of
|
| - // BluetoothGattService::Delegate has been provided to the associated
|
| - // BluetoothGattService instance, in which case the delegate will handle read
|
| - // and write requests.
|
| - //
|
| - // NOTE: Don't explicitly set |PROPERTY_EXTENDED_PROPERTIES| in |properties|.
|
| - // Instead, create and add a BluetoothGattDescriptor that represents the
|
| - // "Characteristic Extended Properties" descriptor and this will automatically
|
| - // set the correspoding bit in the characteristic's properties field. If
|
| - // |properties| has |PROPERTY_EXTENDED_PROPERTIES| set, it will be ignored.
|
| - static BluetoothGattCharacteristic* Create(const BluetoothUUID& uuid,
|
| - const std::vector<uint8_t>& value,
|
| - Properties properties,
|
| - Permissions permissions);
|
| -
|
| - // Identifier used to uniquely identify a GATT characteristic object. This is
|
| - // different from the characteristic UUID: while multiple characteristics with
|
| - // the same UUID can exist on a Bluetooth device, the identifier returned from
|
| - // this method is unique among all characteristics on the adapter. The
|
| - // contents of the identifier are platform specific.
|
| - virtual std::string GetIdentifier() const = 0;
|
| -
|
| - // The Bluetooth-specific UUID of the characteristic.
|
| - virtual BluetoothUUID GetUUID() const = 0;
|
| -
|
| - // Returns true, if this characteristic is hosted locally. If false, then this
|
| - // instance represents a remote GATT characteristic.
|
| - virtual bool IsLocal() const = 0;
|
| -
|
| // Returns the value of the characteristic. For remote characteristics, this
|
| // is the most recently cached value. For local characteristics, this is the
|
| // most recently updated value or the value retrieved from the delegate.
|
| virtual const std::vector<uint8_t>& GetValue() const = 0;
|
|
|
| // Returns a pointer to the GATT service this characteristic belongs to.
|
| - virtual BluetoothGattService* GetService() const = 0;
|
| -
|
| - // Returns the bitmask of characteristic properties.
|
| - virtual Properties GetProperties() const = 0;
|
| -
|
| - // Returns the bitmask of characteristic attribute permissions.
|
| - virtual Permissions GetPermissions() const = 0;
|
| + virtual BluetoothRemoteGattService* GetService() const = 0;
|
|
|
| // Returns whether or not this characteristic is currently sending value
|
| // updates in the form of a notification or indication.
|
| @@ -150,39 +58,20 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothGattCharacteristic {
|
|
|
| // Returns the list of GATT characteristic descriptors that provide more
|
| // information about this characteristic.
|
| - virtual std::vector<BluetoothGattDescriptor*>
|
| - GetDescriptors() const = 0;
|
| + virtual std::vector<BluetoothRemoteGattDescriptor*> GetDescriptors()
|
| + const = 0;
|
|
|
| // Returns the GATT characteristic descriptor with identifier |identifier| if
|
| // it belongs to this GATT characteristic.
|
| - virtual BluetoothGattDescriptor* GetDescriptor(
|
| + virtual BluetoothRemoteGattDescriptor* GetDescriptor(
|
| const std::string& identifier) const = 0;
|
|
|
| // Returns the GATT characteristic descriptors that match |uuid|. There may be
|
| // multiple, as illustrated by Core Bluetooth Specification [V4.2 Vol 3 Part G
|
| // 3.3.3.5 Characteristic Presentation Format].
|
| - std::vector<BluetoothGattDescriptor*> GetDescriptorsByUUID(
|
| + std::vector<BluetoothRemoteGattDescriptor*> GetDescriptorsByUUID(
|
| const BluetoothUUID& uuid);
|
|
|
| - // Adds a characteristic descriptor to the locally hosted characteristic
|
| - // represented by this instance. This method only makes sense for local
|
| - // characteristics and won't have an effect if this instance represents a
|
| - // remote GATT service and will return false. This method takes ownership
|
| - // of |descriptor|.
|
| - virtual bool AddDescriptor(BluetoothGattDescriptor* descriptor) = 0;
|
| -
|
| - // For locally hosted characteristics, updates the characteristic's value.
|
| - // This will update the value that is visible to remote devices and send out
|
| - // any notifications and indications that have been configured. This method
|
| - // can be used in place of, and in conjunction with,
|
| - // BluetoothGattService::Delegate methods to send updates to remote devices,
|
| - // or simply to set update the cached value for read requests without having
|
| - // to implement the delegate methods.
|
| - //
|
| - // This method only makes sense for local characteristics and does nothing and
|
| - // returns false if this instance represents a remote characteristic.
|
| - virtual bool UpdateValue(const std::vector<uint8_t>& value) = 0;
|
| -
|
| // Starts a notify session for the remote characteristic, if it supports
|
| // notifications/indications. On success, the characteristic starts sending
|
| // value notifications and |callback| is called with a session object whose
|
| @@ -214,13 +103,13 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothGattCharacteristic {
|
| const ErrorCallback& error_callback) = 0;
|
|
|
| protected:
|
| - BluetoothGattCharacteristic();
|
| - virtual ~BluetoothGattCharacteristic();
|
| + BluetoothRemoteGattCharacteristic();
|
| + ~BluetoothRemoteGattCharacteristic() override;
|
|
|
| private:
|
| - DISALLOW_COPY_AND_ASSIGN(BluetoothGattCharacteristic);
|
| + DISALLOW_COPY_AND_ASSIGN(BluetoothRemoteGattCharacteristic);
|
| };
|
|
|
| } // namespace device
|
|
|
| -#endif // DEVICE_BLUETOOTH_BLUETOOTH_GATT_CHARACTERISTIC_H_
|
| +#endif // DEVICE_BLUETOOTH_BLUETOOTH_REMOTE_GATT_CHARACTERISTIC_H_
|
|
|