Condividi tramite


Profilo di prossimità Bluetooth

Il profilo di prossimità definisce due ruoli destinati a consentire ai dispositivi di rilevare la loro prossimità.

I due ruoli sono chiamati:

  • Il reporter di prossimità
  • Monitoraggio prossimità

Diagramma che illustra la relazione tra i ruoli Di prossimità Reporter e Monitoraggio prossimità nel profilo di prossimità Bluetooth.

Reporter di prossimità

Il reporter di prossimità deve essere un server GENERIC ATTribute (GATT).

Il reporter di prossimità supporta i seguenti servizi GATT:

  • Servizio perdita di collegamenti (obbligatorio)
  • Servizio avviso immediato (facoltativo)
  • Tx Power Service (facoltativo)

Monitoraggio prossimità

Il monitoraggio di prossimità è il client GATT. Deve creare e mantenere una connessione al reporter di prossimità e monitorare le informazioni sulla forza del segnale radio (o RSSI) della connessione per calcolare la perdita del percorso del segnale. Se il Tx Power Service facoltativo è disponibile nel Reporter di prossimità, può usare anche queste informazioni aggiuntive per normalizzare il valore RSSI sottraendo l'RSSI dal tx power level.

Supporto per GATT in Windows

Quando un dispositivo GATT è associato a Windows, il dispositivo diventa parte del sistema. Windows fornisce oggetti dispositivo per rappresentare sia il dispositivo che i servizi primari segnalati dal dispositivo.

Lo spazio dei nomi Windows.Devices.Bluetooth.GenericAttributeProfile descrive gli sviluppatori di app Generic Attribute Profiles che possono essere usati in Windows.

Uno dei primi passaggi per lo sviluppo di un'app per dispositivi consiste nell'identificare i servizi Bluetooth necessari per eseguire gli scenari di cui un utente si occupa. Per il profilo di prossimità, l'app del dispositivo deve usare il servizio perdita di collegamenti e, facoltativamente, il servizio di avviso immediato e il servizio Power Tx.

L'app del dispositivo deve usare le API disponibili nello spazio dei nomi Windows.Devices.Enumeration per determinare se qualsiasi dispositivo associato a Windows implementa il servizio di perdita di collegamenti. In particolare, usare il metodo DeviceInformation.FindAllAsync .

Il metodo DeviceInformation.FindAllAsync accetta un selettore di dispositivi AQS (sintassi di query avanzate) come parametro per filtrare solo i dispositivi che contengono il servizio di perdita di collegamento. Gli sviluppatori di app per dispositivi possono anche usare i metodi GetDeviceSelectorFromUuid o GetDeviceSelectorFromShortId della classe GattDeviceService , in modo da non dover costruire manualmente il filtro AQS.

Il servizio Di perdita di collegamento è un servizio GATT Bluetooth definito dal sig Bluetooth e, ad esempio, un ID breve può essere usato anziché un UUID completo.

Gli ID del servizio ID breve assegnati per un servizio profilo di prossimità sono:

Nome del servizio ID breve
Perdita di collegamenti 0x1803
Avviso immediato 0x1802
Alimentazione tx 0x1804

Bluetooth SIG gestisce l'elenco più aggiornato dei servizi nel documento numeri assegnati.

Dopo aver determinato quale servizio si vuole usare, chiamare GattDeviceService.FromIdAsync per ottenere un'istanza del servizio.

Dopo aver ottenuto un oggetto GattDeviceService valido, usarlo per comunicare con il dispositivo usando l'API Windows.Devices.Bluetooth.GenericAttributeProfile .

Queste API consentono l'accesso a servizi specifici e ai relativi oggetti (ad esempio Servizi inclusi, Caratteristiche e descrittori), nonché funzionalità di lettura e scrittura.

L'esempio di profilo attributo generico Bluetooth - Frequenza cardiaca illustra alcune di queste tecniche.

Uso efficiente dell'alimentazione

Il supporto per Bluetooth Low Energy in Windows ha un forte focus sull'uso efficiente dell'energia. Questo stato attivo include la riduzione del consumo di energia per la scheda radio Bluetooth locale e l'uso della CPU per essere il più piccolo possibile.

Pertanto, per stabilire una connessione Bluetooth LE un'app deve registrare un gestore per l'evento GattCharacteristic.ValueChanged . In alternativa, l'app deve chiamare uno dei metodi GattCharacteristic.ReadValueAsync, GattCharacteristic.WriteValueAsync o GattCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync senza specificare l'opzione BluetoothCacheMode.Cached.

Nota

Per ridurre al minimo il consumo di energia, Windows non monitora attivamente il valore RSSI del collegamento eseguendo il polling del controller di radio Bluetooth locale.

Le considerazioni sull'alimentazione sono descritte in Dettagli sull'implementazione del profilo di prossimità.