1 """ Get backlog from evstore """
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
10 def blinit(evdb, ocdb):
15 def backlog(imei, backlog):
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)