# Mount system for check figurepoint etc.
# mount("ext4", "EMMC","/dev/block/mmcblk0p2", "/system");
# Make sure Check system image figurepoint first.
# uncomment below lines to check
# assert(file_getprop("/system/build.prop", "ro.build.fingerprint") == "freescale/imx53_evk/imx53_evk/imx53_evk:2.2/FRF85B/eng.b33651.20100914.145340:eng/test-keys");
# assert(getprop("ro.build.platform) == "imx5x");
# unmount("/system");

# reset the boot count
ui_print("reset the boot count... ");
show_progress(0.00, 0);
run_program("/system/bin/toolbox", "dd", "if=/dev/zero", "of=/dev/block/mmcblk0", "bs=1", "seek=30408704", "count=1");

# update u-boot
ui_print("updating uboot... ");
ifelse( package_file_exists("u-boot.bin"),
  package_extract_file("u-boot.bin", "/cache/u-boot.bin");
  run_program("/system/bin/toolbox", "dd", "if=/cache/u-boot.bin", "of=/dev/block/mmcblk0", "bs=1024", "skip=1",  "seek=1");
  delete("/cache/u-boot.bin");

,  # else
  ui_print(" > skip uboot update...\n");
);

# update kernel, 5%
ui_print("updating kernel... ");
ifelse( package_file_exists("uImage"),
  show_progress(0.05, 0);
  package_extract_file("uImage", "/cache/uImage");
  run_program("/system/bin/toolbox", "dd", "if=/cache/uImage", "of=/dev/block/mmcblk0", "bs=1048576", "seek=1");
  delete("/cache/uImage");

,  # else
  show_progress(0.05, 0);
  ui_print(" > skip kernel image update...\n");
);

# update ramdisk, 5%
ui_print("updating uramdisk... ");
ifelse( package_file_exists("uramdisk.img"),
  show_progress(0.05, 0);
  package_extract_file("uramdisk.img", "/cache/uramdisk.img");
  run_program("/system/bin/toolbox", "dd", "if=/cache/uramdisk.img", "of=/dev/block/mmcblk0", "bs=1048576", "seek=11");
  delete("/cache/uramdisk.img");

,  # else
  show_progress(0.05, 0);
  ui_print(" > skip uramdisk image update...\n");
);

# update recovery ramdisk, 10%
ui_print("updating recovery uramdisk... ");
ifelse( package_file_exists("recovery-uramdisk.img"),
  show_progress(0.1, 1);
  package_extract_file("recovery-uramdisk.img", "/cache/recovery-uramdisk.img");
  run_program("/system/bin/toolbox", "dd", "if=/cache/recovery-uramdisk.img", "of=/dev/block/mmcblk0", "bs=1048576", "seek=12");
  delete("/cache/recovery-uramdisk.img");

,  # else
  show_progress(0.1, 0);
  ui_print(" > skip uramdisk image update...\n");
);

# copy the system.img,  40%
ui_print("updating system... ");
ifelse( package_file_exists("system.img"),
  show_progress(0.2, 30);
  ui_print("formatting... ");
  format("ext4","EMMC","/dev/block/mmcblk0p1");
  show_progress(0.2, 30);
  ui_print("copying... ");
  package_extract_file("system.img", "/dev/block/mmcblk0p1");

,  # else
  show_progress(0.40, 0);
  ui_print(" > skip system image update...\n");
);

# format the data partition if fallback, 40%
ifelse( package_file_exists("update"),
	show_progress(0.4, 0);
	ui_print("Not formating data partition... ");
, #else
	ui_print("Formating data partition... ");
	show_progress(0.4, 30);
	format("ext4","EMMC","/dev/block/mmcblk0p5");
);

ui_print("DONE\n");
