コード例 #1
0
        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);
            }
        }
コード例 #2
0
 internal void RemoveDevice(UsbSerialDevice serialDevice)
 {
     if (serialDevice != null)
     {
         lock (_attachedDevicesSyncRoot)
         {
             serialDevice.CloseAllPorts();
             DeviceDetached?.Invoke(this, new UsbSerialDeviceEventArgs(serialDevice));
             AttachedDevices.Remove(serialDevice);
         }
     }
 }
コード例 #3
0
        //

        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));
                    }
                }
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
 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);
         }
     }
 }
 public UsbSerialDeviceEventArgs(UsbSerialDevice device)
 {
     Device = device;
 }