# Copyright (c) 2009-2012, 2014-2015, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in the
#       documentation and/or other materials provided with the distribution.
#     * Neither the name of The Linux Foundation nor
#       the names of its contributors may be used to endorse or promote
#       products derived from this software without specific prior written
#       permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#

import init.qcom.usb.rc
import init.target.rc

on early-init
    mount debugfs debugfs /sys/kernel/debug
    write /sys/block/mmcblk0/queue/scheduler noop

on init
    # Set permissions for persist partition
    mkdir /persist 0771 system system
    mkdir /preload 0771 system system

    # See storage config details at http://source.android.com/tech/storage/
    mkdir /mnt/media_rw/extSdCard 0700 media_rw media_rw
    mkdir /mnt/media_rw/UsbDriveA 0700 media_rw media_rw
    mkdir /mnt/media_rw/UsbDriveB 0700 media_rw media_rw
    mkdir /mnt/media_rw/UsbDriveC 0700 media_rw media_rw
    mkdir /mnt/media_rw/UsbDriveD 0700 media_rw media_rw
    mkdir /mnt/media_rw/UsbDriveE 0700 media_rw media_rw
    mkdir /mnt/media_rw/UsbDriveF 0700 media_rw media_rw
    

    # See storage config details at http://source.android.com/tech/storage/
    mkdir /mnt/shell/emulated 0700 shell shell
    mkdir /storage/emulated 0555 root root

    export EXTERNAL_STORAGE /storage/emulated/legacy
    export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
    export EMULATED_STORAGE_TARGET /storage/emulated
    export SECONDARY_STORAGE /storage/extSdCard
    mkdir /storage/extSdCard 0555 root root

    # Support legacy paths
    symlink /storage/emulated/legacy /sdcard
    symlink /storage/emulated/legacy /mnt/sdcard
    symlink /storage/emulated/legacy /storage/sdcard0
    symlink /mnt/shell/emulated/0 /storage/emulated/legacy

    # map "real" external storages paths also in same way. backwards compatibility.
    symlink /storage/extSdCard /mnt/extSdCard
    symlink /storage/UsbDriveA /mnt/UsbDriveA
    symlink /storage/UsbDriveB /mnt/UsbDriveB
    symlink /storage/UsbDriveC /mnt/UsbDriveC
    symlink /storage/UsbDriveD /mnt/UsbDriveD
    symlink /storage/UsbDriveE /mnt/UsbDriveE
    symlink /storage/UsbDriveF /mnt/UsbDriveF

    mkdir /storage/extSdCard 0700 root root
    mkdir /storage/UsbDriveA 0700 root root
    mkdir /storage/UsbDriveB 0700 root root
    mkdir /storage/UsbDriveC 0700 root root
    mkdir /storage/UsbDriveD 0700 root root
    mkdir /storage/UsbDriveE 0700 root root
    mkdir /storage/UsbDriveF 0700 root root

on early-boot
    # set RLIMIT_MEMLOCK to 64MB
    setrlimit 8 67108864 67108864
    # Allow subsystem (modem etc) debugging
    write /sys/module/subsystem_restart/parameters/enable_debug ${persist.sys.ssr.enable_debug}
    write /sys/module/pil_msa/parameters/pbl_mba_boot_timeout_ms ${persist.sys.mba_boot_timeout}
    write /sys/module/pil_msa/parameters/modem_auth_timeout_ms ${persist.sys.modem_auth_timeout}
    write /sys/module/peripheral_loader/parameters/proxy_timeout_ms ${persist.sys.pil_proxy_timeout}
    write /sys/kernel/boot_adsp/boot 1

