private void NANDInfoClick(object sender, EventArgs e) { if (comports.SelectedIndex < 0) { MessageBox.Show(Resources.SelectPort); return; } var port = comports.SelectedItem as string; if (memory.SelectedIndex < 0) { MessageBox.Show(Resources.SelectMemory); return; } var mem = ((ComboBoxItem <MemoryDevice>)memory.SelectedItem).Value; SetAppState(true); var res = new int[2]; if (mem == MemoryDevice.NAND0 || mem == MemoryDevice.NANDAuto) { res[0] = PythonHandler.StartProcess(string.Format("NANDWay.py {0} 0 info", port)); } if ((mem == MemoryDevice.NAND1 || mem == MemoryDevice.NANDAuto) && res[0] == 0) { res[1] = PythonHandler.StartProcess(string.Format("NANDWay.py {0} 1 info", port)); } if (res[0] != 0) { MessageBox.Show(string.Format(Resources.ErrorGettingNandInfo, res[0], 0)); } if (res[1] != 0) { MessageBox.Show(string.Format(Resources.ErrorGettingNandInfo, res[1], 1)); } SetAppState(false); }
private void InitBtnClick(object sender, EventArgs e) { if (comports.SelectedIndex < 0) { MessageBox.Show(Resources.SelectPort); return; } var port = comports.SelectedItem as string; if (memory.SelectedIndex < 0) { MessageBox.Show(Resources.SelectMemory); return; } var mem = ((ComboBoxItem <MemoryDevice>)memory.SelectedItem).Value; string args; switch (mem) { case MemoryDevice.NOR: args = string.Format("NORway.py {0}", port); break; case MemoryDevice.NAND0: args = string.Format("NANDWay.py {0} 0", port); break; case MemoryDevice.NAND1: args = string.Format("NANDWay.py {0} 1", port); break; case MemoryDevice.NANDAuto: SetAppState(true); args = string.Format("NANDWay.py {0}", port); var res = new int[2]; res[0] = PythonHandler.StartProcess(string.Format("{0} 0", args)); res[1] = PythonHandler.StartProcess(string.Format("{0} 1", args)); _initNAND0 = false; _initNAND1 = false; if (res[0] == 0) { _initNAND0 = true; } if (res[1] == 0) { _initNAND1 = true; } else if (res[0] == 0 && res[1] != 0) { MessageBox.Show(string.Format(Resources.ErrorInitNAND1FailedNAND0OK, res[1])); } else if (res[0] != 0 && res[1] == 0) { MessageBox.Show(string.Format(Resources.ErrorInitNAND0FailedNAND1OK, res[0])); } else { MessageBox.Show(string.Format(Resources.ErrorInitNANDFailed, res[0], res[1])); } _initialized = _initNAND0 && _initNAND1; if (_initialized) { MessageBox.Show(Resources.PS3InitMessage); } SetAppState(false); return; default: return; } SetAppState(true); var ret = PythonHandler.StartProcess(args); switch (ret) { case 0: _initialized = true; if (mem == MemoryDevice.NAND0) { _initNAND0 = true; } if (mem == MemoryDevice.NAND1) { _initNAND1 = true; } break; default: MessageBox.Show(string.Format(Resources.ErrorInitFailed, ret)); _initialized = false; break; } if (_initialized) { MessageBox.Show(Resources.PS3InitMessage); } SetAppState(false); }
private void BWDoWork(object sender, DoWorkEventArgs e) { if (!File.Exists(PythonHandler.PythonPath)) { e.Result = Resources.NotFoundPython; return; } if (!(e.Argument is BWArgs)) { return; } var args = e.Argument as BWArgs; var baseArgs = string.Format(args.Device == MemoryDevice.NOR ? "NORway.py {0} " : "NANDWay.py {0} ", args.Port); #region Check Scripts Exists switch (args.Device) { case MemoryDevice.NOR: if (!File.Exists(PythonHandler.WorkingDirectory + "\\NORway.py")) { e.Result = Resources.NotFoundNORway; return; } break; case MemoryDevice.NAND0: case MemoryDevice.NAND1: case MemoryDevice.NANDAuto: if (!File.Exists(PythonHandler.WorkingDirectory + "\\NANDWay.py")) { e.Result = Resources.NotFoundNANDWay; return; } break; } #endregion Check Scripts Exists var sendargs = ""; var runit = false; switch (args.Mode) { #region Release case BWArgs.Modes.Release: switch (args.Device) { case MemoryDevice.NOR: sendargs = baseArgs + "release"; runit = true; break; case MemoryDevice.NAND0: sendargs = baseArgs + "0 release"; runit = true; break; case MemoryDevice.NAND1: sendargs = baseArgs + "1 release"; runit = true; break; case MemoryDevice.NANDAuto: var res = new int[2]; res[0] = PythonHandler.StartProcess(baseArgs + "0 release"); res[1] = PythonHandler.StartProcess(baseArgs + "1 release"); e.Result = res; if (res[0] == 0 && res[1] == 0) { _initialized = false; } break; default: MessageBox.Show(Resources.ErrorHorrible, Resources.ErrorTitle, MessageBoxButtons.OK, MessageBoxIcon.Error); break; } if (runit) { e.Result = PythonHandler.StartProcess(sendargs); if ((int)e.Result == 0) { _initialized = false; } } break; #endregion Release #region Dump case BWArgs.Modes.Dump: if (args.DumpCount == 1) { switch (args.Device) { #region NOR case MemoryDevice.NOR: sendargs = string.Format("{0}dump \"{1}\"", baseArgs, args.Src); e.Result = PythonHandler.StartProcess(sendargs); return; #endregion #region NAND0 case MemoryDevice.NAND0: sendargs = string.Format("{0}0 dump \"{1}\"", baseArgs, args.Src); if (args.Offset != 0) { sendargs += string.Format(" {0:X}", args.Offset); if (args.Length != 0) { sendargs += string.Format(" {0:X}", args.Length); } } e.Result = PythonHandler.StartProcess(sendargs); return; #endregion NAND0 #region NAND1 case MemoryDevice.NAND1: sendargs = string.Format("{0}1 dump \"{1}\"", baseArgs, args.Src); if (args.Offset != 0) { sendargs += string.Format(" {0:X}", args.Offset); if (args.Length != 0) { sendargs += string.Format(" {0:X}", args.Length); } } e.Result = PythonHandler.StartProcess(sendargs); return; #endregion NAND1 #region NAND Auto case MemoryDevice.NANDAuto: sendargs = string.Format("{0}{{0}} dump \"{1}\"", baseArgs, args.Src); if (args.Offset != 0) { sendargs += string.Format(" {0:X}", args.Offset); if (args.Length != 0) { sendargs += string.Format(" {0:X}", args.Length); } } var res = new int[2]; res[0] = PythonHandler.StartProcess(string.Format(sendargs, "0")); res[1] = PythonHandler.StartProcess(string.Format(sendargs, "1")); e.Result = res; return; #endregion NAND Auto } } else { var res = new int[args.DumpCount]; if (args.Device == MemoryDevice.NANDAuto) { res = new int[args.DumpCount * 2]; } switch (args.Device) { #region NOR case MemoryDevice.NOR: sendargs = string.Format("{0}dump \"{1}\\dump{{0}}.bin\"", baseArgs, args.Path); runit = true; break; #endregion NOR #region NAND0 case MemoryDevice.NAND0: sendargs = string.Format("{0} 0 dump \"{1}\\dump{{0}}.bin\"", baseArgs, args.Path); if (args.Offset != 0) { sendargs += string.Format(" {0:X}", args.Offset); if (args.Length != 0) { sendargs += string.Format(" {0:X}", args.Length); } } runit = true; break; #endregion NAND0 #region NAND1 case MemoryDevice.NAND1: sendargs = string.Format("{0} 0 dump \"{1}\\dump{{0}}.bin\"", baseArgs, args.Path); if (args.Offset != 0) { sendargs += string.Format(" {0:X}", args.Offset); if (args.Length != 0) { sendargs += string.Format(" {0:X}", args.Length); } } runit = true; break; #endregion NAND1 #region NANDAuto case MemoryDevice.NANDAuto: sendargs = string.Format("{0} {{0}} dump \"{1}\\dump{{1}}.bin\"", baseArgs, args.Path); if (args.Offset != 0) { sendargs += string.Format(" {0:X}", args.Offset); if (args.Length != 0) { sendargs += string.Format(" {0:X}", args.Length); } } break; #endregion NANDAuto } for (var index = 0; index < args.DumpCount; index++) { if (runit) { res[index] = PythonHandler.StartProcess(sendargs); } else { res[index] = PythonHandler.StartProcess(string.Format(sendargs, "0", index)); res[res.Length / 2 + index] = PythonHandler.StartProcess(string.Format(sendargs, "1", index)); } } } break; #endregion Dump #region Erase case BWArgs.Modes.Erase: switch (args.Length) { case 0: e.Result = PythonHandler.StartProcess(string.Format("{0}erasechip", baseArgs)); break; default: var res = new int[args.Length]; for (var index = 0; index < args.Length; index++) { res[index] = PythonHandler.StartProcess(string.Format("{0}erase 0x{1:X}", baseArgs, (index * 0x20000) + args.Address)); } break; } break; #endregion Erase #region Verify case BWArgs.Modes.Verify: switch (args.Length) { case 0: e.Result = PythonHandler.StartProcess(string.Format("{0}verify \"{1}\" 0x{2:X}", baseArgs, args.Src, args.Address)); break; default: var res = new int[args.Length]; for (var index = 0; index < args.Length; index++) { res[index] = PythonHandler.StartProcess(string.Format("{0}verify \"{1}\" 0x{2:X}", baseArgs, args.Src, (index * 0x20000) + args.Address)); } break; } break; #endregion Verify default: #region Write if ((args.Mode & BWArgs.Modes.Write) == BWArgs.Modes.Write) { switch (args.Device) { case MemoryDevice.NOR: sendargs = baseArgs; break; case MemoryDevice.NAND0: sendargs = baseArgs + "0 "; break; case MemoryDevice.NAND1: sendargs = baseArgs + "1 "; break; case MemoryDevice.NANDAuto: e.Result = Resources.ErrorAutoWriteNANDNotSupported; return; } e.Result = PythonHandler.StartProcess(sendargs + GetWriteArgs(args)); } #endregion Write else { e.Result = Resources.ErrorHorrible; } break; } }