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()
+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 timestamp, imei, clntaddr, length, proto, payload from events"
+ "select tstamp, imei, peeraddr, proto, packet from events" + selector,
+ {"proto": proto},
)
-for timestamp, imei, clntaddr, length, proto, payload in c:
+
+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(timestamp)
- .astimezone(tz=timezone.utc)
- .isoformat(),
- make_object(length, proto, payload),
+ datetime.fromtimestamp(tstamp).astimezone(tz=timezone.utc).isoformat(),
+ imei,
+ peeraddr,
+ msg,
)