0

Je tente d'obtenir une estimation de la portée d'un périphérique BLE, compte tenu des périphériques RSSI et de la puissance de transmission calibrée.Android BLE iBeacon annonce paquet plus grand que prévu

Le txPower calibré est censé être émis comme dernier octet dans le paquet de publicité iBeacon des périphériques. Ces paquets, selon la documentation que j'ai trouvée, devraient avoir une longueur de 30 octets.

Toutefois, le byte[] renvoyé pour le paquet a une longueur de 62 octets. Pour cette raison, le format des données de publicité est inconnu.

Pourquoi cela peut-il se produire et y a-t-il un moyen de déchiffrer le format du paquet de 62 octets?

Répondre

0

Lors de la recherche de périphériques BLE, les API Android renvoient non seulement les octets des PDU de publicité brutes mais également les PDU de réponse d'analyse. Ces derniers sont collés à la fin du premier dans le tableau d'octets renvoyé par les API d'analyse.

Pour cette raison, vous ne pouvez pas utiliser de manière fiable un décalage négatif à partir de la fin si le tableau d'octets permet d'accéder aux champs de balise. L'utilisation d'un décalage positif depuis le début est plus fiable, mais même cela peut échouer si des PDU inhabituelles sont insérées avant la PDU du fabricant, qui est celle qui vous intéresse.

Pour une fiabilité à 100%, vous devez analyser toutes les unités PDU, trouver la publication du fabricant et examiner les octets. J'ai appris cela à la dure lors de l'écriture du Android Beacon Library. Il est open source, donc même si vous voulez faire votre propre scan, c'est une bonne idée de voir comment ça marche.

+0

C'est bizarre. Existe-t-il un moyen plus simple d'obtenir le txPower calibré du périphérique? La constante calibrée est vraiment tout ce dont j'ai besoin de la publicité. – Orbit

+0

Vous devez obtenir la constante à partir des octets de la publicité. Une solution plus simple que l'analyse des PDU consiste à rechercher le modèle d'octets du préfixe iBeacon statique, puis à trouver la constante d'étalonnage basée sur un décalage à partir de là. L'inconvénient de cette approche est que la séquence d'octets peut apparaître (par hasard) ailleurs dans la publicité, provoquant l'échec de la technique. – davidgyoung