#
# Copyright (c) 2009-2016, 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.
#

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

service vendor.mmid /vendor/bin/mmid
    user root
    group root
    disabled

service mmi_diag /system_ext/bin/mmi_diag
        class main
        user root
        group root oem_2901
        disabled

on property:vendor.sys.boot_mode=ffbm && property:ro.build.type=userdebug
    write ${persist.vendor.mmi.misc_dev_path} "ffbm-01"

on property:vendor.sys.boot_mode=ffbm && property:ro.build.type=eng
    write ${persist.vendor.mmi.misc_dev_path} "ffbm-01"

on property:vendor.sys.boot_mode=qmmi && property:ro.build.type=userdebug
    write ${persist.vendor.mmi.misc_dev_path} "qmmi"

on property:vendor.sys.boot_mode=qmmi && property:ro.build.type=eng
    write ${persist.vendor.mmi.misc_dev_path} "qmmi"

on property:vendor.sys.boot_mode=normal && property:ro.build.type=userdebug
    write ${persist.vendor.mmi.misc_dev_path} "normal"

on property:vendor.sys.boot_mode=normal && property:ro.build.type=eng
    write ${persist.vendor.mmi.misc_dev_path} "normal"

# Creating a scratch storage on /data for factory testing.
on factory-fs && property:ro.bootmode=ffbm-00 && property:ro.build.type=userdebug
    mount tmpfs tmpfs /data

on factory-fs && property:ro.bootmode=ffbm-00 && property:ro.build.type=eng
    mount tmpfs tmpfs /data

on factory-fs && property:ro.bootmode=ffbm-01 && property:ro.build.type=userdebug
    mount tmpfs tmpfs /data

on factory-fs && property:ro.bootmode=ffbm-01 && property:ro.build.type=eng
    mount tmpfs tmpfs /data

# aligned the usb port with system standard, otherwise if only diag be added
# Then in QMMI mode, the whole Andoid be booted, but due to the ro.bootmode is
# not normal/unknow, then when it apply the default funcs, it will turn to MTP
# which cause the diag/Wwan/modem port all be lost in qmmi mode. Details:
# UsbDeviceManager.java---->getDefaultFunctions and trySetEnabledFunctions
on property:persist.vendor.usb.config=*
    setprop persist.sys.usb.qmmi.func ${persist.vendor.usb.config}

on mmi && property:ro.bootmode=ffbm-00
    # ========================================================
    #              This is FFBM only settings.
    # ========================================================
    #mkdir for factory data files.
    mkdir /mnt/vendor/persist/FTM_AP 0750 system system

    start fastmmi
    # start qcom-post-boot to set the misc partition path property value
    start qcom-post-boot
    start mmi_diag

on mmi && property:ro.bootmode=ffbm-01
    # ========================================================
    #              This is FFBM only settings.
    # ========================================================
    #mkdir for factory data files.
    mkdir /mnt/vendor/persist/FTM_AP 0750 system system

    start fastmmi
    ## start qcom-post-boot to set the misc partition path property value
    start qcom-post-boot
    start mmi_diag

on property:persist.vendor.usb.config=* && property:ro.bootmode=ffbm-00 && property:ro.build.type=userdebug
    setprop sys.usb.config ${persist.vendor.usb.config}

on property:persist.vendor.usb.config=* && property:ro.bootmode=ffbm-00 && property:ro.build.type=eng
    setprop sys.usb.config ${persist.vendor.usb.config}

on property:persist.vendor.usb.config=* && property:ro.bootmode=ffbm-01 && property:ro.build.type=userdebug
    setprop sys.usb.config ${persist.vendor.usb.config}

on property:persist.vendor.usb.config=* && property:ro.bootmode=ffbm-01 && property:ro.build.type=eng
    setprop sys.usb.config ${persist.vendor.usb.config}

on property:persist.vendor.usb.config=* && property:ro.bootmode=ffbm-02 && property:ro.build.type=userdebug
    setprop sys.usb.config ${persist.vendor.usb.config}

on property:persist.vendor.usb.config=* && property:ro.bootmode=ffbm-02 && property:ro.build.type=eng
    setprop sys.usb.config ${persist.vendor.usb.config}

on property:persist.vendor.usb.config=* && property:ro.bootmode=qmmi && property:ro.build.type=userdebug
    setprop sys.usb.config ${persist.vendor.usb.config}

