change RfFrameWithMetaMsg
This commit is contained in:
parent
b96ef921f3
commit
7c0623ef43
@ -1 +1,3 @@
|
|||||||
recursive-include flandre *.ui
|
recursive-include flandre *.ui
|
||||||
|
recursive-include flandre/assets *.png
|
||||||
|
recursive-include flandre/assets *.svg
|
||||||
|
|||||||
@ -26,7 +26,7 @@ class Muxer(Node):
|
|||||||
self.play_mode = None
|
self.play_mode = 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.record_rf_msg: RfFrameWithMetaMsg | None = None
|
self.playback_rf_msg: RfFrameWithMetaMsg | None = None
|
||||||
self.device_enabled = False
|
self.device_enabled = False
|
||||||
|
|
||||||
def custom_setup(self):
|
def custom_setup(self):
|
||||||
@ -51,10 +51,10 @@ class Muxer(Node):
|
|||||||
return
|
return
|
||||||
match self.play_mode:
|
match self.play_mode:
|
||||||
case 'playback':
|
case 'playback':
|
||||||
if self.record_rf_msg is None:
|
if self.playback_rf_msg is None:
|
||||||
self.rep_socket.send(BeamformerMsg(b'nop').encode_msg())
|
self.rep_socket.send(BeamformerMsg(b'nop').encode_msg())
|
||||||
return
|
return
|
||||||
data_msg = self.record_rf_msg
|
data_msg = self.playback_rf_msg
|
||||||
case 'live':
|
case 'live':
|
||||||
if not self.device_enabled:
|
if not self.device_enabled:
|
||||||
self.rep_socket.send(BeamformerMsg(b'init').encode_msg())
|
self.rep_socket.send(BeamformerMsg(b'init').encode_msg())
|
||||||
@ -122,7 +122,7 @@ class Muxer(Node):
|
|||||||
msg.encode_msg()
|
msg.encode_msg()
|
||||||
))
|
))
|
||||||
elif msg.sender == 1:
|
elif msg.sender == 1:
|
||||||
self.record_rf_msg = msg
|
self.playback_rf_msg = msg
|
||||||
|
|
||||||
elif isinstance(msg, KillMsg):
|
elif isinstance(msg, KillMsg):
|
||||||
if msg.name == '':
|
if msg.name == '':
|
||||||
|
|||||||
@ -47,6 +47,7 @@ class BG(Enum):
|
|||||||
DeviceZero = auto()
|
DeviceZero = auto()
|
||||||
SetDeviceSwitchMsg = auto()
|
SetDeviceSwitchMsg = auto()
|
||||||
DeviceSwitchMsg = auto()
|
DeviceSwitchMsg = auto()
|
||||||
|
HeaderByteMsg = auto()
|
||||||
|
|
||||||
|
|
||||||
class Msg:
|
class Msg:
|
||||||
@ -82,14 +83,36 @@ class Msg:
|
|||||||
return self.magic() + self.eid() + self.encode()
|
return self.magic() + self.eid() + self.encode()
|
||||||
|
|
||||||
|
|
||||||
|
class HeaderByteMsg(Msg):
|
||||||
|
header: dict
|
||||||
|
data: bytes
|
||||||
|
|
||||||
|
def __init__(self, header: dict, data: bytes):
|
||||||
|
self.header = header
|
||||||
|
self.data = data
|
||||||
|
|
||||||
|
def encode(self) -> bytes:
|
||||||
|
e = json.dumps(self.header).encode()
|
||||||
|
return struct.pack('I', e.__len__()) + e + self.data
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def decode(cls, data: bytes) -> 'HeaderByteMsg':
|
||||||
|
header_len = struct.unpack('I', data[:4])[0]
|
||||||
|
header = json.loads(data[4:4 + header_len])
|
||||||
|
data = data[4 + header_len:]
|
||||||
|
return HeaderByteMsg(header, data)
|
||||||
|
|
||||||
|
|
||||||
@dataclasses.dataclass
|
@dataclasses.dataclass
|
||||||
class Msg1(Msg):
|
class Msg1(Msg):
|
||||||
a: int = 0
|
a: int = 0
|
||||||
b: int = 1
|
b: int = 1
|
||||||
|
|
||||||
|
|
||||||
class RefreshDeviceMsg(Msg):
|
class RefreshDeviceMsg(Msg):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@dataclasses.dataclass
|
@dataclasses.dataclass
|
||||||
class KillMsg(Msg):
|
class KillMsg(Msg):
|
||||||
name: str = ''
|
name: str = ''
|
||||||
@ -149,6 +172,7 @@ class SetRecordMsg(Msg):
|
|||||||
commit: str = ''
|
commit: str = ''
|
||||||
base: str = ''
|
base: str = ''
|
||||||
|
|
||||||
|
|
||||||
@dataclasses.dataclass
|
@dataclasses.dataclass
|
||||||
class SetDeviceConfigMsg(Msg):
|
class SetDeviceConfigMsg(Msg):
|
||||||
name: str
|
name: str
|
||||||
@ -178,11 +202,13 @@ class SetSeqMetaMsg(Msg):
|
|||||||
target: str
|
target: str
|
||||||
name: str
|
name: str
|
||||||
|
|
||||||
|
|
||||||
@dataclasses.dataclass
|
@dataclasses.dataclass
|
||||||
class SeqMetaMsg(Msg):
|
class SeqMetaMsg(Msg):
|
||||||
target: str
|
target: str
|
||||||
name: str
|
name: str
|
||||||
|
|
||||||
|
|
||||||
@dataclasses.dataclass
|
@dataclasses.dataclass
|
||||||
class SeqIdMinMax(Msg):
|
class SeqIdMinMax(Msg):
|
||||||
min: int
|
min: int
|
||||||
@ -276,25 +302,29 @@ class RfFrameMsg(Msg):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class RfFrameWithMetaMsg(Msg):
|
class RfFrameWithMetaMsg(HeaderByteMsg):
|
||||||
SPLIT = struct.pack('I', 114514)
|
@dataclasses.dataclass
|
||||||
|
class Header:
|
||||||
|
sender: int
|
||||||
|
meta: str
|
||||||
|
|
||||||
def __init__(self, sender: int, meta: RfFrameMeta, data: bytes):
|
def __init__(self, sender: int, meta: RfFrameMeta, data: bytes):
|
||||||
self.sender = sender
|
self._header = self.Header(sender, meta.name)
|
||||||
self.meta = meta
|
super().__init__(self._header.__dict__, data)
|
||||||
self.data = data
|
|
||||||
|
|
||||||
def encode(self) -> bytes:
|
@property
|
||||||
return struct.pack('I', self.sender) + self.meta.name.encode() + self.SPLIT + self.data
|
def sender(self) -> int:
|
||||||
|
return self._header.sender
|
||||||
|
|
||||||
|
@property
|
||||||
|
def meta(self) -> RfFrameMeta:
|
||||||
|
return RfFrameMeta.from_name(self._header.meta)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def decode(cls, data: bytes) -> 'RfFrameWithMetaMsg':
|
def decode(cls, data) -> 'RfFrameWithMetaMsg':
|
||||||
id2 = data.index(cls.SPLIT)
|
msg = super(RfFrameWithMetaMsg, cls).decode(data)
|
||||||
return cls(
|
header = cls.Header(**msg.header)
|
||||||
sender=struct.unpack('I', data[:4])[0],
|
return RfFrameWithMetaMsg(header.sender, RfFrameMeta.from_name(header.meta), msg.data)
|
||||||
meta=RfFrameMeta.from_name(data[4:id2].decode()),
|
|
||||||
data=data[id2 + 4:],
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@dataclasses.dataclass
|
@dataclasses.dataclass
|
||||||
@ -366,3 +396,12 @@ def test():
|
|||||||
|
|
||||||
|
|
||||||
test()
|
test()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
c = HeaderByteMsg(dict(a=1, b='s'), b'asdasd')
|
||||||
|
c2 = c.decode(c.encode())
|
||||||
|
print(c2.header, c2.data)
|
||||||
|
|
||||||
|
c = RfFrameWithMetaMsg(1, RfFrameMeta(1, 11, 111), b'asdasdasdads')
|
||||||
|
c2 = c.decode(c.encode())
|
||||||
|
print(c2.sender, c2.meta, c2.data)
|
||||||
|
|||||||
@ -29,7 +29,7 @@ class RfFrame:
|
|||||||
return self.data.read_bytes()
|
return self.data.read_bytes()
|
||||||
|
|
||||||
def mat(self, device='gpu'):
|
def mat(self, device='gpu'):
|
||||||
from utils.RfMat import RfMat
|
from flandre.utils.RfMat import RfMat
|
||||||
|
|
||||||
if device == 'gpu':
|
if device == 'gpu':
|
||||||
arr = cp.frombuffer(self.bytes, dtype=cp.int16)
|
arr = cp.frombuffer(self.bytes, dtype=cp.int16)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user