Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of BLE_API by
Revision 331:10f190629734, committed 2015-04-15
- Comitter:
- rgrover1
- Date:
- Wed Apr 15 09:05:10 2015 +0100
- Parent:
- 330:2a3f554ee9fd
- Child:
- 332:1dc2f80b4710
- Commit message:
- Synchronized with git rev 04d91605
Author: Rohit Grover
merge GapAdvertisingData.cpp into GapAdvertisingData.h
Changed in this revision
| common/GapAdvertisingData.cpp | Show diff for this revision Revisions of this file |
| public/GapAdvertisingData.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/common/GapAdvertisingData.cpp Wed Apr 15 09:05:10 2015 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,238 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdio.h>
-#include <string.h>
-
-#include "GapAdvertisingData.h"
-
-/**************************************************************************/
-/*!
- \brief Creates a new GapAdvertisingData instance
-
- \par EXAMPLE
-
- \code
-
- \endcode
-*/
-/**************************************************************************/
-GapAdvertisingData::GapAdvertisingData(void) : _payload(), _payloadLen(0), _appearance(GENERIC_TAG) {
- /* empty */
-}
-
-/**************************************************************************/
-/*!
- Destructor
-*/
-/**************************************************************************/
-GapAdvertisingData::~GapAdvertisingData(void)
-{
-}
-
-/**************************************************************************/
-/*!
- \brief Adds advertising data based on the specified AD type (see
- DataType)
-
- \args[in] advDataType The Advertising 'DataType' to add
- \args[in] payload Pointer to the payload contents
- \args[in] len Size of the payload in bytes
-
- \returns ble_error_t
-
- \retval BLE_ERROR_NONE
- Everything executed properly
-
- \retval BLE_ERROR_BUFFER_OVERFLOW
- The specified data would cause the advertising buffer
- to overflow
-
- \par EXAMPLE
-
- \code
-
- \endcode
-*/
-/**************************************************************************/
-ble_error_t GapAdvertisingData::addData(DataType advDataType, const uint8_t *payload, uint8_t len)
-{
- /* ToDo: Check if an AD type already exists and if the existing */
- /* value is exclusive or not (flags, etc.) */
-
- /* Make sure we don't exceed the 31 byte payload limit */
- if (_payloadLen + len + 2 > GAP_ADVERTISING_DATA_MAX_PAYLOAD) {
- return BLE_ERROR_BUFFER_OVERFLOW;
- }
-
- /* Field length */
- memset(&_payload[_payloadLen], len + 1, 1);
- _payloadLen++;
-
- /* Field ID */
- memset(&_payload[_payloadLen], (uint8_t)advDataType, 1);
- _payloadLen++;
-
- /* Payload */
- memcpy(&_payload[_payloadLen], payload, len);
- _payloadLen += len;
-
- return BLE_ERROR_NONE;
-}
-
-/**************************************************************************/
-/*!
- \brief Helper function to add APPEARANCE data to the advertising
- payload
-
- \args[in] appearance The APPEARANCE value to add
-
- \returns ble_error_t
-
- \retval BLE_ERROR_NONE
- Everything executed properly
-
- \retval BLE_ERROR_BUFFER_OVERFLOW
- The specified data would cause the advertising buffer
- to overflow
-
- \par EXAMPLE
-
- \code
-
- \endcode
-*/
-/**************************************************************************/
-ble_error_t GapAdvertisingData::addAppearance(Appearance appearance)
-{
- _appearance = appearance;
- return addData(GapAdvertisingData::APPEARANCE, (uint8_t *)&appearance, 2);
-}
-
-/**************************************************************************/
-/*!
- \brief Helper function to add FLAGS data to the advertising
- payload
-
- \args[in] flag The FLAGS value to add
-
- \par LE_LIMITED_DISCOVERABLE
- The peripheral is discoverable for a limited period of
- time
-
- \par LE_GENERAL_DISCOVERABLE
- The peripheral is permanently discoverable
-
- \par BREDR_NOT_SUPPORTED
- This peripheral is a Bluetooth Low Energy only device
- (no EDR support)
-
- \returns ble_error_t
-
- \retval BLE_ERROR_NONE
- Everything executed properly
-
- \retval BLE_ERROR_BUFFER_OVERFLOW
- The specified data would cause the advertising buffer
- to overflow
-
- \par EXAMPLE
-
- \code
-
- \endcode
-*/
-/**************************************************************************/
-ble_error_t GapAdvertisingData::addFlags(uint8_t flags)
-{
- return addData(GapAdvertisingData::FLAGS, &flags, 1);
-}
-
-/**************************************************************************/
-/*!
- \brief Helper function to add TX_POWER_LEVEL data to the
- advertising payload
-
- \args[in] flag The TX_POWER_LEVEL value to add
-
- \returns ble_error_t
-
- \retval BLE_ERROR_NONE
- Everything executed properly
-
- \retval BLE_ERROR_BUFFER_OVERFLOW
- The specified data would cause the advertising buffer
- to overflow
-
- \par EXAMPLE
-
- \code
-
- \endcode
-*/
-/**************************************************************************/
-ble_error_t GapAdvertisingData::addTxPower(int8_t txPower)
-{
- /* ToDo: Basic error checking to make sure txPower is in range */
- return addData(GapAdvertisingData::TX_POWER_LEVEL, (uint8_t *)&txPower, 1);
-}
-
-/**************************************************************************/
-/*!
- \brief Clears the payload and resets the payload length counter
-*/
-/**************************************************************************/
-void GapAdvertisingData::clear(void)
-{
- memset(&_payload, 0, GAP_ADVERTISING_DATA_MAX_PAYLOAD);
- _payloadLen = 0;
-}
-
-/**************************************************************************/
-/*!
- \brief Returns a pointer to the the current payload
-
- \returns A pointer to the payload
-*/
-/**************************************************************************/
-const uint8_t *GapAdvertisingData::getPayload(void) const
-{
- return (_payloadLen > 0) ? _payload : NULL;
-}
-
-/**************************************************************************/
-/*!
- \brief Returns the current payload length (0..31 bytes)
-
- \returns The payload length in bytes
-*/
-/**************************************************************************/
-uint8_t GapAdvertisingData::getPayloadLen(void) const
-{
- return _payloadLen;
-}
-
-/**************************************************************************/
-/*!
- \brief Returns the 16-bit appearance value for this device
-
- \returns The 16-bit appearance value
-*/
-/**************************************************************************/
-uint16_t GapAdvertisingData::getAppearance(void) const
-{
- return (uint16_t)_appearance;
-}
\ No newline at end of file
--- a/public/GapAdvertisingData.h Wed Apr 15 09:05:10 2015 +0100
+++ b/public/GapAdvertisingData.h Wed Apr 15 09:05:10 2015 +0100
@@ -17,6 +17,8 @@
#ifndef __GAP_ADVERTISING_DATA_H__
#define __GAP_ADVERTISING_DATA_H__
+#include <string.h>
+
#include "blecommon.h"
#define GAP_ADVERTISING_DATA_MAX_PAYLOAD (31)
@@ -188,17 +190,115 @@
OUTDOOR_LOCATION_AND_NAVIGATION_POD = 5188 /**< Outdoor Location and Navigation Pod */
};
- GapAdvertisingData(void);
- virtual ~GapAdvertisingData(void);
+ GapAdvertisingData(void) : _payload(), _payloadLen(0), _appearance(GENERIC_TAG) {
+ /* empty */
+ }
+
+ /**
+ * Adds advertising data based on the specified AD type (see DataType)
+ *
+ * @param advDataType The Advertising 'DataType' to add
+ * @param payload Pointer to the payload contents
+ * @param len Size of the payload in bytes
+ *
+ * @return BLE_ERROR_BUFFER_OVERFLOW if the specified data would cause the
+ * advertising buffer to overflow, else BLE_ERROR_NONE.
+ */
+ ble_error_t addData(DataType advDataType, const uint8_t *payload, uint8_t len)
+ {
+ /* ToDo: Check if an AD type already exists and if the existing */
+ /* value is exclusive or not (flags, etc.) */
+
+ /* Make sure we don't exceed the 31 byte payload limit */
+ if (_payloadLen + len + 2 > GAP_ADVERTISING_DATA_MAX_PAYLOAD) {
+ return BLE_ERROR_BUFFER_OVERFLOW;
+ }
+
+ /* Field length */
+ memset(&_payload[_payloadLen], len + 1, 1);
+ _payloadLen++;
+
+ /* Field ID */
+ memset(&_payload[_payloadLen], (uint8_t)advDataType, 1);
+ _payloadLen++;
+
+ /* Payload */
+ memcpy(&_payload[_payloadLen], payload, len);
+ _payloadLen += len;
+
+ return BLE_ERROR_NONE;
+ }
+
+ /**
+ * Helper function to add APPEARANCE data to the advertising payload
+ *
+ * @param appearance
+ * The APPEARANCE value to add
+ *
+ * @return BLE_ERROR_BUFFER_OVERFLOW if the specified data would cause the
+ * advertising buffer to overflow, else BLE_ERROR_NONE.
+ */
+ ble_error_t addAppearance(Appearance appearance = GENERIC_TAG) {
+ _appearance = appearance;
+ return addData(GapAdvertisingData::APPEARANCE, (uint8_t *)&appearance, 2);
+ }
- ble_error_t addData(DataType, const uint8_t *, uint8_t);
- ble_error_t addAppearance(Appearance appearance = GENERIC_TAG);
- ble_error_t addFlags(uint8_t flags = LE_GENERAL_DISCOVERABLE);
- ble_error_t addTxPower(int8_t txPower);
- void clear(void);
- const uint8_t *getPayload(void) const;
- uint8_t getPayloadLen(void) const;
- uint16_t getAppearance(void) const;
+ /**
+ * Helper function to add FLAGS data to the advertising payload.
+ * @param flags
+ * LE_LIMITED_DISCOVERABLE
+ * The peripheral is discoverable for a limited period of time.
+ * LE_GENERAL_DISCOVERABLE
+ * The peripheral is permanently discoverable.
+ * BREDR_NOT_SUPPORTED
+ * This peripheral is a Bluetooth Low Energy only device (no EDR support).
+ *
+ * @return BLE_ERROR_BUFFER_OVERFLOW if the specified data would cause the
+ * advertising buffer to overflow, else BLE_ERROR_NONE.
+ */
+ ble_error_t addFlags(uint8_t flags = LE_GENERAL_DISCOVERABLE) {
+ return addData(GapAdvertisingData::FLAGS, &flags, 1);
+ }
+
+ /**
+ * Helper function to add TX_POWER_LEVEL data to the advertising payload
+ *
+ * @return BLE_ERROR_BUFFER_OVERFLOW if the specified data would cause the
+ * advertising buffer to overflow, else BLE_ERROR_NONE.
+ */
+ ble_error_t addTxPower(int8_t txPower) {
+ /* ToDo: Basic error checking to make sure txPower is in range */
+ return addData(GapAdvertisingData::TX_POWER_LEVEL, (uint8_t *)&txPower, 1);
+ }
+
+ /**
+ * Clears the payload and resets the payload length counter
+ */
+ void clear(void) {
+ memset(&_payload, 0, GAP_ADVERTISING_DATA_MAX_PAYLOAD);
+ _payloadLen = 0;
+ }
+
+ /**
+ * Returns a pointer to the the current payload
+ */
+ const uint8_t *getPayload(void) const {
+ return (_payloadLen > 0) ? _payload : NULL;
+ }
+
+ /**
+ * Returns the current payload length (0..31 bytes)
+ */
+ uint8_t getPayloadLen(void) const {
+ return _payloadLen;
+ }
+
+ /**
+ * Returns the 16-bit appearance value for this device
+ */
+ uint16_t getAppearance(void) const {
+ return (uint16_t)_appearance;
+ }
private:
uint8_t _payload[GAP_ADVERTISING_DATA_MAX_PAYLOAD];
