docs: подробные docstring перед каждой функцией
This commit is contained in:
@@ -28,13 +28,16 @@ class Database:
|
|||||||
self._init_schema()
|
self._init_schema()
|
||||||
|
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
|
"""Контекстный менеджер: with Database() as db."""
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def __exit__(self, exc_type, exc_val, exc_tb):
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||||
|
"""Закрытие соединения при выходе из with-блока."""
|
||||||
self.close()
|
self.close()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
|
"""Закрыть соединение с SQLite."""
|
||||||
if self.conn:
|
if self.conn:
|
||||||
self.conn.close()
|
self.conn.close()
|
||||||
self.conn = None
|
self.conn = None
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ _DTC_PATH = Path(__file__).parent.parent / "doc" / "dtc_codes.txt"
|
|||||||
|
|
||||||
|
|
||||||
def _load_dtc_dict() -> dict[str, str]:
|
def _load_dtc_dict() -> dict[str, str]:
|
||||||
|
"""Загрузить справочник DTC-кодов из doc/dtc_codes.txt."""
|
||||||
global _DTC_CODES
|
global _DTC_CODES
|
||||||
if _DTC_CODES:
|
if _DTC_CODES:
|
||||||
return _DTC_CODES
|
return _DTC_CODES
|
||||||
|
|||||||
+2
-1
@@ -180,6 +180,7 @@ class AndrOBD:
|
|||||||
return raw
|
return raw
|
||||||
|
|
||||||
def _recover(self):
|
def _recover(self):
|
||||||
|
"""Восстановление после ошибки: ATWS → ATSP0 → ATE0."""
|
||||||
"""Восстановление после ошибки: ATWS → ATSP0 → ATE0."""
|
"""Восстановление после ошибки: ATWS → ATSP0 → ATE0."""
|
||||||
logger.info("AndrOBD: recovering...")
|
logger.info("AndrOBD: recovering...")
|
||||||
self._state = State.INITIALIZING
|
self._state = State.INITIALIZING
|
||||||
@@ -192,7 +193,7 @@ class AndrOBD:
|
|||||||
self._state = State.READY
|
self._state = State.READY
|
||||||
|
|
||||||
def _write(self, cmd: str):
|
def _write(self, cmd: str):
|
||||||
"""Отправить команду в ELM327 (добавляет CR, flush)."""
|
"""Отправить команду в ELM327: сброс буфера → write + CR → flush."""
|
||||||
self._ser.reset_input_buffer() # сбросить хвосты предыдущего ответа
|
self._ser.reset_input_buffer() # сбросить хвосты предыдущего ответа
|
||||||
self._ser.write((cmd + "\r").encode())
|
self._ser.write((cmd + "\r").encode())
|
||||||
self._ser.flush()
|
self._ser.flush()
|
||||||
|
|||||||
+1
-1
@@ -51,7 +51,7 @@ class Rsp:
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def identify(cls, raw: str) -> str:
|
def identify(cls, raw: str) -> str:
|
||||||
"""Определяет тип ответа по сырой строке."""
|
"""Определяет тип ответа ELM327 по сырой строке."""
|
||||||
u = raw.upper().strip()
|
u = raw.upper().strip()
|
||||||
# NO DATA бывает как "NODATA" так и "NO DATA"
|
# NO DATA бывает как "NODATA" так и "NO DATA"
|
||||||
if u.replace(" ", "") == "NODATA":
|
if u.replace(" ", "") == "NODATA":
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ class AdaptiveTiming:
|
|||||||
RES = 4 # делитель для ATST
|
RES = 4 # делитель для ATST
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
"""Начальный таймаут = DEFAULT."""
|
||||||
self._t = self.DEFAULT
|
self._t = self.DEFAULT
|
||||||
self._min = self.MIN
|
self._min = self.MIN
|
||||||
|
|
||||||
@@ -35,15 +36,18 @@ class AdaptiveTiming:
|
|||||||
return max(1, self._t // self.RES)
|
return max(1, self._t // self.RES)
|
||||||
|
|
||||||
def increase(self):
|
def increase(self):
|
||||||
|
"""Увеличить таймаут на STEP (ЭБУ медленно отвечает)."""
|
||||||
"""Увеличить таймаут (ЭБУ медленно отвечает)."""
|
"""Увеличить таймаут (ЭБУ медленно отвечает)."""
|
||||||
if self._t + self.STEP < self.MAX:
|
if self._t + self.STEP < self.MAX:
|
||||||
self._t += self.STEP
|
self._t += self.STEP
|
||||||
|
|
||||||
def decrease(self):
|
def decrease(self):
|
||||||
|
"""Уменьшить таймаут на STEP (ЭБУ отвечает быстро)."""
|
||||||
"""Уменьшить таймаут (ЭБУ отвечает быстро)."""
|
"""Уменьшить таймаут (ЭБУ отвечает быстро)."""
|
||||||
if self._t - self.STEP >= self._min:
|
if self._t - self.STEP >= self._min:
|
||||||
self._t -= self.STEP
|
self._t -= self.STEP
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
|
"""Сброс до DEFAULT (после BUS ERROR / инициализации)."""
|
||||||
"""Сбросить до DEFAULT (после BUS ERROR)."""
|
"""Сбросить до DEFAULT (после BUS ERROR)."""
|
||||||
self._t = self.DEFAULT
|
self._t = self.DEFAULT
|
||||||
|
|||||||
Reference in New Issue
Block a user