Я пишу библиотеку на C/C++ для устройства с низким энергопотреблением Bluetooth. До сих пор я использовал интерфейс D-Bus, выставленный Bluez, и смог обнаружить, подключиться и связаться с устройством.Blue повторно подключить устройства
Однако, когда устройство отключается либо из-за сбоя связи, либо из-за пределов диапазона, повторное подключение к нему не является тривиальным. В идеале я хотел бы иметь возможность создавать ожидающие подключения ко всем отключенным устройствам, но Bluez, похоже, не поддерживает это. Похоже, что Bluez поддерживает только один одновременный вызов соединения, тайм-аут через 15-20 секунд.
Таким образом, решение будет состоять в том, чтобы прослушивать рекламные пакеты и подключаться, когда обнаружено известное устройство. Хорошие люди на #bluez сказали мне, что это уже реализовано, и способ сделать это - зарегистрировать объект, который реализует GattProfile1 с помощью метода GattManager1 RegisterProfile. Попытка этого не дала результата, устройство остается отключенным после сбоя связи. Он также очень плохо документирован, поэтому есть хороший шанс, что я что-то пропустил.
Мои вопросы: Правильное ли решение? Будет ли он обеспечивать бесперебойную и быструю переподключение? Если это так, что может быть неправильным?