internal void RemoveDevice(UsbDevice usbDevice) { UsbSerialDevice removedDevice = null; var attachedDevices = AttachedDevices.ToArray(); foreach (var device in attachedDevices) { bool serialEquals; try { // TODO Fix this workaround of https://github.com/ysykhmd/usb-serial-for-xamarin-android/issues/1 serialEquals = device.UsbDevice.SerialNumber == usbDevice.SerialNumber; } catch (Exception) { serialEquals = true; } if (device.UsbDevice.VendorId == usbDevice.VendorId && device.UsbDevice.ProductId == usbDevice.ProductId && serialEquals) { removedDevice = device; break; } } if (removedDevice != null) { RemoveDevice(removedDevice); } }
internal void RemoveDevice(UsbSerialDevice serialDevice) { if (serialDevice != null) { lock (_attachedDevicesSyncRoot) { serialDevice.CloseAllPorts(); DeviceDetached?.Invoke(this, new UsbSerialDeviceEventArgs(serialDevice)); AttachedDevices.Remove(serialDevice); } } }
// internal void AddDevice(UsbManager usbManager, UsbDevice usbDevice) { UsbSerialDevice serialDevice = GetDevice(usbManager, usbDevice, AllowAnonymousCdcAcmDevices); if (serialDevice != null) { lock (AttachedDevicesSyncRoot) { AttachedDevices.Add(serialDevice); if (DeviceAttached != null) { DeviceAttached(this, new UsbSerialDeviceEventArgs(serialDevice)); } } } }
private UsbSerialDevice GetDevice(UsbManager usbManager, UsbDevice usbDevice, bool allowAnonymousCdcAcmDevices) { var id = new UsbSerialDeviceID(usbDevice.VendorId, usbDevice.ProductId); var info = FindDeviceInfo(id, usbDevice.DeviceClass, allowAnonymousCdcAcmDevices); if (info != null) { #if UseSmartThreadPool var device = new UsbSerialDevice(usbManager, usbDevice, id, info, ThreadPool); #else var device = new UsbSerialDevice(usbManager, usbDevice, id, info); #endif return(device); } return(null); }
private UsbSerialDevice GetDevice(UsbManager usbManager, UsbDevice usbDevice, bool allowAnonymousCdcAcmDevices) { UsbSerialDeviceID id = new UsbSerialDeviceID(usbDevice.VendorId, usbDevice.ProductId); UsbSerialDeviceInfo info = FindDeviceInfo(id); if (info != null) { UsbSerialDevice device = new UsbSerialDevice(usbManager, usbDevice, id, info); return(device); } else if (allowAnonymousCdcAcmDevices && usbDevice.DeviceClass == UsbClass.Comm) { UsbSerialDevice device = new UsbSerialDevice(usbManager, usbDevice, id, UsbSerialDeviceInfo.CdcAcm); return(device); } return(null); }
internal void RemoveDevice(UsbDevice usbDevice) { UsbSerialDevice removedDevice = null; UsbSerialDevice[] attachedDevices = AttachedDevices.ToArray(); foreach (UsbSerialDevice device in attachedDevices) { if ( device.UsbDevice.VendorId == usbDevice.VendorId && device.UsbDevice.ProductId == usbDevice.ProductId && device.UsbDevice.SerialNumber == usbDevice.SerialNumber) { removedDevice = device; break; } } if (removedDevice != null) { RemoveDevice(removedDevice); } }
public UsbSerialDeviceEventArgs(UsbSerialDevice device) { Device = device; }
private UsbSerialDevice GetDevice(UsbManager usbManager, UsbDevice usbDevice, bool allowAnonymousCdcAcmDevices) { UsbSerialDeviceID id = new UsbSerialDeviceID(usbDevice.VendorId, usbDevice.ProductId); UsbSerialDeviceInfo info = FindDeviceInfo (id); if (info != null) { UsbSerialDevice device = new UsbSerialDevice(usbManager, usbDevice, id, info); return device; } else if (allowAnonymousCdcAcmDevices && usbDevice.DeviceClass == UsbClass.Comm) { UsbSerialDevice device = new UsbSerialDevice(usbManager, usbDevice, id, UsbSerialDeviceInfo.CdcAcm); return device; } return null; }
internal void RemoveDevice(UsbSerialDevice serialDevice) { if (serialDevice != null) { lock (AttachedDevicesSyncRoot) { serialDevice.CloseAllPorts (); if (DeviceDetached != null) { DeviceDetached (this, new UsbSerialDeviceEventArgs (serialDevice)); } AttachedDevices.Remove (serialDevice); } } }