public NintendoController(HidDevice device)
        {
            this.device = device;

            CommandInterface command = GetCommands();

            try
            {
                command.SendCommand(0x80, new byte[] { 0x01 }); // throws exception on Bluetooth connection (is the controller throwing it?)
                                                                // use this to detect if it's USB or Bluetooth
                connectionType = ConnectionType.USB;            // command accepted, must be USB
                                                                // command itself returns info like MAC address and info about connected controllers (joycon grip)
            } catch (Exception)
            {
                connectionType = ConnectionType.Bluetooth;
            }
            if (connectionType == ConnectionType.USB)
            {
                // rest of USB handshake
                command.SendCommand(0x80, new byte[] { 0x02 });
                command.SendCommand(0x80, new byte[] { 0x03 });
                command.SendCommand(0x80, new byte[] { 0x02 });
                command.SendCommand(0x80, new byte[] { 0x04 }); // freezes entire joycon if sent again (for example, if the program inits, then is restarted. better detection needed)
            }
        }