Обзор Bluetooth GATT Serivce UUID - PullRequest
       113

Обзор Bluetooth GATT Serivce UUID

0 голосов
/ 01 февраля 2020

Я думаю о реализации нескольких сервисов GATT для пользовательского приложения, но я сейчас застрял в исследовании. Я знаю, что сервисные uuids не случайны, некоторые части четко определены, другие все еще сбивают меня с толку.

Например, Служба информации об устройстве объявлена ​​как 0000180a-xxx "180a", которую я могу найти в https://www.bluetooth.com/specifications/gatt/services/, но, например, подполе «Строка номера модели» имеет идентификатор 00002a24-xxx, совершенно другой префикс, который также не определен в том же списке, но здесь: https://www.bluetooth.com/specifications/gatt/characteristics/. Как я могу получить список всех этих префиксов?

Является ли та часть, которую я пометил ххх, кажется равной для случайного устройства, найденного моим мобильным телефоном. Есть ли где-нибудь обзор того, как должен быть создан uuid и какие «безопасные» префиксы я могу использовать для своих собственных служб GATT?

1 Ответ

2 голосов
/ 06 февраля 2020

В Bluetooth типы атрибутов, типы услуг GATT, характеристики c типов и типы дескрипторов и другие константы идентифицируются с помощью UUID.

UUID - это не более чем идентификаторы, 128-битные идентификаторы. Одно данное 128-битное значение обозначает одну данную вещь. Использование 128-битных случайных значений дает минимальные шансы конфликтов для двух сторон, генерирующих идентификаторы самостоятельно, без необходимости в центральном реестре.

UUID в Bluetooth

Стандартные UUID Bluetooth получают специальные лечение, поскольку они обычно используются в различных протоколах спецификации. Они сгруппированы вокруг базового UUID Bluetooth (xxxxxxxx-0000-1000-8000-00805F9B34FB) и совместно используют 96 общих битов. (См. спецификация ядра , 3.B.2.5.1)

В различных частях протокола стандартные UUID могут передаваться в краткой форме, пропуская общие биты, таким образом, используя только 16 или 32 бита в эфире. Это деталь реализации, определяющая c для некоторых протоколов во всем стеке. Из-за этого стандартные UUID часто называют Short UUID.

Помимо стандартных UUID, любой разработчик может генерировать собственные UUID из 128 случайных битов и использовать их где угодно необходимо. Пользовательские идентификаторы UUID не должны использовать базовый UUID Bluetooth (и не могут быть закодированы в краткой форме, но вам не следует об этом беспокоиться).

Последствия для пользовательских служб

Использование стандартного UUID при реализации стандарта услуги и характеристики.

Никогда не используйте UUID на базе Bluetooth Base-UUID для пользовательских целей.

При разработке пользовательских служб и атрибутов, повторное использование существующих UUID (или части UUID) из кода, который вы можете найти в примере кода, SDK производителя или где-либо еще не очень хорошая идея. Вы действительно должны восстановить свои.

Дополнительные примечания

Спецификация не определяет никакой схемы группировки (то, что вы называете префиксами) для пользовательских UUID, но некоторые поставщики все же склонны группировать пользовательские UUID, в некотором роде. они генерируют один 96-битный пользовательский базовый UUID и выдают увеличивающиеся значения из этого, как это делал Bluetooth. Это не стандартно и не требует оптимизации протокола.

...