X-Git-Url: http://average.org/gitweb/?a=blobdiff_plain;f=gps303%2Fqry.py;h=25f55aab75f1470d13ff0c59ba575c2eb6e5c0ad;hb=18eda7307e92eeee6a9e2fdd2e810f98d25df654;hp=2d4889921334e452226ec09faa04826fcc66ec6a;hpb=fd7f5f3424b04b1ffcb66bc06588e4b4dbe84900;p=loctrkd.git diff --git a/gps303/qry.py b/gps303/qry.py index 2d48899..25f55aa 100644 --- a/gps303/qry.py +++ b/gps303/qry.py @@ -1,12 +1,40 @@ -from datetime import datetime +from datetime import datetime, timezone from sqlite3 import connect import sys -from .GT06mod import * +from .gps303proto import parse_message, proto_by_name db = connect(sys.argv[1]) c = db.cursor() -c.execute("select timestamp, imei, clntaddr, proto, payload from events") -for timestamp, imei, clntaddr, proto, payload in c: - print(datetime.fromtimestamp(timestamp).isoformat(), - make_object(proto, payload)) +if len(sys.argv) > 2: + proto = proto_by_name(sys.argv[2]) + if proto < 0: + raise ValueError("No protocol with name " + sys.argv[2]) + selector = " where proto = :proto" +else: + proto = -1 + selector = "" + +c.execute( + "select tstamp, imei, peeraddr, proto, packet from events" + selector, + {"proto": proto}, +) + +for tstamp, imei, peeraddr, proto, packet in c: + if len(packet) > packet[0] + 1: + print( + "proto", + packet[1], + "datalen", + len(packet), + "msg.length", + packet[0], + file=sys.stderr, + ) + msg = parse_message(packet) + print( + datetime.fromtimestamp(tstamp).astimezone(tz=timezone.utc).isoformat(), + imei, + peeraddr, + msg, + )