X-Git-Url: http://average.org/gitweb/?a=blobdiff_plain;f=loctrkd%2Fzmsg.py;h=6539d5f18f67b8e3e88faa760ccbadb104af2861;hb=7af666616104a5c8c1ed56c4170a77412fdef923;hp=4da88d2f6754e7e78db97ef8ecc9e989dcd1475c;hpb=b965fecb08f4149f6f91770e9d6bb6d79f53f11e;p=loctrkd.git diff --git a/loctrkd/zmsg.py b/loctrkd/zmsg.py index 4da88d2..6539d5f 100644 --- a/loctrkd/zmsg.py +++ b/loctrkd/zmsg.py @@ -4,7 +4,7 @@ import ipaddress as ip from struct import pack, unpack from typing import Any, cast, Optional, Tuple, Type, Union -__all__ = "Bcast", "Resp", "topic" +__all__ = "Bcast", "Resp", "topic", "rtopic" def pack_peer( # 18 bytes @@ -100,6 +100,10 @@ def topic( ) +def rtopic(imei: str) -> bytes: + return pack("16s", imei.encode()) + + class Bcast(_Zmsg): """Zmq message to broadcast what was received from the terminal""" @@ -169,18 +173,21 @@ class Resp(_Zmsg): class Rept(_Zmsg): - """Broadcast Zzmq message with "rectified" proto-agnostic json data""" + """Broadcast zmq message with "rectified" proto-agnostic json data""" - KWARGS = (("imei", None), ("payload", "")) + KWARGS = (("imei", None), ("payload", ""), ("pmod", None)) @property def packed(self) -> bytes: return ( pack( - "16s", - "0000000000000000" + "16s16s", + b"0000000000000000" if self.imei is None else self.imei.encode(), + b" " + if self.pmod is None + else self.pmod.encode(), ) + self.payload.encode() ) @@ -190,4 +197,8 @@ class Rept(_Zmsg): self.imei = ( None if imei == b"0000000000000000" else imei.decode().strip("\0") ) - self.payload = buffer[16:].decode() + pmod = buffer[16:32] + self.pmod = ( + None if pmod == b" " else pmod.decode().strip("\0") + ) + self.payload = buffer[32:].decode()