High level Bluetooth Low Energy API and radio abstraction layer

Dependencies:   nRF51822

Dependents:   LinkNode_LIS3DH

Fork of BLE_API by Bluetooth Low Energy

Files at this revision

API Documentation at this revision

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];