From 3a91fc468a0d97bad12ecc79f4e4ca2e89cf8839 Mon Sep 17 00:00:00 2001 From: Michael Hansen Date: Wed, 17 Jan 2024 12:37:15 -0600 Subject: [PATCH] Only enable ping if server supports it --- installer/satellite.py | 21 +++++++++++++++------ wyoming_satellite/satellite.py | 6 +++++- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/installer/satellite.py b/installer/satellite.py index 48287de..098c542 100644 --- a/installer/satellite.py +++ b/installer/satellite.py @@ -82,7 +82,11 @@ def satellite_menu(last_choice: Optional[str]) -> Optional[str]: def configure_feedback(settings: Settings) -> None: choice: Optional[str] = None while True: - choice = menu("Main > Satellite > Feedback", [("respeaker", "ReSpeaker")]) + choice = menu( + "Main > Satellite > Feedback", + [("respeaker", "ReSpeaker")], + menu_args=["--ok-button", "Select", "--cancel-button", "Back"], + ) if choice == "respeaker": selected_service: Optional[str] = None if settings.satellite.event_service_command: @@ -94,6 +98,7 @@ def configure_feedback(settings: Settings) -> None: event_service = radiolist( "Event Service:", [ + ("none", "None"), ("2mic", "2mic LEDs"), ("4mic", "4mic LEDs"), ], @@ -101,11 +106,15 @@ def configure_feedback(settings: Settings) -> None: ) if event_service is not None: - settings.satellite.event_service_command = [ - str(PROGRAM_DIR / "script" / f"run_{event_service}"), - "--uri", - "tcp://127.0.0.1:10500", - ] + if event_service == "none": + settings.satellite.event_service_command = None + else: + settings.satellite.event_service_command = [ + str(PROGRAM_DIR / "script" / f"run_{event_service}"), + "--uri", + "tcp://127.0.0.1:10500", + ] + settings.save() else: break diff --git a/wyoming_satellite/satellite.py b/wyoming_satellite/satellite.py index 209e5d9..f4f8bb7 100644 --- a/wyoming_satellite/satellite.py +++ b/wyoming_satellite/satellite.py @@ -71,6 +71,7 @@ class SatelliteBase: self._event_task: Optional[asyncio.Task] = None self._event_queue: "Optional[asyncio.Queue[Event]]" = None + self._ping_server_enabled: bool = False self._pong_received_event = asyncio.Event() self._ping_server_task = asyncio.create_task(self._ping_server(), name="ping") @@ -170,7 +171,7 @@ class SatelliteBase: try: while self.is_running: await asyncio.sleep(_PING_SEND_DELAY) - if self.server_id is None: + if (self.server_id is None) or (not self._ping_server_enabled): # No server connected continue @@ -220,6 +221,9 @@ class SatelliteBase: # Respond with pong ping = Ping.from_event(event) await self.event_to_server(Pong(text=ping.text).event()) + + # Enable pinging + self._ping_server_enabled = True elif Pong.is_type(event.type): # Response from our ping self._pong_received_event.set()