# Cloudripper specific init.rc
import /vendor/etc/init/hw/init.gs201.rc

on init
    # NFC streset tool name
    setprop persist.vendor.nfc.streset libstreset21
    setprop persist.vendor.se.streset libstreset21

# When ro.build.flavor=factory_cloudripper-userdebug, add vendor/bin/factory to default path
on init && property:ro.build.flavor=factory_cloudripper-userdebug
    export PATH /product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system_ext/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin:/vendor/bin/factory

on early-boot
    # Wait for insmod_sh to finish all common modules
    wait_for_prop vendor.common.modules.ready 1
    start insmod_sh_cloudripper

service insmod_sh_cloudripper /vendor/bin/init.insmod.sh /vendor/etc/init.insmod.cloudripper.cfg
    class main
    user root
    group root system
    disabled
    oneshot

on boot && property:ro.build.flavor=factory_cloudripper-userdebug
    # FTM log folder
    mkdir /data/ftmlog 0775 system system

    # Audio test folder
    mkdir /data/AudioTest 0775 system system

on property:sys.boot_completed=1
    # BCL
    setprop vendor.disable.bcl.control 1

on property:vendor.mfgapi.touchpanel.permission=1
    chmod 0600 /sys/devices/virtual/sec/tsp/cmd
    chown system system /sys/devices/virtual/sec/tsp/cmd

# Bluetooth
on post-fs-data
    chown bluetooth system /proc/bluetooth/timesync

# Fingerprint
on post-fs-data
    chown system system /dev/goodix_fp
    exec_background - system shell -- /vendor/bin/trusty_apploader /vendor/firmware/g6.app

# WiFi
on post-fs-data
    setprop wifi.direct.interface p2p-dev-wlan0
    setprop wifi.aware.interface aware_nmi0

service wpa_supplicant /vendor/bin/hw/wpa_supplicant \
    -O/data/vendor/wifi/wpa/sockets -puse_p2p_group_interface=1p2p_device=1 \
    -m/vendor/etc/wifi/p2p_supplicant.conf \
    -g@android:wpa_wlan0 -dd
    interface aidl android.hardware.wifi.supplicant.ISupplicant/default
    socket wpa_wlan0 dgram 660 wifi wifi
    class main
    disabled
    oneshot