on boot
    chown bluetooth bluetooth /sys/module/bluetooth_power/parameters/power
    chown bluetooth bluetooth /sys/class/rfkill/rfkill0/type
    chown bluetooth bluetooth /sys/class/rfkill/rfkill0/state
    chown bluetooth bluetooth /proc/bluetooth/sleep/proto
    chown bluetooth bluetooth /sys/module/hci_uart/parameters/ath_lpm
    chown bluetooth bluetooth /sys/module/hci_uart/parameters/ath_btwrite
    chown system system /sys/module/sco/parameters/disable_esco
    chown bluetooth bluetooth /sys/module/hci_smd/parameters/hcismd_set
    chmod 0660 /sys/module/bluetooth_power/parameters/power
    chmod 0660 /sys/module/hci_smd/parameters/hcismd_set
    chmod 0660 /sys/class/rfkill/rfkill0/state
    chmod 0660 /proc/bluetooth/sleep/proto
    chown bluetooth net_bt_stack /dev/ttyHS0
    chmod 0660 /sys/module/hci_uart/parameters/ath_lpm
    chmod 0660 /sys/module/hci_uart/parameters/ath_btwrite
    chmod 0660 /dev/ttyHS0
    chown bluetooth bluetooth /sys/devices/platform/msm_serial_hs.0/clock
    chmod 0660 /sys/devices/platform/msm_serial_hs.0/clock

    chmod 0660 /dev/ttyHS2
    chown bluetooth bluetooth /dev/ttyHS2

    # for BT MAC address
    mkdir /efs/bluetooth 0775 radio system
    # if already exist
    chown radio system /efs/bluetooth
    chmod 0775 /efs/bluetooth

    #Create QMUX deamon socket area
    mkdir /dev/socket/qmux_radio 0770 radio radio
    chmod 2770 /dev/socket/qmux_radio
    mkdir /dev/socket/qmux_audio 0770 media audio
    chmod 2770 /dev/socket/qmux_audio
    mkdir /dev/socket/qmux_bluetooth 0770 bluetooth bluetooth
    chmod 2770 /dev/socket/qmux_bluetooth
    mkdir /dev/socket/qmux_gps 0770 gps gps
    chmod 2770 /dev/socket/qmux_gps

    setprop wifi.interface wlan0

    chown system system /proc/sched_orig_load_balance_enable
    chmod 0660 /proc/sched_orig_load_balance_enable

#   Define TCP buffer sizes for various networks
#   ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
    setprop net.tcp.buffersize.wifi    524288,2097152,4194304,262144,524288,1048576


    setprop ro.telephony.call_ring.multiple false

    #Remove SUID bit for iproute2 ip tool
    chmod 0755 /system/bin/ip


    chmod 0444 /sys/devices/platform/msm_hsusb/gadget/usb_state

    #For bridgemgr daemon to inform the USB driver of the correct transport
    chown radio radio /sys/class/android_usb/f_rmnet_smd_sdio/transport
    
 # For setting tcp delayed ack
    chown system system /sys/kernel/ipv4/tcp_delack_seg
    chown system system /sys/kernel/ipv4/tcp_use_userconfig


#   Define TCP buffer sizes for various networks
#   ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
    setprop net.tcp.buffersize.default 4096,87380,524288,4096,16384,110208
    setprop net.tcp.buffersize.lte     2097152,4194304,8388608,262144,524288,1048576
    setprop net.tcp.buffersize.umts    4094,87380,110208,4096,16384,110208
    setprop net.tcp.buffersize.hspa    4094,87380,1220608,4096,16384,1220608
    setprop net.tcp.buffersize.hsupa   4094,87380,1220608,4096,16384,1220608
    setprop net.tcp.buffersize.hsdpa   4094,87380,1220608,4096,16384,1220608
    setprop net.tcp.buffersize.hspap   4094,87380,1220608,4096,16384,1220608
    setprop net.tcp.buffersize.edge    4093,26280,35040,4096,16384,35040
    setprop net.tcp.buffersize.gprs    4092,8760,11680,4096,8760,11680
    setprop net.tcp.buffersize.evdo    4094,87380,524288,4096,16384,262144

#   Assign TCP buffer thresholds to be ceiling value of technology maximums
#   Increased technology maximums should be reflected here.
    write /proc/sys/net/core/rmem_max  8388608
    write /proc/sys/net/core/wmem_max  8388608
