# ASUS_BSP+++ Clay_Wang
service AThermalService /vendor/bin/init.asus.thermal_conf.sh
        class core
	seclabel u:r:thermal-engine:s0
        user root
        oneshot
        disabled
# ASUS_BSP--- Clay_Wang
# ASUS_BSP Clay_Wang dumpsys sensorservice +++
service SENSOR_DUMP /system/etc/init.asus.system_command.sh
         user root
         group root
         disabled
         oneshot
         seclabel u:r:savelogmtp:s0

# ASUS_BSP+++ Clay_Wang
on post-fs-data
#	setprop sys.create.thermal_link 1
	setprop debug.create.thermal_link 1
	start AThermalService
# ASUS_BSP--- Clay_Wang

# ASUS_BSP+++ Clay_Wang
on property:sys.boot_completed=1
#	setprop sys.create.thermal_link 1
	setprop debug.create.thermal_link 1
	setprop vendor.thermal.startlog ${persist.asus.startlog}
	start AThermalService
	setprop vendor.boot.id.stage ${ro.boot.id.stage}

on property:debug.thermal_engine.reset=1
	start AThermalService
# ASUS_BSP--- Clay_Wang

on property:vendor.thermal.create_link_done=1
	setprop debug.create.thermal_link 0

# =========ASUS_BSP+++ Clay_Wang "Dumpsys sensorservice"==========
on property:sys.thermal.dumpsys=1
        start SENSOR_DUMP        
on property:sys.thermal.dumpsys_sns=1
        start AThermalService    
on property:persist.asus.startlog=*
	setprop vendor.thermal.startlog ${persist.asus.startlog}
on property:vendor.thermal.dumpsys_done=1
	setprop sys.thermal.dumpsys 0
# =========ASUS_BSP--- Clay_Wang "Dumpsys sensorservice"==========
# =========ASUS_BSP+++ Jiunhau_Wang "Support AsusLogTool"==========
on property:sys.thermald.disabled=1
	stop vendor.thermal-engine
on property:sys.thermald.disabled=0
	start vendor.thermal-engine
# =========ASUS_BSP--- Jiunhau_Wang "Support AsusLogTool"==========

on property:debug.lmh=*
	start AThermalService
on property:vendor.thermal.lmh_freq1=*
	setprop debug.thermal.lmh_freq1 ${vendor.thermal.lmh_freq1}
on property:vendor.thermal.lmh_freq0=*
	setprop	debug.thermal.lmh_freq0	${vendor.thermal.lmh_freq0}
