Notification transfer length limited by 20B

Hi,

In my project I need to send maximum bytes possible inside one package. When using the nrf connect app I can see that when reading the characteristic this works, but notifications are still limited to 20B. My configurations are:

#define NRF_SDH_BLE_GAP_DATA_LENGTH 251

#define NRF_SDH_BLE_GAP_EVENT_LENGTH 320

#define NRF_SDH_BLE_GATT_MAX_MTU_SIZE 247

When adding the characteristic the relevant values are set to:

    ble_gatts_attr_md_t cccd_md;
    memset(&cccd_md, 0, sizeof(cccd_md));
    BLE_GAP_CONN_SEC_MODE_SET_OPEN(&cccd_md.read_perm);
    BLE_GAP_CONN_SEC_MODE_SET_OPEN(&cccd_md.write_perm);
    cccd_md.vloc      = BLE_GATTS_VLOC_STACK;         
    cccd_md.vlen      = p_char_info->dyn_len ? 1 : 0; /// NOTE: This is 0
    char_md.p_cccd_md = &cccd_md;

    ble_gatts_attr_md_t attr_md;
    memset(&attr_md, 0, sizeof(attr_md));
    attr_md.vloc    = BLE_GATTS_VLOC_STACK;
    attr_md.vlen    = p_char_info->dyn_len ? 1 : 0; /// NOTE: This is 0
    attr_md.rd_auth = CHAR_IS_REQ_TYPE_RD_AUTH(p_char_info);
    BLE_GAP_CONN_SEC_MODE_SET_OPEN(&attr_md.read_perm);
    BLE_GAP_CONN_SEC_MODE_SET_OPEN(&attr_md.write_perm);

    ble_gatts_attr_t attr_char_value;
    memset(&attr_char_value, 0, sizeof(attr_char_value));
    attr_char_value.p_uuid    = &char_uuid;
    attr_char_value.p_attr_md = &attr_md;

    attr_char_value.max_len  = p_char_info->len; /// NOTE: This is e.g. 40
    attr_char_value.init_len = CHAR_IS_REQ_VAR_LEN(p_char_info); /// NOTE: This is e.g. 40
    attr_char_value.p_value  = g_ble_buff;

when sending the notification in ble_gatts_hvx_params_t the .p_len pointer is pointing to a variable with value e.g. 40.

Is there still something missing to setup?

Parents Reply Children
No Data
Related