# Define TCP delayed ack settings for WiFi
    setprop net.tcp.delack.default     1
    setprop net.tcp.delack.wifi        20
    setprop net.tcp.usercfg.default    0
    setprop net.tcp.usercfg.wifi       1
    setprop persist.tcp.delack.enable  true

    #To allow interfaces to get v6 address when tethering is enabled
    write /proc/sys/net/ipv6/conf/rmnet0/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet1/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet2/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet3/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet4/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet5/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet6/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet7/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio0/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio1/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio2/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio3/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio4/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio5/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio6/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio7/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_usb0/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_usb1/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_usb2/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_usb3/accept_ra 2

    # To prevent out of order acknowledgements from making
    # connection tracking to treat them as not belonging to
    # the connection they belong to.
    # Otherwise, a weird issue happens in which some long
    # connections on high-throughput links get dropped when
    # an ack packet comes out of order
    write /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal 1

    # Set the console loglevel to < KERN_INFO
    # Set the default message loglevel to KERN_INFO
    # write /proc/sys/kernel/printk "6 6 1 7"

    # Allow access for CCID command/response timeout configuration
    chown system system /sys/module/ccid_bridge/parameters/bulk_msg_timeout

#
# start ril-daemon only for targets on which radio is present
#

on property:ro.baseband=apq
    setprop ro.radio.noril yes
    stop ril-daemon
#
# start qmuxd and qmiproxy for appropriate targets
#
on property:ro.baseband=msm
    start qmuxd

on property:ro.baseband=mdm
    start qmuxd

on property:ro.baseband=unknown
    start qmuxd

#
# start netmgrd
#
on property:ro.use_data_netmgrd=true
    start netmgrd

#
# start multiple rilds based on multisim property
#
on property:ro.multisim.simslotcount=2
    stop ril-daemon
    start ril-daemon
    start ril-daemon1
    
# msm specific files that need to be created on /data
on post-fs-data
    # Create directory for TZ Apps
    mkdir /data/misc/qsee 0770 system system

    # we will remap this as /mnt/sdcard with the sdcard fuse tool
    mkdir /data/misc/camera 0770 camera camera

    mkdir /data/media 0770 media_rw media_rw
    chown media_rw media_rw /data/media

    mkdir /data/misc/ipa 0700 net_admin net_admin

    mkdir /data/misc/bluetooth 0770 bluetooth bluetooth

    # Create the directories used by the Wireless subsystem
    mkdir /data/misc/wifi 0770 wifi system
    mkdir /data/misc/wifi/sockets 0770 wifi wifi
    mkdir /data/misc/wifi/wpa_supplicant 0770 wifi wifi
    mkdir /data/misc/dhcp 0775 dhcp dhcp
    chown dhcp dhcp /data/misc/dhcp

    # for WIFI TRP/TIS
    chown system root /data/.psm.info
    chmod 0664 /data/.psm.info

    # for WIFI Antena Selection
    chown system root /data/.ant.info
    chmod 0664 /data/.ant.info

    # for WIFI MAC address
    mkdir /efs/wifi 0775 radio system
    chown system wifi /efs/wifi/.mac.info
    chmod 0660 /efs/wifi/.mac.info
    chmod 0660 /efs/wifi/.mac.cob

    # for WIFI Version
    write /data/.wifiver.info 0
    chown system root /data/.wifiver.info
    chmod 0666 /data/.wifiver.info

    # Create the directories used by CnE subsystem
    mkdir /data/connectivity 0771 system system
    chown system system /data/connectivity

    # Create the directories used by DPM subsystem
    mkdir /data/dpm 0771 system system
    chown system system /data/dpm

    mkdir /data/dpm/fdMgr 0771 system system
    chown system system /data/dpm/fdMgr

    mkdir /data/dpm/nsrm 0771 system system
    chown system system /data/dpm/nsrm

    # Create directory used by audio subsystem
    mkdir /data/misc/audio 0770 audio audio

    # Create directory used by the DASH client
    mkdir /data/misc/dash 0770 media audio

    # Create directory used by display clients
    mkdir /data/misc/display 0770 system graphics
    mkdir /persist/display 0770 system graphics

    # Mounting of persist is moved to 'on emmc-fs' and 'on fs' sections
    # We chown/chmod /persist again so because mount is run as root + defaults
    chown system system /persist
    chmod 0771 /persist
    chmod 0664 /sys/devices/platform/msm_sdcc.1/polling
    chmod 0664 /sys/devices/platform/msm_sdcc.2/polling
    chmod 0664 /sys/devices/platform/msm_sdcc.3/polling
    chmod 0664 /sys/devices/platform/msm_sdcc.4/polling

    # Chown polling nodes as needed from UI running on system server
    chown system system /sys/devices/platform/msm_sdcc.1/polling
    chown system system /sys/devices/platform/msm_sdcc.2/polling
    chown system system /sys/devices/platform/msm_sdcc.3/polling
    chown system system /sys/devices/platform/msm_sdcc.4/polling

    #Create the symlink to qcn wpa_supplicant folder for ar6000 wpa_supplicant
    mkdir /data/system 0775 system system
    #symlink /data/misc/wifi/wpa_supplicant /data/system/wpa_supplicant

    #Create directories for Location services
    mkdir /data/misc/location 0770 gps gps
    mkdir /data/misc/location/mq 0770 gps gps
    mkdir /data/misc/location/xtwifi 0770 gps gps
    mkdir /data/misc/location/gpsone_d 0770 system gps
    mkdir /data/misc/location/quipc 0770 gps system
    mkdir /data/misc/location/gsiff 0770 gps gps

    #Create directory from IMS services
    mkdir /data/shared 0755
    chown system system /data/shared

    #Create directory for FOTA
    mkdir /data/fota 0771
    chown system system /data/fota

    #Create directory for hostapd
    mkdir /data/hostapd 0770 system wifi

    # Create /data/time folder for time-services
    mkdir /data/time/ 0700 system system

    mkdir /data/audio/ 0770 media audio

    setprop vold.post_fs_data_done 1

    #Create a folder for SRS to be able to create a usercfg file
    mkdir /data/data/media 0770 media media

    #Create folder for mm-qcamera-daemon
    mkdir /data/camera 0770 media camera

    #Create PERFD deamon related dirs
    mkdir /data/misc/perfd 0755 root system
    chmod 2755 /data/misc/perfd
    mkdir /data/system/perfd 0770 root system
    chmod 2770 /data/system/perfd
