This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

ble_nus_data_send()

ble_nus_data_send() can not work .  SDK15.3.0.  I have used two NRF52832. Based on the examples ble_app_gatts_c and ble_app_gatts,I have added nus service . Now central role can send message to peripheral role , but when peripheral role send message. The ble_nus_data_send ()  function can not run the part After  VERIFY_PARAM_NOT_NULL(p_nus).How can I solve this problem.

uint32_t ble_nus_data_send(ble_nus_t * p_nus,
                           uint8_t   * p_data,
                           uint16_t  * p_length,
                           uint16_t    conn_handle)
{
    ret_code_t                 err_code;
    ble_gatts_hvx_params_t     hvx_params;
    ble_nus_client_context_t * p_client;
    VERIFY_PARAM_NOT_NULL(p_nus);
    err_code = blcm_link_ctx_get(p_nus->p_link_ctx_storage, conn_handle, (void *) &p_client);
    VERIFY_SUCCESS(err_code);
    if ((conn_handle == BLE_CONN_HANDLE_INVALID) || (p_client == NULL))
    {
        return NRF_ERROR_NOT_FOUND;
    }
    if (!p_client->is_notification_enabled)
    {
        return NRF_ERROR_INVALID_STATE;
    }
    if (*p_length > BLE_NUS_MAX_DATA_LEN)
    {
        return NRF_ERROR_INVALID_PARAM;
    }
    memset(&hvx_params, 0, sizeof(hvx_params));
    hvx_params.handle = p_nus->tx_handles.value_handle;
    hvx_params.p_data = p_data;
    hvx_params.p_len  = p_length;
    hvx_params.type   = BLE_GATT_HVX_NOTIFICATION;
    return sd_ble_gatts_hvx(conn_handle, &hvx_params);
}
Parents Reply Children
Related