X-Git-Url: http://average.org/gitweb/?a=blobdiff_plain;f=gps303%2Fbacklog.py;fp=gps303%2Fbacklog.py;h=39dfcbcfbb6b2d70ada9f0871e9ae83dbebea8fa;hb=96538346bd332d76d2cac5d6a0ef2b4e4a40de30;hp=0000000000000000000000000000000000000000;hpb=0c9ed98ee47630e854047f1e0fcf29326e137e36;p=loctrkd.git diff --git a/gps303/backlog.py b/gps303/backlog.py new file mode 100644 index 0000000..39dfcbc --- /dev/null +++ b/gps303/backlog.py @@ -0,0 +1,26 @@ +""" Get backlog from evstore """ + +from .opencellid import qry_cell +from .evstore import initdb, fetch +from .gps303proto import GPS_POSITIONING, WIFI_POSITIONING, parse_message +from .zmsg import LocEvt + +OCDB = None + +def blinit(evdb, ocdb): + global OCDB + OCDB = ocdb + initdb(evdb) + +def backlog(imei, backlog): + result = [] + for packet in fetch(imei, (GPS_POSITIONING.PROTO, WIFI_POSITIONING.PROTO), backlog): + msg = parse_message(packet) + if isinstance(msg, GPS_POSITIONING): + result.append(LocEvt(devtime=msg.devtime, lon=msg.longitude, + lat=msg.latitude, is_gps=True, imei=imei)) + elif isinstance(msg, WIFI_POSITIONING): + lat, lon = qry_cell(OCDB, msg.mcc, msg.gsm_cells) + result.append(LocEvt(devtime=msg.devtime, lon=lon, + lat=lat, is_gps=False, imei=imei)) + return reversed(result)