#service qcomsysd /system/bin/qcom-system-daemon
#    class main
#    user root
#    group root qcom_diag

    # NFC local data and nfcee xml storage
    mkdir /data/nfc 0770 nfc nfc
    mkdir /data/nfc/param 0770 nfc nfc


service ssr_setup /system/bin/ssr_setup
    oneshot
    disabled

service ss_ramdump /system/bin/subsystem_ramdump
    class main
    user system
    group system
    disabled

on property:persist.sys.ssr.restart_level=*
    start ssr_setup

on property:persist.sys.ssr.enable_ramdumps=1
    write /sys/module/subsystem_restart/parameters/enable_ramdumps 1
    start ss_ramdump

on property:persist.sys.ssr.enable_ramdumps=0
    write /sys/module/subsystem_restart/parameters/enable_ramdumps 0

on property:sys.boot_completed=1
    write /dev/kmsg "Boot completed "

on property:persist.radio.atfwd.start=false
    stop atfwd

service qcom-debug /system/bin/sh /system/etc/init.qcom.debug.sh
    class core
    user root
    oneshot

# corefile limit and ETB enabling
on property:persist.debug.trace=1
    mkdir /data/core 0777 root root
    write /proc/sys/kernel/core_pattern "/data/core/%E.%p.%e"
    write /sys/devices/system/cpu/cpu1/online 1
    write /sys/devices/system/cpu/cpu2/online 1
    write /sys/devices/system/cpu/cpu3/online 1
    write /sys/bus/coresight/devices/coresight-etm0/enable 0
    write /sys/bus/coresight/devices/coresight-etm1/enable 0
    write /sys/bus/coresight/devices/coresight-etm2/enable 0
    write /sys/bus/coresight/devices/coresight-etm3/enable 0
    write /sys/bus/coresight/devices/coresight-etm0/reset 1
    write /sys/bus/coresight/devices/coresight-etm1/reset 1
    write /sys/bus/coresight/devices/coresight-etm2/reset 1
    write /sys/bus/coresight/devices/coresight-etm3/reset 1
    write /sys/bus/coresight/devices/coresight-etm0/enable 1
    write /sys/bus/coresight/devices/coresight-etm1/enable 1
    write /sys/bus/coresight/devices/coresight-etm2/enable 1
    write /sys/bus/coresight/devices/coresight-etm3/enable 1
    write /sys/module/coresight_event/parameters/event_abort_enable 1

