Аббревиатура GAP обозначает профиль доступа (Generic Access Profile) к устройству Bluetooth. В этот профиль управляет соединениями и анонсом (advertising) устройства в сети Bluetooth. GAP делает Ваше устройство видимым по радио, и определяет, как два устройства Bluetooth могут (или не могут) взаимодействовать друг с другом.
Примечание: непонятные термины и аббревиатуры см. в Словарике [3].
[Роли устройств Bluetooth]
GAP определяет различные роли для устройств, однако следует иметь в виду две ключевые концепции сети Bluetooth - центральное устройство и периферийное устройство.
Периферийное устройство. Обычно это маленькое, экономящее энергию устройство с ограниченными ресурсами, которое может быть подключено к более мощному центральному устройству. В качестве периферийного устройства можно привести пример монитор сердцебиения (heart rate monitor), метка доступа BLE (proximity tag), и т. п.
Центральное устройство. К таким устройствам относят мобильные телефоны или планшеты, у которых намного больше вычислительной мощности и памяти.
Более подробно про BLE, роли устройств и топологию радиосети Bluetooth см. [2].
[Анонс устройства, сканирование данных ответа]
Существует 2 способа отправки анонса устройства с помощью GAP - предоставление полезной нагрузки данных анонса (Advertising Data payload) и сканирование полезной нагрузки данных ответа (Scan Response payload).
Обе этих полезных нагрузки идентичны, и содержат в себе до 31 байт данных, однако обязательна только advertising data payload, поскольку эта полезная нагрузка будет постоянно передаваться от периферийного устройства, чтобы позволить центральным устройствам, находящимся в радиусе прохождения радиосигнала, узнать о том, что это периферийное устройство существует и готово к подключению. Scan response payload это опциональная вторичная полезная нагрузка, которую может запросить центральное устройство, и это позволяет разработчикам периферийного устройства добавить больше информации об устройстве, например строки для имени устройства, и т. п.
Advertising Process. Следующая диаграмма должна иллюстрировать процесс объявления о себе (advertising process) устройств Bluetooth, и работают как полезные нагрузки объявления (advertising payload) и сканирования ответа (scan response payload).
Периферийное устройство установит специальный интервал оповещения (advertising interval), и всякий раз по истечении этого интервала будет повторно передавать основной пакет оповещения (main advertising packet). Чем больше интервал оповещения, тем больше экономится энергия источника питания, однако устройство будет труднее найти в сети, если оно будет оповещать о себе каждые 2 секунды по сравнению с оповещением о себе каждые 20 миллисекунд.
Если прослушивающее устройство заинтересовано в scan response payload (и если это доступно в периферийном устройстве), то оно может опционально запросить scan response payload, и периферийное устройство ответить на этот запрос дополнительными данными.
[Широковещательная топология сети]
Хотя большинство периферийных устройств оповещают о себе таким образом, что соединение может быть установлено, и могут быть использованы сервисы и характеристики GATT [2] (что позволяет отправить больше данных в обоих направлениях), существуют ситуации, когда Вы хотите использовать только данные advertise.
Основной пример такого использования - когда Вы хотите, чтобы периферийное устройство посылало данные одновременно больше чем одному устройству. Это возможно только в том случае, когда используется advertising packet, поскольку данные, которые передаются и принимаются в режиме соединения, могут быть видны только двум участникам обмена (устройствам, которые из стадии оповещения перешли в стадию соединения).
Путем добавления небольшой порции пользовательских данных в полезную нагрузку 31-байтного advertising или полезную нагрузку scan response, Вы можете использовать недорогое периферийное устройство BLE для отправки данных в одном направлении на любые устройства, находящиеся в радиусе доступа, как показано на следующей иллюстрации. Такая техника передачи в BLE называется широковещанием (Broadcasting).
Например, это используется устройством iBeacon компании Apple, которое добавляет пользовательскую полезную нагрузку (custom payload) в main advertising packet, используя поле специфических данных производителя (Manufacturer Specific Data).
Как только произошло соединение между Вашим периферийным устройством и центральным устройством, процесс широковещания останавливается, и больше нельзя будет посылать advertising пакеты. После этого Вы будете использовать сервисы и характеристики GATT [2], чтобы обмениваться данными с устройством в обоих направлениях.
Подробнее о том, что такое периферийное устройство, центральное устройство, и как ведут себя устройства в сети BLE см. статью [2].
[Ссылки]
1. Bluetooth Low Energy GAP site:learn.adafruit.com. 2. Bluetooth Low Energy GATT. 3. Bluetooth: аббревиатуры и термины. |