High level Bluetooth Low Energy API and radio abstraction layer

Dependencies:   nRF51822

Dependents:   LinkNode_LIS3DH

Fork of BLE_API by Bluetooth Low Energy

Revision:
453:c8f73026ee16
Parent:
452:73b096a7f481
Child:
514:1fa338281798
--- a/public/Gap.h	Fri Jun 19 15:51:57 2015 +0100
+++ b/public/Gap.h	Fri Jun 19 15:51:57 2015 +0100
@@ -92,6 +92,34 @@
     };
     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;
+
+        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) :
+            handle(handleIn),
+            role(roleIn),
+            peerAddrType(peerAddrTypeIn),
+            peerAddr(),
+            ownAddrType(ownAddrTypeIn),
+            ownAddr(),
+            connectionParams(connectionParamsIn) {
+            memcpy(peerAddr, peerAddrIn, ADDR_LEN);
+            memcpy(ownAddr, ownAddrIn, ADDR_LEN);
+        }
+    };
+
     enum SecurityMode_t {
         SECURITY_MODE_NO_ACCESS,
         SECURITY_MODE_ENCRYPTION_OPEN_LINK, /**< require no protection, open link. */
@@ -157,10 +185,7 @@
     }
 
     typedef void (*EventCallback_t)(void);
-    typedef void (*ConnectionEventCallback_t)(Handle_t,
-                                              AddressType_t peerAddrType, const Address_t peerAddr,
-                                              AddressType_t ownAddrType,  const Address_t ownAddr,
-                                              const ConnectionParams_t *);
+    typedef void (*ConnectionEventCallback_t)(const ConnectionCallbackParams_t *params);
     typedef void (*HandleSpecificEvent_t)(Handle_t handle);
     typedef void (*DisconnectionEventCallback_t)(Handle_t, DisconnectionReason_t);
     typedef void (*RadioNotificationEventCallback_t) (bool radio_active); /* gets passed true for ACTIVE; false for INACTIVE. */
@@ -310,14 +335,16 @@
 
 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 *params) {
+                                const ConnectionParams_t *connectionParams) {
         state.connected = 1;
         if (onConnection) {
-            onConnection(handle, peerAddrType, peerAddr, ownAddrType, ownAddr, params);
+            ConnectionCallbackParams_t callbackParams(handle, role, peerAddrType, peerAddr, ownAddrType, ownAddr, connectionParams);
+            onConnection(&callbackParams);
         }
     }