on property:init.svc.wpa_supplicant=stopped
    stop dhcpcd

on property:bluetooth.isEnabled=true
    start btwlancoex
    write /sys/class/bluetooth/hci0/idle_timeout 7000

on property:bluetooth.sap.status=running
    start bt-sap

on property:bluetooth.sap.status=stopped
    stop bt-sap

on property:bluetooth.dun.status=running
    start bt-dun

on property:bluetooth.dun.status=stopped
    stop bt-dun

on property:ro.bluetooth.ftm_enabled=true
    start ftmd

on property:bluetooth.startbtsnoop=true
    start btsnoop

on property:bluetooth.startbtsnoop=false
    stop btsnoop

service qcom-c_core-sh /system/bin/sh /init.qcom.class_core.sh
    class core
    user root
    oneshot

service qcom-c_main-sh /system/bin/sh /init.class_main.sh
    class main
    user root
    oneshot

on property:vold.decrypt=trigger_restart_framework
    start qcom-c_main-sh
    start config_bluetooth
    start wcnss-service

on property:persist.env.fastdorm.enabled=true
    setprop persist.radio.data_no_toggle 1

service cnd /system/bin/cnd
    class late_start
    socket cnd stream 660 root inet

service dpmd /system/bin/dpmd
    class late_start
    socket dpmd stream 660 root system

service irsc_util /system/bin/irsc_util "/etc/sec_config"
    class main
    user root
    oneshot

service rmt_storage /system/bin/rmt_storage
    class core
    user root
    disabled

service rfs_access /system/bin/rfs_access
   class core
   user root
   group system net_raw

on property:wc_transport.start_hci=true
    start start_hci_filter

on property:wc_transport.start_hci=false
    stop start_hci_filter

service start_hci_filter /system/bin/wcnss_filter
    class late_start
    user root
    group bluetooth qcom_diag
    disabled

service config_bluetooth /system/bin/sh /system/etc/init.qcom.bt.sh "onboot"
    class core
    user root
    oneshot

service hciattach /system/bin/sh /system/etc/init.qcom.bt.sh
    class late_start
    user bluetooth
    group bluetooth net_bt_admin net_bt_stack
    disabled
    oneshot

on property:bluetooth.hciattach=true
    start hciattach

on property:bluetooth.hciattach=false
    setprop bluetooth.status off

service hciattach_ath3k /system/bin/sh /system/etc/init.ath3k.bt.sh
     class late_start
     user bluetooth
     group system bluetooth net_bt_admin misc
     disabled
     oneshot

service bt-dun /system/bin/dun-server /dev/smd7 /dev/rfcomm0
    class late_start
    user bluetooth
    group bluetooth net_bt_admin inet
    disabled
    oneshot

service bt-sap /system/bin/sapd 15
    user bluetooth
    group bluetooth net_bt_admin
    class late_start
    disabled
    oneshot

service btsnoop /system/bin/btsnoop
   user bluetooth
   group bluetooth net_bt_admin sdcard_rw sdcard_r
   class late_start
   disabled
   oneshot

service ftmd /system/bin/logwrapper /system/bin/ftmdaemon
    class late_start
    user root
    group bluetooth net_bt_admin misc net_bt_stack qcom_diag
    disabled
    oneshot

service bridgemgrd /system/bin/bridgemgrd
    class late_start
    user radio
    group radio qcom_diag
    disabled

service port-bridge /system/bin/port-bridge /dev/mhi_pipe_32 /dev/ttyGS0
    class main
    user radio system
    group radio system inet
    disabled

service qmiproxy /system/bin/qmiproxy
    class main
    user radio
    group radio qcom_diag
    disabled

# QMUX must be in multiple groups to support external process connections
service qmuxd /system/bin/qmuxd
    class main
    user root
    group radio audio bluetooth gps qcom_diag
    disabled

service netmgrd /system/bin/netmgrd
    class main
    disabled

service ipacm-diag /system/bin/ipacm-diag
    class main
    user system
    socket ipacm_log_file dgram 660 system net_admin
    group net_admin qcom_diag
    disabled

service ipacm /system/bin/ipacm
    class main
    user net_admin
    group net_admin inet
    disabled

