示例#1
0
        public MuniaSettingsDialog(MuniaConfigInterface intf) : this()
        {
            _intf = intf;
            using (HidStream stream = intf.Open()) {
                byte[] buff = new byte[9];
                buff[0] = 0;
                buff[1] = 0x47;                 // CFG_CMD_READ
                stream.Write(buff, 0, 9);
                stream.Read(buff, 0, 9);

                var deviceInfo = new MuniaDeviceInfo();
                if (deviceInfo.Parse(buff))
                {
                    LoadDeviceInfo(deviceInfo);
                }
                else
                {
                    throw new InvalidOperationException("Invalid settings container received from MUNIA device: " +
                                                        string.Join(" ", buff.Select(x => x.ToString("X2"))));
                }
            }
        }
示例#2
0
        private void LoadDeviceInfo(MuniaDeviceInfo deviceInfo)
        {
            _deviceInfo   = deviceInfo;
            _blockRecurse = true;

            tbFirmware.Text    = $"{deviceInfo.VersionMajor}.{deviceInfo.VersionMinor}";
            tbHardware.Text    = "rev" + deviceInfo.HardwareRevision;
            tbMCUId.Text       = "0x" + deviceInfo.DeviceID.ToString("x4");
            tbMCURevision.Text = deviceInfo.HardwareRevision.ToString();

            lblDeviceType.Text += deviceInfo.DevType.ToString();
            if (deviceInfo.IsLegacy)
            {
                if (deviceInfo.SNES == MuniaDeviceInfo.SnesMode.SNES_MODE_NGC)
                {
                    rbSnesNgc.Checked = true;
                }
                else if (deviceInfo.SNES == MuniaDeviceInfo.SnesMode.SNES_MODE_PC)
                {
                    rbSnesPC.Checked = true;
                }
                else
                {
                    rbSnesConsole.Checked = true;
                }
                if (deviceInfo.N64 == MuniaDeviceInfo.N64Mode.N64_MODE_N64)
                {
                    rbN64Console.Checked = true;
                }
                else
                {
                    rbN64PC.Checked = true;
                }
                if (deviceInfo.NGC == MuniaDeviceInfo.NGCMode.NGC_MODE_NGC)
                {
                    rbNgcConsole.Checked = true;
                }
                else
                {
                    rbNgcPC.Checked = true;
                }
            }
            else
            {
                if (deviceInfo.DevType == MuniaDeviceInfo.DeviceType.MuniaOriginal)
                {
                    // munia revision 2
                    if (deviceInfo.Output == MuniaDeviceInfo.OutputMode.PC)
                    {
                        rbOutputPC.Checked = true;
                        ckbNGC.Checked     = deviceInfo.Inputs.HasFlag(MuniaDeviceInfo.InputSources.NGC);
                        ckbN64.Checked     = deviceInfo.Inputs.HasFlag(MuniaDeviceInfo.InputSources.N64);
                        ckbSNES.Checked    = deviceInfo.Inputs.HasFlag(MuniaDeviceInfo.InputSources.SNES);
                    }
                    else
                    {
                        rbOutputNGC.Checked  = deviceInfo.Output == MuniaDeviceInfo.OutputMode.NGC;
                        rbOutputN64.Checked  = deviceInfo.Output == MuniaDeviceInfo.OutputMode.N64;
                        rbOutputSNES.Checked = deviceInfo.Output == MuniaDeviceInfo.OutputMode.SNES;
                        rbInputNGC.Checked   = deviceInfo.Inputs.HasFlag(MuniaDeviceInfo.InputSources.NGC);
                        rbInputN64.Checked   = deviceInfo.Inputs.HasFlag(MuniaDeviceInfo.InputSources.N64);
                        rbInputSNES.Checked  = deviceInfo.Inputs.HasFlag(MuniaDeviceInfo.InputSources.SNES);
                    }
                }
                else if (deviceInfo.DevType == MuniaDeviceInfo.DeviceType.MuniaSNES)
                {
                    if (deviceInfo.Output == MuniaDeviceInfo.OutputMode.PC)
                    {
                        rbOutputPC.Checked = true;
                    }
                    else
                    {
                        rbOutputSNES.Checked = true;
                    }
                    ckbSNES.Checked = true;
                }
                else if (deviceInfo.DevType == MuniaDeviceInfo.DeviceType.MuniaN64)
                {
                    if (deviceInfo.Output == MuniaDeviceInfo.OutputMode.PC)
                    {
                        rbOutputPC.Checked = true;
                    }
                    else
                    {
                        rbOutputN64.Checked = true;
                    }
                    ckbN64.Checked = true;
                }
                else if (deviceInfo.DevType == MuniaDeviceInfo.DeviceType.MuniaNgc)
                {
                    if (deviceInfo.Output == MuniaDeviceInfo.OutputMode.PC)
                    {
                        rbOutputPC.Checked = true;
                    }
                    else
                    {
                        rbOutputNGC.Checked = true;
                    }
                    ckbNGC.Checked = true;
                }
            }

            _blockRecurse = false;
            UpdateUI();
        }