internal static async Task <TAPProperties> GetTAPPropertiesAsync(BluetoothLEDevice d) { GattCharacteristic tapData = null; GattCharacteristic tapMouse = null; GattCharacteristic nusRx = null; GattCharacteristic nusTx = null; GattCharacteristic airGestures = null; GattCharacteristic uiCommands = null; int fwVersion = 0; GattDeviceServicesResult tapServicesResult = await GetServicesAsync(d, 10, 800); foreach (GattDeviceService ser in tapServicesResult.Services) { if (ser.Uuid == TAPGuids.service_tap) { GattCharacteristicsResult tapCharacteristicsResult = await GetCharacteristicsAsync(ser, 10, 800); foreach (GattCharacteristic ch in tapCharacteristicsResult.Characteristics) { TAPManagerLog.Instance.Log(TAPManagerLogEvent.Info, String.Format("Found Characteristic {0} for Service {1}", TAPGuids.GetCharacteristicNameByGUID(ch.Uuid), TAPGuids.GetServiceNameByGUID(ser.Uuid))); if (ch.Uuid == TAPGuids.characteristic_tapdata) { tapData = ch; } else if (ch.Uuid == TAPGuids.characteristic_mousedata) { tapMouse = ch; } else if (ch.Uuid == TAPGuids.characteristic_airgesturesdata) { airGestures = ch; } else if (ch.Uuid == TAPGuids.characteristic_uicommands) { uiCommands = ch; } } } if (ser.Uuid == TAPGuids.service_nus) { GattCharacteristicsResult nusCharacteristicsResult = await GetCharacteristicsAsync(ser, 10, 800); foreach (GattCharacteristic ch in nusCharacteristicsResult.Characteristics) { TAPManagerLog.Instance.Log(TAPManagerLogEvent.Info, String.Format("Found Characteristic {0} for Service {1}", TAPGuids.GetCharacteristicNameByGUID(ch.Uuid), TAPGuids.GetServiceNameByGUID(ser.Uuid))); if (ch.Uuid == TAPGuids.characteristic_rx) { nusRx = ch; } else if (ch.Uuid == TAPGuids.characteristic_tx) { nusTx = ch; } } } if (ser.Uuid == TAPGuids.service_device_information) { GattCharacteristicsResult fwCharacteristicsResult = await GetCharacteristicsAsync(ser, 10, 800); foreach (GattCharacteristic ch in fwCharacteristicsResult.Characteristics) { TAPManagerLog.Instance.Log(TAPManagerLogEvent.Info, String.Format("Found Characteristic {0} for Service {1}", TAPGuids.GetCharacteristicNameByGUID(ch.Uuid), TAPGuids.GetServiceNameByGUID(ser.Uuid))); if (ch.Uuid == TAPGuids.characteristic_fw_version) { GattReadResult fwRead = await ch.ReadValueAsync(); if (fwRead.Status == GattCommunicationStatus.Success) { DataReader reader = DataReader.FromBuffer(fwRead.Value); string str = reader.ReadString(fwRead.Value.Length); fwVersion = VersionNumber.FromString(str); } } } } } return(new TAPProperties(tapData, tapMouse, nusRx, nusTx, uiCommands, airGestures, fwVersion)); }
internal static async Task <TAPProperties> GetTAPPropertiesAsync(BluetoothLEDevice d) { GattCharacteristic tapData = null; GattCharacteristic tapMouse = null; GattCharacteristic nusRx = null; int fwVersion = 0; GattDeviceServicesResult tapServicesResult = await GetServicesAsync(d, 10, 800); foreach (GattDeviceService ser in tapServicesResult.Services) { if (ser.Uuid == TAPGuids.service_tap) { GattCharacteristicsResult tapCharacteristicsResult = await GetCharacteristicsAsync(ser, 10, 800); foreach (GattCharacteristic ch in tapCharacteristicsResult.Characteristics) { if (ch.Uuid == TAPGuids.characteristic_tapdata) { tapData = ch; } else if (ch.Uuid == TAPGuids.characteristic_mousedata) { tapMouse = ch; } } } if (ser.Uuid == TAPGuids.service_nus) { GattCharacteristicsResult nusCharacteristicsResult = await GetCharacteristicsAsync(ser, 10, 800); foreach (GattCharacteristic ch in nusCharacteristicsResult.Characteristics) { if (ch.Uuid == TAPGuids.characteristic_rx) { nusRx = ch; } } } if (ser.Uuid == TAPGuids.service_device_information) { GattCharacteristicsResult fwCharacteristicsResult = await GetCharacteristicsAsync(ser, 10, 800); foreach (GattCharacteristic ch in fwCharacteristicsResult.Characteristics) { if (ch.Uuid == TAPGuids.characteristic_fw_version) { GattReadResult fwRead = await ch.ReadValueAsync(); if (fwRead.Status == GattCommunicationStatus.Success) { DataReader reader = DataReader.FromBuffer(fwRead.Value); string str = reader.ReadString(fwRead.Value.Length); fwVersion = VersionNumber.FromString(str); } } } } } return(new TAPProperties(tapData, tapMouse, nusRx, fwVersion)); }