Patched version of nrf51822 FOTA compatible driver, with GPTIO disabled, as it clashed with the mbed definitions...

Fork of nRF51822 by Nordic Semiconductor

Files at this revision

API Documentation at this revision

Comitter:
rgrover1
Date:
Fri May 08 15:33:55 2015 +0100
Parent:
130:ec760bb91020
Child:
132:5f44d6c28625
Commit message:
Synchronized with git rev 488de5cd
Author: Rohit Grover
allow for security modes to be set for characteristics.

Changed in this revision

btle/custom/custom_helper.cpp Show annotated file Show diff for this revision Revisions of this file
btle/custom/custom_helper.h Show annotated file Show diff for this revision Revisions of this file
nRF51GattServer.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/btle/custom/custom_helper.cpp	Fri May 08 15:33:55 2015 +0100
+++ b/btle/custom/custom_helper.cpp	Fri May 08 15:33:55 2015 +0100
@@ -200,6 +200,7 @@
 error_t custom_add_in_characteristic(uint16_t    service_handle,
                                      ble_uuid_t *p_uuid,
                                      uint8_t     properties,
+                                     GattCharacteristic::ble_gatt_char_required_security_t requiredSecurity,
                                      uint8_t    *p_data,
                                      uint16_t    min_length,
                                      uint16_t    max_length,
@@ -244,11 +245,43 @@
     attr_md.vlen = (min_length == max_length) ? 0 : 1;
 
     if (char_props.read || char_props.notify || char_props.indicate) {
-        BLE_GAP_CONN_SEC_MODE_SET_OPEN(&attr_md.read_perm);
+        switch (requiredSecurity) {
+            case GattCharacteristic::SECURITY_MODE_ENCRYPTION_OPEN_LINK :
+                BLE_GAP_CONN_SEC_MODE_SET_OPEN(&attr_md.read_perm);
+                break;
+            case GattCharacteristic::SECURITY_MODE_ENCRYPTION_NO_MITM :
+                BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM(&attr_md.read_perm);
+                break;
+            case GattCharacteristic::SECURITY_MODE_ENCRYPTION_WITH_MITM :
+                BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(&attr_md.read_perm);
+                break;
+            case GattCharacteristic::SECURITY_MODE_SIGNED_NO_MITM :
+                BLE_GAP_CONN_SEC_MODE_SET_SIGNED_NO_MITM(&attr_md.read_perm);
+                break;
+            case GattCharacteristic::SECURITY_MODE_SIGNED_WITH_MITM :
+                BLE_GAP_CONN_SEC_MODE_SET_SIGNED_WITH_MITM(&attr_md.read_perm);
+                break;
+        };
     }
 
     if (char_props.write || char_props.write_wo_resp) {
-        BLE_GAP_CONN_SEC_MODE_SET_OPEN(&attr_md.write_perm);
+        switch (requiredSecurity) {
+            case GattCharacteristic::SECURITY_MODE_ENCRYPTION_OPEN_LINK :
+                BLE_GAP_CONN_SEC_MODE_SET_OPEN(&attr_md.write_perm);
+                break;
+            case GattCharacteristic::SECURITY_MODE_ENCRYPTION_NO_MITM :
+                BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM(&attr_md.write_perm);
+                break;
+            case GattCharacteristic::SECURITY_MODE_ENCRYPTION_WITH_MITM :
+                BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(&attr_md.write_perm);
+                break;
+            case GattCharacteristic::SECURITY_MODE_SIGNED_NO_MITM :
+                BLE_GAP_CONN_SEC_MODE_SET_SIGNED_NO_MITM(&attr_md.write_perm);
+                break;
+            case GattCharacteristic::SECURITY_MODE_SIGNED_WITH_MITM :
+                BLE_GAP_CONN_SEC_MODE_SET_SIGNED_WITH_MITM(&attr_md.write_perm);
+                break;
+        };
     }
 
     ble_gatts_attr_t attr_char_value = {0};
--- a/btle/custom/custom_helper.h	Fri May 08 15:33:55 2015 +0100
+++ b/btle/custom/custom_helper.h	Fri May 08 15:33:55 2015 +0100
@@ -20,6 +20,7 @@
 #include "common/common.h"
 #include "ble.h"
 #include "UUID.h"
+#include "GattCharacteristic.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -33,6 +34,7 @@
 error_t custom_add_in_characteristic(uint16_t                  service_handle,
                                      ble_uuid_t               *p_uuid,
                                      uint8_t                   properties,
+                                     GattCharacteristic::ble_gatt_char_required_security_t requiredSecurity,
                                      uint8_t                  *p_data,
                                      uint16_t                  min_length,
                                      uint16_t                  max_length,
--- a/nRF51GattServer.cpp	Fri May 08 15:33:55 2015 +0100
+++ b/nRF51GattServer.cpp	Fri May 08 15:33:55 2015 +0100
@@ -86,6 +86,7 @@
                  custom_add_in_characteristic(BLE_GATT_HANDLE_INVALID,
                                               &nordicUUID,
                                               p_char->getProperties(),
+                                              p_char->getRequiredSecurity(),
                                               p_char->getValueAttribute().getValuePtr(),
                                               p_char->getValueAttribute().getInitialLength(),
                                               p_char->getValueAttribute().getMaxLength(),