Попытка обнаружить устройства с низким энергопотреблением Bluetooth с помощью C ++ / winRT UWP и применить разумный фильтр.В примере с git hub приведен следующий код:
hstring aqsAllBluetoothLEDevices = L"(System.Devices.Aep.ProtocolId:=\"{bb7bb05e-5972-42b5-94fc-76eaa7084d49}\")";
auto requestedProperties = single_threaded_vector<hstring>
({ L"System.Devices.Aep.DeviceAddress", L"System.Devices.Aep.Bluetooth.Le.IsConnectable",
L"System.Devices.Aep.IsPresent" });
deviceWatcher = DeviceInformation::CreateWatcher(aqsAllBluetoothLEDevices,
requestedProperties,
DeviceInformationKind::AssociationEndpoint
);
Пока я использую вышеизложенное, я обнаруживаю все живые устройства BTLE;Я также обнаружил некоторые устройства, которые активно не рекламируются, поэтому есть некоторые ошибки с использованием
System.Devices.Aep.IsPresent
Однако я хотел бы фильтровать только на устройствах BTLE, которые следуют определенным профилям здоровья BTLE.Эти профили имеют такие сервисы, как
GATT - Blood pressure 18100000-0000-1000-8000-00805F9B34FB
GATT - Body composition 181B0000-0000-1000-8000-00805F9B34FB
GATT - Glucose 18080000-0000-1000-8000-00805F9B34FB
GATT - Health thermometer 18090000-0000-1000-8000-00805F9B34FB
GATT - Heart rate 180D0000-0000-1000-8000-00805F9B34FB
GATT - Pulse oximeter 18220000-0000-1000-8000-00805F9B34FB
GATT - Weight scale 181D0000-0000-1000-8000-00805F9B34FB
Кто-нибудь знает, как настроить deviceWatcher () для отчета только о тех устройствах, которые рекламируют один из указанных UUID сервисов?
Я пытался использовать их вprotocolId, но это ничего не обнаруживает.