diff --git a/infotro/SDi/bluetooth.md b/infotro/SDi/bluetooth.md index 84629e1..623eb4a 100644 --- a/infotro/SDi/bluetooth.md +++ b/infotro/SDi/bluetooth.md @@ -2,3 +2,41 @@ Bluetooth +# MESH networking +#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](medias%2Fbluetooth_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](medias%2Fbluetooth_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 est le profil général d'attribut et ATT 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](medias%2Fbluetooth_gatt_att.png) +>[!info] Le `CCCD` permet une configuration du client personalisée. +![bluetooth_cccd.png](medias%2Fbluetooth_cccd.png) +# La stack +Pour tous les appareils Bluetooth, l'organisation de la stack est la même. +![bluetooth_stack.png](medias%2Fbluetooth_stack.png) \ No newline at end of file diff --git a/infotro/SDi/medias/bluetooth_cccd.png b/infotro/SDi/medias/bluetooth_cccd.png new file mode 100644 index 0000000..63924bb Binary files /dev/null and b/infotro/SDi/medias/bluetooth_cccd.png differ diff --git a/infotro/SDi/medias/bluetooth_client_serveur.png b/infotro/SDi/medias/bluetooth_client_serveur.png new file mode 100644 index 0000000..d282ba6 Binary files /dev/null and b/infotro/SDi/medias/bluetooth_client_serveur.png differ diff --git a/infotro/SDi/medias/bluetooth_connection.png b/infotro/SDi/medias/bluetooth_connection.png new file mode 100644 index 0000000..628536e Binary files /dev/null and b/infotro/SDi/medias/bluetooth_connection.png differ diff --git a/infotro/SDi/medias/bluetooth_gatt_att.png b/infotro/SDi/medias/bluetooth_gatt_att.png new file mode 100644 index 0000000..0f4e5f2 Binary files /dev/null and b/infotro/SDi/medias/bluetooth_gatt_att.png differ diff --git a/infotro/SDi/medias/bluetooth_stack.png b/infotro/SDi/medias/bluetooth_stack.png new file mode 100644 index 0000000..8797707 Binary files /dev/null and b/infotro/SDi/medias/bluetooth_stack.png differ