From 4b6b6dd3805a1673a533a5dc78993dcb82086805 Mon Sep 17 00:00:00 2001 From: imonlinux <39863321+imonlinux@users.noreply.github.com> Date: Sat, 10 Jan 2026 13:26:19 -0800 Subject: [PATCH] Update button_controller.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summary Optimize GPIO button polling interval Problem Aggressive polling at 100 Hz (10ms interval) unnecessarily high for human button presses, causing elevated CPU usage with no benefit to responsiveness. Changes Changed default poll_interval_seconds from 0.01 to 0.05 (100 Hz → 20 Hz) Updated ButtonRuntimeConfig dataclass default Updated fallback default in constructor --- linux_voice_assistant/button_controller.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/linux_voice_assistant/button_controller.py b/linux_voice_assistant/button_controller.py index 5751faa..ce95cf9 100644 --- a/linux_voice_assistant/button_controller.py +++ b/linux_voice_assistant/button_controller.py @@ -40,7 +40,9 @@ class ButtonRuntimeConfig: enabled: bool pin: int long_press_seconds: float - poll_interval_seconds: float = 0.01 # 100 Hz polling + # CRITICAL FIX: Change default from 0.01s to 0.05s (100 Hz -> 20 Hz) + # 80% reduction in CPU usage for button monitoring + poll_interval_seconds: float = 0.05 # 20 Hz polling class ButtonController: @@ -73,6 +75,9 @@ class ButtonController: self.event_bus = event_bus self.state = state + # CRITICAL FIX: Default poll_interval_seconds to 0.05 instead of 0.01 + default_poll_interval = 0.05 + self._cfg = ButtonRuntimeConfig( enabled=getattr(config, "enabled", False), pin=getattr(config, "pin", 17), @@ -80,9 +85,7 @@ class ButtonController: getattr(config, "long_press_seconds", 1.0) ), poll_interval_seconds=float( - getattr(config, "poll_interval_seconds", 0.01) - if hasattr(config, "poll_interval_seconds") - else 0.01 + getattr(config, "poll_interval_seconds", default_poll_interval) ), )