| OLD | NEW |
| 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 <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 // BluetoothGattCharacteristic directly and add it to the desired | 32 // BluetoothGattCharacteristic directly and add it to the desired |
| 33 // BluetoothGattService instance that represents a local service. | 33 // BluetoothGattService instance that represents a local service. |
| 34 class BluetoothGattCharacteristic { | 34 class BluetoothGattCharacteristic { |
| 35 public: | 35 public: |
| 36 // TODO(jamuraa): per chromium.org/developers/coding-style these should | 36 // TODO(jamuraa): per chromium.org/developers/coding-style these should |
| 37 // be MACRO_STYLE instead of kCamelCase. (crbug.com/418696) | 37 // be MACRO_STYLE instead of kCamelCase. (crbug.com/418696) |
| 38 | 38 |
| 39 // Values representing the possible properties of a characteristic, which | 39 // Values representing the possible properties of a characteristic, which |
| 40 // define how the characteristic can be used. Each of these properties serve | 40 // define how the characteristic can be used. Each of these properties serve |
| 41 // a role as defined in the Bluetooth Specification. | 41 // a role as defined in the Bluetooth Specification. |
| 42 // |kPropertyExtendedProperties| is a special property that, if present, | 42 // |PROPERTY_EXTENDED_PROPERTIES| is a special property that, if present, |
| 43 // indicates that there is a characteristic descriptor (namely the | 43 // indicates that there is a characteristic descriptor (namely the |
| 44 // "Characteristic Extended Properties Descriptor" with UUID 0x2900) that | 44 // "Characteristic Extended Properties Descriptor" with UUID 0x2900) that |
| 45 // contains additional properties pertaining to the characteristic. | 45 // contains additional properties pertaining to the characteristic. |
| 46 // The properties "ReliableWrite| and |WriteAuxiliaries| are retrieved from | 46 // The properties "ReliableWrite| and |WriteAuxiliaries| are retrieved from |
| 47 // that characteristic. | 47 // that characteristic. |
| 48 enum Property { | 48 enum Property { |
| 49 kPropertyNone = 0, | 49 PROPERTY_NONE = 0, |
| 50 kPropertyBroadcast = 1 << 0, | 50 PROPERTY_BROADCAST = 1 << 0, |
| 51 kPropertyRead = 1 << 1, | 51 PROPERTY_READ = 1 << 1, |
| 52 kPropertyWriteWithoutResponse = 1 << 2, | 52 PROPERTY_WRITE_WITHOUT_RESPONSE = 1 << 2, |
| 53 kPropertyWrite = 1 << 3, | 53 PROPERTY_WRITE = 1 << 3, |
| 54 kPropertyNotify = 1 << 4, | 54 PROPERTY_NOTIFY = 1 << 4, |
| 55 kPropertyIndicate = 1 << 5, | 55 PROPERTY_INDICATE = 1 << 5, |
| 56 kPropertyAuthenticatedSignedWrites = 1 << 6, | 56 PROPERTY_AUTHENTICATED_SIGNED_WRITES = 1 << 6, |
| 57 kPropertyExtendedProperties = 1 << 7, | 57 PROPERTY_EXTENDED_PROPERTIES = 1 << 7, |
| 58 kPropertyReliableWrite = 1 << 8, | 58 PROPERTY_RELIABLE_WRITE = 1 << 8, |
| 59 kPropertyWritableAuxiliaries = 1 << 9 | 59 PROPERTY_WRITABLE_AUXILIARIES = 1 << 9 |
| 60 }; | 60 }; |
| 61 typedef uint32 Properties; | 61 typedef uint32 Properties; |
| 62 | 62 |
| 63 // Values representing read, write, and encryption permissions for a | 63 // Values representing read, write, and encryption permissions for a |
| 64 // characteristic's value. While attribute permissions for all GATT | 64 // characteristic's value. While attribute permissions for all GATT |
| 65 // definitions have been set by the Bluetooth specification, characteristic | 65 // definitions have been set by the Bluetooth specification, characteristic |
| 66 // value permissions are left up to the higher-level profile. | 66 // value permissions are left up to the higher-level profile. |
| 67 // | 67 // |
| 68 // Attribute permissions are distinct from the characteristic properties. For | 68 // Attribute permissions are distinct from the characteristic properties. For |
| 69 // example, a characteristic may have the property |kPropertyRead| to make | 69 // example, a characteristic may have the property |PROPERTY_READ| to make |
| 70 // clients know that it is possible to read the characteristic value and have | 70 // clients know that it is possible to read the characteristic value and have |
| 71 // the permission |kPermissionReadEncrypted| to require a secure connection. | 71 // the permission |PERMISSION_READ_ENCRYPTED| to require a secure connection. |
| 72 // It is up to the application to properly specify the permissions and | 72 // It is up to the application to properly specify the permissions and |
| 73 // properties for a local characteristic. | 73 // properties for a local characteristic. |
| 74 enum Permission { | 74 enum Permission { |
| 75 kPermissionNone = 0, | 75 PERMISSION_NONE = 0, |
| 76 kPermissionRead = 1 << 0, | 76 PERMISSION_READ = 1 << 0, |
| 77 kPermissionWrite = 1 << 1, | 77 PERMISSION_WRITE = 1 << 1, |
| 78 kPermissionReadEncrypted = 1 << 2, | 78 PERMISSION_READ_ENCRYPTED = 1 << 2, |
| 79 kPermissionWriteEncrypted = 1 << 3 | 79 PERMISSION_WRITE_ENCRYPTED = 1 << 3 |
| 80 }; | 80 }; |
| 81 typedef uint32 Permissions; | 81 typedef uint32 Permissions; |
| 82 | 82 |
| 83 // The ErrorCallback is used by methods to asynchronously report errors. | 83 // The ErrorCallback is used by methods to asynchronously report errors. |
| 84 typedef base::Callback<void(BluetoothGattService::GattErrorCode)> | 84 typedef base::Callback<void(BluetoothGattService::GattErrorCode)> |
| 85 ErrorCallback; | 85 ErrorCallback; |
| 86 | 86 |
| 87 // The ValueCallback is used to return the value of a remote characteristic | 87 // The ValueCallback is used to return the value of a remote characteristic |
| 88 // upon a read request. | 88 // upon a read request. |
| 89 typedef base::Callback<void(const std::vector<uint8>&)> ValueCallback; | 89 typedef base::Callback<void(const std::vector<uint8>&)> ValueCallback; |
| 90 | 90 |
| 91 // The NotifySessionCallback is used to return sessions after they have | 91 // The NotifySessionCallback is used to return sessions after they have |
| 92 // been successfully started. | 92 // been successfully started. |
| 93 typedef base::Callback<void(scoped_ptr<BluetoothGattNotifySession>)> | 93 typedef base::Callback<void(scoped_ptr<BluetoothGattNotifySession>)> |
| 94 NotifySessionCallback; | 94 NotifySessionCallback; |
| 95 | 95 |
| 96 // Constructs a BluetoothGattCharacteristic that can be associated with a | 96 // Constructs a BluetoothGattCharacteristic that can be associated with a |
| 97 // local GATT service when the adapter is in the peripheral role. To | 97 // local GATT service when the adapter is in the peripheral role. To |
| 98 // associate the returned characteristic with a service, add it to a local | 98 // associate the returned characteristic with a service, add it to a local |
| 99 // service by calling BluetoothGattService::AddCharacteristic. | 99 // service by calling BluetoothGattService::AddCharacteristic. |
| 100 // | 100 // |
| 101 // This method constructs a characteristic with UUID |uuid|, initial cached | 101 // This method constructs a characteristic with UUID |uuid|, initial cached |
| 102 // value |value|, properties |properties|, and permissions |permissions|. | 102 // value |value|, properties |properties|, and permissions |permissions|. |
| 103 // |value| will be cached and returned for read requests and automatically set | 103 // |value| will be cached and returned for read requests and automatically set |
| 104 // for write requests by default, unless an instance of | 104 // for write requests by default, unless an instance of |
| 105 // BluetoothGattService::Delegate has been provided to the associated | 105 // BluetoothGattService::Delegate has been provided to the associated |
| 106 // BluetoothGattService instance, in which case the delegate will handle read | 106 // BluetoothGattService instance, in which case the delegate will handle read |
| 107 // and write requests. | 107 // and write requests. |
| 108 // | 108 // |
| 109 // NOTE: Don't explicitly set |kPropertyExtendedProperties| in |properties|. | 109 // NOTE: Don't explicitly set |PROPERTY_EXTENDED_PROPERTIES| in |properties|. |
| 110 // Instead, create and add a BluetoothGattDescriptor that represents the | 110 // Instead, create and add a BluetoothGattDescriptor that represents the |
| 111 // "Characteristic Extended Properties" descriptor and this will automatically | 111 // "Characteristic Extended Properties" descriptor and this will automatically |
| 112 // set the correspoding bit in the characteristic's properties field. If | 112 // set the correspoding bit in the characteristic's properties field. If |
| 113 // |properties| has |kPropertyExtendedProperties| set, it will be ignored. | 113 // |properties| has |PROPERTY_EXTENDED_PROPERTIES| set, it will be ignored. |
| 114 static BluetoothGattCharacteristic* Create(const BluetoothUUID& uuid, | 114 static BluetoothGattCharacteristic* Create(const BluetoothUUID& uuid, |
| 115 const std::vector<uint8>& value, | 115 const std::vector<uint8>& value, |
| 116 Properties properties, | 116 Properties properties, |
| 117 Permissions permissions); | 117 Permissions permissions); |
| 118 | 118 |
| 119 // Identifier used to uniquely identify a GATT characteristic object. This is | 119 // Identifier used to uniquely identify a GATT characteristic object. This is |
| 120 // different from the characteristic UUID: while multiple characteristics with | 120 // different from the characteristic UUID: while multiple characteristics with |
| 121 // the same UUID can exist on a Bluetooth device, the identifier returned from | 121 // the same UUID can exist on a Bluetooth device, the identifier returned from |
| 122 // this method is unique among all characteristics of a device. The contents | 122 // this method is unique among all characteristics of a device. The contents |
| 123 // of the identifier are platform specific. | 123 // of the identifier are platform specific. |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 BluetoothGattCharacteristic(); | 205 BluetoothGattCharacteristic(); |
| 206 virtual ~BluetoothGattCharacteristic(); | 206 virtual ~BluetoothGattCharacteristic(); |
| 207 | 207 |
| 208 private: | 208 private: |
| 209 DISALLOW_COPY_AND_ASSIGN(BluetoothGattCharacteristic); | 209 DISALLOW_COPY_AND_ASSIGN(BluetoothGattCharacteristic); |
| 210 }; | 210 }; |
| 211 | 211 |
| 212 } // namespace device | 212 } // namespace device |
| 213 | 213 |
| 214 #endif // DEVICE_BLUETOOTH_BLUETOOTH_GATT_CHARACTERISTIC_H_ | 214 #endif // DEVICE_BLUETOOTH_BLUETOOTH_GATT_CHARACTERISTIC_H_ |
| OLD | NEW |