# Cheetah/Panther specific init.rc

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

on init && property:ro.vendor.factory=1
    import /vendor/etc/init/hw/init.factory.rc

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

service insmod_sh_pantah /vendor/bin/init.insmod.sh /vendor/etc/init.insmod.${ro.hardware}.cfg
    class main
    user root
    group root system
    disabled
    oneshot

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

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

# Overrides fingerprint antispoof if following persist sysprops are set
on boot && property:ro.build.type=userdebug && \
           property:persist.vendor.fingerprint.disable.fake.override=0
    setprop vendor.fingerprint.disable.fake ${persist.vendor.fingerprint.disable.fake.override}

on boot && property:ro.build.type=userdebug && \
           property:persist.vendor.fingerprint.disable.fake.override=1
    setprop vendor.fingerprint.disable.fake ${persist.vendor.fingerprint.disable.fake.override}

on boot && property:ro.build.type=userdebug && \
           property:persist.vendor.fingerprint.disable.fake.override=100
    setprop vendor.fingerprint.disable.fake ${persist.vendor.fingerprint.disable.fake.override}

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

    # Speaker amp permission
    chmod 644 /mnt/vendor/persist/audio/speaker.cal

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

# NFC
on property:ro.boot.hardware.revision=PROTO1.0
    setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf

on property:ro.boot.hardware.revision=PROTO1.1
    setprop persist.vendor.nfc.config_file_name libnfc-hal-st-proto1.conf

# SecureElement eSE2 cts mode
on property:persist.vendor.se.ese2.mode=ctsmode
    write /sys/class/st33spi/st33spi/st33spi_state 33
