# 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/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

# Haptics
on property:vendor.all.modules.ready=1
    mkdir /mnt/vendor/persist/haptics 0770 system system
    chmod 770 /mnt/vendor/persist/haptics
    chmod 440 /mnt/vendor/persist/haptics/cs40l26.cal
    chmod 440 /mnt/vendor/persist/haptics/cs40l26_dual.cal
    chown system system /mnt/vendor/persist/haptics
    chown system system /mnt/vendor/persist/haptics/cs40l26.cal
    chown system system /mnt/vendor/persist/haptics/cs40l26_dual.cal

    chown system system /sys/bus/i2c/devices/8-0043/calibration/f0_stored
    chown system system /sys/bus/i2c/devices/8-0043/calibration/q_stored
    chown system system /sys/bus/i2c/devices/8-0043/calibration/redc_stored
    chown system system /sys/bus/i2c/devices/8-0043/default/vibe_state
    chown system system /sys/bus/i2c/devices/8-0043/default/num_waves
    chown system system /sys/bus/i2c/devices/8-0043/default/f0_offset
    chown system system /sys/bus/i2c/devices/8-0043/default/owt_free_space
    chown system system /sys/bus/i2c/devices/8-0043/default/f0_comp_enable
    chown system system /sys/bus/i2c/devices/8-0043/default/redc_comp_enable
    chown system system /sys/bus/i2c/devices/8-0043/default/delay_before_stop_playback_us

    chown system system /sys/bus/i2c/devices/8-0042/calibration/f0_stored
    chown system system /sys/bus/i2c/devices/8-0042/calibration/q_stored
    chown system system /sys/bus/i2c/devices/8-0042/calibration/redc_stored
    chown system system /sys/bus/i2c/devices/8-0042/default/vibe_state
    chown system system /sys/bus/i2c/devices/8-0042/default/num_waves
    chown system system /sys/bus/i2c/devices/8-0042/default/f0_offset
    chown system system /sys/bus/i2c/devices/8-0042/default/owt_free_space
    chown system system /sys/bus/i2c/devices/8-0042/default/f0_comp_enable
    chown system system /sys/bus/i2c/devices/8-0042/default/redc_comp_enable
    chown system system /sys/bus/i2c/devices/8-0042/default/delay_before_stop_playback_us

    enable vendor.vibrator.cs40l26
    enable vendor.vibrator.cs40l26-dual
