示例#1
0
        static int Main(string[] args)
        {
            try
            {
                var result = CommandLine.Parser.Default.ParseArguments <MembootOptions, FlashBootOptions, FlashUbootOptions, ReadNandOptions, FlashNandOptions, RunUbootCommandOptions, UpdateEnterFelCommandOptions>(args).MapResult(
                    (MembootOptions opts) =>
                {
                    if (opts.Fes.Exists && opts.Uboot.Exists && opts.BootImage.Exists)
                    {
                        FelDevice().Wait();
                        var helpers        = new FelHelpers.Helpers();
                        helpers.SetStatus += Console.WriteLine;
                        helpers.WriteLine += Console.WriteLine;
                        helpers.Memboot(opts.Fes.OpenRead(), opts.Uboot.OpenRead(), opts.BootImage.OpenRead());
                        return(0);
                    }
                    return(1);
                },
                    (FlashBootOptions opts) =>
                {
                    if (opts.Fes.Exists && opts.Uboot.Exists && opts.BootImage.Exists)
                    {
                        FelDevice().Wait();
                        var helpers        = new FelHelpers.Helpers();
                        helpers.SetStatus += Console.WriteLine;
                        helpers.WriteLine += Console.WriteLine;
                        helpers.FlashBoot(opts.Fes.OpenRead(), opts.Uboot.OpenRead(), opts.BootImage.OpenRead());
                        return(0);
                    }
                    return(1);
                },
                    (FlashUbootOptions opts) =>
                {
                    if (opts.Fes.Exists && opts.Uboot.Exists)
                    {
                        FelDevice().Wait();
                        var helpers        = new FelHelpers.Helpers();
                        helpers.SetStatus += Console.WriteLine;
                        helpers.WriteLine += Console.WriteLine;
                        helpers.FlashUboot(opts.Fes.OpenRead(), opts.Uboot.OpenRead(), opts.FlashAll);
                        return(0);
                    }
                    return(1);
                },
                    (ReadNandOptions opts) =>
                {
                    if (opts.Fes.Exists && opts.Uboot.Exists)
                    {
                        FelDevice().Wait();
                        var helpers        = new FelHelpers.Helpers();
                        helpers.SetStatus += Console.WriteLine;
                        helpers.WriteLine += Console.WriteLine;
                        var data           = helpers.ReadFlash(opts.Fes.OpenRead(), opts.Uboot.OpenRead(), opts.Address, opts.Length, true);
                        using (var file = opts.Output.Open(FileMode.Create))
                        {
                            file.Write(data, 0, data.Length);
                            file.Close();
                        }
                        return(0);
                    }
                    return(1);
                },
                    (FlashNandOptions opts) =>
                {
                    if (opts.Fes.Exists && opts.Uboot.Exists)
                    {
                        FelDevice().Wait();
                        var helpers        = new FelHelpers.Helpers();
                        helpers.SetStatus += Console.WriteLine;
                        helpers.WriteLine += Console.WriteLine;
                        helpers.WriteFlash(opts.Fes.OpenRead(), opts.Uboot.OpenRead(), opts.Address, opts.Input.OpenRead(), true, opts.Verify);
                        return(0);
                    }
                    return(1);
                },
                    (RunUbootCommandOptions opts) =>
                {
                    if (opts.Fes.Exists && opts.Uboot.Exists)
                    {
                        FelDevice().Wait();
                        var helpers        = new FelHelpers.Helpers();
                        helpers.SetStatus += Console.WriteLine;
                        helpers.WriteLine += Console.WriteLine;
                        helpers.RunCommand(opts.Fes.OpenRead(), opts.Uboot.OpenRead(), opts.Command, opts.noreturn, true);
                        return(0);
                    }
                    return(1);
                },
                    (UpdateEnterFelCommandOptions opts) =>
                {
                    FelDevice().Wait();
                    try
                    {
                        using (FelLib.Fel fel = new FelLib.Fel())
                        {
                            fel.WriteLine += Console.WriteLine;
                            if (!fel.Open(isFel: false))
                            {
                                throw new Exception("USB Device Not Found");
                            }

                            if (!fel.UsbUpdateProbe())
                            {
                                throw new Exception("Failed to handshake with burn mode");
                            }
                            if (!fel.UsbUpdateEnterFel())
                            {
                                throw new Exception("Failed to enter FEL");
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                        return(1);
                    }

                    return(0);
                },
                    errs => 1
                    );

                Console.ReadLine();
                return(result);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.InnerException);
                Console.ReadLine();
                return(1);
            }
        }
示例#2
0
文件: Program.cs 项目: GMMan/FelLib
        static int Main(string[] args)
        {
            try
            {
                var result = CommandLine.Parser.Default.ParseArguments <MembootOptions, FlashBootOptions, FlashUbootOptions, ReadNandOptions, FlashNandOptions, RunUbootCommandOptions>(args).MapResult(
                    (MembootOptions opts) =>
                {
                    if (opts.Fes.Exists && opts.Uboot.Exists && opts.BootImage.Exists)
                    {
                        FelDevice().Wait();
                        var helpers        = new FelHelpers.Helpers();
                        helpers.SetStatus += Console.WriteLine;
                        helpers.WriteLine += Console.WriteLine;
                        helpers.Memboot(opts.Fes.OpenRead(), opts.Uboot.OpenRead(), opts.BootImage.OpenRead());
                        return(0);
                    }
                    return(1);
                },
                    (FlashBootOptions opts) =>
                {
                    if (opts.Fes.Exists && opts.Uboot.Exists && opts.BootImage.Exists)
                    {
                        FelDevice().Wait();
                        var helpers        = new FelHelpers.Helpers();
                        helpers.SetStatus += Console.WriteLine;
                        helpers.WriteLine += Console.WriteLine;
                        helpers.FlashBoot(opts.Fes.OpenRead(), opts.Uboot.OpenRead(), opts.BootImage.OpenRead());
                        return(0);
                    }
                    return(1);
                },
                    (FlashUbootOptions opts) =>
                {
                    if (opts.Fes.Exists && opts.Uboot.Exists)
                    {
                        FelDevice().Wait();
                        var helpers        = new FelHelpers.Helpers();
                        helpers.SetStatus += Console.WriteLine;
                        helpers.WriteLine += Console.WriteLine;
                        helpers.FlashUboot(opts.Fes.OpenRead(), opts.Uboot.OpenRead(), opts.FlashAll);
                        return(0);
                    }
                    return(1);
                },
                    (ReadNandOptions opts) =>
                {
                    if (opts.Fes.Exists && opts.Uboot.Exists)
                    {
                        FelDevice().Wait();
                        var helpers        = new FelHelpers.Helpers();
                        helpers.SetStatus += Console.WriteLine;
                        helpers.WriteLine += Console.WriteLine;
                        var data           = helpers.ReadFlash(opts.Fes.OpenRead(), opts.Uboot.OpenRead(), opts.Address, opts.Length, true);
                        using (var file = opts.Output.Open(FileMode.Create))
                        {
                            file.Write(data, 0, data.Length);
                            file.Close();
                        }
                        return(0);
                    }
                    return(1);
                },
                    (FlashNandOptions opts) =>
                {
                    if (opts.Fes.Exists && opts.Uboot.Exists)
                    {
                        FelDevice().Wait();
                        var helpers        = new FelHelpers.Helpers();
                        helpers.SetStatus += Console.WriteLine;
                        helpers.WriteLine += Console.WriteLine;
                        helpers.WriteFlash(opts.Fes.OpenRead(), opts.Uboot.OpenRead(), opts.Address, opts.Input.OpenRead(), true, opts.Verify);
                        return(0);
                    }
                    return(1);
                },
                    (RunUbootCommandOptions opts) =>
                {
                    if (opts.Fes.Exists && opts.Uboot.Exists)
                    {
                        FelDevice().Wait();
                        var helpers        = new FelHelpers.Helpers();
                        helpers.SetStatus += Console.WriteLine;
                        helpers.WriteLine += Console.WriteLine;
                        helpers.RunCommand(opts.Fes.OpenRead(), opts.Uboot.OpenRead(), opts.Command, opts.noreturn, true);
                        return(0);
                    }
                    return(1);
                },
                    errs => 1
                    );

                Console.ReadLine();
                return(result);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.InnerException);
                Console.ReadLine();
                return(1);
            }
        }