Обзор uuid службы Bluetooth GATT

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

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

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


person rekire    schedule 01.02.2020    source источник


Ответы (1)


В Bluetooth типы атрибутов, типы услуг GATT, типы характеристик и типы дескрипторов, а также другие константы идентифицируются через 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 бита в эфире. Это деталь реализации, специфичная для некоторых протоколов во всем стеке. Из-за этого стандартные UUID часто называют короткими UUID.

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

Последствия для таможенных услуг

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

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

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

Боковые примечания

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

person Nipo    schedule 06.02.2020
comment
Спасибо за подтверждение некоторых деталей, которые я узнал за это время. Тем более, что есть некоторые общие моменты, о которых я уже догадался. Не могли бы вы связать соответствующую документацию для будущих исследований? - person rekire; 06.02.2020
comment
Добавил ссылку прямо в ответ. - person Nipo; 08.02.2020