2017-08-07 1 views
2

Comment puis-je connaître la relation entre MTU et la taille maximale des caractéristiques dans Bluetooth Low Energy (BLE)?BLE: Relation entre MTU et taille maximale caractéristique?

J'ai une carte de développement BLE qui exécute un programme 'echo' - donc quoi qu'elle reçoive, elle répond immédiatement.

Sur mon périphérique Android, si je demande une MTU de 247 octets (qui réussit) et que j'écris une caractéristique de 247 octets, elle est envoyée sous la forme de deux paquets: un de 242 octets et un de 5 octets. Toute tentative d'écriture d'une caractéristique avec plus de 244 octets donne 2 paquets - le premier avec 242 octets, le second avec les octets restants. Je ne sais pas pourquoi le premier paquet est long de 242 octets au lieu de 244, mais il est là. Si, à la place, je demande un MTU de 100 octets, le même type de chose se produit, mais les paquets se divisent lorsque la caractéristique a une longueur de plus de 97 octets et le premier paquet a toujours une longueur de 95 octets.

Il semble donc assez clair que sur ce périphérique Android particulier, la longueur maximale des paquets est inférieure de 3 octets à la valeur MTU. J'ai vu des pages parler de MTU sur iOS, où la longueur du paquet est inférieure de 3 octets à la valeur MTU. Ai-je la garantie que la différence entre MTU et la longueur maximale sera de 3 octets, sur tous les appareils mobiles et toutes les implémentations BLE?

Répondre

1

Presque. L'en-tête ATT est constitué d'un opcode d'un octet et de deux octets pour le handle ATT. Si vous utilisez "Write Long Characteristic Values", il existe également un paramètre de décalage à deux octets. Si vous utilisez la procédure "Writeed Write Without Response" (que personne n'utilise et presque pas de piles), il existe aussi une signature de 12 octets.

Notez également que la longueur maximale caractéristique est de 512 octets. La MTU maximale autorisée est cependant de 65535 octets. Vous ne pouvez jamais écrire une valeur de caractéristique supérieure à 512 octets, quelle que soit la taille de votre MTU.

Si vous êtes intéressé par les détails de bas niveau du protocole ATT, vous pouvez lire la spécification Bluetooth Core à https://www.bluetooth.com/specifications/bluetooth-core-specification, Vol 3 Partie F.

+0

Joliment mis Emil, pour ajouter: frais généraux dans les charges utiles est différent pour les caractéristiques d'écriture (3 octets) et les caractéristiques de lecture (1 octet). –