Merge pull request #127 from andresag01/develop

Allow GattAttributes to have variable length
This commit is contained in:
Rohit Grover 2015-12-02 11:44:32 +00:00
commit d71c316181
2 changed files with 23 additions and 16 deletions

View file

@ -37,6 +37,8 @@ public:
* The length in bytes of this attribute's value.
* @param[in] maxLen
* The max length in bytes of this attribute's value.
* @param[in] hasVariableLen
* Whether the attribute's value length changes overtime.
*
* @section EXAMPLE
*
@ -47,25 +49,27 @@ public:
*
* @endcode
*/
GattAttribute(const UUID &uuid, uint8_t *valuePtr = NULL, uint16_t len = 0, uint16_t maxLen = 0) :
_uuid(uuid), _valuePtr(valuePtr), _lenMax(maxLen), _len(len), _handle() {
GattAttribute(const UUID &uuid, uint8_t *valuePtr = NULL, uint16_t len = 0, uint16_t maxLen = 0, bool hasVariableLen = true) :
_uuid(uuid), _valuePtr(valuePtr), _lenMax(maxLen), _len(len), _hasVariableLen(hasVariableLen), _handle() {
/* Empty */
}
public:
Handle_t getHandle(void) const {return _handle; }
const UUID &getUUID(void) const {return _uuid; }
uint16_t getLength(void) const {return _len; }
uint16_t getMaxLength(void) const {return _lenMax; }
uint16_t *getLengthPtr(void) {return &_len; }
void setHandle(Handle_t id) {_handle = id; }
uint8_t *getValuePtr(void) {return _valuePtr; }
Handle_t getHandle(void) const {return _handle; }
const UUID &getUUID(void) const {return _uuid; }
uint16_t getLength(void) const {return _len; }
uint16_t getMaxLength(void) const {return _lenMax; }
uint16_t *getLengthPtr(void) {return &_len; }
void setHandle(Handle_t id) {_handle = id; }
uint8_t *getValuePtr(void) {return _valuePtr; }
bool hasVariableLength(void) const {return _hasVariableLen;}
private:
UUID _uuid; /* Characteristic UUID. */
UUID _uuid; /* Characteristic UUID. */
uint8_t *_valuePtr;
uint16_t _lenMax; /* Maximum length of the value. */
uint16_t _len; /* Current length of the value. */
uint16_t _lenMax; /* Maximum length of the value. */
uint16_t _len; /* Current length of the value. */
bool _hasVariableLen;
Handle_t _handle;
private:

View file

@ -311,6 +311,8 @@ public:
* The length in bytes of this characteristic's value.
* @param[in] maxLen
* The max length in bytes of this characteristic's value.
* @param[in] hasVariableLen
* Whether the attribute's value length changes over time.
* @param[in] props
* The 8-bit field containing the characteristic's properties.
* @param[in] descriptors
@ -332,8 +334,9 @@ public:
uint16_t maxLen = 0,
uint8_t props = BLE_GATT_CHAR_PROPERTIES_NONE,
GattAttribute *descriptors[] = NULL,
unsigned numDescriptors = 0) :
_valueAttribute(uuid, valuePtr, len, maxLen),
unsigned numDescriptors = 0,
bool hasVariableLen = true) :
_valueAttribute(uuid, valuePtr, len, maxLen, hasVariableLen),
_properties(props),
_requiredSecurity(SecurityManager::SECURITY_MODE_ENCRYPTION_OPEN_LINK),
_descriptors(descriptors),
@ -466,7 +469,7 @@ public:
GattAttribute *descriptors[] = NULL,
unsigned numDescriptors = 0) :
GattCharacteristic(uuid, reinterpret_cast<uint8_t *>(valuePtr), sizeof(T), sizeof(T),
BLE_GATT_CHAR_PROPERTIES_READ | additionalProperties, descriptors, numDescriptors) {
BLE_GATT_CHAR_PROPERTIES_READ | additionalProperties, descriptors, numDescriptors, false) {
/* empty */
}
};
@ -522,7 +525,7 @@ public:
GattAttribute *descriptors[] = NULL,
unsigned numDescriptors = 0) :
GattCharacteristic(uuid, reinterpret_cast<uint8_t *>(valuePtr), sizeof(T) * NUM_ELEMENTS, sizeof(T) * NUM_ELEMENTS,
BLE_GATT_CHAR_PROPERTIES_READ | additionalProperties, descriptors, numDescriptors) {
BLE_GATT_CHAR_PROPERTIES_READ | additionalProperties, descriptors, numDescriptors, false) {
/* empty */
}
};