2016-08-17 3 views
1

Я пытаюсь сделать TI SensorTag (cc2650) бесконтактным (просто постоянно рекламируйте датчик, например акселерометр, показания).Как данные датчика могут быть встроены в рекламный пакет TI SensorTag cc2650?

В SensorTag.c файл в базовом проекте SensorTag, я могу видеть static uint8_t advertData[], но я не уверен, если я могу поставить динамические данные датчика там (или, если это правильный подход, или где найти GAP_ADTYPE_* список, если это требуется).

ответ

2

Я ничего не знаю об этом устройстве, поэтому мой ответ будет довольно общим.

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

Вот формат рекламных данных, как показано в BLE 4.2 Core Spec, том 3, часть C, 11.1.

BLE advertising data format

Вот что интересно вам последняя вложенная часть, тип AD и AD данные, и, конечно, длина их.

В общем, что вы хотите сделать, если у вас есть значение 4 байта, для установки длины 5 (байтов), 1 для типа и 4 для данных.

Тип сам по себе должен быть одним из типов GAP, определенных здесь: Generic Access Profile. Чтобы рекламировать свои собственные данные, вы должны выбрать последний, Специфические данные производителя, который равен 0xFF.

Что касается исходного кода и стека TI, который вы используете, я не могу вам помочь, однако, если он работает точно так же, чем другие стеки, которые я использовал, то очень вероятно, что:

  1. Вы может поместить данные в advertData []
  2. Тип GAP выглядит GAP_ADTYPE_MANUFACTURER_SPECIFIC

конечно длина структуры AD должен быть определен где-то. Указываете ли вы длину всего пакета или просто указываете стеку длину ваших данных (в advertData), и он будет вычислять (добавить 1) длину структуры AD.

+0

Полезно в объяснении вещей! advertData - максимальный размер = 31 байт для устройства. Я посмотрю, смогу ли я объединить рабочий пример. – ayman

+0

31 байта - это общий размер пакета, внутри которого вы можете иметь одну или несколько структур AD.Поэтому, если есть достаточно места, вы можете рекламировать UUID некоторых служб, некоторые флаги или локальное имя. Во всяком случае, я не знаю, управляется ли это стеком или вами. И это верно, поскольку длина присутствует в протоколе, поэтому в advertData вам, вероятно, не нужно указывать ее в другом месте, она будет проанализирована. – Tim

+1

О, и это написано на изображении из Core Spec, но если вы не знаете, вы можете добавить еще 31 байта в рекламный ответ. Этот ответ отправляется, если устройство сканера запрашивает больше данных. Но спецификация Core также говорит: «Принимая во внимание, что данные широковещательных пользователей, отправленные как часть рекламных пакетов, как правило, динамичны по своему характеру, данные сканирования , как правило, являются статичными по своей природе». (Vol1, Part A, 4.2.2.2) – Tim

0

Поскольку вы используете TI Stack, пожалуйста, найдите Simple BLE Observer & Простые примеры BLE Broadcaster. Если вы не хотите создавать соединение с устройством, это должен быть путь.

Как указано в документации TI

наблюдатель в основном это устройство, которое сканирует рекламных сообщений , но не может инициировать соединения. С другой стороны, Broadcaster - это устройство , которое отправляет рекламные сообщения, но не подключается.

Вы найдете все, что вам нужно в примерах документации и комментариев к исходному коду.

+0

Пытаясь сделать то и другое, установите устройство в данные датчика в пакете, чтобы другие устройства знали, должен ли он подключаться к нему. Я попытаюсь найти и заглянуть в источник примера BLE Broadcaster. – ayman

+0

Затем вы должны использовать этот http://processors.wiki.ti.com/index.php/LPRF_BLE_PeripheralBroadcaster в качестве начальной точки. Я считаю, что он уже хорошо документирован, но также просматривайте комментарии к коду. –

+0

Мне нужен наблюдатель, так как какое-то другое устройство необходимо подключить к датчику для активации GPIO. – ayman

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