Профиль близкого взаимодействия Bluetooth
Профиль близкого взаимодействия определяет две роли, позволяющие устройствам обнаруживать их близость.
Вызываются две роли:
- Репортер близкого взаимодействия
- Монитор близкого взаимодействия
Близкое взаимодействие репортера
Репортер близкого взаимодействия должен быть универсальным сервером ATTribute (GATT).
Proximity Reporter поддерживает следующие службы GATT:
- Служба потери связи (обязательно)
- Служба немедленных оповещений (необязательно)
- Tx Power Service (необязательно)
Монитор близкого взаимодействия
Монитор близкого взаимодействия является клиентом GATT. Он должен создавать и поддерживать подключение к близкому репортеру и отслеживать сведения о силе радиосигнала (или RSSI) соединения, чтобы вычислить потерю пути сигнала. Если необязательная служба Tx Power Service доступна в Близком репортере, она также может использовать эти дополнительные сведения для нормализации значения RSSI путем вычитания RSSI из уровня питания Tx.
Поддержка GATT в Windows
Когда устройство GATT связано с Windows, устройство становится частью системы. Windows предоставляет объекты устройства , представляющие как устройство, так и основные службы, о чем сообщает устройство.
Пространство имен Windows.Devices.Bluetooth.GenericAttributeProfile описывает API универсального профиля атрибутов, которые разработчики могут использовать в Windows.
Одним из первых шагов при разработке приложения устройства является определение служб Bluetooth, необходимых приложению для выполнения сценариев, которые нужны пользователю. Для профиля близкого взаимодействия приложение устройства должно использовать службу потери ссылок и при необходимости службу немедленного оповещения и службу Tx Power Service.
Приложение устройства должно использовать API, доступные в пространстве имен Windows.Devices.Enumeration, чтобы определить, реализуют ли какие-либо устройства, связанные с Windows, службу потери связи. В частности, используйте метод DeviceInformation.FindAllAsync .
Метод DeviceInformation.FindAllAsync принимает селектор устройств AQS (Расширенный синтаксис запросов) в качестве параметра для фильтрации только устройств, содержащих службу потери связи. Разработчики приложений устройств также могут использовать методы GetDeviceSelectorFromUuid или GetDeviceSelectorFromShortId класса GattDeviceService , поэтому им не нужно создавать фильтр AQS вручную.
Служба потери связи — это служба Bluetooth GATT, определяемая bluetooth SIG, поэтому вместо полного идентификатора UUID можно использовать короткий идентификатор.
Идентификаторы службы Short Id , назначенные службе профилей близкого взаимодействия:
Имя службы | Короткий идентификатор |
---|---|
Потеря связи | 0x1803 |
Немедленное оповещение | 0x1802 |
Tx Power | 0x1804 |
Bluetooth SIG поддерживает самый актуальный список служб в документе назначенных номеров.
Определив, какую службу вы хотите использовать, вызовите GattDeviceService.FromIdAsync , чтобы получить экземпляр службы.
Получив допустимый объект GattDeviceService, используйте его для взаимодействия с устройством с помощью API Windows.Devices.Bluetooth.GenericAttributeProfile .
Эти API обеспечивают доступ к определенным службам и их объектам (например, включенным службам, характеристикам и дескрипторам), а также к возможностям чтения и записи.
Некоторые из этих методов демонстрируются в примере универсального профиля атрибута Bluetooth — служба частоты сердечных сокращений .
Эффективное использование электроэнергии
Поддержка Bluetooth с низким энергопотреблением в Windows уделяет особое внимание эффективному использованию энергии. Этот фокус включает в себя снижение энергопотребления для локального адаптера Bluetooth и использование ЦП, чтобы быть как можно меньше.
Таким образом, чтобы установить подключение Bluetooth LE, приложению необходимо зарегистрировать обработчик для события GattCharacteristic.ValueChanged . Кроме того, приложение должно вызывать любой из методов GattCharacteristic.ReadValueAsync, GattCharacteristic.WriteValueAsync или GattCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync без указания параметра BluetoothCacheMode.Cached.
Примечание
Чтобы свести к минимуму энергопотребление, Windows не отслеживает значение RSSI канала путем опроса локального радиоконтроля Bluetooth.
Рекомендации по энергопотреблению описаны в разделе Сведения о реализации профиля близкого взаимодействия.