add direct path
This commit is contained in:
parent
0010fe0cd6
commit
bc776418a1
@ -2,10 +2,12 @@ import logging
|
|||||||
import struct
|
import struct
|
||||||
import time
|
import time
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from threading import Thread
|
||||||
|
|
||||||
import zmq
|
import zmq
|
||||||
|
|
||||||
from flandre.config import C
|
from flandre.config import C
|
||||||
|
from flandre.nodes.Device import Device, DeviceCmd
|
||||||
from flandre.nodes.Node import Node
|
from flandre.nodes.Node import Node
|
||||||
from flandre.utils.Msg import ImageArgMsg, KillMsg, SetSeqMetaMsg, SetPlayMode, SetDeviceConfigMsg, \
|
from flandre.utils.Msg import ImageArgMsg, KillMsg, SetSeqMetaMsg, SetPlayMode, SetDeviceConfigMsg, \
|
||||||
ImagingConfigNameListMsg, BeamformerMsg, RobotRtsiMsg, SeqMetaMsg, DeviceEnabledMsg, RfFrameMsg
|
ImagingConfigNameListMsg, BeamformerMsg, RobotRtsiMsg, SeqMetaMsg, DeviceEnabledMsg, RfFrameMsg
|
||||||
@ -24,20 +26,28 @@ class Muxer(Node):
|
|||||||
self.seq_meta = None
|
self.seq_meta = None
|
||||||
self.seq_meta_live: RfSequenceMeta = None
|
self.seq_meta_live: RfSequenceMeta = None
|
||||||
self.seq_meta_playback = None
|
self.seq_meta_playback = None
|
||||||
self.play_mode = None
|
self.play_mode: str | None = None
|
||||||
self.rep_socket: zmq.Socket = None
|
self.rep_socket: zmq.Socket = None
|
||||||
self.req_driver_socket: zmq.Socket = None
|
self.req_driver_socket: zmq.Socket = None
|
||||||
self.playback_rf_msg: RfFrameMsg | None = None
|
self.playback_rf_msg: RfFrameMsg | None = None
|
||||||
self.device_enabled = False
|
self.device_enabled = False
|
||||||
self.driver_data_raw = b''
|
self.driver_data_raw = b''
|
||||||
|
self.run_p_thread = True
|
||||||
|
|
||||||
def custom_setup(self):
|
def custom_setup(self):
|
||||||
self.rep_socket: zmq.Socket = self.c.ctx.socket(zmq.REP)
|
self.rep_socket: zmq.Socket = self.c.ctx.socket(zmq.REP)
|
||||||
self.rep_socket.bind(f'tcp://localhost:{C.muxer_rep_port}')
|
self.rep_socket.bind(f'tcp://localhost:{C.muxer_rep_port}')
|
||||||
self.req_driver_socket: zmq.Socket = self.c.ctx.socket(zmq.REQ)
|
self.req_driver_socket: zmq.Socket = self.c.ctx.socket(zmq.REQ)
|
||||||
self.req_driver_socket.connect(C.driver_rep_socket)
|
# self.req_driver_socket.connect(C.driver_rep_socket)
|
||||||
|
self.req_driver_socket.connect(C.live_rep_socket)
|
||||||
self.c.poller.register(self.rep_socket, zmq.POLLIN)
|
self.c.poller.register(self.rep_socket, zmq.POLLIN)
|
||||||
|
|
||||||
|
def p_thread(self):
|
||||||
|
while self.run_p_thread:
|
||||||
|
if self.play_mode == 'live':
|
||||||
|
self.req_driver_socket.send(struct.pack('i', Device.magic) + struct.pack('i', DeviceCmd.GetData.value))
|
||||||
|
self.driver_data_raw = self.req_driver_socket.recv()
|
||||||
|
|
||||||
def handle_rep_socket(self):
|
def handle_rep_socket(self):
|
||||||
self.rep_socket.recv()
|
self.rep_socket.recv()
|
||||||
if self.play_mode is None:
|
if self.play_mode is None:
|
||||||
@ -55,8 +65,8 @@ class Muxer(Node):
|
|||||||
self.rep_socket.send(BeamformerMsg(b'init').encode_msg())
|
self.rep_socket.send(BeamformerMsg(b'init').encode_msg())
|
||||||
logger.warning('Device not enabled')
|
logger.warning('Device not enabled')
|
||||||
return
|
return
|
||||||
self.req_driver_socket.send(b'')
|
# self.req_driver_socket.send(b'')
|
||||||
self.driver_data_raw = self.req_driver_socket.recv()
|
# self.driver_data_raw = self.req_driver_socket.recv()
|
||||||
if self.driver_data_raw == b'':
|
if self.driver_data_raw == b'':
|
||||||
# todo fixit driver no empty
|
# todo fixit driver no empty
|
||||||
self.rep_socket.send(BeamformerMsg(b'nop').encode_msg())
|
self.rep_socket.send(BeamformerMsg(b'nop').encode_msg())
|
||||||
@ -94,6 +104,7 @@ class Muxer(Node):
|
|||||||
).encode_msg())
|
).encode_msg())
|
||||||
|
|
||||||
def loop(self):
|
def loop(self):
|
||||||
|
t = Thread(target=self.p_thread).start()
|
||||||
self.rtsi = RobotRtsiMsg(
|
self.rtsi = RobotRtsiMsg(
|
||||||
pos=(0, 0, 0, 0, 0, 0),
|
pos=(0, 0, 0, 0, 0, 0),
|
||||||
force=(0, 0, 0, 0, 0, 0),
|
force=(0, 0, 0, 0, 0, 0),
|
||||||
@ -113,6 +124,7 @@ class Muxer(Node):
|
|||||||
if k == self.c.sub:
|
if k == self.c.sub:
|
||||||
msg = self.recv()
|
msg = self.recv()
|
||||||
if isinstance(msg, KillMsg):
|
if isinstance(msg, KillMsg):
|
||||||
|
self.run_p_thread = False
|
||||||
if msg.name == '':
|
if msg.name == '':
|
||||||
return
|
return
|
||||||
elif isinstance(msg, RfFrameMsg):
|
elif isinstance(msg, RfFrameMsg):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user