mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-04 19:43:49 +08:00
Rate limit CAN timeout logs (#3898)
This commit is contained in:
committed by
firestar5683
parent
dea30ba5e2
commit
f7d3dfd037
@@ -146,6 +146,7 @@ class CANParser:
|
||||
self.can_invalid_cnt: int = CAN_INVALID_CNT
|
||||
self.last_nonempty_nanos: int = 0
|
||||
self._last_update_nanos: int = 0
|
||||
self._last_invalid_log_nanos: int | None = None
|
||||
|
||||
def _add_message(self, name_or_addr: str | int, freq: float | None = None) -> None:
|
||||
if isinstance(name_or_addr, numbers.Number):
|
||||
@@ -201,13 +202,20 @@ class CANParser:
|
||||
valid = True
|
||||
counters_valid = True
|
||||
bus_timeout = self.bus_timeout
|
||||
invalid_messages = set()
|
||||
for state in self.message_states.values():
|
||||
if state.counter_fail >= MAX_BAD_COUNTER:
|
||||
counters_valid = False
|
||||
state.rate_limited_log(self._last_update_nanos, f"counter invalid, {state.counter_fail=} {MAX_BAD_COUNTER=}")
|
||||
if not state.valid(self._last_update_nanos, bus_timeout):
|
||||
valid = False
|
||||
state.rate_limited_log(self._last_update_nanos, "not valid (timeout or missing)")
|
||||
invalid_messages.add(state.address)
|
||||
|
||||
if invalid_messages and (self._last_invalid_log_nanos is None or
|
||||
self._last_update_nanos - self._last_invalid_log_nanos >= 10_000_000_000):
|
||||
messages = ', '.join(f"{hex(addr)} {self.message_states[addr].name}" for addr in sorted(invalid_messages))
|
||||
carlog.warning(f"CANParser: bus {self.bus} not valid (timeout or missing): {messages}")
|
||||
self._last_invalid_log_nanos = self._last_update_nanos
|
||||
|
||||
# TODO: probably only want to increment this once per update() call
|
||||
self.can_invalid_cnt = 0 if valid else min(self.can_invalid_cnt + 1, CAN_INVALID_CNT)
|
||||
|
||||
Reference in New Issue
Block a user