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

Side by Side Diff: device/bluetooth/bluetooth_gatt_characteristic.h

Issue 228643004: device/bluetooth: Add chromeos::BluetoothRemoteGattCharacteristicChromeOS. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed potentially flaky expectation from unit test. Created 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « device/bluetooth/bluetooth.gyp ('k') | device/bluetooth/bluetooth_gatt_chromeos_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_GATT_CHARACTERISTIC_H_ 5 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_GATT_CHARACTERISTIC_H_
6 #define DEVICE_BLUETOOTH_BLUETOOTH_GATT_CHARACTERISTIC_H_ 6 #define DEVICE_BLUETOOTH_BLUETOOTH_GATT_CHARACTERISTIC_H_
7 7
8 #include <string>
8 #include <vector> 9 #include <vector>
9 10
10 #include "base/basictypes.h" 11 #include "base/basictypes.h"
11 #include "base/callback.h" 12 #include "base/callback.h"
12 #include "device/bluetooth/bluetooth_uuid.h" 13 #include "device/bluetooth/bluetooth_uuid.h"
13 14
14 namespace device { 15 namespace device {
15 16
16 class BluetoothGattDescriptor; 17 class BluetoothGattDescriptor;
17 class BluetoothGattService; 18 class BluetoothGattService;
(...skipping 12 matching lines...) Expand all
30 // BluetoothGattService instance that represents a local service. 31 // BluetoothGattService instance that represents a local service.
31 class BluetoothGattCharacteristic { 32 class BluetoothGattCharacteristic {
32 public: 33 public:
33 // Values representing the possible properties of a characteristic, which 34 // Values representing the possible properties of a characteristic, which
34 // define how the characteristic can be used. Each of these properties serve 35 // define how the characteristic can be used. Each of these properties serve
35 // a role as defined in the Bluetooth Specification. 36 // a role as defined in the Bluetooth Specification.
36 // |kPropertyExtendedProperties| is a special property that, if present, 37 // |kPropertyExtendedProperties| is a special property that, if present,
37 // indicates that there is a characteristic descriptor (namely the 38 // indicates that there is a characteristic descriptor (namely the
38 // "Characteristic Extended Properties Descriptor" with UUID 0x2900) that 39 // "Characteristic Extended Properties Descriptor" with UUID 0x2900) that
39 // contains additional properties pertaining to the characteristic. 40 // contains additional properties pertaining to the characteristic.
41 // The properties "ReliableWrite| and |WriteAuxiliaries| are retrieved from
42 // that characteristic.
40 enum Property { 43 enum Property {
41 kPropertyNone = 0, 44 kPropertyNone = 0,
42 kPropertyBroadcast = 1 << 0, 45 kPropertyBroadcast = 1 << 0,
43 kPropertyRead = 1 << 1, 46 kPropertyRead = 1 << 1,
44 kPropertyWriteWithoutResponse = 1 << 2, 47 kPropertyWriteWithoutResponse = 1 << 2,
45 kPropertyWrite = 1 << 3, 48 kPropertyWrite = 1 << 3,
46 kPropertyNotify = 1 << 4, 49 kPropertyNotify = 1 << 4,
47 kPropertyIndicate = 1 << 5, 50 kPropertyIndicate = 1 << 5,
48 kPropertyAuthenticatedSignedWrites = 1 << 6, 51 kPropertyAuthenticatedSignedWrites = 1 << 6,
49 kPropertyExtendedProperties = 1 << 7 52 kPropertyExtendedProperties = 1 << 7,
53 kPropertyReliableWrite = 1 << 8,
54 kPropertyWriteableAuxiliaries = 1 << 9
50 }; 55 };
51 typedef uint32 Properties; 56 typedef uint32 Properties;
52 57
53 // Values representing read, write, and encryption permissions for a 58 // Values representing read, write, and encryption permissions for a
54 // characteristic's value. While attribute permissions for all GATT 59 // characteristic's value. While attribute permissions for all GATT
55 // definitions have been set by the Bluetooth specification, characteristic 60 // definitions have been set by the Bluetooth specification, characteristic
56 // value permissions are left up to the higher-level profile. 61 // value permissions are left up to the higher-level profile.
57 // 62 //
58 // Attribute permissions are distinct from the characteristic properties. For 63 // Attribute permissions are distinct from the characteristic properties. For
59 // example, a characteristic may have the property |kPropertyRead| to make 64 // example, a characteristic may have the property |kPropertyRead| to make
60 // clients know that it is possible to read the characteristic value and have 65 // clients know that it is possible to read the characteristic value and have
61 // the permission |kPermissionReadEncrypted| to require a secure connection. 66 // the permission |kPermissionReadEncrypted| to require a secure connection.
62 // It is up to the application to properly specify the permissions and 67 // It is up to the application to properly specify the permissions and
63 // properties for a local characteristic. 68 // properties for a local characteristic.
64 enum Permission { 69 enum Permission {
65 kPermissionNone = 0, 70 kPermissionNone = 0,
66 kPermissionRead = 1 << 0, 71 kPermissionRead = 1 << 0,
67 kPermissionWrite = 1 << 1, 72 kPermissionWrite = 1 << 1,
68 kPermissionReadEncrypted = 1 << 2, 73 kPermissionReadEncrypted = 1 << 2,
69 kPermissionWriteEncrypted = 1 << 3 74 kPermissionWriteEncrypted = 1 << 3
70 }; 75 };
71 typedef uint32 Permissions; 76 typedef uint32 Permissions;
72 77
73 // The ErrorCallback is used by methods to asynchronously report errors. 78 // The ErrorCallback is used by methods to asynchronously report errors.
74 typedef base::Callback<void(const std::string&)> ErrorCallback; 79 typedef base::Closure ErrorCallback;
75 80
76 // The ValueCallback is used to return the value of a remote characteristic 81 // The ValueCallback is used to return the value of a remote characteristic
77 // upon a read request. 82 // upon a read request.
78 typedef base::Callback<void(const std::vector<uint8>&)> ValueCallback; 83 typedef base::Callback<void(const std::vector<uint8>&)> ValueCallback;
79 84
80 // Constructs a BluetoothGattCharacteristic that can be associated with a 85 // Constructs a BluetoothGattCharacteristic that can be associated with a
81 // local GATT service when the adapter is in the peripheral role. To 86 // local GATT service when the adapter is in the peripheral role. To
82 // associate the returned characteristic with a service, add it to a local 87 // associate the returned characteristic with a service, add it to a local
83 // service by calling BluetoothGattService::AddCharacteristic. 88 // service by calling BluetoothGattService::AddCharacteristic.
84 // 89 //
85 // This method constructs a characteristic with UUID |uuid|, initial cached 90 // This method constructs a characteristic with UUID |uuid|, initial cached
86 // value |value|, properties |properties|, and permissions |permissions|. 91 // value |value|, properties |properties|, and permissions |permissions|.
87 // |value| will be cached and returned for read requests and automatically set 92 // |value| will be cached and returned for read requests and automatically set
88 // for write requests by default, unless an instance of 93 // for write requests by default, unless an instance of
89 // BluetoothGattService::Delegate has been provided to the associated 94 // BluetoothGattService::Delegate has been provided to the associated
90 // BluetoothGattService instance, in which case the delegate will handle read 95 // BluetoothGattService instance, in which case the delegate will handle read
91 // and write requests. 96 // and write requests.
92 // 97 //
93 // NOTE: Don't explicitly set |kPropertyExtendedProperties| in |properties|. 98 // NOTE: Don't explicitly set |kPropertyExtendedProperties| in |properties|.
94 // Instead, create and add a BluetoothGattDescriptor that represents the 99 // Instead, create and add a BluetoothGattDescriptor that represents the
95 // "Characteristic Extended Properties" descriptor and this will automatically 100 // "Characteristic Extended Properties" descriptor and this will automatically
96 // set the correspoding bit in the characteristic's properties field. If 101 // set the correspoding bit in the characteristic's properties field. If
97 // |properties| has |kPropertyExtendedProperties| set, it will be ignored. 102 // |properties| has |kPropertyExtendedProperties| set, it will be ignored.
98 static BluetoothGattCharacteristic* Create(const BluetoothUUID& uuid, 103 static BluetoothGattCharacteristic* Create(const BluetoothUUID& uuid,
99 const std::vector<uint8>& value, 104 const std::vector<uint8>& value,
100 Properties properties, 105 Properties properties,
101 Permissions permissions); 106 Permissions permissions);
102 107
108 // Identifier used to uniquely identify a GATT characteristic object. This is
109 // different from the characteristic UUID: while multiple characteristics with
110 // the same UUID can exist on a Bluetooth device, the identifier returned from
111 // this method is unique among all characteristics of a device. The contents
112 // of the identifier are platform specific.
113 virtual std::string GetIdentifier() const = 0;
114
103 // The Bluetooth-specific UUID of the characteristic. 115 // The Bluetooth-specific UUID of the characteristic.
104 virtual BluetoothUUID GetUUID() const = 0; 116 virtual BluetoothUUID GetUUID() const = 0;
105 117
106 // Returns true, if this characteristic is hosted locally. If false, then this 118 // Returns true, if this characteristic is hosted locally. If false, then this
107 // instance represents a remote GATT characteristic. 119 // instance represents a remote GATT characteristic.
108 virtual bool IsLocal() const = 0; 120 virtual bool IsLocal() const = 0;
109 121
110 // Returns the value of the characteristic. For remote characteristics, this 122 // Returns the value of the characteristic. For remote characteristics, this
111 // is the most recently cached value. For local characteristics, this is the 123 // is the most recently cached value. For local characteristics, this is the
112 // most recently updated value or the value retrieved from the delegate. 124 // most recently updated value or the value retrieved from the delegate.
113 virtual const std::vector<uint8>& GetValue() const = 0; 125 virtual const std::vector<uint8>& GetValue() const = 0;
114 126
115 // Returns a pointer to the GATT service this characteristic belongs to. 127 // Returns a pointer to the GATT service this characteristic belongs to.
116 virtual const BluetoothGattService* GetService() const = 0; 128 virtual BluetoothGattService* GetService() const = 0;
129
130 // Returns the bitmask of characteristic properties.
131 virtual Properties GetProperties() const = 0;
132
133 // Returns the bitmask of characteristic attribute permissions.
134 virtual Permissions GetPermissions() const = 0;
117 135
118 // Returns the list of GATT characteristic descriptors that provide more 136 // Returns the list of GATT characteristic descriptors that provide more
119 // information about this characteristic. 137 // information about this characteristic.
120 virtual const std::vector<BluetoothGattDescriptor*> 138 virtual std::vector<BluetoothGattDescriptor*>
121 GetDescriptors() const = 0; 139 GetDescriptors() const = 0;
122 140
123 // Adds a characteristic descriptor to the locally hosted characteristic 141 // Adds a characteristic descriptor to the locally hosted characteristic
124 // represented by this instance. This method only makes sense for local 142 // represented by this instance. This method only makes sense for local
125 // characteristics and won't have an effect if this instance represents a 143 // characteristics and won't have an effect if this instance represents a
126 // remote GATT service and will return false. This method takes ownership 144 // remote GATT service and will return false. This method takes ownership
127 // of |descriptor|. 145 // of |descriptor|.
128 virtual bool AddDescriptor(BluetoothGattDescriptor* descriptor) = 0; 146 virtual bool AddDescriptor(BluetoothGattDescriptor* descriptor) = 0;
129 147
130 // For locally hosted characteristics, updates the characteristic's value. 148 // For locally hosted characteristics, updates the characteristic's value.
131 // This will update the value that is visible to remote devices and send out 149 // This will update the value that is visible to remote devices and send out
132 // any notifications and indications that have been configured. This method 150 // any notifications and indications that have been configured. This method
133 // can be used in place of, and in conjunction with, 151 // can be used in place of, and in conjunction with,
134 // BluetoothGattService::Delegate methods to send updates to remote devices, 152 // BluetoothGattService::Delegate methods to send updates to remote devices,
135 // or simply to set update the cached value for read requests without having 153 // or simply to set update the cached value for read requests without having
136 // to implement the delegate methods. 154 // to implement the delegate methods.
137 // 155 //
138 // This method only makes sense for local characteristics and does nothing and 156 // This method only makes sense for local characteristics and does nothing and
139 // returns false if this instance represents a remote characteristic. 157 // returns false if this instance represents a remote characteristic.
140 virtual bool UpdateValue(const std::vector<uint8>& value) = 0; 158 virtual bool UpdateValue(const std::vector<uint8>& value) = 0;
141 159
142 // Sends a read request to a remote characteristic to read its value. 160 // Sends a read request to a remote characteristic to read its value.
143 // |callback| is called to return the read value on success and 161 // |callback| is called to return the read value on success and
144 // |error_callback| is called for failures. 162 // |error_callback| is called for failures.
145 virtual void ReadRemoteCharacteristic( 163 virtual void ReadRemoteCharacteristic(
146 const ValueCallback& callback, 164 const ValueCallback& callback,
147 const ErrorCallback& error_callback) = 0; 165 const ErrorCallback& error_callback) = 0;
148 166
149 // Sends a write request to a remote characteristic, to modify the 167 // Sends a write request to a remote characteristic, to modify the
150 // characteristic's value starting at offset |offset| with the new value 168 // characteristic's value with the new value |new_value|. |callback| is
151 // |new_value|. |callback| is called to signal success and |error_callback| 169 // called to signal success and |error_callback| for failures. This method
152 // for failures. This method only applies to remote characteristics and will 170 // only applies to remote characteristics and will fail for those that are
153 // fail for those that are locally hosted. 171 // locally hosted.
154 virtual void WriteRemoteCharacteristic( 172 virtual void WriteRemoteCharacteristic(
155 int offset,
156 const std::vector<uint8>& new_value, 173 const std::vector<uint8>& new_value,
157 const base::Closure& callback, 174 const base::Closure& callback,
158 const ErrorCallback& error_callback) = 0; 175 const ErrorCallback& error_callback) = 0;
159 176
160 protected: 177 protected:
161 BluetoothGattCharacteristic(); 178 BluetoothGattCharacteristic();
162 virtual ~BluetoothGattCharacteristic(); 179 virtual ~BluetoothGattCharacteristic();
163 180
164 private: 181 private:
165 DISALLOW_COPY_AND_ASSIGN(BluetoothGattCharacteristic); 182 DISALLOW_COPY_AND_ASSIGN(BluetoothGattCharacteristic);
166 }; 183 };
167 184
168 } // namespace device 185 } // namespace device
169 186
170 #endif // DEVICE_BLUETOOTH_BLUETOOTH_GATT_CHARACTERISTIC_H_ 187 #endif // DEVICE_BLUETOOTH_BLUETOOTH_GATT_CHARACTERISTIC_H_
OLDNEW
« no previous file with comments | « device/bluetooth/bluetooth.gyp ('k') | device/bluetooth/bluetooth_gatt_chromeos_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698