Я занимаюсь разработкой приложений на top bluez. мое приложение является основным, то есть я подключаюсь к периферийному устройству. при первом подключении мы подключаемся, и ключи сохраняются в bluez, что нормально.
нам нужно поддержать случай использования, когда удаленное устройство (периферийное устройство) удаляет ключи. когда мы пытаемся повторно подключиться к HA, ожидается, что он обнаружил сбой шифрования и попытался восстановить.
В настоящее время мы просто не можем подключиться, пока пользователь не удалит ключи вручную с нашей стороны. Я хотел бы получить уведомление о том, что шифрование не удалось, поэтому я могу удалить ключи без использования взаимодействия с пользователем. Я не нашел способ сделать это. (Я видел в событиях btmgmt, на которые я могу зарегистрироваться, но они, кажется, не дают мне правильную индикацию, все, что я получил, это индикация разъединения с причиной разъединения 2 (sw), которая не является конкретной.
Дамп HCI:
<Команда HCI: LE Start Encryption (0x08 | 0x0019) plen 28 # 18 [hci0] 47.365447 Дескриптор: 83 Случайное число: 0xXXXXXXX Зашифрованный диверсификатор: 0xXXXXXXXXX Долгосрочный ключ: xxxxxxxxxxxxxxxxxx* Событие HCI: изменение шифрования (0x08) plen 4 # 22 [hci0] 47.605116 Статус: отсутствует PIN-код или ключ (0x06) Дескриптор: 83 Шифрование: отключено (0x00) </p>
Я хочу получитьобратный вызов, чтобы зарегистрироваться и получить сообщение об ошибке изменения шифрования из-за «ПИН-кода или ключа отсутствует»
Кто-нибудь знает, как мне реализовать это с помощью bluez? Интересно, почему bluez не заботится о таком сценарии ...