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

Unified Diff: device/bluetooth/bluetooth_remote_gatt_characteristic.h

Issue 1898643002: Refactor device::BluetoothGattXXX classes to split into remote/local. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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_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_
« no previous file with comments | « device/bluetooth/bluetooth_pairing_bluez.cc ('k') | device/bluetooth/bluetooth_remote_gatt_characteristic.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698