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")))); } } }
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(); }