-import sys
-
-from .zx303proto import *
-
-db = connect(sys.argv[1])
-c = db.cursor()
-c.execute(
- """select tstamp, is_incoming, packet from events
- where imei = ?
- and ((is_incoming = false and proto = ?)
- or (is_incoming = true and proto = ?))
- order by tstamp""",
- (sys.argv[2], proto_name(WIFI_POSITIONING), proto_name(GPS_POSITIONING)),
-)
-
-print(
- """<?xml version="1.0"?>
-<gpx version="1.1"
-creator="loctrkd"
-xmlns="http://www.topografix.com/GPX/1/1">
- <name>Location Data</name>
- <trk>
- <name>Location Data</name>
- <trkseg>
-"""
-)
-
-for tstamp, is_incoming, packet in c:
- msg = parse_message(packet, is_incoming=is_incoming)
- lat, lon = msg.latitude, msg.longitude
- isotime = (
- datetime.fromtimestamp(tstamp).astimezone(tz=timezone.utc).isoformat()
+from sys import argv
+from typing import Any, cast, List, Tuple
+
+from . import common
+from .protomodule import ProtoModule
+
+log = getLogger("loctrkd/mkgpx")
+
+
+def main(
+ conf: ConfigParser, opts: List[Tuple[str, str]], args: List[str]
+) -> None:
+ db = connect(conf.get("storage", "dbfn"))
+ c = db.cursor()
+ c.execute(
+ """select tstamp, is_incoming, proto, packet from events
+ where imei = ? and is_incoming = true
+ and proto in (?, ?)
+ order by tstamp""",
+ (args[0], "BS:UD", "BS:UD2"),