private void _Init(bool throwErrors) { Dispose(); _device = UsbDevice.OpenUsbDevice(new UsbDeviceFinder(_VENDOR_ID, _PRODUCT_ID1)) as IUsbDevice; if (_device == null) { _device = UsbDevice.OpenUsbDevice(new UsbDeviceFinder(_VENDOR_ID, _PRODUCT_ID2)) as IUsbDevice; } if (_device == null) { _device = UsbDevice.OpenUsbDevice(new UsbDeviceFinder(_VENDOR_ID, _PRODUCT_ID3)) as IUsbDevice; } if (_device == null) { if (throwErrors) { throw new InvalidOperationException("Wireless receiver not found"); } } else { _device.ClaimInterface(1); _device.SetConfiguration(1); _responses = new Dictionary <int, List <byte[]> >(); var now = DateTime.Now; for (int i = 0; i < _NUMBER_OF_SLOTS; i++) { var slot = new ReceiverSlot(); slot.DataWriter = _device.OpenEndpointWriter(_GetWriteEndpoint((i * 2) + 1)); slot.DataReader = _device.OpenEndpointReader(_GetReadEndpoint((i * 2) + 1)); slot.DataReader.DataReceived += DataReader_DataReceived; slot.DataReader.DataReceivedEnabled = true; slot.HeadsetWriter = _device.OpenEndpointWriter(_GetWriteEndpoint((i * 2) + 2)); slot.HeadsetReader = _device.OpenEndpointReader(_GetReadEndpoint((i * 2) + 2)); slot.HeadsetReader.DataReceived += HeadsetReader_DataReceived; slot.HeadsetReader.DataReceivedEnabled = true; _slots.Add(i + 1, slot); _RefreshSlot(i + 1); } _refreshSlotsThread = new Thread(new ThreadStart(_RefreshSlots)); _refreshSlotsThread.IsBackground = true; _refreshSlotsThread.Start(); } }
private void _Init(bool throwErrors) { Dispose(); _device = UsbDevice.OpenUsbDevice(new UsbDeviceFinder(_VENDOR_ID, _PRODUCT_ID1)) as IUsbDevice; if (_device == null) _device = UsbDevice.OpenUsbDevice(new UsbDeviceFinder(_VENDOR_ID, _PRODUCT_ID2)) as IUsbDevice; if (_device == null) _device = UsbDevice.OpenUsbDevice(new UsbDeviceFinder(_VENDOR_ID, _PRODUCT_ID3)) as IUsbDevice; if (_device == null) { if (throwErrors) throw new InvalidOperationException("Wireless receiver not found"); } else { _device.ClaimInterface(1); _device.SetConfiguration(1); _responses = new Dictionary<int, List<byte[]>>(); var now = DateTime.Now; for (int i = 0; i < _NUMBER_OF_SLOTS; i++) { var slot = new ReceiverSlot(); slot.DataWriter = _device.OpenEndpointWriter(_GetWriteEndpoint((i * 2) + 1)); slot.DataReader = _device.OpenEndpointReader(_GetReadEndpoint((i * 2) + 1)); slot.DataReader.DataReceived += DataReader_DataReceived; slot.DataReader.DataReceivedEnabled = true; slot.HeadsetWriter = _device.OpenEndpointWriter(_GetWriteEndpoint((i * 2) + 2)); slot.HeadsetReader = _device.OpenEndpointReader(_GetReadEndpoint((i * 2) + 2)); slot.HeadsetReader.DataReceived += HeadsetReader_DataReceived; slot.HeadsetReader.DataReceivedEnabled = true; _slots.Add(i + 1, slot); _RefreshSlot(i + 1); } _refreshSlotsThread = new Thread(new ThreadStart(_RefreshSlots)); _refreshSlotsThread.IsBackground = true; _refreshSlotsThread.Start(); } }