def parser_test(fn, prefix): nav_frame_buffer = {} nav_frame_buffer[0] = {} for i in xrange(1, 33): nav_frame_buffer[0][i] = {} if not os.path.exists(prefix): print('Prefix invalid') sys.exit(-1) with open(fn, 'rb') as f: i = 0 saved_i = 0 msg = UBloxMessage() while True: n = msg.needed_bytes() b = f.read(n) if not b: break msg.add(b) if msg.valid(): i += 1 if msg.name() == 'NAV_PVT': sol = gen_solution(msg) sol.logMonoTime = int(realtime.sec_since_boot() * 1e9) with open(os.path.join(prefix, str(saved_i)), 'wb') as f1: f1.write(sol.to_bytes()) saved_i += 1 elif msg.name() == 'RXM_RAW': raw = gen_raw(msg) raw.logMonoTime = int(realtime.sec_since_boot() * 1e9) with open(os.path.join(prefix, str(saved_i)), 'wb') as f1: f1.write(raw.to_bytes()) saved_i += 1 elif msg.name() == 'RXM_SFRBX': nav = gen_nav_data(msg, nav_frame_buffer) if nav is not None: nav.logMonoTime = int(realtime.sec_since_boot() * 1e9) with open(os.path.join(prefix, str(saved_i)), 'wb') as f1: f1.write(nav.to_bytes()) saved_i += 1 msg = UBloxMessage() msg.debug_level = 0 print('Parsed {} msgs'.format(i)) print('Generated {} cereal events'.format(saved_i))
def main(gctx=None): poller = zmq.Poller() if not CarSettings().get_value("useTeslaGPS"): gpsLocationExternal = messaging.pub_sock( service_list['gpsLocationExternal'].port) ubloxGnss = messaging.pub_sock(service_list['ubloxGnss'].port) # ubloxRaw = messaging.sub_sock(service_list['ubloxRaw'].port, poller) # buffer with all the messages that still need to be input into the kalman while 1: polld = poller.poll(timeout=1000) for sock, mode in polld: if mode != zmq.POLLIN: continue logs = messaging.drain_sock(sock) for log in logs: buff = log.ubloxRaw ttime = log.logMonoTime msg = ublox.UBloxMessage() msg.add(buff) if msg.valid(): if msg.name() == 'NAV_PVT': sol = gen_solution(msg) if unlogger: sol.logMonoTime = ttime else: sol.logMonoTime = int( realtime.sec_since_boot() * 1e9) gpsLocationExternal.send(sol.to_bytes()) elif msg.name() == 'RXM_RAW': raw = gen_raw(msg) if unlogger: raw.logMonoTime = ttime else: raw.logMonoTime = int( realtime.sec_since_boot() * 1e9) ubloxGnss.send(raw.to_bytes()) else: print "INVALID MESSAGE" else: while True: time.sleep(1.1)
def main(): poller = zmq.Poller() gpsLocationExternal = messaging.pub_sock('gpsLocationExternal') ubloxGnss = messaging.pub_sock('ubloxGnss') # ubloxRaw = messaging.sub_sock('ubloxRaw', poller) # buffer with all the messages that still need to be input into the kalman while 1: polld = poller.poll(timeout=1000) for sock, mode in polld: if mode != zmq.POLLIN: continue logs = messaging.drain_sock(sock) for log in logs: buff = log.ubloxRaw time = log.logMonoTime msg = ublox.UBloxMessage() msg.add(buff) if msg.valid(): if msg.name() == 'NAV_PVT': sol = gen_solution(msg) if unlogger: sol.logMonoTime = time else: sol.logMonoTime = int(realtime.sec_since_boot() * 1e9) gpsLocationExternal.send(sol.to_bytes()) elif msg.name() == 'RXM_RAW': raw = gen_raw(msg) if unlogger: raw.logMonoTime = time else: raw.logMonoTime = int(realtime.sec_since_boot() * 1e9) ubloxGnss.send(raw.to_bytes()) else: print("INVALID MESSAGE")