From 2cc29ee67b6432e1cd74a21b3c9181b8b5b557f9 Mon Sep 17 00:00:00 2001 From: Eugene Crosser Date: Mon, 9 May 2022 17:23:15 +0200 Subject: [PATCH] fill in `when` in Resp packet --- gps303/__main__.py | 7 +++++-- gps303/collector.py | 3 ++- gps303/lookaside.py | 1 + gps303/termconfig.py | 4 +++- gps303/zmsg.py | 8 +++++--- 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/gps303/__main__.py b/gps303/__main__.py index 38d21fe..1583280 100644 --- a/gps303/__main__.py +++ b/gps303/__main__.py @@ -4,6 +4,7 @@ from datetime import datetime, timezone from getopt import getopt from logging import getLogger from sys import argv +from time import time import zmq from . import common @@ -19,7 +20,9 @@ def main(conf, opts, args): 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:] @@ -30,7 +33,7 @@ def main(conf, opts, args): for arg in args: k, v = arg.split("=") kwargs[k] = v - resp = Resp(imei=imei, packet=cls.Out(**kwargs).packed) + resp = Resp(imei=imei, when=time(), packet=cls.Out(**kwargs).packed) log.debug("Response: %s", resp) zpush.send(resp.packed) diff --git a/gps303/collector.py b/gps303/collector.py index e63da32..b8cc379 100644 --- a/gps303/collector.py +++ b/gps303/collector.py @@ -171,6 +171,7 @@ def runserver(conf): Bcast( is_incoming=False, proto=proto_of_message(zmsg.packet), + when=zmsg.when, imei=zmsg.imei, packet=zmsg.packet, ).packed @@ -210,7 +211,7 @@ def runserver(conf): respmsg = inline_response(packet) if respmsg is not None: clients.response( - Resp(imei=imei, packet=respmsg) + Resp(imei=imei, when=when, packet=respmsg) ) else: log.debug("Stray event: %s on socket %s", fl, sk) diff --git a/gps303/lookaside.py b/gps303/lookaside.py index dd5a449..edc899f 100644 --- a/gps303/lookaside.py +++ b/gps303/lookaside.py @@ -39,6 +39,7 @@ def runserver(conf): ) resp = Resp( imei=zmsg.imei, + when=zmsg.when, # not the current time, but the original! packet=msg.Out(latitude=lat, longitude=lon).packed, ) log.debug("Response for lat=%s, lon=%s: %s", lat, lon, resp) diff --git a/gps303/termconfig.py b/gps303/termconfig.py index f481a84..9f91684 100644 --- a/gps303/termconfig.py +++ b/gps303/termconfig.py @@ -63,7 +63,9 @@ def runserver(conf): ): if key in termconfig: kwargs[key] = termconfig[key] - resp = Resp(imei=zmsg.imei, packet=msg.Out(**kwargs).packed) + resp = Resp( + imei=zmsg.imei, when=zmsg.when, packet=msg.Out(**kwargs).packed + ) log.debug("Response: %s", resp) zpush.send(resp.packed) diff --git a/gps303/zmsg.py b/gps303/zmsg.py index 8179616..0457685 100644 --- a/gps303/zmsg.py +++ b/gps303/zmsg.py @@ -130,12 +130,14 @@ class Resp(_Zmsg): @property def packed(self): return ( - "0000000000000000" if self.imei is None else self.imei.encode() - ) + ( + ("0000000000000000" if self.imei is None else self.imei.encode()) + + ( b"\0\0\0\0\0\0\0\0" if self.when is None else pack("!d", self.when) - ) + self.packet + ) + + self.packet + ) def decode(self, buffer): self.imei = buffer[:16].decode() -- 2.39.2