global DB
DB = connect(dbname)
try:
- DB.execute("""alter table events add column
- is_incoming int not null default TRUE""")
+ DB.execute(
+ """alter table events add column
+ is_incoming int not null default TRUE"""
+ )
except OperationalError:
DB.execute(SCHEMA)
)
DB.commit()
+
def fetch(imei, protos, backlog):
assert DB is not None
protosel = ", ".join(["?" for _ in range(len(protos))])
cur = DB.cursor()
- cur.execute(f"""select packet from events
+ cur.execute(
+ f"""select packet from events
where proto in ({protosel}) and imei = ?
order by tstamp desc limit ?""",
- protos + (imei, backlog))
+ protos + (imei, backlog),
+ )
result = [row[0] for row in cur]
cur.close()
return result
db = connect(sys.argv[1])
c = db.cursor()
-c.execute("select tstamp, packet from events where proto in ({})"
- .format(", ".join([str(n) for n in (WIFI_POSITIONING.PROTO, WIFI_OFFLINE_POSITIONING.PROTO, GPS_POSITIONING.PROTO, GPS_OFFLINE_POSITIONING.PROTO)])))
+c.execute(
+ "select tstamp, packet from events where proto in ({})".format(
+ ", ".join(
+ [
+ str(n)
+ for n in (
+ WIFI_POSITIONING.PROTO,
+ WIFI_OFFLINE_POSITIONING.PROTO,
+ GPS_POSITIONING.PROTO,
+ GPS_OFFLINE_POSITIONING.PROTO,
+ )
+ ]
+ )
+ )
+)
-print("""<?xml version="1.0"?>
+print(
+ """<?xml version="1.0"?>
<gpx version="1.1"
creator="gps303"
xmlns="http://www.topografix.com/GPX/1/1">
<trk>
<name>Location Data</name>
<trkseg>
-""")
+"""
+)
for tstamp, packet in c:
msg = parse_message(packet)
lat, lon = msg.latitude, msg.longitude
else:
continue
- isotime = datetime.fromtimestamp(tstamp).astimezone(tz=timezone.utc).isoformat()
- isotime = isotime[:isotime.rfind(".")] + "Z"
+ isotime = (
+ datetime.fromtimestamp(tstamp).astimezone(tz=timezone.utc).isoformat()
+ )
+ isotime = isotime[: isotime.rfind(".")] + "Z"
trkpt = """ <trkpt lat="{}" lon="{}">
<time>{}</time>
- </trkpt>""".format(lat, lon, isotime)
+ </trkpt>""".format(
+ lat, lon, isotime
+ )
print(trkpt)
if False:
print(
.isoformat(),
msg,
)
-print(""" </trkseg>
+print(
+ """ </trkseg>
</trk>
-</gpx>""")
+</gpx>"""
+)
selector = ""
c.execute(
- "select tstamp, imei, peeraddr, proto, packet from events" +
- selector, {"proto": proto}
+ "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)
+ 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(),
+ datetime.fromtimestamp(tstamp).astimezone(tz=timezone.utc).isoformat(),
imei,
peeraddr,
msg,