Sam Musso / BLE_API

Fork of BLE_API by Bluetooth Low Energy

Committer:
rgrover1
Date:
Fri Jun 19 15:53:01 2015 +0100
Revision:
669:7179b4a5aa7d
Parent:
667:875aecb84719
Child:
670:5e4aecd9af5b
Synchronized with git rev 9bcd7433
Author: Rohit Grover
Rename BLEDevice as BLE. Retain an alias to BLEDevice for the sake of compatibility with old code.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rgrover1 260:ea7f9f14cc15 1 /* mbed Microcontroller Library
rgrover1 260:ea7f9f14cc15 2 * Copyright (c) 2006-2013 ARM Limited
rgrover1 260:ea7f9f14cc15 3 *
rgrover1 260:ea7f9f14cc15 4 * Licensed under the Apache License, Version 2.0 (the "License");
rgrover1 260:ea7f9f14cc15 5 * you may not use this file except in compliance with the License.
rgrover1 260:ea7f9f14cc15 6 * You may obtain a copy of the License at
rgrover1 260:ea7f9f14cc15 7 *
rgrover1 260:ea7f9f14cc15 8 * http://www.apache.org/licenses/LICENSE-2.0
rgrover1 260:ea7f9f14cc15 9 *
rgrover1 260:ea7f9f14cc15 10 * Unless required by applicable law or agreed to in writing, software
rgrover1 260:ea7f9f14cc15 11 * distributed under the License is distributed on an "AS IS" BASIS,
rgrover1 260:ea7f9f14cc15 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rgrover1 260:ea7f9f14cc15 13 * See the License for the specific language governing permissions and
rgrover1 260:ea7f9f14cc15 14 * limitations under the License.
rgrover1 260:ea7f9f14cc15 15 */
rgrover1 260:ea7f9f14cc15 16
rgrover1 260:ea7f9f14cc15 17 #ifndef __GATT_ATTRIBUTE_H__
rgrover1 260:ea7f9f14cc15 18 #define __GATT_ATTRIBUTE_H__
rgrover1 260:ea7f9f14cc15 19
rgrover1 260:ea7f9f14cc15 20 class GattAttribute {
rgrover1 260:ea7f9f14cc15 21 public:
rgrover1 260:ea7f9f14cc15 22 typedef uint16_t Handle_t;
rgrover1 582:4e46b5fe9d7e 23 static const Handle_t INVALID_HANDLE = 0x0000;
rgrover1 260:ea7f9f14cc15 24
rgrover1 260:ea7f9f14cc15 25 public:
rgrover1 260:ea7f9f14cc15 26 /**
rgrover1 260:ea7f9f14cc15 27 * @brief Creates a new GattAttribute using the specified
rgrover1 260:ea7f9f14cc15 28 * UUID, value length, and inital value
rgrover1 260:ea7f9f14cc15 29 *
rgrover1 260:ea7f9f14cc15 30 * @param[in] uuid
rgrover1 260:ea7f9f14cc15 31 * The UUID to use for this attribute
rgrover1 260:ea7f9f14cc15 32 * @param[in] valuePtr
rgrover1 260:ea7f9f14cc15 33 * The memory holding the initial value.
rgrover1 260:ea7f9f14cc15 34 * @param[in] initialLen
rgrover1 344:241987ac6b8b 35 * The min length in bytes of this attribute's value
rgrover1 260:ea7f9f14cc15 36 * @param[in] maxLen
rgrover1 344:241987ac6b8b 37 * The max length in bytes of this attribute's value
rgrover1 260:ea7f9f14cc15 38 *
rgrover1 260:ea7f9f14cc15 39 * @section EXAMPLE
rgrover1 260:ea7f9f14cc15 40 *
rgrover1 260:ea7f9f14cc15 41 * @code
rgrover1 260:ea7f9f14cc15 42 *
rgrover1 344:241987ac6b8b 43 * // UUID = 0x2A19, Min length 2, Max len = 2
rgrover1 344:241987ac6b8b 44 * GattAttribute attr = GattAttribute(0x2A19, &someValue, 2, 2);
rgrover1 260:ea7f9f14cc15 45 *
rgrover1 260:ea7f9f14cc15 46 * @endcode
rgrover1 260:ea7f9f14cc15 47 */
rgrover1 260:ea7f9f14cc15 48 GattAttribute(const UUID &uuid, uint8_t *valuePtr = NULL, uint16_t initialLen = 0, uint16_t maxLen = 0) :
rgrover1 304:30618b2c9808 49 _uuid(uuid), _valuePtr(valuePtr), _initialLen(initialLen), _lenMax(maxLen), _len(initialLen), _handle() {
rgrover1 260:ea7f9f14cc15 50 /* empty */
rgrover1 260:ea7f9f14cc15 51 }
rgrover1 260:ea7f9f14cc15 52
rgrover1 260:ea7f9f14cc15 53 public:
rgrover1 260:ea7f9f14cc15 54 Handle_t getHandle(void) const {return _handle; }
rgrover1 260:ea7f9f14cc15 55 const UUID &getUUID(void) const {return _uuid; }
rgrover1 304:30618b2c9808 56 uint16_t getLength(void) const {return _len; }
rgrover1 260:ea7f9f14cc15 57 uint16_t getInitialLength(void) const {return _initialLen;}
rgrover1 260:ea7f9f14cc15 58 uint16_t getMaxLength(void) const {return _lenMax; }
rgrover1 304:30618b2c9808 59 uint16_t *getLengthPtr(void) {return &_len; }
rgrover1 260:ea7f9f14cc15 60 void setHandle(Handle_t id) {_handle = id; }
rgrover1 260:ea7f9f14cc15 61 uint8_t *getValuePtr(void) {return _valuePtr; }
rgrover1 260:ea7f9f14cc15 62
rgrover1 260:ea7f9f14cc15 63 private:
rgrover1 260:ea7f9f14cc15 64 UUID _uuid; /* Characteristic UUID */
rgrover1 260:ea7f9f14cc15 65 uint8_t *_valuePtr;
rgrover1 260:ea7f9f14cc15 66 uint16_t _initialLen; /* Initial length of the value */
rgrover1 260:ea7f9f14cc15 67 uint16_t _lenMax; /* Maximum length of the value */
rgrover1 304:30618b2c9808 68 uint16_t _len; /* Current length of the value */
rgrover1 260:ea7f9f14cc15 69 Handle_t _handle;
rgrover1 260:ea7f9f14cc15 70
rgrover1 260:ea7f9f14cc15 71 private:
rgrover1 260:ea7f9f14cc15 72 /* disallow copy and assignment */
rgrover1 260:ea7f9f14cc15 73 GattAttribute(const GattAttribute &);
rgrover1 260:ea7f9f14cc15 74 GattAttribute& operator=(const GattAttribute &);
rgrover1 260:ea7f9f14cc15 75 };
rgrover1 260:ea7f9f14cc15 76
rgrover1 260:ea7f9f14cc15 77 #endif // ifndef __GATT_ATTRIBUTE_H__