Looking at the ble_nus service, I see that the SoftDevice allows notifications to be more than 20 bytes long:
uint32_t ble_nus_string_send(ble_nus_t * p_nus, uint8_t * p_string, uint16_t length)
{
ble_gatts_hvx_params_t hvx_params;
...
if (length > BLE_NUS_MAX_DATA_LEN) // 155 bytes
{
return NRF_ERROR_INVALID_PARAM;
}
...
hvx_params.type = BLE_GATT_HVX_NOTIFICATION;
return sd_ble_gatts_hvx(p_nus->conn_handle, &hvx_params);
}
As far as I remember the standard does not allow notifications larger than 20 bytes.
Is this limitation circumvented handled internally by the SoftDevice?