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

Unified Diff: device/bluetooth/bluetooth_gatt_service.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: minor cleanup 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_gatt_service.h
diff --git a/device/bluetooth/bluetooth_gatt_service.h b/device/bluetooth/bluetooth_gatt_service.h
index d058762c728c78175da7edc4629fcb695b539c94..b96ba81b0adaca202b19da289232e7248048ec68 100644
--- a/device/bluetooth/bluetooth_gatt_service.h
+++ b/device/bluetooth/bluetooth_gatt_service.h
@@ -5,11 +5,8 @@
#ifndef DEVICE_BLUETOOTH_BLUETOOTH_GATT_SERVICE_H_
#define DEVICE_BLUETOOTH_BLUETOOTH_GATT_SERVICE_H_
-#include <stdint.h>
#include <string>
-#include <vector>
-#include "base/callback.h"
#include "base/callback_forward.h"
#include "base/macros.h"
#include "device/bluetooth/bluetooth_export.h"
@@ -17,118 +14,12 @@
namespace device {
-class BluetoothDevice;
-class BluetoothGattCharacteristic;
-class BluetoothGattDescriptor;
-
// BluetoothGattService represents a local or remote GATT service. A GATT
// service is hosted by a peripheral and represents a collection of data in
// the form of GATT characteristics and a set of included GATT services if this
// service is what is called "a primary service".
-//
-// Instances of the BluetoothGattService class are used for two functions:
-// 1. To represent GATT attribute hierarchies that have been received from a
-// remote Bluetooth GATT peripheral. Such BluetoothGattService instances
-// are constructed and owned by a BluetoothDevice.
-//
-// 2. To represent a locally hosted GATT attribute hierarchy when the local
-// adapter is used in the "peripheral" role. Such instances are meant to be
-// constructed directly and registered. Once registered, a GATT attribute
-// hierarchy will be visible to remote devices in the "central" role.
class DEVICE_BLUETOOTH_EXPORT BluetoothGattService {
public:
- // The Delegate class is used to send certain events that need to be handled
- // when the device is in peripheral mode. The delegate handles read and write
- // requests that are issued from remote clients.
- class Delegate {
- public:
- // Callbacks used for communicating GATT request responses.
- typedef base::Callback<void(const std::vector<uint8_t>)> ValueCallback;
- typedef base::Closure ErrorCallback;
-
- // Called when a remote device in the central role requests to read the
- // value of the characteristic |characteristic| starting at offset |offset|.
- // This method is only called if the characteristic was specified as
- // readable and any authentication and authorization challenges were
- // satisfied by the remote device.
- //
- // To respond to the request with success and return the requested value,
- // the delegate must invoke |callback| with the value. Doing so will
- // automatically update the value property of |characteristic|. To respond
- // to the request with failure (e.g. if an invalid offset was given),
- // delegates must invoke |error_callback|. If neither callback parameter is
- // invoked, the request will time out and result in an error. Therefore,
- // delegates MUST invoke either |callback| or |error_callback|.
- virtual void OnCharacteristicReadRequest(
- const BluetoothGattService* service,
- const BluetoothGattCharacteristic* characteristic,
- int offset,
- const ValueCallback& callback,
- const ErrorCallback& error_callback) = 0;
-
- // Called when a remote device in the central role requests to write the
- // value of the characteristic |characteristic| starting at offset |offset|.
- // This method is only called if the characteristic was specified as
- // writable and any authentication and authorization challenges were
- // satisfied by the remote device.
- //
- // To respond to the request with success the delegate must invoke
- // |callback| with the new value of the characteristic. Doing so will
- // automatically update the value property of |characteristic|. To respond
- // to the request with failure (e.g. if an invalid offset was given),
- // delegates must invoke |error_callback|. If neither callback parameter is
- // invoked, the request will time out and result in an error. Therefore,
- // delegates MUST invoke either |callback| or |error_callback|.
- virtual void OnCharacteristicWriteRequest(
- const BluetoothGattService* service,
- const BluetoothGattCharacteristic* characteristic,
- const std::vector<uint8_t>& value,
- int offset,
- const ValueCallback& callback,
- const ErrorCallback& error_callback) = 0;
-
- // Called when a remote device in the central role requests to read the
- // value of the descriptor |descriptor| starting at offset |offset|.
- // This method is only called if the characteristic was specified as
- // readable and any authentication and authorization challenges were
- // satisfied by the remote device.
- //
- // To respond to the request with success and return the requested value,
- // the delegate must invoke |callback| with the value. Doing so will
- // automatically update the value property of |descriptor|. To respond
- // to the request with failure (e.g. if an invalid offset was given),
- // delegates must invoke |error_callback|. If neither callback parameter is
- // invoked, the request will time out and result in an error. Therefore,
- // delegates MUST invoke either |callback| or |error_callback|.
- virtual void OnDescriptorReadRequest(
- const BluetoothGattService* service,
- const BluetoothGattDescriptor* descriptor,
- int offset,
- const ValueCallback& callback,
- const ErrorCallback& error_callback) = 0;
-
- // Called when a remote device in the central role requests to write the
- // value of the descriptor |descriptor| starting at offset |offset|.
- // This method is only called if the characteristic was specified as
- // writable and any authentication and authorization challenges were
- // satisfied by the remote device.
- //
- // To respond to the request with success the delegate must invoke
- // |callback| with the new value of the descriptor. Doing so will
- // automatically update the value property of |descriptor|. To respond
- // to the request with failure (e.g. if an invalid offset was given),
- // delegates must invoke |error_callback|. If neither callback parameter is
- // invoked, the request will time out and result in an error. Therefore,
- // delegates MUST invoke either |callback| or |error_callback|.
- virtual void OnDescriptorWriteRequest(
- const BluetoothGattService* service,
- const BluetoothGattDescriptor* descriptor,
- const std::vector<uint8_t>& value,
- int offset,
- const ValueCallback& callback,
- const ErrorCallback& error_callback) = 0;
- };
-
// Interacting with Characteristics and Descriptors can produce
// this set of errors.
enum GattErrorCode {
@@ -145,34 +36,9 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothGattService {
// The ErrorCallback is used by methods to asynchronously report errors.
using ErrorCallback = base::Callback<void(GattErrorCode error_code)>;
- virtual ~BluetoothGattService();
-
- // Constructs a BluetoothGattService that can be locally hosted when the local
- // adapter is in the peripheral role. The resulting object can then be made
- // available by calling the "Register" method. This method constructs a
- // service with UUID |uuid|. Whether the constructed service is primary or
- // secondary is determined by |is_primary|. |delegate| is used to send certain
- // peripheral role events. If |delegate| is NULL, then this service will
- // employ a default behavior when responding to read and write requests based
- // on the cached value of its characteristics and descriptors at a given time.
- static BluetoothGattService* Create(const BluetoothUUID& uuid,
- bool is_primary,
- Delegate* delegate);
-
- // Identifier used to uniquely identify a GATT service object. This is
- // different from the service UUID: while multiple services with the same UUID
- // can exist on a Bluetooth device, the identifier returned from this method
- // is unique among all services on the adapter. The contents of the identifier
- // are platform specific.
- virtual std::string GetIdentifier() const = 0;
-
// The Bluetooth-specific UUID of the service.
virtual BluetoothUUID GetUUID() const = 0;
- // Returns true, if this service hosted locally. If false, then this service
- // represents a remote GATT service.
- virtual bool IsLocal() 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
@@ -180,46 +46,14 @@ class DEVICE_BLUETOOTH_EXPORT BluetoothGattService {
// services.
virtual bool IsPrimary() const = 0;
- // Returns the BluetoothDevice that this GATT service was received from, which
- // also owns this service. Local services always return NULL.
- virtual BluetoothDevice* GetDevice() const = 0;
-
- // List of characteristics that belong to this service.
- virtual std::vector<BluetoothGattCharacteristic*>
- GetCharacteristics() const = 0;
-
- // List of GATT services that are included by this service.
- virtual std::vector<BluetoothGattService*>
- GetIncludedServices() const = 0;
-
- // Returns the GATT characteristic with identifier |identifier| if it belongs
- // to this GATT service.
- virtual BluetoothGattCharacteristic* GetCharacteristic(
- const std::string& identifier) const = 0;
-
- // Adds characteristics and included services to the local attribute hierarchy
- // represented by this service. These methods only make sense for local
- // services and won't have an effect if this instance represents a remote
- // GATT service and will return false. While ownership of added
- // characteristics are taken over by the service, ownership of an included
- // service is not taken.
- virtual bool AddCharacteristic(
- BluetoothGattCharacteristic* characteristic) = 0;
- virtual bool AddIncludedService(BluetoothGattService* service) = 0;
+ virtual ~BluetoothGattService();
- // Registers this GATT service. Calling Register will make this service and
- // all of its associated attributes available on the local adapters GATT
- // database and the service UUID will be advertised to nearby devices if the
- // local adapter is discoverable. Call Unregister to make this service no
- // longer available.
- //
- // These methods only make sense for services that are local and will hence
- // fail if this instance represents a remote GATT service. |callback| is
- // called to denote success and |error_callback| to denote failure.
- virtual void Register(const base::Closure& callback,
- const ErrorCallback& error_callback) = 0;
- virtual void Unregister(const base::Closure& callback,
- const ErrorCallback& error_callback) = 0;
+ // Identifier used to uniquely identify a GATT service object. This is
+ // different from the service UUID: while multiple services with the same UUID
+ // can exist on a Bluetooth device, the identifier returned from this method
+ // is unique among all services on the adapter. The contents of the identifier
+ // are platform specific.
+ virtual std::string GetIdentifier() const = 0;
scheib 2016/04/20 01:23:30 Keep GetIdentifier above GetUUID
rkc 2016/04/20 16:31:54 Done.
protected:
BluetoothGattService();

Powered by Google App Engine
This is Rietveld 408576698