Bluetooth Низкое энергопотребление Гатт отправляет слишком много информации - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть проблема с моим кодом: я передаю 51 байт для характеристики c, а затем вызываю функцию для отправки этого на мой телефон через предварительно установленное соединение GATT, однако он отправляет гораздо больше данных, чем 51 байт.

У меня есть функция ble_cus_send_csv, которая принимает несколько параметров. Это моя пользовательская структура, мои данные, длина данных и обработчик.

Я отправляю в него 51 символ, который, я считаю, составляет 51 байт. Я беру sizeof () this и, это дает 51.

Затем я запускаю свою функцию ble_cus_send_csv, и она запускается и выводит мои 51 байт данных с гораздо большим количеством байтов впоследствии.

Я прикрепил моя функция отправки ниже и мой вывод. Он должен просто вывести фиксированные 51 байт.

Я использую плату Nordi c NRF52840-dk внутри студии Segger. Код написан на C.

Спасибо, Gatt characteristic data

Моя функция ble_cus_send_csv:

uint32_t ble_cus_send_csv(ble_cus_t * p_cus,
                          uint8_t   * p_data,
                          uint16_t  * p_length,
                          uint16_t    conn_handle)
{
    ble_gatts_hvx_params_t hvx_params;
    NRF_LOG_INFO("Sending CSV.\r\n"); 
    if (p_cus == NULL)
    {
        return NRF_ERROR_NULL;
    }

    uint32_t err_code = NRF_SUCCESS;
    // Send value if connected and notifying.
    if ((p_cus->conn_handle != BLE_CONN_HANDLE_INVALID)) //Setup the parameters to pass into the characteristic value
    {

        memset(&hvx_params, 0, sizeof(hvx_params));

        hvx_params.handle = p_cus->custom_value_handles.value_handle;
        hvx_params.p_data = p_data;
        hvx_params.p_len  = p_length;
        hvx_params.type   = BLE_GATT_HVX_NOTIFICATION;


        err_code = sd_ble_gatts_hvx(conn_handle, &hvx_params);//Set the characteristic
        NRF_LOG_INFO("sd_ble_gatts_hvx result: %x. \r\n", err_code); 
    }
    else
    {
        err_code = NRF_ERROR_INVALID_STATE;
        NRF_LOG_INFO("sd_ble_gatts_hvx result: NRF_ERROR_INVALID_STATE. \r\n"); 
    }
    return err_code;
}

P_length в отладчике

P_length

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...