feat: build_test_script + mode=test
This commit is contained in:
@@ -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,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user