#!/bin/bash
# Flash crDroid 16.0 (Android 16) for OnePlus 15T (fairlady)
# Incremental build based on Infinity crDroid 12.11
#
# ⚠️ REQUIRES UNLOCKED BOOTLOADER
# ⚠️ ALL DATA WILL BE WIPED

set -e

echo "============================================"
echo " crDroid 16.0 - OnePlus 15T (fairlady)"
echo " Incremental port from Infinity"
echo "============================================"
echo ""
echo "Kernel: fairlady 6.12.38 + DTB"
echo "System/Vendor/ODM/Product: from Infinity crDroid 12.11"
echo "Firmware: from fairlady vendor blobs"
echo ""

if ! command -v fastboot &> /dev/null; then
    echo "ERROR: fastboot not found. Install Android platform-tools."
    exit 1
fi

read -p "Ready to flash? This will WIPE your data. (y/N) " confirm
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
    echo "Aborted."
    exit 0
fi

echo ""
echo "=== Disabling verified boot ==="
fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img 2>/dev/null || \
    fastboot erase vbmeta

echo ""
echo "=== Firmware (from fairlady) ==="
for img in abl aop aop_config bluetooth cpucp cpucp_dtb devcfg dsp \
    engineering_cdt featenabler hyp hyp_ac_config imagefv keymaster \
    modem multiimgoem multiimgqti oplus_sec pdp pdp_cdb qupfw \
    secretkeeper shrm soccp soccp_dcd soccp_debug splash spuservice \
    tme_config tme_fw tme_seq_patch tz tz_ac_config tz_qti_config \
    uefi uefisecapp xbl xbl_ac_config xbl_config xbl_ramdump; do
    fastboot flash $img $img.img
done

echo ""
echo "=== Boot stack ==="
fastboot flash boot boot.img
fastboot flash dtbo dtbo.img
fastboot flash init_boot init_boot.img

echo ""
echo "=== System (large files, ~5 min) ==="
fastboot flash system system.img
fastboot flash product product.img
fastboot flash vendor vendor.img
fastboot flash odm odm.img

echo ""
echo "=== Rebooting ==="
fastboot reboot

echo ""
echo "Done! First boot may take 5-10 minutes."
echo "⚠️  Kernel module version mismatch: vendor modules are 6.12.23, kernel is 6.12.38"
echo "    Critical drivers (UFS, display) are built-in, so it should boot."
