#
# Copyright 2014 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

import init.shamu.usb.rc
import init.shamu.power.rc
import init.shamu.diag.rc

on early-init
    mkdir /firmware 0771 system system
    symlink /data/tombstones /tombstones
    mount debugfs debugfs /sys/kernel/debug
    chown system system /sys/kernel/debug/kgsl/proc

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

    # Set permissions for persist partition
    mkdir /persist 0771 system system
    mkdir /firmware 0771 system system

    export EXTERNAL_STORAGE /storage/emulated/legacy
    export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
    export EMULATED_STORAGE_TARGET /storage/emulated

    # 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

on fs
    mount_all fstab.shamu
    restorecon_recursive /persist
    setprop ro.crypto.fuse_sdcard true

    # Keeping following partitions outside fstab file. As user may not have
    # these partition flashed on the device. Failure to mount any partition in fstab file
    # results in failure to launch late-start class.

    wait /dev/block/platform/msm_sdcc.1/by-name/persist
    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/persist /persist nosuid nodev barrier=1 defcontext=u:object_r:persist_file:s0

    mkdir /fsg 0755 root root
    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/mdm1m9kefs3 /fsg ro nosuid nodev barrier=0

    # Enable rmnet data and aggregation
    setprop persist.rmnet.mux enabled
    setprop persist.rmnet.data.enable true
    setprop persist.data.wda.enable true
    setprop persist.data.df.agg.dl_pkt 10
    setprop persist.data.df.agg.dl_size 4096

on post-fs-data
    mkdir /data/tombstones 0771 system system
    mkdir /tombstones/modem 0771 system system
    mkdir /tombstones/lpass 0771 system system
    mkdir /tombstones/wcnss 0771 system system
    mkdir /tombstones/dsps 0771 system system

    # SENSORS
    #Create directory used by sensor subsystem(dsps)
    mkdir /data/system/sensors
    chmod 0775 /data/system/sensors
    write /data/system/sensors/settings 1
    chmod 0660 /data/system/sensors/settings

    # AKM setting data
    mkdir /data/misc/sensors
    chmod 0775 /data/misc/sensors

    mkdir /persist/sensors
    chmod 0775 /persist/sensors

    # Fingerprint sensor
    mkdir /data/validity 0775 system system
    mkdir /data/validity/fwext 0775 system system
    symlink /system/vendor/lib/hw/ValidityPersistentData /data/validity/ValidityPersistentData
    symlink /system/vendor/lib/hw/6_03f_moto.xefwext /data/validity/fwext/6_03f_moto.xefwext

    mkdir /persist/mdm 0770 radio radio

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/kernel/boot_adsp/boot 1

    # Subsytem Restart
    #venus
    write /sys/bus/msm_subsys/devices/subsys0/restart_level "related"
    write /sys/bus/msm_subsys/devices/subsys0/recovery_policy "skip_restart"
    #adsp
    write /sys/bus/msm_subsys/devices/subsys1/restart_level "system"
    #vpu
    write /sys/bus/msm_subsys/devices/subsys2/restart_level "related"
    write /sys/bus/msm_subsys/devices/subsys2/recovery_policy "skip_restart"
    #esoc0 (mdm)
    write /sys/bus/msm_subsys/devices/subsys3/restart_level "related"
    write /sys/bus/msm_subsys/devices/subsys3/recovery_policy "skip_restart"

on boot
    insmod /system/lib/modules/adsprpc.ko
    insmod /system/lib/modules/mhi.ko
    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 /proc/bluetooth/sleep/lpm
    chown bluetooth bluetooth /proc/bluetooth/sleep/btwrite
    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 bluetooth /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

    #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

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

    #readable symlinks for video nodes
    mkdir /dev/video
    symlink /dev/video32 /dev/video/venus_dec
    symlink /dev/video33 /dev/video/venus_enc

    setprop ro.telephony.call_ring.multiple false

    #Set SUID bit for usbhub
    chmod 4755 /system/bin/usbhub
    chmod 755 /system/bin/usbhub_init

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


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

    # Allow QMUX daemon to assign port open wait time
    chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait

    #port-bridge
    chmod 0660 /dev/smd0
    chown system system /dev/smd0

    #BT DUN port-bridge
    chmod 0660 /dev/smd7
    chown bluetooth bluetooth /dev/smd7

    #For bridgemgr daemon to inform the USB driver of the correct transport
    chown radio radio /sys/class/android_usb/f_rmnet_smd_sdio/transport

