Clone of the nRF51822 repository from github The correct home is https://github.com/lancaster-university/nRF51822

Dependencies:   nrf51-sdk

Dependents:   microbit-dal microbit-ble-open microbit-dal-eddystone microbit-dal-ble-accelerometer-example ... more

Revision:
509:7dc75f30064f
Parent:
506:aab595b22981
Child:
513:9abdc3021d8c
--- a/source/btle/custom/custom_helper.cpp	Wed Dec 02 10:32:54 2015 +0000
+++ b/source/btle/custom/custom_helper.cpp	Wed Dec 02 12:35:26 2015 +0000
@@ -202,7 +202,7 @@
                                      uint8_t                   properties,
                                      SecurityManager::SecurityMode_t       requiredSecurity,
                                      uint8_t                  *p_data,
-                                     uint16_t                  length,
+                                     uint16_t                  min_length,
                                      uint16_t                  max_length,
                                      const uint8_t            *userDescriptionDescriptorValuePtr,
                                      uint16_t                  userDescriptionDescriptorValueLen,
@@ -242,8 +242,7 @@
     attr_md.wr_auth = writeAuthorization;
 
     attr_md.vloc = BLE_GATTS_VLOC_STACK;
-    /* Always set variable size */
-    attr_md.vlen = 1;
+    attr_md.vlen = (min_length == max_length) ? 0 : 1;
 
     if (char_props.read || char_props.notify || char_props.indicate) {
         switch (requiredSecurity) {
@@ -293,7 +292,7 @@
 
     attr_char_value.p_uuid    = p_uuid;
     attr_char_value.p_attr_md = &attr_md;
-    attr_char_value.init_len  = length;
+    attr_char_value.init_len  = min_length;
     attr_char_value.max_len   = max_length;
     attr_char_value.p_value   = p_data;
 
@@ -326,7 +325,7 @@
 error_t custom_add_in_descriptor(uint16_t    char_handle,
                                              ble_uuid_t *p_uuid,
                                              uint8_t    *p_data,
-                                             uint16_t    length,
+                                             uint16_t    min_length,
                                              uint16_t    max_length,
                                              uint16_t   *p_desc_handle)
 {
@@ -334,8 +333,7 @@
     ble_gatts_attr_md_t   desc_md = {0};
 
     desc_md.vloc = BLE_GATTS_VLOC_STACK;
-    /* Always set variable size */
-    desc_md.vlen = 1;
+    desc_md.vlen = (min_length == max_length) ? 0 : 1;
 
     /* Make it readable and writable */
     BLE_GAP_CONN_SEC_MODE_SET_OPEN(&desc_md.read_perm);
@@ -345,7 +343,7 @@
 
     attr_desc.p_uuid    = p_uuid;
     attr_desc.p_attr_md = &desc_md;
-    attr_desc.init_len  = length;
+    attr_desc.init_len  = min_length;
     attr_desc.max_len   = max_length;
     attr_desc.p_value   = p_data;