ui_print(" ");
ui_print("*** Install kernel and drivers for QCA9377 wireless chipset ***");
ui_print(" ");

# Confirm we're working on the right device and ROM version
ui_print ("- Confirming target device...");
show_progress(0.1, 2);
mount("ext4", "EMMC", "/dev/block/system", "/system");
assert(file_getprop("/system/build.prop", "ro.product.board") == "p212");
assert(file_getprop("/system/build.prop", "ro.build.id") == "MHC19J");
ui_print("  Found: " + file_getprop("/system/build.prop", "ro.product.model") + ", " + file_getprop("/system/build.prop", "ro.build.description"));

# Copy over the system update package
ui_print ("- Updating system drivers and services...");
show_progress(0.5, 10);
package_extract_dir("system", "/system");

# Delete the old drivers
ui_print ("- Removing old drivers...");
show_progress(0.1, 2);
delete("/system/lib/dhd.ko");
delete("/system/lib/lib_driver_load.ko");
delete("/system/lib/8188eu.ko");
delete("/system/lib/8188fu.ko");
delete("/system/lib/8189es.ko");
delete("/system/lib/8189fs.ko");
delete("/system/lib/8192es.ko");
delete("/system/lib/8192eu.ko");
delete("/system/lib/8723bs.ko");
delete("/system/lib/8812au.ko");
delete("/system/lib/mt7601usta.ko");
delete("/system/lib/mt7603usta.ko");
delete("/system/lib/mtprealloc.ko");
set_progress(0.6);

# Fix up the permissions
ui_print("- Cleaning up and setting metadata...");
show_progress(0.1, 2);
set_metadata_recursive("/system/app", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0);
set_metadata_recursive("/system/priv-app", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0);
set_metadata_recursive("/system/etc/permissions", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "capabilities", 0x0);
set_metadata_recursive("/system/etc/preferred-apps", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "capabilities", 0x0);
set_metadata_recursive("/system/etc/sysconfig", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "capabilities", 0x0);
set_metadata_recursive("/system/framework", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0);
set_metadata_recursive("/system/lib", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0);
unmount("/system");

# Update the boot partition with new kernel and ramdisk
ui_print ("- Installing QCA9377 kernel...");
show_progress(0.2, 3);
write_raw_image(package_extract_file("boot.img"), "boot");
set_progress(1.0);

ui_print ("  ");
ui_print ("Installation successful.");
ui_print ("  ");
