GGTA team / nRF51822

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(),