private void BluetoothService_DeviceRemoved(IEnumerable <IDevice> devices) { foreach (var device in devices) { var deviceService = _devices.FirstOrDefault(d => d.SerialNumber == device.Name); if (deviceService != null) { _devices.Remove(deviceService); DevicesRemoved?.Invoke(new DevicesFoundEventArgs(new [] { deviceService })); } } }
private void BluetoothServiceOnDeviceDiscovered(IEnumerable <IDevice> devices) { try { bool anychange = false; foreach (var device in devices) { var existing = _devices.FirstOrDefault(a => a.SerialNumber == device.Name); if (existing != null) { _devices.Remove(existing); DevicesRemoved?.Invoke(new DevicesFoundEventArgs(new [] { existing })); } var name = device.Name.ToLower(); IDeviceService phxDeviceService; if (name.StartsWith("phx42")) { phxDeviceService = new Phx42DeviceService(_bluetoothService, device, fileManager); } else if (name.StartsWith("phx21")) { phxDeviceService = new Phx21DeviceService(_bluetoothService, device, fileManager); } else if (name.StartsWith("fec")) { phxDeviceService = new TvaDeviceService(_bluetoothService, device, fileManager); } else { if (NonPhxDevices.All(n => n != name)) { NonPhxDevices.Add(name); } continue; } _devices.Add(phxDeviceService); anychange = true; foreach (IDeviceService deviceService in Devices) { deviceService.Connected -= DeviceOnConnected; deviceService.Connected += DeviceOnConnected; deviceService.Disconnected -= DeviceOnDisconnected; deviceService.Disconnected += DeviceOnDisconnected; } } if (anychange) { OnDevicesFound(new DevicesFoundEventArgs(Devices)); } } catch (Exception) { //ignore } }