# Wi-Fi init file
on post-fs-data
    mkdir /data/vendor/conn 0771 wifi wifi
    mkdir /data/vendor/wifi 0771 wifi wifi
    mkdir /data/vendor/wifi/wpa 0770 wifi wifi
    mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi
    mkdir /data/vendor/log/wifi 0770 wifi system

    # for WIFI TRP/TIS
    chown wifi wifi /data/vendor/conn/.psm.info
    chmod 0640 /data/vendor/conn/.psm.info

    # for WIFI Antenna Selection
    chown wifi wifi /data/vendor/conn/.ant.info
    chmod 0640 /data/vendor/conn/.ant.info

    # for WIFI Version
    chown wifi wifi /data/vendor/conn/.wifiver.info
    chmod 0644 /data/vendor/conn/.wifiver.info

    # for WIFI MEMDUMP
    # The default value of below memdump file is set in SecProductFeature
    #write /data/vendor/conn/.memdump.info 2
    chown wifi wifi /data/vendor/conn/.memdump.info
    chmod 0640 /data/vendor/conn/.memdump.info

    # for WIFI hotspot
    chown wifi wifi /data/vendor/conn/.softap.info
    chmod 0644 /data/vendor/conn/.softap.info
    chown system wifi /vendor/etc/wifi/indoorchannel.info
    chmod 0664 /vendor/etc/wifi/indoorchannel.info

    # for WIFI MAC
    chown wifi wifi /sys/wifi/mac_addr
    chmod 0640 /sys/wifi/mac_addr

on boot
    setprop wifi.interface wlan0

# start for WiFi MFG (TestMode)
service macloader /system/vendor/bin/hw/macloader
    class main
    user wifi
    group wifi inet net_raw net_admin
    capabilities NET_ADMIN NET_RAW SYS_MODULE
    oneshot

# end of WiFi MFG (TestMode)
