GLPS minor improvement


Status: Open

First reported:

Fixed in: TBD


In the current SDK6 version there exists a minor limitation in GLPS profile. If the application does not support Glucose measurement context, then the GLPS_IDX calculates the relative attribute value handle incorrectly. As a result, the ATTribute layer will return Attribute permissions are insufficient to the peer device.

When the structure element meas_ctx_supported is 0, and the application reads the GLS_IDX_FEATURE_VAL from the attribute state machine enum, Therefore, the get database attribute index a part of the condition of the ternary operator evaluates false in the original SDK6 code.


Changing the GLPS_IDX to the following corrects the calculation where the comparison is made against GLS_IDX_MEAS_NTF_CFG instead of GLS_IDX_MEAS_CTX_NTF_CFG:

Original location: _6.0.14.1114sdkblestackprofilesglpglps* File name: *glps.h

Existing code

/// Get database attribute index
#define GLPS_IDX(hdl) \
    (((((hdl) - glps_env->start_hdl) > GLS_IDX_MEAS_CTX_NTF_CFG) && !(glps_env->meas_ctx_supported)) ?\
        ((hdl) - glps_env->start_hdl + 3) : ((hdl) - glps_env->start_hdl))

Modified code

/// Get database attribute index
#define GLPS_IDX(hdl) \
    (((((hdl) - glps_env->start_hdl) > GLS_IDX_MEAS_NTF_CFG) && !(glps_env->meas_ctx_supported)) ?\
        ((hdl) - glps_env->start_hdl + 3) : ((hdl) - glps_env->start_hdl))