2016-08-17 1 views
1

J'essaie de rendre le TI SensorTag (cc2650) sans connexion (juste annoncer constamment le capteur, comme l'accéléromètre, les lectures).Comment intégrer des données de capteur dans le paquet publicitaire du TI SensorTag cc2650?

Dans le fichier SensorTag.c dans la base projet SensorTag, je peux voir le static uint8_t advertData[] mais je ne suis pas sûr si je peux mettre les données des capteurs dynamiques là (ou si c'est la bonne approche ou où trouver la liste GAP_ADTYPE_* si c'est nécessaire).

Répondre

2

Je ne connais rien à cet appareil, donc ma réponse sera assez générale.

Oui, vous pouvez diffuser les données de votre capteur par le biais de la publicité, de cette manière, les autres appareils ne doivent pas se connecter pour voir la valeur du capteur.

Voici le format de données publicitaires indiqué dans la spécification de base BLE 4.2, Vol 3, partie C, 11.1.

BLE advertising data format

Voici ce qui vous intéressant est la dernière partie imbriquée, le type AD et AD Data, et bien sûr la longueur de ceux-ci.

Fondamentalement, ce que vous voulez faire est, si vous avez une valeur de 4 octets, de définir une longueur de 5 (octets), 1 pour le type et 4 pour les données.

Le type lui-même doit être l'un des types de GAP définis ici: Generic Access Profile. Pour annoncer vos propres données, vous devez choisir le dernier, Données spécifiques du fabricant, qui est 0xFF.

Concernant votre code source et la pile TI que vous utilisez je ne peux pas vraiment vous aider, si cela fonctionne de la même façon que les autres piles que je l'ai utilisé, il est très probable que:

  1. Vous peut mettre vos données advertData []
  2. le type GAP ressemble GAP_ADTYPE_MANUFACTURER_SPECIFIC

Bien sûr, la longueur de la structure AD doit être spécifié quelque part. Que vous spécifiiez la longueur du paquet entier ou que vous indiquiez à la pile la longueur de vos données (dans advertData) et qu'il calcule (ajoutez 1) la longueur de la structure AD.

+0

Très utile pour expliquer les choses! advertData est la taille maximale = 31 octets pour l'appareil. Je vais voir si je peux reconstituer un exemple de travail. – ayman

+0

31 octets est la taille globale du paquet, à l'intérieur duquel vous pouvez avoir une ou plusieurs structures AD.Donc, s'il y a suffisamment d'espace, vous pouvez toujours annoncer l'UUID de certains services, certains drapeaux ou noms locaux. De toute façon je ne sais pas si c'est géré par la pile ou par toi-même. Et c'est vrai puisque la longueur est présente dans le protocole, donc dans advertData, vous n'avez probablement pas besoin de le spécifier ailleurs, il sera analysé. – Tim

+1

Oh et c'est écrit sur l'image du Core Spec mais au cas où vous ne savez pas, vous pouvez mettre 31 octets de plus dans la réponse de la publicité. Cette réponse est envoyée si le périphérique du scanner demande plus de données. Mais la spécification de base indique également 'Alors que les données d'utilisateur de diffusion envoyées comme partie des paquets de publicité est généralement de nature dynamique, la réponse de balayage données est généralement de nature statique.'. (Vol1, Part A, 4.2.2.2) – Tim

0

Étant donné que vous utilisez TI Stack, veuillez trouver Simple BLE Observer & Exemples de BLE Broadcaster simple. Si vous ne voulez pas créer de connexion à l'appareil, il devrait être le chemin à parcourir.

Comme il est indiqué dans la documentation TI

Observer est essentiellement un dispositif qui scanne pour les messages publicitaires mais ne peut pas établir des connexions. D'un autre côté, un Broadcaster est un périphérique qui envoie des messages publicitaires mais non connectable.

Vous trouverez tout ce dont vous avez besoin dans la documentation d'exemple et les commentaires de code source.

+0

En essayant de faire les deux, demandez à l'appareil de mettre les données du capteur dans le paquet afin qu'un autre périphérique sache s'il doit s'y connecter. Je vais essayer de trouver et jeter un coup d'œil à la source d'exemple BLE Broadcaster. – ayman

+0

Ensuite, vous devriez utiliser celui-ci http://processors.wiki.ti.com/index.php/LPRF_BLE_PeripheralBroadcaster comme point de départ. Je pense que c'est déjà bien documenté, mais regardez aussi les commentaires de code. –

+0

J'ai besoin d'un observateur car un autre périphérique doit se connecter au capteur pour activer le GPIO. – ayman