Пример #1
0
def run_route(route):
    can = messaging.pub_sock(service_list['can'].port)

    CP = CarInterface.get_params(CAR.CIVIC, {})
    signals, checks = get_can_signals(CP)
    parser_old = CANParserOld(DBC[CP.carFingerprint]['pt'],
                              signals,
                              checks,
                              0,
                              timeout=-1,
                              tcp_addr="127.0.0.1")
    parser_new = CANParserNew(DBC[CP.carFingerprint]['pt'],
                              signals,
                              checks,
                              0,
                              timeout=-1,
                              tcp_addr="127.0.0.1")
    parser_string = CANParserNew(DBC[CP.carFingerprint]['pt'],
                                 signals,
                                 checks,
                                 0,
                                 timeout=-1)

    if dict_keys_differ(parser_old.vl, parser_new.vl):
        return False

    lr = LogReader(route + ".bz2")

    route_ok = True

    t = 0
    for msg in lr:
        if msg.which() == 'can':
            t += DT
            msg_bytes = msg.as_builder().to_bytes()
            can.send(msg_bytes)

            _, updated_old = parser_old.update(t, True)
            _, updated_new = parser_new.update(t, True)
            updated_string = parser_string.update_string(t, msg_bytes)

            if updated_old != updated_new:
                route_ok = False
                print(t, "Diff in seen")

            if updated_new != updated_string:
                route_ok = False
                print(t, "Diff in seen string")

            if dicts_vals_differ(parser_old.vl, parser_new.vl):
                print(t, "Diff in dict")
                route_ok = False

            if dicts_vals_differ(parser_new.vl, parser_string.vl):
                print(t, "Diff in dict string")
                route_ok = False

    return route_ok
Пример #2
0
    def test_subaru(self):
        # Subuaru is little endian
        CP = SubaruInterface.get_params(SUBARU_CAR.IMPREZA)

        signals = [
            ("Counter", "ES_LKAS", 0),
            ("LKAS_Output", "ES_LKAS", 0),
            ("LKAS_Request", "ES_LKAS", 0),
            ("SET_1", "ES_LKAS", 0),
        ]

        checks = []

        parser = CANParser(SUBARU_DBC[CP.carFingerprint]['pt'], signals,
                           checks, 0)
        packer = CANPacker(SUBARU_DBC[CP.carFingerprint]['pt'])

        idx = 0

        for steer in range(0, 255):
            for active in [1, 0]:
                values = {
                    "Counter": idx,
                    "LKAS_Output": steer,
                    "LKAS_Request": active,
                    "SET_1": 1
                }

                msgs = packer.make_can_msg("ES_LKAS", 0, values)
                bts = can_list_to_can_capnp([msgs])
                parser.update_string(bts)

                self.assertAlmostEqual(parser.vl["ES_LKAS"]["LKAS_Output"],
                                       steer)
                self.assertAlmostEqual(parser.vl["ES_LKAS"]["LKAS_Request"],
                                       active)
                self.assertAlmostEqual(parser.vl["ES_LKAS"]["SET_1"], 1)
                self.assertAlmostEqual(parser.vl["ES_LKAS"]["Counter"],
                                       idx % 16)

                idx += 1
Пример #3
0
    def test_civic(self):
        CP = HondaInterface.get_params(HONDA_CAR.CIVIC)

        signals = [
            ("STEER_TORQUE", "STEERING_CONTROL", 0),
            ("STEER_TORQUE_REQUEST", "STEERING_CONTROL", 0),
        ]
        checks = []

        parser = CANParser(HONDA_DBC[CP.carFingerprint]['pt'], signals, checks,
                           0)
        packer = CANPacker(HONDA_DBC[CP.carFingerprint]['pt'])

        idx = 0

        for steer in range(0, 255):
            for active in [1, 0]:
                values = {
                    "STEER_TORQUE": steer,
                    "STEER_TORQUE_REQUEST": active,
                }

                msgs = packer.make_can_msg("STEERING_CONTROL", 0, values, idx)
                bts = can_list_to_can_capnp([msgs])

                parser.update_string(bts)

                self.assertAlmostEqual(
                    parser.vl["STEERING_CONTROL"]["STEER_TORQUE"], steer)
                self.assertAlmostEqual(
                    parser.vl["STEERING_CONTROL"]["STEER_TORQUE_REQUEST"],
                    active)
                self.assertAlmostEqual(
                    parser.vl["STEERING_CONTROL"]["COUNTER"], idx % 4)

                idx += 1