예제 #1
0
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))
예제 #2
0
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)
예제 #3
0
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")