on property:persist.vendor.usb.config=* && property:ro.bootmode=qmmi && property:ro.build.type=eng
    setprop sys.usb.config ${persist.vendor.usb.config}

on ffbm
    trigger early-fs
    trigger factory-fs
    trigger fs
    trigger post-fs

    # Mount fstab in init.{$device}.rc by mount_all with '--late' parameter
    # to only mount entries with 'latemount'. This is needed if '--early' is
    # specified in the previous mount_all command on the fs stage.
    # With /system mounted and properties form /system + /factory available,
    # some services can be started.
    trigger late-fs

    # Now we can mount /data. File encryption requires keymaster to decrypt
    # /data, which in turn can only be loaded when system properties are present.
    trigger post-fs-data

    # Now we can start zygote for devices with file based encryption
    trigger zygote-start

    # Load persist properties and override properties (if enabled) from /data.
    trigger load_persist_props_action

    # Remove a file to wake up anything waiting for firmware.
    trigger firmware_mounts_complete

    trigger early-boot
    trigger boot
    trigger mmi


# ========================================================
#          Start for audio TC
# ========================================================

service vendor.audio_tc53 /vendor/bin/mm-audio-ftm -tc 53
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc1 /vendor/bin/mm-audio-ftm -tc 1
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc2 /vendor/bin/mm-audio-ftm -tc 2
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc3 /vendor/bin/mm-audio-ftm -tc 3
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc4 /vendor/bin/mm-audio-ftm -tc 4
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc5 /vendor/bin/mm-audio-ftm -tc 5
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc51 /vendor/bin/mm-audio-ftm -tc 51
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc56 /vendor/bin/mm-audio-ftm -tc 56
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc222 /vendor/bin/mm-audio-ftm -tc 222
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc225 /vendor/bin/mm-audio-ftm -tc 225
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc228 /vendor/bin/mm-audio-ftm -tc 228
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc229 /vendor/bin/mm-audio-ftm -tc 229
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc230 /vendor/bin/mm-audio-ftm -tc 230
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc246 /vendor/bin/mm-audio-ftm -tc 246
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc247 /vendor/bin/mm-audio-ftm -tc 247
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc250 /vendor/bin/mm-audio-ftm -tc 250
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc251 /vendor/bin/mm-audio-ftm -tc 251
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc252 /vendor/bin/mm-audio-ftm -tc 252
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc253 /vendor/bin/mm-audio-ftm -tc 253
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc333 /vendor/bin/mm-audio-ftm -tc 333
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc334 /vendor/bin/mm-audio-ftm -tc 334
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc335 /vendor/bin/mm-audio-ftm -tc 335
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc336 /vendor/bin/mm-audio-ftm -tc 336
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc337 /vendor/bin/mm-audio-ftm -tc 337
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc338 /vendor/bin/mm-audio-ftm -tc 338
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc11 /vendor/bin/mm-audio-ftm -tc 11 -file /data/vendor/audio/ftm_headset_mic_record.wav
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc16 /vendor/bin/mm-audio-ftm -tc 16 -file /data/vendor/audio/ftm_mic1_record.wav
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc17 /vendor/bin/mm-audio-ftm -tc 17 -file /data/vendor/audio/ftm_mic2_record.wav
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc18 /vendor/bin/mm-audio-ftm -tc 18 -file /data/vendor/audio/ftm_mic3_record.wav
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc19 /vendor/bin/mm-audio-ftm -tc 19 -file /data/vendor/audio/ftm_mic4_record.wav
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc20 /vendor/bin/mm-audio-ftm -tc 20 -file /data/vendor/audio/ftm_mic5_record.wav
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc21 /vendor/bin/mm-audio-ftm -tc 21 -file /data/vendor/audio/ftm_mic6_record.wav
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc101 /vendor/bin/mm-audio-ftm -tc 101 -file /data/vendor/audio/ftm_mic1_record.wav
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc102 /vendor/bin/mm-audio-ftm -tc 102 -file /data/vendor/audio/ftm_mic2_record.wav
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc103 /vendor/bin/mm-audio-ftm -tc 103 -file /data/vendor/audio/ftm_mic3_record.wav
    user audio
    group audio
    disabled
    oneshot

service vendor.audio_tc104 /vendor/bin/mm-audio-ftm -tc 104 -file /data/vendor/audio/ftm_mic4_record.wav
    user audio
    group audio
    disabled
    oneshot

# ========================================================
#           End for audio TC
# ========================================================