#   Define TCP buffer sizes for various networks
#   ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
    setprop net.tcp.buffersize.default 4096,87380,110208,4096,16384,110208
    setprop net.tcp.buffersize.lte     524288,1048576,2097152,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,262144,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  2097152
    write /proc/sys/net/core/wmem_max  2097152

    #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

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

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

    write /sys/bus/platform/drivers/xhci_msm_hsic/unbind msm_hsic_host
    write /sys/module/rmnet_usb/parameters/mux_enabled 1
    write /sys/module/rmnet_usb/parameters/no_fwd_rmnet_links 8
    write /sys/module/rmnet_usb/parameters/no_rmnet_insts_per_dev 17
    write /sys/module/rmnet_usb/parameters/rmnet_data_init 1
    chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait

    # Audio DSP permissions
    chown media media /dev/ttyHS3
    chown media media /sys/devices/c55_ctrl/gpio_ap_int/edge
    chown media media /sys/devices/c55_ctrl/gpio_ap_int/value
    chown media media /sys/devices/c55_ctrl/gpio_c55_int/value
    chown media media /sys/devices/c55_ctrl/gpio_core/value
    chown media media /sys/devices/c55_ctrl/gpio_reset/value
    mkdir /data/adspd/ 0770 media media
    mkdir /data/adspd/1 0770 media media

# subsystem ramdump collection
    write /sys/module/subsystem_restart/parameters/enable_ramdumps 1

# msm specific files that need to be created on /data
on post-fs-data
    # we will remap this as /mnt/sdcard with the sdcard fuse tool
    mkdir /data/media 0770 media_rw media_rw
    chown media_rw media_rw /data/media

    mkdir /data/misc/bluetooth 0770 bluetooth bluetooth

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

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

    mkdir /data/connectivity/nsrm 0771 system system
    chown system system /data/connectivity/nsrm

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

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

# Export GPIO56 for fusion targets to enable/disable hub
service usbhub_init /system/bin/usbhub_init
   class late_start
   user root
   disabled
   oneshot

service qcomsysd /system/bin/qcom-system-daemon
    class main

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

on property:ro.board.platform=msm7630_fusion
    start usbhub_init

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: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 irsc_util /system/bin/irsc_util "/etc/sec_config"
    class main
    user root
    oneshot

service mdm_helper /system/bin/mdm_helper
    class core
    onrestart setprop ro.service.mdm_helper_restarted "true"

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

on property:ro.boot.emmc=true
    start rmt_storage

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

on property:ro.boot.emmc=true
    start rfs_access

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 bluetooth
    group bluetooth
    disabled

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 ftmd /system/bin/ftmdaemon
    class late_start
    user root
    group bluetooth net_bt_admin misc net_bt_stack
    disabled
    oneshot

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

service port-bridge /system/bin/port-bridge /dev/smd0 /dev/ttyGS0
    class late_start
    user system
    group system inet
    disabled

service qmiproxy /system/bin/qmiproxy
    class main
    user radio
    group radio
    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

service netmgrd /system/bin/netmgrd
    class main
    group radio

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

service sensors /system/bin/sensors.qcom
    class main
    user root
    group root

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

service p2p_supplicant /system/bin/wpa_supplicant \
    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    -I/system/etc/wifi/p2p_supplicant_overlay.conf  \
    -O/data/misc/wifi/sockets  \
    -puse_p2p_group_interface=1p2p_device=1 -m/data/misc/wifi/p2p_supplicant.conf \
    -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 -dddd \
    -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 dhcpcd_wlan0 /system/bin/dhcpcd -ABKLG
    class late_start
    disabled
    oneshot

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

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

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

