diff --git a/Source/Plugin.BLE/Windows/Adapter.cs b/Source/Plugin.BLE/Windows/Adapter.cs index 232a4569..e1adc2f9 100644 --- a/Source/Plugin.BLE/Windows/Adapter.cs +++ b/Source/Plugin.BLE/Windows/Adapter.cs @@ -264,13 +264,14 @@ private void AdvertisementReceived(BluetoothLEAdvertisementWatcher watcher, Blue { var deviceId = btAdv.BluetoothAddress.ParseDeviceId(); - if (DiscoveredDevicesRegistry.TryGetValue(deviceId, out var device) && device != null) + if (DiscoveredDevicesRegistry.TryGetValue(deviceId, out var device)) { + // This deviceId has been discovered Trace.Message("AdvReceived - Old: {0}", btAdv.ToDetailedString(device.Name)); (device as Device)?.Update(btAdv.RawSignalStrengthInDBm, ParseAdvertisementData(btAdv.Advertisement)); - this.HandleDiscoveredDevice(device); - } - if (device == null) + HandleDiscoveredDevice(device); + } + else { var bluetoothLeDevice = BluetoothLEDevice.FromBluetoothAddressAsync(btAdv.BluetoothAddress).AsTask().Result; if (bluetoothLeDevice != null) //make sure advertisement bluetooth address actually returns a device @@ -282,13 +283,8 @@ private void AdvertisementReceived(BluetoothLEAdvertisementWatcher watcher, Blue deviceId, ParseAdvertisementData(btAdv.Advertisement), btAdv.IsConnectable); - Trace.Message("AdvReceived - New: {0}", btAdv.ToDetailedString(device.Name)); - _ = DiscoveredDevicesRegistry.TryRemove(deviceId, out _); - this.HandleDiscoveredDevice(device); - } - else - { - DiscoveredDevicesRegistry[deviceId] = null; + Trace.Message("AdvReceived - New: {0}", btAdv.ToDetailedString(device.Name)); + HandleDiscoveredDevice(device); } } }