service qti /system/vendor/bin/qti
    class main
    disabled

service sensors /system/bin/sensors.qcom
    class late_start
    user root
    group root
    disabled

on property:ro.use_data_netmgrd=false
    # netmgr not supported on specific target
    stop netmgrd

# Adjust socket buffer to enlarge TCP receive window for high bandwidth
# but only if ro.data.large_tcp_window_size property is set.
on property:ro.data.large_tcp_window_size=true
    write /proc/sys/net/ipv4/tcp_adv_win_scale  2

service btwlancoex /system/bin/sh /system/etc/init.qcom.coex.sh
    class late_start
    user bluetooth
    group bluetooth net_bt_admin inet net_admin net_raw
    disabled
    oneshot

service amp_init /system/bin/amploader -i
    class late_start
    user root
    disabled
    oneshot

service amp_load /system/bin/amploader -l 7000
    class late_start
    user root
    disabled
    oneshot

service amp_unload /system/bin/amploader -u
    class late_start
    user root
    disabled
    oneshot

#for WiFi MFG(TestMode)
service mfgloader /system/bin/mfgloader
    class main
    disabled
    oneshot

service wlandutservice /system/bin/wlandutservice
    class main
    user system
    group wifi net_raw net_admin system inet
    disabled
    oneshot

service macloader /system/bin/macloader
    class main
    oneshot

on property:init.svc.macloader=stopped
    chown system root /data/.cid.info
    chmod 0664 /data/.cid.info
    chown system root /data/.rev
    chmod 0664 /data/.rev
# end of wifi

service p2p_supplicant /system/bin/wpa_supplicant \
    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    -I/system/etc/wifi/wpa_supplicant_overlay.conf -O/data/misc/wifi/sockets -N \
    -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \
    -I/system/etc/wifi/p2p_supplicant_overlay.conf \
    -puse_p2p_group_interface=1 -puse_multi_chan_concurrent=1 \
    -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
#   we will start as root and wpa_supplicant will switch to user wifi
#   after setting up the capabilities required for WEXT
#   user wifi
#   group wifi inet keystore
    class main
    socket wpa_wlan0 dgram 660 wifi wifi
    disabled
    oneshot

service wpa_supplicant /system/bin/wpa_supplicant \
    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    -I/system/etc/wifi/wpa_supplicant_overlay.conf \
    -O/data/misc/wifi/sockets \
    -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
    #   we will start as root and wpa_supplicant will switch to user wifi
    #   after setting up the capabilities required for WEXT
    #   user wifi
    #   group wifi inet keystore
    class main
    socket wpa_wlan0 dgram 660 wifi wifi
    disabled
    oneshot

service olsrd /system/bin/olsrd -f /etc/wifi/olsrd.conf
    class main
    disabled
    oneshot

service dhcpcd_wlan0 /system/bin/dhcpcd -ABKLG
    class late_start
    disabled
    oneshot

service dhcpcd_p2p /system/bin/dhcpcd -ABKLG
    class late_start
    disabled
    oneshot

service dhcpcd_ibss /system/bin/dhcpcd -BKM
    class late_start
    disabled
    oneshot

service iprenew_wlan0 /system/bin/dhcpcd -n
    class late_start
    disabled
    oneshot

service ftm_ffbm /system/bin/ftmdaemon
    user root
    group root
    disabled
    oneshot

service dhcpcd_bt-pan /system/bin/dhcpcd -BKLG
    class late_start
    disabled
    oneshot

service iprenew_bt-pan /system/bin/dhcpcd -n
    class late_start
    disabled
    oneshot

service dhcpcd_bnep0 /system/bin/dhcpcd -BKLG
    disabled
    oneshot

service dhcpcd_bnep1 /system/bin/dhcpcd -BKLG
    disabled
    oneshot

service dhcpcd_bnep2 /system/bin/dhcpcd -BKLG
    disabled
    oneshot

service dhcpcd_bnep3 /system/bin/dhcpcd -BKLG
    disabled
    oneshot

service dhcpcd_bnep4 /system/bin/dhcpcd -BKLG
    disabled
    oneshot

service sec-sh /system/bin/sh /system/etc/init.sec.boot.sh
    class main
    user root
    oneshot

