Compartilhar via


Perfil de proximidade do Bluetooth

O Perfil de Proximidade define duas funções destinadas a permitir que os dispositivos detectem sua proximidade.

As duas funções são chamadas:

  • O Repórter de Proximidade
  • O Monitor de Proximidade

Diagrama ilustrando a relação entre as funções de Repórter de Proximidade e Monitor de Proximidade no Perfil de Proximidade bluetooth.

Repórter de Proximidade

O Repórter de Proximidade é necessário para ser um servidor ATTribute Genérico (GATT).

O Repórter de Proximidade dá suporte aos seguintes serviços GATT:

  • Serviço de Perda de Link (obrigatório)
  • Serviço de Alerta Imediato (opcional)
  • Tx Power Service (opcional)

Monitor de Proximidade

O Monitor de Proximidade é o cliente GATT. Ele deve criar e manter uma conexão com o Repórter de proximidade e monitorar as Informações de Força do Sinal de Rádio (ou RSSI) da conexão para calcular a perda de caminho do sinal. Se o Tx Power Service opcional estiver disponível no Repórter de Proximidade, ele também poderá usar essas informações adicionais para normalizar o valor RSSI subtraindo o RSSI do Nível de Energia Tx.

Suporte para GATT no Windows

Quando um dispositivo GATT é emparelhado com o Windows, o dispositivo se torna parte do sistema. O Windows fornece objetos de dispositivo para representar o dispositivo e os serviços primários relatados pelo dispositivo.

O namespace Windows.Devices.Bluetooth.GenericAttributeProfile descreve as APIs de Perfil de Atributo Genérico que os desenvolvedores podem usar no Windows.

Uma das primeiras etapas ao desenvolver um aplicativo de dispositivo é identificar quais serviços Bluetooth o aplicativo precisa para realizar os cenários que um usuário se preocupa. Para o Perfil de Proximidade, o aplicativo do dispositivo precisa usar o Serviço de Perda de Link e, opcionalmente, o Serviço de Alerta Imediato e o Tx Power Service.

O aplicativo do dispositivo deve usar as APIs disponíveis no namespace Windows.Devices.Enumeration para determinar se algum dispositivo emparelhado com o Windows implementa o Serviço de Perda de Link. Especificamente, use o método DeviceInformation.FindAllAsync .

O método DeviceInformation.FindAllAsync usa um seletor de dispositivo AQS (Sintaxe de Consulta Avançada) como um parâmetro para filtrar apenas os dispositivos que contêm o Serviço de Perda de Link. Os desenvolvedores de aplicativos de dispositivo também podem usar os métodos GetDeviceSelectorFromUuid ou GetDeviceSelectorFromShortId da classe GattDeviceService , para que não precisem construir manualmente o filtro AQS.

O Serviço de Perda de Link é um serviço GATT Bluetooth definido pelo SIG bluetooth e, como tal, uma ID Curta pode ser usada em vez de uma UUID totalmente qualificada.

As IDs de serviço de ID curta atribuídas a um serviço de perfil de proximidade são:

Nome do Serviço ID curta
Perda de link 0x1803
Alerta Imediato 0x1802
Tx Power 0x1804

O SIG bluetooth mantém a lista mais atualizada de serviços no documento de números atribuídos.

Depois de determinar qual serviço você deseja usar, chame GattDeviceService.FromIdAsync para obter uma instância do serviço.

Depois de obter um objeto GattDeviceService válido, use-o para se comunicar com o dispositivo usando a API Windows.Devices.Bluetooth.GenericAttributeProfile .

Essas APIs permitem o acesso a serviços específicos e seus objetos (por exemplo, Serviços Incluídos, Características e Descritores), bem como recursos de leitura e gravação.

O exemplo Perfil de Atributo Genérico Bluetooth – Serviço de Freqüência Cardíaca demonstra algumas dessas técnicas.

Usando a energia com eficiência

O suporte para Bluetooth de baixa energia no Windows tem um foco forte no uso de energia com eficiência. Esse foco inclui reduzir o consumo de energia para o adaptador de rádio Bluetooth local e usar a CPU para ser o mínimo possível.

Portanto, para estabelecer uma conexão Bluetooth LE, um aplicativo precisa registrar um manipulador para o evento GattCharacteristic.ValueChanged . Como alternativa, o aplicativo deve chamar qualquer um dos métodos GattCharacteristic.ReadValueAsync, GattCharacteristic.WriteValueAsync ou GattCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync sem especificar a opção BluetoothCacheMode.Cached.

Observação

Para minimizar o consumo de energia, o Windows não monitora ativamente o valor RSSI do link sondando o controlador de rádio Bluetooth local.

Considerações sobre energia são descritas em Detalhes de implementação do perfil de proximidade.