2016-04-21 4 views
1

Я ищу для создания кросс-платформенного приложения, которое позволяет мне периодически рекламировать MAC-адрес устройства устройства (хотя я по какой-то причине понял, что получаю 3 для одного устройства.), Чтобы его можно было записать и используется для ссылки на короткую ручную рекламу пользователя, так что каждая реклама может быть идентифицирована конкретным пользователем; однако, похоже, что я попал в вопросы, касающиеся UUID на BLEПонимание пользовательских BLE UUIDs

После некоторого времени поиска я все еще немного смущен относительно UUID в службе BLE. Первоначально я решил использовать пользовательский BLE, который неоднократно не рекламировался либо с нечетной ошибкой, либо из-за того, что пакет был большим, даже если данные были только 1 байт. Я понял, что UUID должны быть в форме xxxxxxxx-0000-1000-8000-00805F9B34FB. Все, что находится за пределами этого, отправит полный UUID, который слишком велик при рекламе без подключения. Я также обнаружил, что могу использовать любой префикс UUID в верхней половине (0000XXXX), который не находится в зарезервированном диапазоне 0x000E - 0x01FF.

Это правильное предположение, и я могу использовать любой UUID, который не противоречит критериям i.e 00000200 - 0000FFFF. Я спрашиваю, потому что я, кажется, попадаю в проблемы при выборе UUID в этом диапазоне, и поскольку я понимаю, что создание пользовательских UUID вне диапазона - это плохая идея в BLE, поскольку он будет вынужден использовать 16 из 20-23 байтов. Какой-либо вклад в этом отношении?

Также является ли это предопределенным способом отправки рекламы пользовательского устройства, чтобы можно было кэшировать и использовать для идентификации других пользовательских рекламных объявлений?

EDIT:

Там прибывает потребность в проекте для подключения Телефоны кросс-платформенный вместе с другим оборудованием в порядке установления соединения. Первоначально я планировал, чтобы устройство неоднократно рекламировало его личность вместе с именем и уникальным MAC-адресом, который можно использовать для однозначного определения пользовательских сообщений. Любое устройство без кэшированного идентификатора пользователя просто удалит входящий пакет от этого пользователя. - kdgwill 9 мин. Назад

Я на самом деле думаю, что было бы проще, если бы я мог как-то подключиться к 5-10 устройствам за раз; однако идея состоит в том, чтобы не беспокоить пользователей с повторными подсказками при добавлении новых устройств. Поэтому я полагал, что использование рекламы и наводнения помогло бы, но размеры msg варьировались. Возможно ли однажды вызвать пользователя запрос на соединение и автоматически подключить каждое дополнительное устройство BLE. Если бы я мог каким-то образом подключить несколько устройств на основе 1 к 1 без необходимости запрашивать пользователя каждый раз, пока еще сканирую другие возможные подключения, которые были бы очень полезными, но я не думаю, что BLE разрешает это. - kdgwill 8 secs редактировать

Использование идентификатора ForVendor или CBAdvertisementDataServiceUUIDsKey - отличный способ однозначно идентифицировать каждого пользователя; однако это означало бы, что если я не буду использовать 1 зарегистрированного UUID, который я, возможно, просто случайно выбрал бы на данный момент. что накладные расходы будут либо 4-16 +, сколько байтов, которые требуется для идентификации каждого пакета.

+0

Некоторые ссылки я уже видел, но их было много других, чем иногда противоречили ** https: //www.bluetooth.com/specifications/assigned-numbers/service-discovery ** https: // WWW .bluetooth.com/спецификация/присвоенный-номер ** Http: //processors.wiki.ti.com/index.php/Tutorial: _How_to_Create_a_Custom_Bluetooth_Smart_Embedded_Application_with_the_CC2650DK # UUID – kdgwill

+0

** Http: //stackoverflow.com/questions/10243769/ какие-диапазоны-bluetooth-uuids-can-be-used-for-vendor-defined-профили ** http: //stackoverflow.com/questions/28714704/custom-ble-service-with-spp-support * * http: //stackoverflow.com/questions/21428455/android-ble-using-custom-service-uuid ** http: //stackoverflow.com/questions/18019161/startlescan-with-128-bit-uuids- doesnt-work-on-native-android-ble-implementation/ ** https: //www.safaribooksonline.com/library/view/getting-started-with/9781491900550/ch04.html – kdgwill

ответ

1

Если вы зарегистрируете устройство с помощью коннектора Bluetooth, вы можете использовать более короткие 4-байтовые UUID, в противном случае вы должны использовать более длинные 16-байтовые UUID.

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

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

MAC-адрес недоступен в коде с использованием инфраструктуры Bluetooth iOS. iOS 8+ может отправлять произвольный MAC-адрес, поэтому вы не должны рассчитывать на идентификацию устройства, так или иначе.

Поскольку MAC-адрес недоступен для вас, вы можете подключиться и отправить уникальный идентификатор (например, identifierForVendor) через соединение BLE или, возможно, включить небольшой идентификатор в рекламные данные через CBAdvertisementDataLocalNameKey.

+0

Приходит необходимость в проект по подключению телефонов к межплатформенной платформе вместе с другим оборудованием без установления соединения. Первоначально я планировал, чтобы устройство неоднократно рекламировало его личность вместе с именем и уникальным MAC-адресом, который можно использовать для однозначного определения пользовательских сообщений. Любое устройство без кэшированного идентификатора пользователя просто удалит входящий пакет от этого пользователя. – kdgwill

+0

Я действительно думаю, что было бы проще, если бы я мог как-то подключиться к 5-10 устройствам за раз; однако идея состоит в том, чтобы не беспокоить пользователей с повторными подсказками при добавлении новых устройств. Поэтому я полагал, что использование рекламы и наводнения помогло бы, но размеры msg варьировались. Возможно ли однажды вызвать пользователя запрос на соединение и автоматически подключить каждое дополнительное устройство BLE. Если бы я мог каким-то образом подключить несколько устройств на основе 1 к 1 без необходимости запрашивать пользователя каждый раз, пока еще сканирую другие возможные подключения, которые были бы очень полезными, но я не думаю, что BLE разрешает это. – kdgwill

+0

Использование идентификатора ForVendor или CBAdvertisementDataServiceUUIDsKey - отличный способ однозначно идентифицировать каждого пользователя; однако это означало бы, что если я не буду использовать 1 зарегистрированного UUID, который я, возможно, просто случайно выбрал бы на данный момент. что накладные расходы будут либо 4-16 +, сколько байтов, которые требуется для идентификации каждого пакета. – kdgwill

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