Exemplo n.º 1
0
        public SparseWriteCommand(FilePartLoadCommand loadCommand, string[] commandTokens) : base(loadCommand)
        {
            if (commandTokens.Length != 5)
            {
                throw new Exception("Неверное количество параметров sparse_write mmc (" + (commandTokens.Length - 2) + ", должно быть 3).");
            }

            Address       = commandTokens[2];
            PartitionName = commandTokens[3];

            SizeFromLoadCommand = true;
            if (commandTokens[4] == "$(filesize)")
            {
                Size = loadCommand.Size;
            }
            else
            {
                try
                {
                    Size = Convert.ToInt64(commandTokens[4], 16);
                }
                catch (Exception error)
                {
                    throw new Exception($"Ошибка разбора размера сегмента в команде sparse_write mmc (третий параметр)", error);
                }
                SizeFromLoadCommand = false;
            }
        }
Exemplo n.º 2
0
        public WriteBootCommand(FilePartLoadCommand loadCommand, string[] commandTokens, int orderNumber) : base(loadCommand)
        {
            if (commandTokens.Length != 6)
            {
                throw new Exception("Неверное количество параметров mmc write.boot (" + (commandTokens.Length - 2) + ", должно быть 4).");
            }

            BootTypeValue = commandTokens[2] == "0" ? BootType.RomBoot : BootType.SecureBoot;
            Address       = commandTokens[3];
            Unknown2      = commandTokens[4];
            try
            {
                Size = Convert.ToInt64(commandTokens[5], 16);
            }
            catch (Exception error)
            {
                throw new Exception($"Ошибка разбора размера сегмента в команде mmc write.boot (четвёртый параметр)", error);
            }

            if (BootTypeValue == BootType.SecureBoot)
            {
                PartitionName = "sboot";
            }
            else if (BootTypeValue == BootType.RomBoot)
            {
                PartitionName = "rboot";
            }
            else
            {
                PartitionName = "BOOT" + orderNumber;
            }
        }
Exemplo n.º 3
0
        public StoreNuttxConfigCommand(FilePartLoadCommand loadCommand, string[] commandTokens) : base(loadCommand)
        {
            if (commandTokens.Length != 3)
            {
                throw new Exception("Неверное количество параметров store_nuttx_config (" + (commandTokens.Length - 1) + ", должно быть 2).");
            }

            PartitionName = commandTokens[1];
            Address       = commandTokens[2];

            Offset = loadCommand.Offset;
            Size   = loadCommand.Size;
        }
Exemplo n.º 4
0
        public UnlzoCommand(FilePartLoadCommand loadCommand, string[] commandTokens) : base(loadCommand)
        {
            if (commandTokens.Length != 5 && commandTokens.Length != 6)
            {
                throw new Exception("Неверное количество параметров mmc unlzo (" + (commandTokens.Length - 2) + ", должно быть 3 или 4).");
            }

            FirstChunk = commandTokens[1] == "unlzo";

            Address = commandTokens[2];
            try
            {
                Size = Convert.ToInt64(commandTokens[3], 16);
            }
            catch (Exception error)
            {
                throw new Exception($"Ошибка разбора размера сегмента в команде mmc unlzo (второй параметр)", error);
            }
            PartitionName = commandTokens[4];
            Unknown       = (commandTokens.Length == 6) ? commandTokens[5] : "";
        }
Exemplo n.º 5
0
        public WritePiCommand(FilePartLoadCommand loadCommand, string[] commandTokens) : base(loadCommand)
        {
            if (commandTokens.Length != 5 && commandTokens.Length != 6)
            {
                throw new Exception("Неверное количество параметров mmc write.p (" + (commandTokens.Length - 2) + ", должно быть 3 или 4).");
            }

            Address       = commandTokens[2];
            PartitionName = commandTokens[3];
            try
            {
                Size = Convert.ToInt64(commandTokens[4], 16);
            }
            catch (Exception error)
            {
                throw new Exception($"Ошибка разбора размера сегмента в команде mmc write.p (третий параметр)", error);
            }

            if (commandTokens.Length == 6)
            {
                Unknown = commandTokens[5];
            }
        }