Files
Yggdrasil/infotro/SDi/bluetooth.md
T
2024-02-01 15:52:14 +01:00

2.7 KiB

Bluetooth

MESH networking

De base, le bluetooth comprend un "master" qui se connecte avec des périphériques comme des montres, des écouteurs... Mais le MESH networking consiste à ce que le "master" puisse être en même temps un périphérique d'un autre "master". On peut le comparer à un réseau IP.

[!info] Nordic a implémenté cette fonctionnalité sur leurs puces pour qu'elles puissent fonctionner simultanément des deux manières.

Adressage

L'adresse se fait sur 6 bytes :

  • Les 2 premiers sont utilisés pour faire la séquence de hopping (NAP)
  • Le byte suivant : upper address part (UAP),
  • Les 3 derniers sont utiliés pour identifier le vendeur : Lower Address Part (LAP)

[!warning] Les appareils de nos jours n'utilisent pas cette adresse pour s'identifier pour des raisons de sécurités

Mode bluetooth

Connection

Un élément central peut être parler simultanément avec 7 périphériques.

La communication fonctionne de la manière suivante : bluetooth_connection.png L'élément central va envoyer un paquet à un certain intervalle de connexion paramétrable. Si le périphérique ne répond pas la connexion n'est plus valide. S'il n'y a rien à transmettre, des paquet vides sont envoyés.

Broadcast

Un périphérique peut envoyer de l'information à un nombre illimité d'éléments centraux.

Transmission de data

Si le nombre de données oblige l'élément central à dépasser l'intervalle de connexion, il envoie tout, puis il reprend les paquets à chaque intervalle.

Client - Serveur

bluetooth_client_serveur.png

On peut faire que le client fasse une requête et le serveur donne la valeur, ou bien que le serveur transmette à chaque intervalle de connexion.

Database

Elle peut avoir différentes organisations de donnée :

  • public, elle permet à n'importe qui de la lire
  • privée, elle est propre au constructeur

GATT / ATT

GATT (Generic ATTribute profile) est le profil général d'attribut et ATT (ATTribute protocole) est le protocol utilisé par l'attribut. C'est une manière d'organiser la database de manière à avoir un service qui pointe sur une caractéristique possédant une valeur :

bluetooth_gatt_att.png

[!info] Le CCCD (Client Characteristic Configuration Descriptor) permet une configuration du client. Il permet de dire au serveur de notifier le client lorsqu'il y a un changement de valeur dans la caractéristique

bluetooth_cccd.png

La stack

Pour tous les appareils Bluetooth, l'organisation de la stack est la même. bluetooth_stack.png