Bluetooth LE: Тип адреса
Я работаю над технологией iBeacon и не могу найти ответа на конкретный вопрос, касающийся типа адреса. Я нашел документацию (спецификацию bluetooth), объясняющую, что такое типы адресов, но я не могу найти, как выбрать между двумя типами (публичный и случайный).
Вот пример, где я его нашел (это прослушанный пакет, передаваемый iBeacon на Raspberry PI):
и (извините, я пока не могу публиковать изображения из-за своей репутации)
Давайте попробуем задать вопросы и сделать это более конкретным:
Поскольку общедоступный адрес должен быть действительным, может ли существовать команда для генерации случайного (но правильного при форматировании адреса), чтобы назначить его соответствующему устройству?
Если вышеприведенное верно: какой будет команда? и как вы откатываетесь (на основной публичный адрес)?
Или есть "переключатель", который позволяет выбирать между (действительным) публичным адресом или генерировать случайный?
Спасибо.
1 ответ
Вот команда, которая выглядит очень похоже на то, что вы хотите. Смотрите здесь для деталей.
Set Static Address Command
==========================
Command Code: 0x002B
Controller Index: <controller id>
Command Parameters: Address (6 Octets)
Return Parameters:
This command allows for setting the static random address. It is
only supported on controllers with LE support. The static random
address is suppose to be valid for the lifetime of the
controller or at least until the next power cycle. To ensure
such behavior, setting of the address is limited to when the
controller is powered off.
The special BDADDR_ANY address (00:00:00:00:00:00) can be used
to disable the static address.
When a controller has a public address (which is required for
all dual-mode controllers), this address is not used. Only when
the controller information reports BDADDR_ANY (00:00:00:00:00:00),
it is required to configure a static address first.
If privacy mode is enabled and the controller is single mode
LE only without a public address, the static random address is
used as identity address.
This command generates a Command Complete event on success or a
Command Status event on failure.
Possible errors: Rejected
Not Supported
Invalid Parameters
Invalid Index
Мне кажется, что функции конфиденциальности BlueZ находятся в стадии активной разработки и могут быть еще не завершены. Смотрите этот коммит с 2014/02/18. Если вы хотите попробовать это с последними обновлениями, вам придется скомпилировать BlueZ из исходного кода.