]> www.average.org Git - loctrkd.git/blob - gps303/backlog.py
WIP on baclog fetcher
[loctrkd.git] / gps303 / backlog.py
1 """ Get backlog from evstore """
2
3 from .opencellid import qry_cell
4 from .evstore import initdb, fetch
5 from .gps303proto import GPS_POSITIONING, WIFI_POSITIONING, parse_message
6 from .zmsg import LocEvt
7
8 OCDB = None
9
10 def blinit(evdb, ocdb):
11     global OCDB
12     OCDB = ocdb
13     initdb(evdb)
14
15 def backlog(imei, backlog):
16     result = []
17     for packet in fetch(imei, (GPS_POSITIONING.PROTO, WIFI_POSITIONING.PROTO), backlog):
18         msg = parse_message(packet)
19         if isinstance(msg, GPS_POSITIONING):
20             result.append(LocEvt(devtime=msg.devtime, lon=msg.longitude,
21                 lat=msg.latitude, is_gps=True, imei=imei))
22         elif isinstance(msg, WIFI_POSITIONING):
23             lat, lon = qry_cell(OCDB, msg.mcc, msg.gsm_cells)
24             result.append(LocEvt(devtime=msg.devtime, lon=lon,
25                 lat=lat, is_gps=False, imei=imei))
26     return reversed(result)