Profil de proximité Bluetooth
Le profil de proximité définit deux rôles destinés à permettre aux appareils de détecter leur proximité.
Les deux rôles sont appelés :
- Le reporter de proximité
- Moniteur de proximité
Reporter de proximité
Le reporter de proximité doit être un serveur ATTribute générique (GATT).
Le reporter de proximité prend en charge les services GATT suivants :
- Service de perte de lien (obligatoire)
- Service d’alerte immédiate (facultatif)
- Tx Power Service (facultatif)
Moniteur de proximité
Le moniteur de proximité est le client GATT. Il doit créer et maintenir une connexion au reporter de proximité et surveiller les informations de force du signal radio (ou RSSI) de la connexion pour calculer la perte de chemin du signal. Si le service d’alimentation Tx facultatif est disponible sur le reporter de proximité, il peut également utiliser ces informations supplémentaires pour normaliser la valeur RSSI en soustrayant le RSSI du niveau d’alimentation Tx.
Prise en charge de GATT dans Windows
Lorsqu’un appareil GATT est associé à Windows, l’appareil fait partie du système. Windows fournit des objets d’appareil pour représenter à la fois l’appareil et les services principaux signalés par l’appareil.
L’espace de noms Windows.Devices.Bluetooth.GenericAttributeProfile décrit les API de profil d’attribut générique que les développeurs peuvent utiliser dans Windows.
L’une des premières étapes lors du développement d’une application d’appareil consiste à identifier les services Bluetooth dont l’application a besoin pour accomplir les scénarios qui intéressent un utilisateur. Pour le profil de proximité, l’application d’appareil doit utiliser le service de perte de lien et éventuellement le service d’alerte immédiate et Tx Power Service.
L’application d’appareil doit utiliser les API disponibles dans l’espace de noms Windows.Devices.Enumeration pour déterminer si les appareils associés à Windows implémentent le service de perte de liens. Plus précisément, utilisez la méthode DeviceInformation.FindAllAsync .
La méthode DeviceInformation.FindAllAsync prend un sélecteur d’appareil AQS (Advanced Query Syntax) en tant que paramètre afin de filtrer uniquement les appareils qui contiennent le service de perte de liens. Les développeurs d’applications d’appareil peuvent également utiliser les méthodes GetDeviceSelectorFromUuid ou GetDeviceSelectorFromShortId de la classe GattDeviceService , de sorte qu’ils n’ont pas besoin de construire manuellement le filtre AQS.
Le service De perte de liens est un service Bluetooth GATT défini par le SIG Bluetooth et, en tant que tel, un ID court peut être utilisé à la place d’un UUID complet.
Les ID de service Short ID attribués pour un service de profil de proximité sont les suivants :
Nom du service | ID court |
---|---|
Perte de lien | 0x1803 |
Alerte immédiate | 0x1802 |
Tx Power | 0x1804 |
Le SIG Bluetooth gère la liste des services la plus à jour dans le document des numéros attribués.
Une fois que vous avez déterminé le service que vous souhaitez utiliser, appelez GattDeviceService.FromIdAsync pour obtenir une instance du service.
Une fois que vous avez obtenu un objet GattDeviceService valide, utilisez-le pour communiquer avec l’appareil à l’aide de l’API Windows.Devices.Bluetooth.GenericAttributeProfile .
Ces API permettent d’accéder à des services spécifiques et à leurs objets (par exemple, services inclus, caractéristiques et descripteurs), ainsi qu’à des fonctionnalités de lecture et d’écriture.
L’exemple Profil d’attribut générique Bluetooth - Service de fréquence cardiaque illustre certaines de ces techniques.
Utilisation efficace de l’alimentation
La prise en charge de Bluetooth Low Energy dans Windows est fortement axée sur l’utilisation efficace de l’alimentation. Cette priorité inclut la réduction de la consommation d’énergie de l’adaptateur radio Bluetooth local et l’utilisation du processeur pour être aussi peu que possible.
Par conséquent, pour établir une connexion Bluetooth LE, une application doit inscrire un gestionnaire pour l’événement GattCharacteristic.ValueChanged . L’application doit également appeler l’une des méthodes GattCharacteristic.ReadValueAsync, GattCharacteristic.WriteValueAsync ou GattCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync sans spécifier l’option BluetoothCacheMode.Cached.
Notes
Afin de réduire la consommation d’énergie, Windows ne surveille pas activement la valeur RSSI du lien en interrogeant le contrôleur radio Bluetooth local.
Les considérations relatives à la puissance sont décrites dans Détails de l’implémentation du profil de proximité.