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();
            }
        }
Example #2
0
        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();
              }
        }