refactor: разбил routes/db/protocol на отдельные модули
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
"""Адаптивный таймаут ожидания ответа ЭБУ (AndrOBD AdaptiveTiming).
|
||||
|
||||
Динамически подстраивается под скорость ответа:
|
||||
- Успешный ответ → уменьшаем таймаут
|
||||
- Таймаут/NO DATA → увеличиваем таймаут
|
||||
- BUS ERROR → сброс до DEFAULT
|
||||
|
||||
ATST = таймаут / 4 (отправляется в ELM327 как ATSTxx).
|
||||
"""
|
||||
|
||||
|
||||
class AdaptiveTiming:
|
||||
"""Адаптивный таймаут ожидания ответа (AndrOBD AdaptiveTiming).
|
||||
|
||||
ATST = таймаут / 4 (отправляется в ELM327 как ATSTxx).
|
||||
"""
|
||||
DEFAULT = 500 # мс — начальный таймаут
|
||||
MIN = 50 # мс — минимальный
|
||||
MAX = 2000 # мс — максимальный
|
||||
STEP = 20 # мс — шаг изменения
|
||||
RES = 4 # делитель для ATST
|
||||
|
||||
def __init__(self):
|
||||
self._t = self.DEFAULT
|
||||
self._min = self.MIN
|
||||
|
||||
@property
|
||||
def ms(self) -> int:
|
||||
"""Текущий таймаут в миллисекундах."""
|
||||
return self._t
|
||||
|
||||
@property
|
||||
def atst(self) -> int:
|
||||
"""Значение для ATST (таймаут / 4)."""
|
||||
return max(1, self._t // self.RES)
|
||||
|
||||
def increase(self):
|
||||
"""Увеличить таймаут (ЭБУ медленно отвечает)."""
|
||||
if self._t + self.STEP < self.MAX:
|
||||
self._t += self.STEP
|
||||
|
||||
def decrease(self):
|
||||
"""Уменьшить таймаут (ЭБУ отвечает быстро)."""
|
||||
if self._t - self.STEP >= self._min:
|
||||
self._t -= self.STEP
|
||||
|
||||
def reset(self):
|
||||
"""Сбросить до DEFAULT (после BUS ERROR)."""
|
||||
self._t = self.DEFAULT
|
||||
Reference in New Issue
Block a user