Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 private void KillPythonClick(object sender, EventArgs e)
 {
     PythonHandler.Kill();
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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;
            }
        }