service loc_launcher /system/bin/loc_launcher
    #loc_launcher will start as root and set its uid to gps
    class late_start
    group gps inet net_raw qcom_diag net_admin wifi

service fm_dl /system/bin/sh /system/etc/init.qcom.fm.sh
    class late_start
    user root
    group system
    disabled
    oneshot

on property:crypto.driver.load=1
     insmod /system/lib/modules/qce.ko
     insmod /system/lib/modules/qcedev.ko

service drmdiag /system/bin/drmdiagapp
    class late_start
     user root
     disabled
     oneshot

on property:drmdiag.load=1
    start drmdiag

on property:drmdiag.load=0
    stop drmdiag

service qcom-sh /system/bin/sh /init.qcom.sh
    class late_start
    user root
    oneshot

service qcom-post-boot /system/bin/sh /system/etc/init.qcom.post_boot.sh
    class late_start
    user root
    disabled
    oneshot

service config-zram /system/bin/sh /system/etc/init.qcom.zram.sh
   class late_start
   user root
   disabled
   oneshot

on property:sys.boot_completed=1
    start qcom-post-boot
    start config-zram

service atfwd /system/bin/ATFWD-daemon
    class late_start
    user system
    group system radio

service hostapd /system/bin/hostapd -dd /data/hostapd/hostapd.conf
    class late_start
    user root
    group root
    oneshot
    disabled

service ds_fmc_appd /system/bin/ds_fmc_appd -p "rmnet0" -D
    class late_start
    group radio wifi inet
    disabled
    oneshot

on property:persist.data.ds_fmc_app.mode=1
    start ds_fmc_appd

service ims_regmanager /system/bin/exe-ims-regmanagerprocessnative
    class late_start
    group net_bt_admin inet radio wifi
    disabled

on property:persist.ims.regmanager.mode=1
    start ims_regmanager

on property:ro.data.large_tcp_window_size=true
    # Adjust socket buffer to enlarge TCP receive window for high bandwidth (e.g. DO-RevB)
    write /proc/sys/net/ipv4/tcp_adv_win_scale  2

service battery_monitor /system/bin/battery_monitor
    user system
    group system
    disabled

#service ril-daemon2 /system/bin/rild -c 2
#    class main
#    socket rild2 stream 660 root radio
#    socket rild-debug2 stream 660 radio system
#    user root
#    disabled
#    group radio cache inet misc audio sdcard_r sdcard_rw diag qcom_diag log

#service ril-daemon3 /system/bin/rild -c 3
#    class main
#    socket rild3 stream 660 root radio
#    socket rild-debug3 stream 660 radio system
#    user root
#    disabled
#    group radio cache inet misc audio sdcard_r sdcard_rw diag qcom_diag log

service usb_uicc_enable /system/bin/sh /system/etc/init.qcom.uicc.sh
    class late_start
    user root
    disabled
    oneshot

service usb_uicc_daemon /system/bin/usb_uicc_client
    class main
    user system
    group system log net_raw
    oneshot

on property:sys.usb_uicc.enabled=1
    start usb_uicc_enable

on property:sys.usb_uicc.enabled=0
    start usb_uicc_enable

service profiler_daemon /system/bin/profiler_daemon
    class late_start
    user root
    group root
    disabled

# virtual sdcard daemon running as media_rw (1023)
service sdcard /system/bin/sdcard -u 1023 -g 1023 -l -r /data/media /mnt/shell/emulated
    class late_start
    oneshot
    

service fuse_extSdCard /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d -f /mnt/media_rw/extSdCard /storage/extSdCard
    class late_start
    disabled
    oneshot

service fuse_UsbDriveA /system/bin/sdcard -u 1023 -g 1023 -d -f /mnt/media_rw/UsbDriveA /storage/UsbDriveA
    class late_start
    disabled
    oneshot

service fuse_UsbDriveB /system/bin/sdcard -u 1023 -g 1023 -d -f /mnt/media_rw/UsbDriveB /storage/UsbDriveB
    class late_start
    disabled
    oneshot

service fuse_UsbDriveC /system/bin/sdcard -u 1023 -g 1023 -d -f /mnt/media_rw/UsbDriveC /storage/UsbDriveC
    class late_start
    disabled
    oneshot

