95 lines
2.8 KiB
PowerShell
Executable File
95 lines
2.8 KiB
PowerShell
Executable File
# Test ECT0 _FST / _FSL via ectest (needs ec-test-app, run as Administrator).
|
||
# - Reads current FAND via \_SB.ECT0._FST
|
||
# - Writes a new FAND level via \_SB.ECT0._FSL
|
||
# - 0–100 : 直接传给 _FSL(测试用档位)
|
||
# - 255 : 传 255 (=0xFF),恢复 EC 自动控扇
|
||
# - Then loops to monitor FAND changes over time
|
||
|
||
param(
|
||
[string]$EctestPath = "C:\Users\Jack\ec-test-app\exe\x64\Release\ectest.exe",
|
||
[int]$SetFandPercent = 30, # 0-100 = 固定档位, 255=0xFF 自动
|
||
[int]$Iterations = 0, # 0 = infinite loop
|
||
[int]$IntervalSeconds = 1
|
||
)
|
||
|
||
if (-not (Test-Path $EctestPath)) {
|
||
Write-Host "ectest not found: $EctestPath" -ForegroundColor Red
|
||
exit 1
|
||
}
|
||
|
||
function Invoke-Ect0FstRaw {
|
||
param()
|
||
& $EctestPath -acpi "\_SB.ECT0._FST"
|
||
}
|
||
|
||
function Invoke-Ect0FslRaw {
|
||
param(
|
||
[int]$ValuePercent
|
||
)
|
||
& $EctestPath -acpi "\_SB.ECT0._FSL" $ValuePercent
|
||
}
|
||
|
||
function Get-Ect0Fand {
|
||
$out = Invoke-Ect0FstRaw
|
||
$lines = @($out)
|
||
$fand = $null
|
||
$captureNext = $false
|
||
foreach ($line in $lines) {
|
||
if ($line -match 'Argument\[1\]:') {
|
||
$captureNext = $true
|
||
continue
|
||
}
|
||
if ($captureNext) {
|
||
if ($line -match 'Integer Value:\s*(0x[0-9A-Fa-f]+|\d+)') {
|
||
$fand = $Matches[1]
|
||
break
|
||
}
|
||
}
|
||
}
|
||
[PSCustomObject]@{
|
||
Fand = $fand
|
||
RawText = ($lines -join "`r`n")
|
||
}
|
||
}
|
||
|
||
Write-Host "=== ECT0 _FST/_FSL test (needs DPTF debug ECT0 enabled in firmware) ===" -ForegroundColor Cyan
|
||
Write-Host "Ectest path : $EctestPath"
|
||
Write-Host "SetFand : $SetFandPercent (0-100=fixed, 255=auto)"
|
||
Write-Host ""
|
||
|
||
Write-Host "[1] Current FAND from _FST:" -ForegroundColor Green
|
||
$cur = Get-Ect0Fand
|
||
$fVal = if ($cur.Fand) { $cur.Fand } else { "N/A" }
|
||
Write-Host (" FAND = {0}" -f $fVal)
|
||
Write-Host ""
|
||
|
||
if (($SetFandPercent -ge 0 -and $SetFandPercent -le 100) -or $SetFandPercent -eq 255) {
|
||
Write-Host "[2] Writing FAND via _FSL($SetFandPercent) ..." -ForegroundColor Yellow
|
||
Invoke-Ect0FslRaw -ValuePercent $SetFandPercent
|
||
Write-Host ""
|
||
|
||
Write-Host "[3] Read-back FAND after _FSL:" -ForegroundColor Green
|
||
$after = Get-Ect0Fand
|
||
$fVal = if ($after.Fand) { $after.Fand } else { "N/A" }
|
||
Write-Host (" FAND = {0}" -f $fVal)
|
||
Write-Host ""
|
||
}
|
||
|
||
Write-Host "[4] Monitoring FAND with _FST (Ctrl+C to stop) ..." -ForegroundColor Cyan
|
||
|
||
$count = 0
|
||
while ($true) {
|
||
$v = Get-Ect0Fand
|
||
$ts = Get-Date -Format "HH:mm:ss"
|
||
$fVal = if ($v.Fand) { $v.Fand } else { "N/A" }
|
||
Write-Host ("{0} FAND = {1}" -f $ts, $fVal)
|
||
|
||
$count++
|
||
if ($Iterations -gt 0 -and $count -ge $Iterations) { break }
|
||
|
||
Start-Sleep -Seconds $IntervalSeconds
|
||
}
|
||
|
||
Write-Host "Done." -ForegroundColor Cyan
|
||
|