fix live stuck muxer

This commit is contained in:
flandre 2025-04-12 20:20:55 +08:00
parent 508f1f619c
commit b96ef921f3

View File

@ -7,7 +7,7 @@ import zmq
from flandre.config import C
from flandre.nodes.Node import Node
from flandre.utils.Msg import ImageArgMsg, KillMsg, SetSeqMetaMsg, SetPlayMode, SetDeviceConfigMsg, \
ImagingConfigNameListMsg, RfFrameWithMetaMsg, BeamformerMsg, RobotRtsiMsg, SeqMetaMsg
ImagingConfigNameListMsg, RfFrameWithMetaMsg, BeamformerMsg, RobotRtsiMsg, SeqMetaMsg, DeviceEnabledMsg
from flandre.utils.RfFile import RfSequenceMeta
from flandre.utils.RfMeta import RfFrameMeta
@ -16,7 +16,7 @@ logger = logging.getLogger(__name__)
class Muxer(Node):
topics = [SetSeqMetaMsg, SetPlayMode, SetDeviceConfigMsg, RfFrameWithMetaMsg,
ImageArgMsg, RobotRtsiMsg, SeqMetaMsg]
ImageArgMsg, RobotRtsiMsg, SeqMetaMsg,DeviceEnabledMsg]
def __init__(self, level=logging.INFO):
super(Muxer, self).__init__(level=level)
@ -27,6 +27,7 @@ class Muxer(Node):
self.rep_socket: zmq.Socket = None
self.req_driver_socket: zmq.Socket = None
self.record_rf_msg: RfFrameWithMetaMsg | None = None
self.device_enabled = False
def custom_setup(self):
self.rep_socket: zmq.Socket = self.c.ctx.socket(zmq.REP)
@ -55,6 +56,10 @@ class Muxer(Node):
return
data_msg = self.record_rf_msg
case 'live':
if not self.device_enabled:
self.rep_socket.send(BeamformerMsg(b'init').encode_msg())
logger.warning('Device not enabled')
return
self.req_driver_socket.send(b'')
driver_data_raw = self.req_driver_socket.recv()
if driver_data_raw == b'':
@ -134,7 +139,9 @@ class Muxer(Node):
case 'live':
self.seq_meta_live = RfSequenceMeta.from_name(msg.name)
elif isinstance(msg, SetPlayMode):
logger.debug(f'set playmode {msg}')
logger.info(f'set playmode {msg}')
self.play_mode = msg.value
elif isinstance(msg, RobotRtsiMsg):
self.rtsi = msg
elif isinstance(msg, DeviceEnabledMsg):
self.device_enabled = msg.value