Esempio n. 1
0
class TestPedal(unittest.TestCase):
  
  def setUp(self):
    self.jungle = PandaJungle(JUNGLE_SERIAL)
    self.jungle.set_panda_power(True)
    self.jungle.set_ignition(False)

  def tearDown(self):
    self.jungle.close()

  def _flash_over_can(self, bus, fw_file):
    print(f"Flashing {fw_file}")
    while len(self.jungle.can_recv()) != 0:
      continue
    self.jungle.can_send(0x200, b"\xce\xfa\xad\xde\x1e\x0b\xb0\x0a", bus)

    time.sleep(0.1)
    with open(fw_file, "rb") as code:
      PandaJungle.flash_static(CanHandle(self.jungle, bus), code.read())

  def _listen_can_frames(self):
    self.jungle.can_clear(0xFFFF)
    msgs = 0
    for _ in range(10):
      incoming = self.jungle.can_recv()
      for message in incoming:
        address, _, _, bus = message
        if address == 0x201 and bus == PEDAL_BUS:
          msgs += 1
      time.sleep(0.1)
    return msgs

  def test_usb_fw(self):
    subprocess.check_output(f"cd {BASEDIR} && PEDAL=1 PEDAL_USB=1 scons", shell=True)
    self._flash_over_can(PEDAL_BUS, f"{BASEDIR}board/obj/pedal_usb.bin.signed")
    time.sleep(2)
    p = Panda(PEDAL_SERIAL)
    self.assertTrue(p.is_pedal())
    p.close()
    self.assertTrue(self._listen_can_frames() > 40)

  def test_nonusb_fw(self):
    subprocess.check_output(f"cd {BASEDIR} && PEDAL=1 scons", shell=True)
    self._flash_over_can(PEDAL_BUS, f"{BASEDIR}board/obj/pedal.bin.signed")
    time.sleep(2)
    self.assertTrue(PEDAL_SERIAL not in Panda.list())
    self.assertTrue(self._listen_can_frames() > 40)
Esempio n. 2
0
def panda_init(serial):
    p = Panda(serial=serial)
    assert p.recover(timeout=30)
    start_heartbeat_thread(p)
    for bus in range(3):
        p.set_can_speed_kbps(bus, 500)
        p.set_can_data_speed_kbps(bus, 2000)
    p.set_safety_mode(Panda.SAFETY_ALLOUTPUT)
    p.set_power_save(False)
    return p


if JUNGLE_SERIAL:
    panda_jungle = PandaJungle(JUNGLE_SERIAL)
    panda_jungle.set_panda_power(False)
    time.sleep(2)
    panda_jungle.set_panda_power(True)
    time.sleep(4)
    #panda_jungle.set_can_enable(0, False)
    #panda_jungle.set_can_enable(1, False)
    #panda_jungle.set_can_enable(2, False)

for serial in Panda.list():
    if serial not in H7_PANDAS_EXCLUDE:
        p = Panda(serial=serial)
        if p.get_type() in H7_HW_TYPES:
            _panda_serials.append(serial)
        p.close()

if len(_panda_serials) < 2: