示例#1
0
def test_elm_can_baud():
    s = elm_connect()
    serial = os.getenv("CANSIMSERIAL") if os.getenv("CANSIMSERIAL") else None
    sim = elm_car_simulator.ELMCarSimulator(serial, lin=False)
    sim.start()

    try:
        sync_reset(s)
        send_compare(s, b'ATE0\r', b'ATE0\rOK\r\r>')  # Echo OFF
        send_compare(s, b'ATS0\r', b'OK\r\r>')  # Spaces OFF
        send_compare(s, b'ATH1\r', b'OK\r\r>')  # Headers ON

        send_compare(s, b'ATSP6\r',
                     b"OK\r\r>")  # Set Proto ISO 15765-4 (CAN 11/500)
        send_compare(s, b'0100\r', b"7E8064100FFFFFFFE\r\r>")

        send_compare(s, b'ATSP8\r',
                     b"OK\r\r>")  # Set Proto ISO 15765-4 (CAN 11/250)
        send_compare(s, b'0100\r', b"CAN ERROR\r\r>")

        sim.change_can_baud(250)

        send_compare(s, b'ATSP6\r',
                     b"OK\r\r>")  # Set Proto ISO 15765-4 (CAN 11/500)
        send_compare(s, b'0100\r', b"CAN ERROR\r\r>")

        send_compare(s, b'ATSP8\r',
                     b"OK\r\r>")  # Set Proto ISO 15765-4 (CAN 11/250)
        send_compare(s, b'0100\r', b"7E8064100FFFFFFFE\r\r>")
    finally:
        sim.stop()
        sim.join()
        s.close()
示例#2
0
def test_elm_send_can_multiline_msg_throughput():
    s = elm_connect()
    serial = os.getenv("CANSIMSERIAL") if os.getenv("CANSIMSERIAL") else None
    sim = elm_car_simulator.ELMCarSimulator(serial, lin=False, silent=True)
    sim.start()

    try:
        sync_reset(s)
        send_compare(s, b'ATSP6\r', b"ATSP6\rOK\r\r>")  # Set Proto
        send_compare(s, b'ATE0\r', b'ATE0\rOK\r\r>')  # Echo OFF
        send_compare(s, b'ATS0\r', b'OK\r\r>')  # Spaces OFF
        send_compare(s, b'ATH1\r', b'OK\r\r>')  # Headers ON

        rows = 584
        send_compare(
            s,
            b'09ff\r',  # headers ON, Spaces OFF
            ("7E8" + "1" + hex((rows * 7) + 6)[2:].upper().zfill(3) +
             "49FF01" + "AA0000\r" + "".join(
                 ("7E82" + hex((num + 1) % 0x10)[2:].upper() +
                  ("AA" * 5) + hex(num + 1)[2:].upper().zfill(4) + "\r"
                  for num in range(rows))) + "\r>").encode(),
            timeout=10)
    finally:
        sim.stop()
        sim.join()
        s.close()
示例#3
0
def test_elm_interrupted_obd_cmd_resets_state():
    s = elm_connect()
    serial = os.getenv("CANSIMSERIAL") if os.getenv("CANSIMSERIAL") else None
    sim = elm_car_simulator.ELMCarSimulator(serial, lin=False, silent=True)
    sim.start()

    try:
        sync_reset(s)
        send_compare(s, b'ATE0\r', b'ATE0\rOK\r\r>')  # Echo OFF
        send_compare(s, b'ATS0\r', b'OK\r\r>')  # Spaces OFF
        s.send(b"09fd\r")
        ready = select.select([s], [], [], 4)
        assert ready[
            0], "Socket did not receive data within the timeout duration."
        s.send(b"ATI\r")

        assert b"236\r0:49FD01AAAAAA\r" in s.recv(10000)

        #Will likely have to be improved to scan for STOPPED if the FW gets more responsive.
        ready = select.select([s], [], [], 4)
        assert ready[
            0], "Socket did not receive data within the timeout duration."

        assert b"STOPPED" in s.recv(10000)

        sim.set_enable(False)
        send_compare(s, b'09fd\r', b"NO DATA\r\r>")
    finally:
        sim.stop()
        sim.join()
        s.close()
示例#4
0
def test_elm_can_check_mode_pid():
    """The ability to correctly filter out messages with the wrong PID is not
    implemented correctly in the reference device."""
    s = elm_connect()
    serial = os.getenv("CANSIMSERIAL") if os.getenv("CANSIMSERIAL") else None
    sim = elm_car_simulator.ELMCarSimulator(serial, lin=False)
    sim.start()

    try:
        sync_reset(s)
        send_compare(s, b'ATE0\r', b'ATE0\rOK\r\r>')  # Echo OFF
        send_compare(s, b'ATS0\r', b'OK\r\r>')  # Spaces OFF
        send_compare(s, b'ATH0\r', b'OK\r\r>')  # Headers OFF

        send_compare(s, b'ATSP6\r',
                     b"OK\r\r>")  # Set Proto ISO 15765-4 (CAN 11/500)
        sim.can_add_extra_noise(
            b'\x03\x41\x0E\xFA')  # Inject message into the stream
        send_compare(s, b'010D\r', b"410D53\r\r>")  # Check it was ignored.
        send_compare(s, b'0100\r',
                     b"4100FFFFFFFE\r\r>")  # Check it was ignored again.
    finally:
        sim.stop()
        sim.join()
        s.close()
示例#5
0
def test_elm_lin_keepalive():
    s = elm_connect()
    serial = os.getenv("CANSIMSERIAL") if os.getenv("CANSIMSERIAL") else None
    sim = elm_car_simulator.ELMCarSimulator(serial, can=False, silent=True)
    sim.start()

    try:
        sync_reset(s)
        send_compare(s, b'ATSP5\r', b"ATSP5\rOK\r\r>")  # Set Proto
        send_compare(s, b'ATE0\r', b'ATE0\rOK\r\r>')  # Echo OFF
        send_compare(s, b'ATS0\r', b'OK\r\r>')  # Spaces OFF
        send_compare(s, b'ATH0\r', b'OK\r\r>')  # Headers OFF

        send_compare(s, b'0100\r', b"BUS INIT: OK\r4100FFFFFFFE\r\r>")
        assert sim.lin_active
        time.sleep(6)
        assert sim.lin_active

        send_compare(s, b'ATPC\r', b"OK\r\r>")  # STOP KEEPALIVE
        assert sim.lin_active
        time.sleep(6)
        assert not sim.lin_active

    finally:
        sim.stop()
        sim.join()
        s.close()
示例#6
0
def test_elm_send_lin_multiline_msg_throughput():
    s = elm_connect()
    serial = os.getenv("CANSIMSERIAL") if os.getenv("CANSIMSERIAL") else None
    sim = elm_car_simulator.ELMCarSimulator(serial, can=False, silent=True)
    sim.start()

    try:
        sync_reset(s)
        send_compare(s, b'ATSP5\r', b"ATSP5\rOK\r\r>")  # Set Proto
        send_compare(s, b'ATE0\r', b'ATE0\rOK\r\r>')  # Echo OFF
        send_compare(s, b'ATS0\r', b'OK\r\r>')  # Spaces OFF
        send_compare(s, b'ATH0\r', b'OK\r\r>')  # Headers OFF

        send_compare(
            s,
            b'09fc\r',  # headers OFF, Spaces OFF
            b"BUS INIT: OK\r" + b''.join(
                (b'49FC' + hex(num + 1)[2:].upper().zfill(2) + b'AAAA' +
                 hex(num + 1)[2:].upper().zfill(4) + b'\r'
                 for num in range(80))) + b"\r>",
            timeout=10)
    finally:
        sim.stop()
        sim.join()
        s.close()
示例#7
0
def test_elm_send_lin_multiline_msg():
    s = elm_connect()
    serial = os.getenv("CANSIMSERIAL") if os.getenv("CANSIMSERIAL") else None
    sim = elm_car_simulator.ELMCarSimulator(serial, can=False)
    sim.start()

    try:
        sync_reset(s)
        send_compare(s, b'ATE0\r', b'ATE0\rOK\r\r>')  # Echo OFF
        send_compare(s, b'ATSP5\r', b"OK\r\r>")  # Set Proto

        send_compare(
            s,
            b'0902\r',  # headers OFF, Spaces ON
            b"BUS INIT: OK\r"
            b"49 02 01 00 00 00 31 \r"
            b"49 02 02 44 34 47 50 \r"
            b"49 02 03 30 30 52 35 \r"
            b"49 02 04 35 42 31 32 \r"
            b"49 02 05 33 34 35 36 \r\r>")

        send_compare(s, b'ATS0\r', b'OK\r\r>')  # Spaces OFF
        send_compare(
            s,
            b'0902\r',  # Headers OFF, Spaces OFF
            b"49020100000031\r"
            b"49020244344750\r"
            b"49020330305235\r"
            b"49020435423132\r"
            b"49020533343536\r\r>")

        send_compare(s, b'ATH1\r', b'OK\r\r>')  # Headers ON
        send_compare(
            s,
            b'0902\r',  # Headers ON, Spaces OFF
            b"87F1104902010000003105\r"
            b"87F11049020244344750E4\r"
            b"87F11049020330305235BD\r"
            b"87F11049020435423132B1\r"
            b"87F11049020533343536AA\r\r>")

        send_compare(s, b'ATS1\r', b'OK\r\r>')  # Spaces ON
        send_compare(
            s,
            b'0902\r',  # Headers ON, Spaces ON
            b"87 F1 10 49 02 01 00 00 00 31 05 \r"
            b"87 F1 10 49 02 02 44 34 47 50 E4 \r"
            b"87 F1 10 49 02 03 30 30 52 35 BD \r"
            b"87 F1 10 49 02 04 35 42 31 32 B1 \r"
            b"87 F1 10 49 02 05 33 34 35 36 AA \r\r>")
    finally:
        sim.stop()
        sim.join()
        s.close()
示例#8
0
def test_elm_protocol_autodetect_ISO15765():
    s = elm_connect()
    serial = os.getenv("CANSIMSERIAL") if os.getenv("CANSIMSERIAL") else None
    sim = elm_car_simulator.ELMCarSimulator(serial, lin=False, silent=True)
    sim.start()

    try:
        sync_reset(s)
        send_compare(s, b'ATE0\r', b'ATE0\rOK\r\r>')  # Echo OFF
        send_compare(s, b'ATH1\r', b'OK\r\r>')  # Headers ON
        send_compare(s, b'ATS0\r', b"OK\r\r>")

        sim.can_mode_11b()
        send_compare(s, b'ATSP0\r', b"OK\r\r>")
        send_compare(s,
                     b'010D\r',
                     b"SEARCHING...\r7E803410D53\r\r>",
                     timeout=10)
        send_compare(s, b'ATDPN\r', b"A6\r\r>")

        sim.can_mode_29b()
        send_compare(s, b'ATSP0\r', b"OK\r\r>")
        send_compare(s,
                     b'010D\r',
                     b"SEARCHING...\r18DAF11003410D53\r\r>",
                     timeout=10)
        send_compare(s, b'ATDPN\r', b"A7\r\r>")

        sim.change_can_baud(250)

        sim.can_mode_11b()
        send_compare(s, b'ATSP0\r', b"OK\r\r>")
        send_compare(s,
                     b'010D\r',
                     b"SEARCHING...\r7E803410D53\r\r>",
                     timeout=10)
        send_compare(s, b'ATDPN\r', b"A8\r\r>")

        sim.can_mode_29b()
        send_compare(s, b'ATSP0\r', b"OK\r\r>")
        send_compare(s,
                     b'010D\r',
                     b"SEARCHING...\r18DAF11003410D53\r\r>",
                     timeout=10)
        send_compare(s, b'ATDPN\r', b"A9\r\r>")
    finally:
        sim.stop()
        sim.join()
        s.close()
示例#9
0
def test_elm_send_can_multiline_msg():
    s = elm_connect()
    serial = os.getenv("CANSIMSERIAL") if os.getenv("CANSIMSERIAL") else None
    sim = elm_car_simulator.ELMCarSimulator(serial, lin=False)
    sim.start()

    try:
        sync_reset(s)
        send_compare(s, b'ATSP6\r', b"ATSP6\rOK\r\r>")  # Set Proto
        send_compare(s, b'ATE0\r', b'ATE0\rOK\r\r>')  # Echo OFF

        send_compare(
            s,
            b'0902\r',  # headers OFF, Spaces ON
            b"014 \r"
            b"0: 49 02 01 31 44 34 \r"
            b"1: 47 50 30 30 52 35 35 \r"
            b"2: 42 31 32 33 34 35 36 \r\r>")

        send_compare(s, b'ATS0\r', b'OK\r\r>')  # Spaces OFF
        send_compare(
            s,
            b'0902\r',  # Headers OFF, Spaces OFF
            b"014\r"
            b"0:490201314434\r"
            b"1:47503030523535\r"
            b"2:42313233343536\r\r>")

        send_compare(s, b'ATH1\r', b'OK\r\r>')  # Headers ON
        send_compare(
            s,
            b'0902\r',  # Headers ON, Spaces OFF
            b"7E81014490201314434\r"
            b"7E82147503030523535\r"
            b"7E82242313233343536\r\r>")

        send_compare(s, b'ATS1\r', b'OK\r\r>')  # Spaces ON
        send_compare(
            s,
            b'0902\r',  # Headers ON, Spaces ON
            b"7E8 10 14 49 02 01 31 44 34 \r"
            b"7E8 21 47 50 30 30 52 35 35 \r"
            b"7E8 22 42 31 32 33 34 35 36 \r\r>")
    finally:
        sim.stop()
        sim.join()
        s.close()
示例#10
0
def test_elm_protocol_autodetect_ISO14230_KWP_FAST():
    s = elm_connect()
    serial = os.getenv("CANSIMSERIAL") if os.getenv("CANSIMSERIAL") else None
    sim = elm_car_simulator.ELMCarSimulator(serial, can=False)  #, silent=True)
    sim.start()

    try:
        sync_reset(s)
        send_compare(s, b'ATE0\r', b'ATE0\rOK\r\r>')  # Echo OFF
        send_compare(s, b'ATH0\r', b'OK\r\r>')  # Headers ON
        send_compare(s, b'ATS0\r', b"OK\r\r>")

        send_compare(s, b'ATSP0\r', b"OK\r\r>")
        send_compare(s, b'010D\r', b"SEARCHING...\r410D53\r\r>", timeout=10)
        send_compare(s, b'ATDPN\r', b"A5\r\r>")
    finally:
        sim.stop()
        sim.join()
        s.close()
示例#11
0
def test_elm_send_can_multimsg():
    s = elm_connect()
    serial = os.getenv("CANSIMSERIAL") if os.getenv("CANSIMSERIAL") else None
    sim = elm_car_simulator.ELMCarSimulator(serial, lin=False)
    sim.start()

    try:
        sync_reset(s)
        send_compare(s, b'ATE0\r', b'ATE0\rOK\r\r>')  # Echo OFF
        send_compare(s, b'ATS1\r', b'OK\r\r>')  # Spaces OFF
        send_compare(s, b'ATH1\r', b'OK\r\r>')  # Headers ON

        send_compare(s, b'ATSP6\r',
                     b"OK\r\r>")  # Set Proto ISO 15765-4 (CAN 11/500)
        sim.can_add_extra_noise(b'\x03\x41\x0D\xFA',
                                addr=0x7E9)  # Inject message into the stream
        send_compare(s, b'010D\r', b"7E8 03 41 0D 53 \r"
                     b"7E9 03 41 0D FA \r\r>")  # Check it was ignored.
    finally:
        sim.stop()
        sim.join()
        s.close()
示例#12
0
def test_elm_basic_send_lin():
    s = elm_connect()
    serial = os.getenv("CANSIMSERIAL") if os.getenv("CANSIMSERIAL") else None
    sim = elm_car_simulator.ELMCarSimulator(serial,
                                            can=False)  # , silent=True)
    sim.start()

    try:
        sync_reset(s)
        send_compare(s, b'ATSP5\r', b"ATSP5\rOK\r\r>")  # Set Proto

        send_compare(s, b'ATE0\r', b'ATE0\rOK\r\r>')  # Echo OFF
        send_compare(s, b'0100\r', b"BUS INIT: OK\r41 00 FF FF FF FE \r\r>")
        send_compare(s, b'010D\r', b"41 0D 53 \r\r>")

        send_compare(s, b'ATS0\r', b'OK\r\r>')  # Spaces Off
        send_compare(s, b'0100\r', b"4100FFFFFFFE\r\r>")
        send_compare(s, b'010D\r', b"410D53\r\r>")

        send_compare(s, b'ATH1\r', b'OK\r\r>')  # Spaces Off Headers On
        send_compare(s, b'0100\r', b"86F1104100FFFFFFFEC3\r\r>")
        send_compare(s, b'010D\r', b"83F110410D5325\r\r>")

        send_compare(s, b'ATS1\r', b'OK\r\r>')  # Spaces On Headers On
        send_compare(s, b'0100\r', b"86 F1 10 41 00 FF FF FF FE C3 \r\r>")
        send_compare(s, b'010D\r', b"83 F1 10 41 0D 53 25 \r\r>")

        send_compare(s, b'1F00\r',
                     b"NO DATA\r\r>")  # Unhandled msg, no response.

        # Repeat last check to see if it still works after NO DATA was received
        send_compare(s, b'0100\r', b"86 F1 10 41 00 FF FF FF FE C3 \r\r>")
        send_compare(s, b'010D\r', b"83 F1 10 41 0D 53 25 \r\r>")
    finally:
        sim.stop()
        sim.join()
        s.close()