High level Bluetooth Low Energy API and radio abstraction layer

Dependencies:   nRF51822

Dependents:   LinkNode_LIS3DH

Fork of BLE_API by Bluetooth Low Energy

Revision:
1075:0d0dafb54bc9
Parent:
1074:1fedc77d9add
Child:
1077:98d37e26903c
diff -r 1fedc77d9add -r 0d0dafb54bc9 ble/Gap.h
--- a/ble/Gap.h	Mon Jan 11 08:51:42 2016 +0000
+++ b/ble/Gap.h	Mon Jan 11 08:51:43 2016 +0000
@@ -17,6 +17,7 @@
 #ifndef __GAP_H__
 #define __GAP_H__
 
+#include "ble/BLEProtocol.h"
 #include "GapAdvertisingData.h"
 #include "GapAdvertisingParams.h"
 #include "GapScanningParams.h"
@@ -30,19 +31,28 @@
 class GapAdvertisingData;
 
 class Gap {
+    /*
+     * DEPRECATION ALERT: all of the APIs in this `public` block are deprecated.
+     * They have been relocated to the class BLEProtocol.
+     */
 public:
-    enum AddressType_t {
-        ADDR_TYPE_PUBLIC = 0,
-        ADDR_TYPE_RANDOM_STATIC,
-        ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE,
-        ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE
-    };
-    typedef enum AddressType_t addr_type_t; /* @Note: Deprecated. Use AddressType_t instead. */
+    /**
+     * Address-type for BLEProtocol addresses.
+     * @note: deprecated. Use BLEProtocol::AddressType::Type instead.
+     */
+    typedef BLEProtocol::AddressType::Type AddressType_t;
 
-    static const unsigned ADDR_LEN = 6;
-    typedef uint8_t Address_t[ADDR_LEN]; /* 48-bit address, LSB format. */
-    typedef Address_t address_t;         /* @Note: Deprecated. Use Address_t instead. */
+    /**
+     * Address-type for BLEProtocol addresses.
+     * @note: deprecated. Use BLEProtocol::AddressType::Type instead.
+     */
+    typedef BLEProtocol::AddressType::Type addr_type_t;
 
+    static const unsigned ADDR_LEN = BLEProtocol::ADDR_LEN; /**< Length (in octets) of the BLE MAC address. */
+    typedef BLEProtocol::Address_t Address_t; /**< 48-bit address, LSB format. @Note: Deprecated. Use BLEProtocol::Address_t instead. */
+    typedef BLEProtocol::Address_t address_t; /**< 48-bit address, LSB format. @Note: Deprecated. Use BLEProtocol::Address_t instead. */
+
+public:
     enum TimeoutSource_t {
         TIMEOUT_SRC_ADVERTISING      = 0x00, /**< Advertising timeout. */
         TIMEOUT_SRC_SECURITY_REQUEST = 0x01, /**< Security request timeout. */
@@ -97,21 +107,21 @@
     typedef FunctionPointerWithContext<const AdvertisementCallbackParams_t *> AdvertisementReportCallback_t;
 
     struct ConnectionCallbackParams_t {
-        Handle_t      handle;
-        Role_t        role;
-        AddressType_t peerAddrType;
-        Address_t     peerAddr;
-        AddressType_t ownAddrType;
-        Address_t     ownAddr;
-        const ConnectionParams_t *connectionParams;
+        Handle_t                        handle;
+        Role_t                          role;
+        BLEProtocol::AddressType::Type  peerAddrType;
+        Address_t                       peerAddr;
+        BLEProtocol::AddressType::Type  ownAddrType;
+        Address_t                       ownAddr;
+        const ConnectionParams_t       *connectionParams;
 
-        ConnectionCallbackParams_t(Handle_t       handleIn,
-                                   Role_t         roleIn,
-                                   AddressType_t  peerAddrTypeIn,
-                                   const uint8_t *peerAddrIn,
-                                   AddressType_t  ownAddrTypeIn,
-                                   const uint8_t *ownAddrIn,
-                                   const ConnectionParams_t *connectionParamsIn) :
+        ConnectionCallbackParams_t(Handle_t                        handleIn,
+                                   Role_t                          roleIn,
+                                   BLEProtocol::AddressType::Type  peerAddrTypeIn,
+                                   const uint8_t                  *peerAddrIn,
+                                   BLEProtocol::AddressType::Type  ownAddrTypeIn,
+                                   const uint8_t                  *ownAddrIn,
+                                   const ConnectionParams_t       *connectionParamsIn) :
             handle(handleIn),
             role(roleIn),
             peerAddrType(peerAddrTypeIn),
@@ -161,7 +171,7 @@
      *
      * @return BLE_ERROR_NONE on success.
      */
-    virtual ble_error_t setAddress(AddressType_t type, const Address_t address) {
+    virtual ble_error_t setAddress(BLEProtocol::AddressType::Type type, const Address_t address) {
         /* avoid compiler warnings about unused variables */
         (void)type;
         (void)address;
@@ -174,7 +184,7 @@
      *
      * @return BLE_ERROR_NONE on success.
      */
-    virtual ble_error_t getAddress(AddressType_t *typeP, Address_t address) {
+    virtual ble_error_t getAddress(BLEProtocol::AddressType::Type *typeP, Address_t address) {
         /* Avoid compiler warnings about unused variables. */
         (void)typeP;
         (void)address;
@@ -233,10 +243,10 @@
      *     successfully. The connectionCallChain (if set) will be invoked upon
      *     a connection event.
      */
-    virtual ble_error_t connect(const Address_t           peerAddr,
-                                Gap::AddressType_t        peerAddrType,
-                                const ConnectionParams_t *connectionParams,
-                                const GapScanningParams  *scanParams) {
+    virtual ble_error_t connect(const Address_t                 peerAddr,
+                                BLEProtocol::AddressType::Type  peerAddrType,
+                                const ConnectionParams_t       *connectionParams,
+                                const GapScanningParams        *scanParams) {
         /* Avoid compiler warnings about unused variables. */
         (void)peerAddr;
         (void)peerAddrType;
@@ -983,42 +993,6 @@
         radioNotificationCallback.attach(tptr, mptr);
     }
 
-public:
-    /**
-     * Clear all Gap state of the associated object.
-     *
-     * This function is meant to be overridden in the platform-specific
-     * sub-class. Nevertheless, the sub-class is only expected to reset its
-     * state and not the data held in Gap members. This shall be achieved by a
-     * call to Gap::reset() from the sub-class' reset() implementation.
-     *
-     * @return BLE_ERROR_NONE on success.
-     *
-     * @note: Currently a call to reset() does not reset the advertising and
-     * scan parameters to default values.
-     */
-    virtual ble_error_t reset(void) {
-        /* Clear Gap state */
-        state.advertising = 0;
-        state.connected = 0;
-
-        /* Clear scanning state */
-        scanningActive = false;
-
-        /* Clear advertising and scanning data */
-        _advPayload.clear();
-        _scanResponse.clear();
-
-        /* Clear callbacks */
-        timeoutCallbackChain.clear();
-        connectionCallChain.clear();
-        disconnectionCallChain.clear();
-        radioNotificationCallback = NULL;
-        onAdvertisementReport = NULL;
-
-        return BLE_ERROR_NONE;
-    }
-
 protected:
     Gap() :
         _advParams(),
@@ -1038,13 +1012,13 @@
 
     /* Entry points for the underlying stack to report events back to the user. */
 public:
-    void processConnectionEvent(Handle_t                  handle,
-                                Role_t                    role,
-                                AddressType_t             peerAddrType,
-                                const Address_t           peerAddr,
-                                AddressType_t             ownAddrType,
-                                const Address_t           ownAddr,
-                                const ConnectionParams_t *connectionParams) {
+    void processConnectionEvent(Handle_t                        handle,
+                                Role_t                          role,
+                                BLEProtocol::AddressType::Type  peerAddrType,
+                                const Address_t                 peerAddr,
+                                BLEProtocol::AddressType::Type  ownAddrType,
+                                const Address_t                 ownAddr,
+                                const ConnectionParams_t       *connectionParams) {
         state.connected = 1;
         ConnectionCallbackParams_t callbackParams(handle, role, peerAddrType, peerAddr, ownAddrType, ownAddr, connectionParams);
         connectionCallChain.call(&callbackParams);