public void UpdateFirmware(string FileName, InFieldUpdate.Types Tipe)
        {
            FileInfo info = new FileInfo(CurrentPath + FileName);

            if (!info.Exists)
            {
                PrintLine("File not found, type it correctly.");
                return;
            }
            PrintLine("update in progress, please wait a moment..");
            CallPrintEvent(Screen);
            switch (Tipe)
            {
            case InFieldUpdate.Types.Application:
                InFieldUpdate.Initialize(InFieldUpdate.Types.Application);
                LoadFile(info.FullName, InFieldUpdate.Types.Application);
                break;

            case InFieldUpdate.Types.Configuration:
                InFieldUpdate.Initialize(InFieldUpdate.Types.Configuration);
                LoadFile(info.FullName, InFieldUpdate.Types.Configuration);
                break;

            case InFieldUpdate.Types.Firmware:
                InFieldUpdate.Initialize(InFieldUpdate.Types.Firmware);
                LoadFile(info.FullName, InFieldUpdate.Types.Firmware);
                break;
            }
            InFieldUpdate.FlashAndReset();
        }
        public static void LoadFile(string filename, InFieldUpdate.Types type)
        {
            using (var stream = new FileStream(filename, FileMode.Open))
            {
                var data = new byte[BLOCK_SIZE];

                for (int i = 0; i < stream.Length / BLOCK_SIZE; i++)
                {
                    stream.Read(data, 0, BLOCK_SIZE);
                    InFieldUpdate.Load(type, data, BLOCK_SIZE);
                }

                stream.Read(data, 0, (int)stream.Length % BLOCK_SIZE);
                InFieldUpdate.Load(type, data, (int)stream.Length % BLOCK_SIZE);
            }
        }