feat: build_test_script + mode=test

This commit is contained in:
Repinoid
2026-06-13 20:57:24 +04:00
parent 71200709ab
commit 6e59fef093
2 changed files with 46 additions and 1 deletions
+39
View File
@@ -131,3 +131,42 @@ def build_dynamic_script() -> dict:
{"id": "pid_1F", "cmd": "011F", "desc": "Время работы"},
],
}
def build_test_script(wait_ms: int = 400, pids: list[str] | None = None, repeat: int = 10) -> dict:
"""Тестовый скрипт для отладки таймингов ELM327.
Сервер управляет таймингами — можно менять wait_ms/pids/repeat без передеплоя APK.
Args:
wait_ms: пауза ПЕРЕД каждой OBD-командой (ms)
pids: список PID для опроса (по умолчанию 010C,0110,0106)
repeat: сколько раз повторить цикл
"""
if pids is None:
pids = ["010C", "0110", "0106"]
pid_names = {"010C": "RPM", "0110": "MAF", "0106": "STFT", "0105": "ОЖ",
"0104": "Нагрузка", "0107": "LTFT", "0111": "Дроссель",
"010D": "Скорость", "010B": "MAP", "010F": "IAT"}
steps = []
# Статика — один проход по всем PID для калибровки
for pid in pids:
name = pid_names.get(pid, pid)
steps.append({"id": f"static_{pid}", "cmd": pid, "desc": f"{name} (статик)", "wait": 0})
# Динамика — repeat циклов
for cycle in range(repeat):
for pid in pids:
name = pid_names.get(pid, pid)
steps.append({"id": f"dyn{cycle}_{pid}", "cmd": pid, "desc": f"{name}", "wait": wait_ms})
return {
"version": 1,
"mode": "test",
"title": f"Тест: {len(pids)} PID × {repeat}, пауза {wait_ms}ms",
"wait_ms": wait_ms,
"repeat": repeat,
"steps": steps,
}