service fuse_UsbDriveD /system/bin/sdcard -u 1023 -g 1023 -d -f /mnt/media_rw/UsbDriveD /storage/UsbDriveD
    class late_start
    disabled
    oneshot

service fuse_UsbDriveE /system/bin/sdcard -u 1023 -g 1023 -d -f /mnt/media_rw/UsbDriveE /storage/UsbDriveE
    class late_start
    disabled
    oneshot

service fuse_UsbDriveF /system/bin/sdcard -u 1023 -g 1023 -d -f /mnt/media_rw/UsbDriveF /storage/UsbDriveF
    class late_start
    disabled
    oneshot

# Binding fuse mount point to /storage/emulated/legacy
#on property:init.svc.sdcard=running
#    wait /mnt/shell/emulated/0
#    mount none /mnt/shell/emulated/0 /storage/emulated/legacy bind

service hcidump /system/bin/sh /system/etc/hcidump.sh
    user bluetooth
    group bluetooth system net_bt_admin net_admin
    disabled
    oneshot

service charger /charger
    class charger

service ssr_diag /system/bin/ssr_diag
    class late_start
    user system
    group system
    disabled

# Define fastmmi
service fastmmi /system/bin/mmi
    user root
    group root
    disabled

service fastmmisrv /system/bin/sh /init.qcom.factory.sh
    user root
    disabled
    oneshot

on mmi
    start fastmmisrv

on ffbm
    trigger early-fs
    trigger fs
    trigger post-fs
    trigger post-fs-data

    # Load properties from /system/ + /factory after fs mount. Place
    # this in another action so that the load will be scheduled after the prior
    # issued fs triggers have completed.
    trigger load_all_props_action

    trigger early-boot
    trigger mmi

service hvdcp /system/bin/hvdcp
    class core
    user root
    disabled

on property:persist.usb.hvdcp.detect=true
    start hvdcp

on property:persist.usb.hvdcp.detect=false
    stop hvdcp

service charger_monitor /system/bin/charger_monitor
    user root
    group root
    disabled

service qbcharger /charger -m 1
    disabled
    oneshot

on property:sys.qbcharger.enable=true
    start qbcharger

on property:sys.qbcharger.enable=false
    stop qbcharger

service diag_mdlog_start /system/bin/diag_mdlog
    class late_start
    user shell
    group system qcom_diag sdcard_rw sdcard_r media_rw
    disabled
    oneshot

service diag_mdlog_stop /system/bin/diag_mdlog -k
    class late_start
    user shell
    group system qcom_diag sdcard_rw sdcard_r media_rw
    disabled
    oneshot

service qlogd /system/xbin/qlogd
    socket qlogd stream 0662 system system
    class main
    disabled
on property:persist.sys.qlogd=1
    start qlogd
on property:persist.sys.qlogd=0
    stop qlogd

service rootagent /system/bin/sh /system/etc/init.qcom.rootagent.sh
    disabled
    oneshot
on property:persist.sys.rootagent=1
    start rootagent
on property:persist.sys.rootagent=0
    stop rootagent

service bms-sh /system/bin/sh /init.qcom.bms.sh
    class main
    user root
    oneshot

service vm_bms /system/bin/vm_bms
    user root
    group root
    disabled

service msm_irqbalance /system/bin/msm_irqbalance -f /system/vendor/etc/msm_irqbalance.conf
    class core
    user root
    group root
    disabled

# Change IO scheduler to CFQ after boot_complete
on property:sys.boot_completed=1
    write /sys/block/mmcblk0/queue/scheduler cfq

# umount service
service umount_service /system/bin/umount /preload
     disabled
     oneshot

# Support Preload install apks
on property:persist.sys.storage_preload=1
    mount ext4 /dev/block/bootdevice/by-name/hidden /preload nosuid nodev ro barrier=1
    setprop storage.preload.complete 1

on property:persist.sys.storage_preload=0
    start umount_service

service wfdservice /system/bin/wfdservice
    class main
    user system
    group graphics audio camera inet net_bt net_bt_admin net_bt_stack drmrpc bluetooth media_rw media
    disabled
    oneshot

on property:sys.wfdservice=enable
    start wfdservice

on property:sys.wfdservice=disable
    stop wfdservice
