]> average.org Git - loctrkd.git/blobdiff - gps303/__main__.py
Update changelog for 1.02 release
[loctrkd.git] / gps303 / __main__.py
index 45deb2f39c42acf27f8e553cc129eaee38d202ed..2ad2ecfea0aaacab36aeae9cf526ad8067f58734 100644 (file)
@@ -1,9 +1,12 @@
 """ Command line tool for sending requests to the terminal """
 
 """ Command line tool for sending requests to the terminal """
 
+from configparser import ConfigParser
 from datetime import datetime, timezone
 from getopt import getopt
 from logging import getLogger
 from sys import argv
 from datetime import datetime, timezone
 from getopt import getopt
 from logging import getLogger
 from sys import argv
+from time import time
+from typing import List, Tuple
 import zmq
 
 from . import common
 import zmq
 
 from . import common
@@ -13,21 +16,29 @@ from .zmsg import Bcast, Resp
 log = getLogger("gps303")
 
 
 log = getLogger("gps303")
 
 
-def main(conf, opts, args):
-    zctx = zmq.Context()
-    zpush = zctx.socket(zmq.PUSH)
+def main(
+    conf: ConfigParser, opts: List[Tuple[str, str]], args: List[str]
+) -> None:
+    # Is this https://github.com/zeromq/pyzmq/issues/1627 still not fixed?!
+    zctx = zmq.Context()  # type: ignore
+    zpush = zctx.socket(zmq.PUSH)  # type: ignore
     zpush.connect(conf.get("collector", "listenurl"))
 
     if len(args) < 2:
     zpush.connect(conf.get("collector", "listenurl"))
 
     if len(args) < 2:
-        raise ValueError("Too few args, need IMEI and command min: " + str(args))
+        raise ValueError(
+            "Too few args, need IMEI and command min: " + str(args)
+        )
     imei = args[0]
     cmd = args[1]
     args = args[2:]
     cls = class_by_prefix(cmd)
     if isinstance(cls, list):
         raise ValueError("Prefix does not select a single class: " + str(cls))
     imei = args[0]
     cmd = args[1]
     args = args[2:]
     cls = class_by_prefix(cmd)
     if isinstance(cls, list):
         raise ValueError("Prefix does not select a single class: " + str(cls))
-    kwargs = {}
-    resp = Resp(imei=imei, packet=cls.response(**kwargs))
+    kwargs = dict([arg.split("=") for arg in args])
+    for arg in args:
+        k, v = arg.split("=")
+        kwargs[k] = v
+    resp = Resp(imei=imei, when=time(), packet=cls.Out(**kwargs).packed)
     log.debug("Response: %s", resp)
     zpush.send(resp.packed)
 
     log.debug("Response: %s", resp)
     zpush.send(resp.packed)