Как правильно начать сопряжение и соединение?

Я использую чип esp32 и esp-idf v3.0, и мы также разрабатываем приложение для Android. Esp32 - это сервер GATT, а приложение для Android - это клиент GATT. После ESP_GATTS_CONNECT_EVT я вызываю esp_ble_set_encryption(connection.remote_bda, ESP_BLE_SEC_ENCRYPT_MITM), и чтобы быть "пуленепробиваемым", у меня есть задача, которая проверяет, успешно ли спаривание, и если нет, то она пытается 10 раз (с задержкой между ними) использовать esp, чтобы использовать esp.remote_bda, ESP_BLE_SEC_ENCRYPT_MITM) для начала сопряжения, но я всегда получаю следующее сообщение об ошибке: "BT: ранее enc не было сделано для того же устройства".

Вот параметры безопасности:

esp_ble_auth_req_t auth_req = ESP_LE_AUTH_REQ_SC_BOND; // соединение с одноранговым устройством после аутентификации
esp_ble_io_cap_t iocap = ESP_IO_CAP_NONE; // устанавливаем возможность ввода / вывода Нет вывода Нет ввода
uint8_t key_size = 16; // размер ключа должен быть 7~16 байт
uint8_t init_key = ESP_BLE_ENC_KEY_MASK | ESP_BLE_ID_KEY_MASK;

uint8_t rsp_key = ESP_BLE_ENC_KEY_MASK | ESP_BLE_ID_KEY_MASK;

Это происходит только тогда, когда я впервые пытаюсь подключить устройства, если я попробую позже, это сработает.

Кто-нибудь знает, почему у меня такая проблема? Я предполагаю, что что-то упустил, но я не могу понять, что.

0 ответов

Другие вопросы по тегам