You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.3 KiB
Kotlin
72 lines
2.3 KiB
Kotlin
import java.io.*
|
|
import org.apache.commons.exec.CommandLine
|
|
import org.apache.commons.exec.DefaultExecutor
|
|
import org.apache.commons.exec.PumpStreamHandler
|
|
import com.fasterxml.jackson.databind.ObjectMapper
|
|
|
|
fun adbCmd(cmd: String): String {
|
|
val outputStream = ByteArrayOutputStream()
|
|
val exec = DefaultExecutor()
|
|
exec.streamHandler = PumpStreamHandler(outputStream)
|
|
val cmdline = "adb shell $cmd"
|
|
//println(cmdline)
|
|
exec.execute(CommandLine.parse(cmdline))
|
|
//println(outputStream)
|
|
return outputStream.toString().trim()
|
|
}
|
|
|
|
val cpufreqDir = "/sys/devices/system/cpu/cpufreq/policy0"
|
|
val interactGov = "/sys/devices/system/cpu/cpufreq/interactive"
|
|
|
|
val scaling_governor = adbCmd("cat $cpufreqDir/scaling_governor")
|
|
val avail_governer = adbCmd("cat $cpufreqDir/scaling_available_governors")
|
|
val avail_freq = adbCmd("cat $cpufreqDir/scaling_available_frequencies")
|
|
println("Available governers: " + avail_governer)
|
|
println("Available frequency: " + avail_freq)
|
|
|
|
val scaleMax = adbCmd("cat $cpufreqDir/scaling_max_freq")
|
|
val scaleMin = adbCmd("cat $cpufreqDir/scaling_min_freq")
|
|
println("scaling_X_freq: [$scaleMin, $scaleMax]")
|
|
println("Current governer: $scaling_governor")
|
|
|
|
fun getInteractValue(k: String): String {
|
|
return adbCmd("cat $interactGov/$k")
|
|
}
|
|
fun getInteractInt(k: String): Int {
|
|
return Integer.decode(adbCmd("cat $interactGov/$k"))
|
|
}
|
|
|
|
data class Boost(
|
|
var boost: Int,
|
|
var boostpulse_duration_ms: Int)
|
|
val boostInfo = Boost(getInteractInt("boost"), getInteractInt("boostpulse_duration") / 1000)
|
|
|
|
data class HiSpeed(
|
|
var load: Int,
|
|
var above_delay_Ms: Int,
|
|
var freq_GHz: Double)
|
|
val hiSpeedInfo = HiSpeed(
|
|
getInteractInt("go_hispeed_load"),
|
|
getInteractInt("above_hispeed_delay") / 1000,
|
|
getInteractInt("hispeed_freq") / 1000000.0)
|
|
|
|
data class InteractiveGov(
|
|
var target_loads: Int,
|
|
var boost: Boost,
|
|
var hiSpeed: HiSpeed,
|
|
var minSampleTimeMs: Int,
|
|
var timerRateMs: Int,
|
|
var timerSlackMs: Int,
|
|
var io_is_busy: Int)
|
|
|
|
val info = InteractiveGov(
|
|
getInteractInt("target_loads"),
|
|
boostInfo,
|
|
hiSpeedInfo,
|
|
getInteractInt("min_sample_time") / 1000,
|
|
getInteractInt("timer_rate") / 1000,
|
|
getInteractInt("timer_slack") / 1000,
|
|
getInteractInt("io_is_busy"))
|
|
|
|
println(ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(info))
|