2015-07-22 3 views
0

Будучи чем-то вроде новичка, мне было интересно, есть ли способ жестко закодировать что-то на периферии, которое позволило бы только одному уникальному центральному/ведущему подключиться ..... ?с периферийным кодированием для использования в качестве центрального/основного использования

ie/eg У меня есть приложение «простого чата» Arduino на RedBearLab Blend-Micro (которое для всех интенсивных целей такое же, как Arduino Uno с экраном BLE), и мне нужен только один единственный/уникальный телефон БЫТЬ СОБИРАТЬСЯ с ним и, следовательно, работать с ним.

Я понимаю, что GAP обрабатывает функции безопасности во время соединения BLE.

Таким образом, существует ли способ «кодировать» периферийное устройство в/под одним из следующих включает: spi.h? boards.h? EEPROM.h? RBL_nRF8001.h (или аналогичный)? Другое?

Не совсем получить ответ от Restricting the BLE peripheral device to connect to only one Master

ИЛИ

ли я застрял с EVERYTHING подключения, но кодирования периферийного каким-либо другим способом в профиле ГАТТ (я думаю), чтобы делать только что-то с предопределенным уникальным центральным/ведущим (как/где код?).

Большое спасибо за мысли заранее

ответ

0

Будучи чем-то новичку мне было интересно, если есть способ жесткого кода что-то на периферии, что бы разрешить только один уникальный центральный/мастер для подключения .. ...?

Theres «Политика фильтрации рекламы», как указано в спецификации Bluetooth Core V4.0. Его байт в рекламных параметрах, как указано в разделе 7.8.5 LE Set Advertising Parameters Command.

Например, значение 0x02 читает Разрешить запрос на сканирование из любого разрешения Разрешить запрос на соединение только из белого списка.

Тогда theres раздел 7.8.16 LE Add Device To White List Command.

При этом, если ваше устройство подтверждает спецификацию Bluetooth 4.0, оно должно поддерживать эти команды HCI. Однако могут быть функции, упрощающие эти процедуры, для упрощения использования этих команд HCI. Проверьте такие документы на документации вашего устройства.

Удачи!

0

Меня попросили ответить на этот вопрос по электронной почте. Прошел почти год с тех пор, как я прекратил работать над BLE. Поэтому я отвечаю на этот вопрос только на основе моих воспоминаний.

В основном @dominik имеет это право.

Если устройство является новым, оно должно рекламироваться нормально (без установки только белого списка), тогда любое центральное устройство может подключаться и соединяться. Как только он привязан, вы должны сохранить этот связанный флаг и bd_addr связанного хозяина с EEPROM. Если в следующий раз, когда мастер потерян, вы будете рекламировать этот флаг только для белых списков. Если новый центральный пытается подключиться, вы можете проверить, совпадает ли его адрес с вашим хозяином.

У меня нет спецификации BLE, и я уже немного забыл о BLE. Вероятно, спецификация говорит где-то, что если центральный видит вещание периферийного устройства с установленным только белым списком, он не будет пытаться подключиться, если он не распознает это периферийное устройство. Это экономит как некоторые усилия.

Но мастер всегда может инициировать подключение к вашему периферийному устройству, независимо от белого списка. Поэтому проверьте, является ли адрес центрального центрального устройства тем же, что и ваш ранее связанный мастер.

[Update]

Я использовал CSR1010 чипы. Я вспомнил, что стек BLE фактически позволяет мне вставить список bd_addr в структуру данных белого списка, поддерживаемую стеком. Затем, с установленным только белым списком, слой уровня нижнего уровня поможет вам фильтровать устройства, которые не входят в этот белый список, без вашего ведома.

Однако вы всегда можете отфильтровать bd_addrs из вашего кода приложения.

Смежные вопросы