service ptt_socket_app /system/bin/ptt_socket_app -d
    class main
    user root
    group root
    oneshot

service ptt_ffbm /system/bin/ptt_socket_app -f -d
    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 dhcpcd_eth0 /system/bin/dhcpcd -aABDKL
    class late_start
    disabled
    oneshot

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

service gpsone_daemon /system/bin/gpsone_daemon
    class late_start
    user gps
    group gps inet net_raw
    disabled

service quipc_igsn /system/bin/quipc_igsn
    class late_start
    user gps
    group inet gps
    disabled

service quipc_main /system/bin/quipc_main
    class late_start
    user gps
    group gps net_admin wifi inet
    disabled

service location_mq /system/bin/location-mq
    class late_start
    user gps
    group gps
    disabled

service xtwifi_inet /system/bin/xtwifi-inet-agent
    class late_start
    user gps
    group inet gps
    disabled

service xtwifi_client /system/bin/xtwifi-client
    class late_start
    user gps
    group net_admin wifi inet gps
    disabled

service lowi-server /system/bin/lowi-server
    class late_start
    user gps
    group gps net_admin wifi inet
    disabled

service adspd /system/bin/adspd /dev/ttyHS3
   class late_start
   socket adspdsock stream 0666 media media
   user media
   group media input

#start GNSS/Sensor interface daemon
service gsiff_daemon /system/vendor/bin/gsiff_daemon
    class late_start
    user gps
    group gps net_raw

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 wifi-crda /system/bin/sh /system/etc/init.crda.sh
   class late_start
   user root
   disabled
   oneshot


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

on property:ro.debuggable=1
    start ss_ramdump

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

service hostapd /system/bin/hostapd -dd /data/misc/wifi/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 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 /data/media /mnt/shell/emulated
    class late_start

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

on charger
    write /sys/class/leds/lcd-backlight/brightness 100

service charger /charger
    class charger

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

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

on ffbm
    start fastmmisrv

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 system
    group system
    disabled

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

# Allow usb charging to be disabled peristently
on property:persist.usb.chgdisabled=1
    write /sys/class/power_supply/battery/charging_enabled 0

on property:persist.usb.chgdisabled=0
    write /sys/class/power_supply/battery/charging_enabled 1

service qrngd /system/bin/qrngd -f
   class main
   user root
   group root
   disabled

service qseecomd /system/bin/qseecomd
   class core
   user root
   group root

service mpdecision /system/bin/mpdecision --avg_comp
   class main
   user root

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

service thermal-engine /system/bin/thermal-engine
   class main
   user root
   group root

service security-check1 /sbin/security_boot_check system
    class core
    oneshot

service security-check2 /sbin/security_boot_check recovery
    class core
    oneshot

service time_daemon /system/bin/time_daemon
   class late_start
   user root
   group root

service audiod /system/bin/audiod
   class late_start
   user system
   group system

on property:init.svc.bootanim=stopped
    start usf-post-boot


service qcamerasvr /system/bin/mm-qcamera-daemon
    class late_start
    user camera
    group camera system inet input graphics

service bdAddrLoader /system/bin/bdAddrLoader -p ro.boot.btmacaddr -s -x
    class main
    user bluetooth
    group system bluetooth
    oneshot

on property:vold.decrypt=trigger_reset_main
    stop gnss-svcd

# When QCA1530 is known not to present
on property:persist.qca1530=no
   stop gnss-svcd
   stop gnss-detect
   write /sys/kernel/qca1530/chip_state 0

on property:init.svc.surfaceflinger=stopped
    stop ppd

service mmi-touch-sh /system/bin/sh /init.mmi.touch.sh atmel
    class late_start
    user root
    oneshot

# bugreport is triggered by holding down volume down, volume up and power
service bugreport /system/bin/dumpstate -d -p -B \
        -o /data/data/com.android.shell/files/bugreports/bugreport
    class main
    disabled
    oneshot
    keycodes 114 115 116
