В 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. Это не стандартно и не требует оптимизации протокола.