# MTK connectivity .rc configure
on post-fs-data
    mkdir /data/misc/firmware 0777 system system
    mkdir /data/misc/firmware/active 0777 system system
    mkdir /data/misc/firmware/push 0777 system system

on post-fs-data
    mkdir /data/vendor/stp_dump 0755 system system
    mkdir /data/vendor/connsyslog 0755 system system

# WMT
service wmt_loader /vendor/bin/wmt_loader
    class early_hal
    user system
    group system
    oneshot

service wmt_launcher /vendor/bin/wmt_launcher -p /vendor/firmware/
    class early_hal
    user system
    group system

on property:ro.build.type=eng
    write /sys/kernel/debug/tracing/tracing_on 1

on property:persist.vendor.connsys.coredump.mode=1
    start stp_dump

on property:persist.vendor.connsys.coredump.mode=2
    start stp_dump

on property:persist.vendor.connsys.coredump.mode=0
    stop stp_dump

on property:vendor.connsys.driver.ready=yes && property:persist.vendor.connsys.coredump.mode=*
    write /proc/driver/wmt_dbg "0x15 ${persist.vendor.connsys.coredump.mode}"

on property:vendor.connsys.driver.ready=yes && property:debug.vendor.connsys.suspend.alarm=*
    write /proc/driver/wmt_dbg "0x2e ${debug.vendor.connsys.suspend.alarm}"

on property:vendor.connsys.driver.ready=yes
    write /proc/driver/wmt_dbg "0x7 9 1"

on property:vendor.connsys.driver.ready=yes && property:vendor.bluetooth.no_acl_link=*
    write /proc/driver/wmt_dbg "0x2f 0 ${vendor.bluetooth.no_acl_link}"

on property:vendor.connsys.driver.ready=yes && property:vendor.bluetooth.no_br_acl_link=*
    write /proc/driver/wmt_dbg "0x2f 1 ${vendor.bluetooth.no_br_acl_link}"

service stp_dump /vendor/bin/stp_dump3
    user system
    group system sdcard_rw misc
    class core
    disabled
