]> average.org Git - loctrkd.git/blobdiff - loctrkd/zmsg.py
webdemo: implement sending cmds to the terminal
[loctrkd.git] / loctrkd / zmsg.py
index 4da88d2f6754e7e78db97ef8ecc9e989dcd1475c..6539d5f18f67b8e3e88faa760ccbadb104af2861 100644 (file)
@@ -4,7 +4,7 @@ import ipaddress as ip
 from struct import pack, unpack
 from typing import Any, cast, Optional, Tuple, Type, Union
 
 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
 
 
 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"""
 
 class Bcast(_Zmsg):
     """Zmq message to broadcast what was received from the terminal"""
 
@@ -169,18 +173,21 @@ class Resp(_Zmsg):
 
 
 class Rept(_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(
 
     @property
     def packed(self) -> bytes:
         return (
             pack(
-                "16s",
-                "0000000000000000"
+                "16s16s",
+                b"0000000000000000"
                 if self.imei is None
                 else self.imei.encode(),
                 if self.imei is None
                 else self.imei.encode(),
+                b"                "
+                if self.pmod is None
+                else self.pmod.encode(),
             )
             + self.payload.encode()
         )
             )
             + self.payload.encode()
         )
@@ -190,4 +197,8 @@ class Rept(_Zmsg):
         self.imei = (
             None if imei == b"0000000000000000" else imei.decode().strip("\0")
         )
         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()