Only enable ping if server supports it
This commit is contained in:
+10
-1
@@ -82,7 +82,11 @@ def satellite_menu(last_choice: Optional[str]) -> Optional[str]:
|
|||||||
def configure_feedback(settings: Settings) -> None:
|
def configure_feedback(settings: Settings) -> None:
|
||||||
choice: Optional[str] = None
|
choice: Optional[str] = None
|
||||||
while True:
|
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":
|
if choice == "respeaker":
|
||||||
selected_service: Optional[str] = None
|
selected_service: Optional[str] = None
|
||||||
if settings.satellite.event_service_command:
|
if settings.satellite.event_service_command:
|
||||||
@@ -94,6 +98,7 @@ def configure_feedback(settings: Settings) -> None:
|
|||||||
event_service = radiolist(
|
event_service = radiolist(
|
||||||
"Event Service:",
|
"Event Service:",
|
||||||
[
|
[
|
||||||
|
("none", "None"),
|
||||||
("2mic", "2mic LEDs"),
|
("2mic", "2mic LEDs"),
|
||||||
("4mic", "4mic LEDs"),
|
("4mic", "4mic LEDs"),
|
||||||
],
|
],
|
||||||
@@ -101,11 +106,15 @@ def configure_feedback(settings: Settings) -> None:
|
|||||||
)
|
)
|
||||||
|
|
||||||
if event_service is not None:
|
if event_service is not None:
|
||||||
|
if event_service == "none":
|
||||||
|
settings.satellite.event_service_command = None
|
||||||
|
else:
|
||||||
settings.satellite.event_service_command = [
|
settings.satellite.event_service_command = [
|
||||||
str(PROGRAM_DIR / "script" / f"run_{event_service}"),
|
str(PROGRAM_DIR / "script" / f"run_{event_service}"),
|
||||||
"--uri",
|
"--uri",
|
||||||
"tcp://127.0.0.1:10500",
|
"tcp://127.0.0.1:10500",
|
||||||
]
|
]
|
||||||
|
|
||||||
settings.save()
|
settings.save()
|
||||||
else:
|
else:
|
||||||
break
|
break
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ class SatelliteBase:
|
|||||||
self._event_task: Optional[asyncio.Task] = None
|
self._event_task: Optional[asyncio.Task] = None
|
||||||
self._event_queue: "Optional[asyncio.Queue[Event]]" = None
|
self._event_queue: "Optional[asyncio.Queue[Event]]" = None
|
||||||
|
|
||||||
|
self._ping_server_enabled: bool = False
|
||||||
self._pong_received_event = asyncio.Event()
|
self._pong_received_event = asyncio.Event()
|
||||||
self._ping_server_task = asyncio.create_task(self._ping_server(), name="ping")
|
self._ping_server_task = asyncio.create_task(self._ping_server(), name="ping")
|
||||||
|
|
||||||
@@ -170,7 +171,7 @@ class SatelliteBase:
|
|||||||
try:
|
try:
|
||||||
while self.is_running:
|
while self.is_running:
|
||||||
await asyncio.sleep(_PING_SEND_DELAY)
|
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
|
# No server connected
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -220,6 +221,9 @@ class SatelliteBase:
|
|||||||
# Respond with pong
|
# Respond with pong
|
||||||
ping = Ping.from_event(event)
|
ping = Ping.from_event(event)
|
||||||
await self.event_to_server(Pong(text=ping.text).event())
|
await self.event_to_server(Pong(text=ping.text).event())
|
||||||
|
|
||||||
|
# Enable pinging
|
||||||
|
self._ping_server_enabled = True
|
||||||
elif Pong.is_type(event.type):
|
elif Pong.is_type(event.type):
|
||||||
# Response from our ping
|
# Response from our ping
|
||||||
self._pong_received_event.set()
|
self._pong_received_event.set()
|
||||||
|
|||||||
Reference in New Issue
Block a user