all
This commit is contained in:
@@ -42,6 +42,7 @@ class ButtonService:
|
||||
self._click_count = 0
|
||||
self._press_time: float = 0.0
|
||||
self._click_timer: threading.Timer | None = None
|
||||
self._long_timer: threading.Timer | None = None # ← fix: init explicite
|
||||
self._long_press_fired = False
|
||||
self._relay_enabled = True
|
||||
self._lock = threading.Lock()
|
||||
@@ -110,6 +111,33 @@ class ButtonService:
|
||||
def simulate_long_press(self):
|
||||
asyncio.run_coroutine_threadsafe(self._handle_long_press(), self._loop)
|
||||
|
||||
def update_timings(
|
||||
self,
|
||||
double_click_ms: int | None = None,
|
||||
long_press_ms: int | None = None,
|
||||
debounce_ms: int | None = None,
|
||||
max_clicks: int | None = None,
|
||||
):
|
||||
"""Met à jour les timings à chaud (sans redémarrage du service)."""
|
||||
if double_click_ms is not None:
|
||||
self._cfg.double_click_ms = double_click_ms
|
||||
if long_press_ms is not None:
|
||||
self._cfg.long_press_ms = long_press_ms
|
||||
if max_clicks is not None:
|
||||
self._cfg.max_clicks = max(1, min(4, max_clicks))
|
||||
if debounce_ms is not None:
|
||||
self._cfg.debounce_ms = debounce_ms
|
||||
if self._button:
|
||||
try:
|
||||
self._button.bounce_time = debounce_ms / 1000
|
||||
except Exception:
|
||||
pass
|
||||
logger.info(
|
||||
"Timings bouton mis à jour : double_click=%dms, long_press=%dms, debounce=%dms, max_clicks=%d",
|
||||
self._cfg.double_click_ms, self._cfg.long_press_ms,
|
||||
self._cfg.debounce_ms, self._cfg.max_clicks,
|
||||
)
|
||||
|
||||
# ── Callbacks GPIO ────────────────────────────────────────────────────────
|
||||
|
||||
def _on_pressed(self):
|
||||
|
||||
Reference in New Issue
Block a user