панель: живой хотспот выглядел мёртвым

Мастер считает время по monotonic, панель по time.time(). В зеркале состояния
last_seen не обновлялся вовсе, поэтому «простой» рос вместе со временем в сети:
хотспот, живой 44 минуты, показывался как молчащий 44 минуты. Оператор решил бы,
что связь отвалилась.

Заодно счётчик принятых кадров: был вечный ноль, теперь считается в маршрутизаторе.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XvX94Vwy7vXWEuiFm1g9Av
Этот коммит содержится в:
2026-07-29 01:17:07 +09:00
co-authored by Claude Opus 4.8
родитель 8e3b9144c3
Коммит 47cb85327a
2 изменённых файлов: 11 добавлений и 0 удалений
+6
Просмотреть файл
@@ -10,6 +10,7 @@ import asyncio
import contextlib
import signal
import sys
import time
from . import config as cfgmod
from . import log as logmod
@@ -47,6 +48,11 @@ def _wire_state(master: HomebrewMaster, state: State) -> None:
sp.colorcode = cfgp.get("colorcode", "")
sp.rx_freq = cfgp.get("rx_freq", "")
sp.tx_freq = cfgp.get("tx_freq", "")
# Мастер считает время по monotonic, панель — по time.time().
# Без пересчёта панель показывала «простой» равным времени в сети,
# то есть живой хотспот выглядел мёртвым.
if p.last_seen:
sp.last_seen = time.time() - max(0.0, master._now() - p.last_seen)
for pid in list(state.peers):
if pid not in master.peers:
gone = state.peer_del(pid)