From 71528fd547336cadbf15130546400d4797014c35 Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Sun, 26 Apr 2026 14:38:27 -0500 Subject: [PATCH] ioniq tests --- cereal/libcereal.a | Bin 613232 -> 612544 bytes .../opendbc/car/hyundai/carcontroller.py | 4 +++ opendbc_repo/opendbc/car/hyundai/carstate.py | 8 +++-- .../opendbc/car/hyundai/hyundaicanfd.py | 28 ++++++++++++++++- .../opendbc/car/hyundai/tests/test_hyundai.py | 29 ++++++++++++++++++ .../opendbc/safety/modes/hyundai_canfd.h | 1 + .../safety/tests/test_hyundai_canfd.py | 2 +- panda/board/obj/body_h7.bin.signed | Bin 76636 -> 76652 bytes panda/board/obj/body_h7/bootstub.elf | Bin 112692 -> 112692 bytes panda/board/obj/body_h7/main.bin | Bin 76500 -> 76516 bytes panda/board/obj/body_h7/main.elf | Bin 368520 -> 368520 bytes panda/board/obj/bootstub.body_h7.bin | Bin 12644 -> 12644 bytes panda/board/obj/bootstub.panda.bin | Bin 11068 -> 11068 bytes panda/board/obj/bootstub.panda_h7.bin | Bin 18784 -> 18784 bytes panda/board/obj/bootstub.panda_h7_remote.bin | Bin 18784 -> 18784 bytes panda/board/obj/bootstub.panda_jungle_h7.bin | Bin 13956 -> 13956 bytes panda/board/obj/bootstub.panda_remote.bin | Bin 11068 -> 11068 bytes panda/board/obj/gitversion.h | 2 +- panda/board/obj/panda.bin.signed | Bin 68356 -> 68356 bytes panda/board/obj/panda/bootstub.elf | Bin 100760 -> 100760 bytes panda/board/obj/panda/main.bin | Bin 68220 -> 68220 bytes panda/board/obj/panda/main.elf | Bin 332444 -> 332444 bytes panda/board/obj/panda_h7.bin.signed | Bin 84572 -> 84588 bytes panda/board/obj/panda_h7/bootstub.elf | Bin 152728 -> 152728 bytes panda/board/obj/panda_h7/main.bin | Bin 84436 -> 84452 bytes panda/board/obj/panda_h7/main.elf | Bin 411912 -> 411912 bytes panda/board/obj/panda_h7_remote.bin.signed | Bin 84516 -> 84532 bytes panda/board/obj/panda_h7_remote/bootstub.elf | Bin 152736 -> 152736 bytes panda/board/obj/panda_h7_remote/main.bin | Bin 84380 -> 84396 bytes panda/board/obj/panda_h7_remote/main.elf | Bin 411836 -> 411836 bytes panda/board/obj/panda_jungle_h7.bin.signed | Bin 78492 -> 78508 bytes panda/board/obj/panda_jungle_h7/bootstub.elf | Bin 123936 -> 123936 bytes panda/board/obj/panda_jungle_h7/main.bin | Bin 78356 -> 78372 bytes panda/board/obj/panda_jungle_h7/main.elf | Bin 376648 -> 376648 bytes panda/board/obj/panda_remote.bin.signed | Bin 68312 -> 68312 bytes panda/board/obj/panda_remote/bootstub.elf | Bin 100768 -> 100768 bytes panda/board/obj/panda_remote/main.bin | Bin 68176 -> 68176 bytes panda/board/obj/panda_remote/main.elf | Bin 332484 -> 332484 bytes panda/board/obj/version | 2 +- selfdrive/controls/lib/latcontrol_torque.py | 14 ++++----- 40 files changed, 77 insertions(+), 13 deletions(-) diff --git a/cereal/libcereal.a b/cereal/libcereal.a index 46369db4d99eb412c20af1fe35129979eca9a4dd..324d968cac3649c6d840af442068b72693549141 100644 GIT binary patch delta 13988 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 diff --git a/opendbc_repo/opendbc/car/hyundai/carcontroller.py b/opendbc_repo/opendbc/car/hyundai/carcontroller.py index 73526bfaf7..3f7e435403 100644 --- a/opendbc_repo/opendbc/car/hyundai/carcontroller.py +++ b/opendbc_repo/opendbc/car/hyundai/carcontroller.py @@ -19,6 +19,7 @@ MAX_ANGLE = 85 MAX_ANGLE_FRAMES = 89 MAX_ANGLE_CONSECUTIVE_FRAMES = 2 CANFD_BLINDSPOT_STATUS_STALE_NS = 200_000_000 +IONIQ_6_LANE_CHANGE_UI_MIN_SPEED = 20 * CV.MPH_TO_MS def process_hud_alert(enabled, fingerprint, hud_control): @@ -223,6 +224,9 @@ class CarController(CarControllerBase): if self.frame % 5 == 0 and (not lka_steering or lka_steering_long): can_sends.append(hyundaicanfd.create_lfahda_cluster(self.packer, self.CAN, CC.enabled)) + if self.CP.carFingerprint == CAR.HYUNDAI_IONIQ_6 and self.long_active_ecu and CC.enabled and CS.out.vEgo >= IONIQ_6_LANE_CHANGE_UI_MIN_SPEED: + can_sends.append(hyundaicanfd.create_ioniq_6_lane_change_status(self.CAN, self.frame, CC.leftBlinker, CC.rightBlinker)) + # blinkers if lka_steering and self.CP.flags & HyundaiFlags.ENABLE_BLINKERS: can_sends.extend(hyundaicanfd.create_spas_messages(self.packer, self.CAN, CC.leftBlinker, CC.rightBlinker)) diff --git a/opendbc_repo/opendbc/car/hyundai/carstate.py b/opendbc_repo/opendbc/car/hyundai/carstate.py index 1e1d28b45d..faf563ff8b 100644 --- a/opendbc_repo/opendbc/car/hyundai/carstate.py +++ b/opendbc_repo/opendbc/car/hyundai/carstate.py @@ -307,8 +307,12 @@ class CarState(CarStateBase): cp.vl["BLINDSPOTS_FRONT_CORNER_2"]["SIDE_DETECT_STATE"]) if self.CP.enableBsm: if self.CP.carFingerprint == CAR.HYUNDAI_IONIQ_6: - ret.leftBlindspot = cp.vl["BLINDSPOTS_REAR_CORNERS"]["LEFT_MB"] != 0 or self.left_blindspot_from_radar - ret.rightBlindspot = cp.vl["BLINDSPOTS_REAR_CORNERS"]["MORE_LEFT_PROB"] != 0 or self.right_blindspot_from_radar + ret.leftBlindspot = (cp.vl["BLINDSPOTS_REAR_CORNERS"]["FL_INDICATOR"] != 0 or + cp.vl["BLINDSPOTS_REAR_CORNERS"]["FL_INDICATOR_ALT"] != 0 or + self.left_blindspot_from_radar) + ret.rightBlindspot = (cp.vl["BLINDSPOTS_REAR_CORNERS"]["FR_INDICATOR"] != 0 or + cp.vl["BLINDSPOTS_REAR_CORNERS"]["FR_INDICATOR_ALT"] != 0 or + self.right_blindspot_from_radar) else: ret.leftBlindspot = cp.vl["BLINDSPOTS_REAR_CORNERS"]["FL_INDICATOR"] != 0 ret.rightBlindspot = cp.vl["BLINDSPOTS_REAR_CORNERS"]["FR_INDICATOR"] != 0 diff --git a/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py b/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py index d78202f437..2bce97953a 100644 --- a/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py +++ b/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py @@ -1,6 +1,6 @@ import copy import numpy as np -from opendbc.car import CanBusBase +from opendbc.car import CanBusBase, CanData from opendbc.car.crc import CRC16_XMODEM from opendbc.car.hyundai.values import HyundaiFlags @@ -196,12 +196,38 @@ def create_lfahda_cluster(packer, CAN, enabled): return packer.make_can_msg("LFAHDA_CLUSTER", CAN.ECAN, values) +IONIQ_6_LANE_CHANGE_UI_ADDR = 0x120 +IONIQ_6_LANE_CHANGE_UI_TEMPLATE = bytearray.fromhex("0000000000000005ffd9671f46454645d90200000000000000000a0000002040") +IONIQ_6_LANE_CHANGE_UI_BASE = (0x45, 0xD9) +IONIQ_6_LANE_CHANGE_UI_RIGHT = (0x45, 0xDA) +IONIQ_6_LANE_CHANGE_UI_LEFT = (0x46, 0xDD) + + +def create_ioniq_6_lane_change_status(CAN, counter: int, left_blinker: bool, right_blinker: bool): + dat = bytearray(IONIQ_6_LANE_CHANGE_UI_TEMPLATE) + dat[2] = counter & 0xFF + + state = IONIQ_6_LANE_CHANGE_UI_BASE + if left_blinker: + state = IONIQ_6_LANE_CHANGE_UI_LEFT + elif right_blinker: + state = IONIQ_6_LANE_CHANGE_UI_RIGHT + + dat[15], dat[16] = state + dat[0:2] = hkg_can_fd_checksum(IONIQ_6_LANE_CHANGE_UI_ADDR, None, dat).to_bytes(2, "little") + return CanData(IONIQ_6_LANE_CHANGE_UI_ADDR, bytes(dat), CAN.ECAN) + + def create_blindspot_status_messages(packer, CAN, rear_values, front_corner_values, left_blindspot=False, right_blindspot=False): # Reuse the last known-good payload but regenerate the rolling counter/checksum. rear = {k: v for k, v in rear_values.items() if k not in ("CHECKSUM", "COUNTER")} front = {k: v for k, v in front_corner_values.items() if k not in ("CHECKSUM", "COUNTER")} rear["LEFT_MB"] = int(left_blindspot) rear["MORE_LEFT_PROB"] = int(right_blindspot) + rear["FL_INDICATOR"] = int(left_blindspot) + rear["FR_INDICATOR"] = int(right_blindspot) + rear["FL_INDICATOR_ALT"] = int(left_blindspot) + rear["FR_INDICATOR_ALT"] = int(right_blindspot) if "NEW_SIGNAL_3" not in front: front["NEW_SIGNAL_3"] = 1 diff --git a/opendbc_repo/opendbc/car/hyundai/tests/test_hyundai.py b/opendbc_repo/opendbc/car/hyundai/tests/test_hyundai.py index d2d222f7e3..f42be0d18f 100644 --- a/opendbc_repo/opendbc/car/hyundai/tests/test_hyundai.py +++ b/opendbc_repo/opendbc/car/hyundai/tests/test_hyundai.py @@ -277,8 +277,37 @@ class TestHyundaiFingerprint: assert parser.vl["BLINDSPOTS_FRONT_CORNER_1"]["COUNTER"] == 0 assert parser.vl["BLINDSPOTS_REAR_CORNERS"]["LEFT_MB"] == 1 assert parser.vl["BLINDSPOTS_REAR_CORNERS"]["MORE_LEFT_PROB"] == 0 + assert parser.vl["BLINDSPOTS_REAR_CORNERS"]["FL_INDICATOR"] == 1 + assert parser.vl["BLINDSPOTS_REAR_CORNERS"]["FR_INDICATOR"] == 0 + assert parser.vl["BLINDSPOTS_REAR_CORNERS"]["FL_INDICATOR_ALT"] == 1 + assert parser.vl["BLINDSPOTS_REAR_CORNERS"]["FR_INDICATOR_ALT"] == 0 assert parser.vl["BLINDSPOTS_FRONT_CORNER_1"]["NEW_SIGNAL_3"] == 1 + def test_ioniq_6_lane_change_ui_helper_regenerates_checksum_and_state(self): + CP = CarParams.new_message() + CP.carFingerprint = CAR.HYUNDAI_IONIQ_6 + CP.flags = int(HyundaiFlags.CANFD | HyundaiFlags.CANFD_LKA_STEERING) + + can_bus = CanBus(CP) + + base_msg = hyundaicanfd.create_ioniq_6_lane_change_status(can_bus, 0x12, left_blinker=False, right_blinker=False) + right_msg = hyundaicanfd.create_ioniq_6_lane_change_status(can_bus, 0x34, left_blinker=False, right_blinker=True) + left_msg = hyundaicanfd.create_ioniq_6_lane_change_status(can_bus, 0x56, left_blinker=True, right_blinker=False) + + assert base_msg[0] == 0x120 + assert base_msg[2] == can_bus.ECAN + assert base_msg[1][2] == 0x12 + assert right_msg[1][2] == 0x34 + assert left_msg[1][2] == 0x56 + + assert hyundaicanfd.hkg_can_fd_checksum(base_msg[0], None, bytearray(base_msg[1])) == int.from_bytes(base_msg[1][:2], "little") + assert hyundaicanfd.hkg_can_fd_checksum(right_msg[0], None, bytearray(right_msg[1])) == int.from_bytes(right_msg[1][:2], "little") + assert hyundaicanfd.hkg_can_fd_checksum(left_msg[0], None, bytearray(left_msg[1])) == int.from_bytes(left_msg[1][:2], "little") + + assert (base_msg[1][15], base_msg[1][16]) == hyundaicanfd.IONIQ_6_LANE_CHANGE_UI_BASE + assert (right_msg[1][15], right_msg[1][16]) == hyundaicanfd.IONIQ_6_LANE_CHANGE_UI_RIGHT + assert (left_msg[1][15], left_msg[1][16]) == hyundaicanfd.IONIQ_6_LANE_CHANGE_UI_LEFT + def test_ioniq_6_blindspot_radar_state_decode(self): assert decode_ioniq_6_blindspot_radar_state(0x02) == (False, False) assert decode_ioniq_6_blindspot_radar_state(0x0A) == (False, True) diff --git a/opendbc_repo/opendbc/safety/modes/hyundai_canfd.h b/opendbc_repo/opendbc/safety/modes/hyundai_canfd.h index ee50b824fd..08b8339dd4 100644 --- a/opendbc_repo/opendbc/safety/modes/hyundai_canfd.h +++ b/opendbc_repo/opendbc/safety/modes/hyundai_canfd.h @@ -289,6 +289,7 @@ static safety_config hyundai_canfd_init(uint16_t param) { HYUNDAI_CANFD_LFA_STEERING_COMMON_TX_MSGS(1) HYUNDAI_CANFD_SCC_CONTROL_COMMON_TX_MSGS(1, true) HYUNDAI_CANFD_BLINDSPOT_DASH_TX_MSGS(1) + {0x120, 1, 32, .check_relay = false}, // IONIQ_6 lane change UI {0x51, 0, 32, .check_relay = false}, // ADRV_0x51 {0x730, 1, 8, .check_relay = false}, // tester present for ADAS ECU disable {0x160, 1, 16, .check_relay = false}, // ADRV_0x160 diff --git a/opendbc_repo/opendbc/safety/tests/test_hyundai_canfd.py b/opendbc_repo/opendbc/safety/tests/test_hyundai_canfd.py index 9929bae0ad..d01d04679c 100755 --- a/opendbc_repo/opendbc/safety/tests/test_hyundai_canfd.py +++ b/opendbc_repo/opendbc/safety/tests/test_hyundai_canfd.py @@ -450,7 +450,7 @@ class TestHyundaiCanfdLKASteeringAltEV(TestHyundaiCanfdBase): class TestHyundaiCanfdLKASteeringLongEV(HyundaiLongitudinalBase, TestHyundaiCanfdLKASteeringEV): - TX_MSGS = [[0x50, 0], [0x1CF, 1], [0x2A4, 0], [0x51, 0], [0x730, 1], [0x12a, 1], [0x160, 1], + TX_MSGS = [[0x50, 0], [0x120, 1], [0x1CF, 1], [0x2A4, 0], [0x51, 0], [0x730, 1], [0x12a, 1], [0x160, 1], [0x1ba, 1], [0x1e0, 1], [0x1e5, 1], [0x1a0, 1], [0x1ea, 1], [0x200, 1], [0x345, 1], [0x1da, 1]] RELAY_MALFUNCTION_ADDRS = {0: (0x50, 0x2a4), 1: (0x1a0,)} # LKAS, CAM_0x2A4, SCC_CONTROL diff --git a/panda/board/obj/body_h7.bin.signed b/panda/board/obj/body_h7.bin.signed index f2a6d75f3072fa0b8eea0d44225764d68523cb43..14720ca7b05480aaca2a6dcc52eaed71363dd8ec 100644 GIT binary patch delta 1137 zcmZ9KUr5tY6vuz}w&}Gj9b4&|wXGa6Q<=5Y(XXe<2*t8gie?YxzXvIcpkmbs@*#TA zd6h}}7(I+i$P63Qx&2(lE*!q+eD3+(bI-ZI_tUcI zv=ho;qffLYyA&`rNh z=rUM4bL8BRE1cjy0P};n!6sRr$%g;p*=78T1-99+Tm#3bnPo>LA1P>BZOhtNFDB!A z1YK?qCQ*x^6Cn;UZ|zPQN@sJ8nk^g3;ggtFD4u!YpD6_YOVB@44=Mg3WjmfxhO*- zJ#$yND>Z-#eEetS)(g5M@WdyWBquN*FuuoEJg`;&-r?3Oe3R6c}1QL9CIo%ji|N5@oSY_X=cu&oEiDoDfn;qwo!4l9Irn z?Jni6=ny9SDfo(KTL&;nmC#={(vQi?1SV32hnF>Ywi47tE4=Uy5C5C*LFvXL{(p1G zDwi&F30SC*zKQ{wZ1^KH%&jHtfJ`UijKflWn*w6!b3mbe2 zPKdKWo1w54v<-9}Xb0@8K~11*LB9g$4P-)rJ$tM3EQQNK&9{>OgIaNAESHxk7X)rvP>Q2K#^=p#T5? delta 1127 zcmZ9KZAg<*6vv-?-RdzdwK*+Txx!`BSngnSiMk%NjPB0QPuot5~l!O^sfl1oa z8>v%KB5PK5ZE9If^Ml|b)EYu#6ulV^G}IFEL;vgJD!g#`-}AfY-gD2n*W*;UoC@M< zCH<6~Wv^-bYBDU9g{P8l(m?n&<#ZPneWm3(4N za#x5EMt+1%@eHtqfkKQAnEoXdkHW8p^}q&TOIXU)`;^49scY?&?2%e-_M;i6Zv9da zgH%+j+A`BYMQolOhI~Q005ij596FEHfblgxym4l!yEcwkC8H%wT4q^BJebAl3tOqE zkOPJD*@9Myx%m+l{pK-$smh{CuX*?{mt&tCy%UV@;v;yk%nV>uMuIs@W-|}|-MuM8 zW;N23<$&IUHhJ%0P8GDg8W$LuJ0T%Qj!uwD>r}*_U9a;YdIv+l<^mkSaw}?V=QT|<;e%u;$Y-l65c{-(({wt{*4 zuws{dp+YckWnN}r4b2+D9QP7PN#I;6F6;2cdBr2oIhCNu<3`cr`f^y+8ZR<#Bo;;GnJh#PO=M!==@umE+&vK8v{Z=49-~BK4?kGFc%0 gtDLEkyXhxeh4SKbd5JDVWpf@%4gHzzXeS|m0E9;#SpWb4 diff --git a/panda/board/obj/body_h7/bootstub.elf b/panda/board/obj/body_h7/bootstub.elf index 4efe241b97167960a47edf30a4bb099674128501..004514eeedf1f4a0019601b776c39cff40d2d824 100755 GIT binary patch delta 26 icmdn;fo;nNwheAJ>}E!(1}Wwy&Av9}iIHmPVEq&Av9RcY`>8sRvOd%H~RUc5n)J@iP3t>va z6H!XK#YZ~hCL6pfzlLn{Px)15_L?#~w|gAKBT79Zri=>!EfUUCc80HeN7C95-GTLr zo@4jTmVUTTU}4xG?7b-TwbNa^7RP_ZY;ij^J8+C$_)Aw#5DU+2>dKCdQ?^j8=>=ny zZTdCcKpYjLO{YvGORQga9L=l6Coz{+vHCW=S_c37e0a4Ps%exhioEVWq-ZT9L(Qjc z{B)V$sLQ5iX}%ONKjKcLkHeN=Utx#E+1_zVYQ$FG3?(f*{OALQal3!pL=1joz*?C; zOBp`iSq06Sz7L-9oU+s;76OxdawYOw`MZH~65&Nb7tammk{G;lZ^tBMCY7k&yR7ME z_^lI^9Y|tM-V?Oeg`Vxzie6IL0WkTMT((BV3^1yY7HCi`9V~J8$MuSZ_*U?$H-<4K z?hvTablJ@&7>S=?Tv6HQ_}xJ(af*k7Da89lPlm)3GRSS%+iZHze^)F+yKkikW=VK?1Z+VunXD^Jp}E; zz8&g=W zf6%%rdPv?QG&}@t2Q{ICNCzbk3(`Rh^3ZpjU5y=heCK`U&AfSUW_8K*eaSQ$ zX0%m)W8;VE57C}iMSqF;ybAN5DaI`#+i9a2ve-FbO0M|Gcpc0#&3K7ea}8MP;oXGY zm)*x7nA18ieFE!&b;2fOL17Eq#fwqAAt#Gkm^l&0Sfr~u4P_=uR+`|z@%jD*xaYpMz=;>E9f92xcX&=GTmybRcQFN*rd) zeWQ#g#<3*P9kAB;U+v`zU(wOkU}~2d>6bM#z?eqFSF73f%e}h~UewGlHUl?Y5wt0G z2VWI&sA`tMX!Hc{H6860_j;`~Nj~mPpsuh)zoG%*blnR7JM=h?q3k|u`SLj9>M7KS zMOVLNJV~Qn793;zKpZnfTE9x`>_5S&Pt*+I9YX*0_kzB05G>Y*ob&oZ&0w+0V$6{J zLpCbI!(MtfHJVCEKEAlBc>RO!-3zFC>zPS?MicyW_+Ox^lsu>^cJ;k}twCrCd;(RC zsf1dg>fB7I3GvC$25=j+Z<1Zw`6Oqta2Q|?3##@G_&LyeB(_6ap@*PtSkHz!pc&Ag r;Av2f1eIrM3p|bP>z*P{say_vowQ517c%LXbT4!|X}+A@I&$hCCFa~g diff --git a/panda/board/obj/body_h7/main.elf b/panda/board/obj/body_h7/main.elf index ee58fd9c17e96ca4bd13cadea8567a477321f58a..ba6b5d473726c4ffff10e19f0318466baa9e87c0 100755 GIT binary patch delta 3021 zcmZ8je^6A{6@KSFo<3o>yUT8N7g*S(4N{{7kl$u4h$y27fdaZHj9c1)Df zj6#y8)Rk?#nyR3&iAEM7t3EIwI@+|;k_pMEu@f~hBo2SrYNn=frgZFgci$!*cjoSS z-*?Zw_x!l;ocHpW{pB&ce?zi=Op?Sc>hL_$u8Kgr|Y`=Xn^7(6mJp8TQrC{q&x33*AB7Rt+eBgR+@qDheFnOYwBvgnOjtw8M<-J!h;UR5mn z@%Sc25Tgg72eVQx*Q(MOq(kue1vfuBPF!#=t)Kup|6i=jG6+$xBiA;Jb(O~81e?T z1g#4V!%W5E@NeEG$uk2_-glTf^D(XuoR|~8s9tm6Vz7Wl0@?lUfV1C8(|9VFvwe`M zF%d;+_ZrC~Qqw%Z)VRkuS72|ywWjaXcV~?^M6?^hg%gSuHeZDEf@As)jVmLZ0bJDf zV|5X(FYtB$&*n@cOi>#eDgNu3=<-DOI!$~yD1Mh@`p3s?di)n{NKU9dqk%;dP-;G3Z z2vS6D0@)Y4Z3VVLUWXJ;>|;G_GT$7H=2ZZ_V@B7NzJq= zvXf6g%f2!_ga_6C201H8ihP|;u~t%^R!>PRl_o5+R6>}%uPN%ubx#=owlu> z{gF%}sMU!Dl4KGqZ9H=o`pu z%I7mSF?V9PSQ!%cF!f?7NkrAG75_CjLo43Ics!Z4kGHa21{&vUI+!c{X>t^87Vh0R z!Bpp#Ws;PXM~10b`{hdzMHIwdYZNFnvGEHl1yO~Y4dht%izO)q4&3AnCg79a%w)-`fCfmdt9NYDC zWWnHYzbIx5{o3e$R>r7VV}D>*iTbqb2iZ=>45#?&9`=yDT5T`8Nd=+^#vXW1lH#v9 zVqX& z+GMLJ&#?vH$Gd!6H+F>g1X(`3xfW!vm==iY@7#u$(dZ@JXi@x~_3@wL}mPAg96F-!#a-Vl>s+ zD4%VN8NV9ug~M5>iX_RB4~@n!%x`5YDXAi5tvdfYc#$uJH>`ISxS1!xQpKuw76{1Eq{QL-^h(QikrMV143NZsvISS`gn_Ar+JqU zcX<%PvH~|OYNgv0-Z4j6w?nko&-8;rphe34I(`qhd5EdKI=%xe62DW&)4-y+UeIx} zS(3#4>eX>BuowCRI<5v5x6H5OpPD7@-CV_j*N(rR4;w|hU9V4;qw|gM{|Z`k*AkuX z1r2u#l$>O9xU5lkpvC*KUdNvR_iCdB%H~-# z#WNNu>!^))EmC^WAu>u4xI(S66eLP`a51Ex8_SR&KVMj;6k9|k_h2UrcJ5C@&F5WZ z$__fM8J8%PM*9hyr^=SvWHsvO(CxEmgOL?^Fzy(Pid>xULlT|;5S!* z9pc7HY*fv=DuHsf(MrV~WAWpTMUU&wL66Y>QKM`o8sKYdVd?|kF2sH9P_5D<(?f0H zDlDe`yu}AwClCekT_9{#pFvyKMt#sm)NeMx-8$aBT6si1t$mI1QV9)d%0Xq9{6G8h Bx}yL9 delta 3015 zcmZ8jeNa@_6@TYGo-VMsEW7TmAnwu%NL-2tiYN-=`iW4eK|t3^TKvdVMs3YZ5{Ge( zLTFP8x)X0rP*G`v35$}oUNN9pZR)gSqV*$og2p7q@&_%=bZng|o%VNk->_3dW_eC2j;(_ znVa!?2;&GwE5`X?X3=i;l)kCcW5K@S-As$cHqpWSrMJIB@qW{;#>u1aF~e1l;&Q*s z45Rsw!2Q8fyB0)|68!4rr1a!PSTgQZ=G`9*+)u;%*u}v8wUCO!41>Ysj(=13&29;m zS<1-Q&d2fujEV8eEEQbFC1%(T{5HmKF>YW?3a&iy9-{@p$DM*vl|S }$dKy8abK zZvW1JW#RaFX29ameCg9EeJ~n-ZYX>Li1VuiIj%(=laeFyK_FgM=w zjqRP!hq-qDB@9S>FmP`;cRt6nt&BZ85j?w1yb&7hm3-L9Aq8%B*>0FRvEe^D=?7) z;wmPj@6EtdA!~846VeB1gWQk#DUdG6$&e4gn;{K2z_WC1X8z{v7xHK4&kGLsr&;{* z6dz>Qn-ZwafBXwOoeduUqBWIfh-?Ej{N6l?rl|3xXi)sRm@SVpNe^uw&V?meR!ueV z@$a&)O(XE4{GTAB1Ei_f_;@+nLS4MBg1th`;(i6oRB0GA$SP4CKTwU+JiND>IjD&Lp_+9sm%+5X3YGcipdxc;YXY+00+Io?^}q$k zbf7_r4gpQc0P2wFC^Qp~0QvYp4J)*qg}t?M;!&oeOr064sa|1P$3BatMSN@%vr!tK zu$eg%LuJaC*vbr-i%B6WXFKp)fipzmX2ugp5ud!w_8F<4uWw{i(=*AQzg@aFe2N(y zJ69@7QZCucLX<3w=|A4IOGzr>M;loRmGQww=1N~nwlyIISv?)g^RZ@Kgvy-?Z&kH2w5=N zoqOfXct8yNl6e?;1$&#_CTbUV+nJBC@gBbJ7<)o)v8IFFqdZyuVh+EkC<%A$F>lDF zvPj14D+lwb9yTKiYE1nmFc0j`kd9YuIl+!jv=~u-W1_x?Yt><&RVY^%2*N!)m_&3Y(X1L^*X_K&*{xn4WD}VI4UhP&G_< z#m&FG!b+^N!a6?5!puHq|9e1g;}ykM*_hEPyO!e#N=xi=(!F$xr8n5Ad|JTAVpJzp z2~(^ZYou77WLMKDS`^#WpA&n0kzaSH7wIN%oudBPAzP+0fgNOq_^G5^W}&OAsgt-b zF|_ENL^Ys7xpJCXL}TL6G<9rFviwV+B)XnshJqwgjA?k0t8wWy^)+$gd8pE4{$-_l zi7Yt`pcTbW?!r!H?A()ze#=`t+8*i@ zaZ9yALP;%MrhUw42TxuZT2#7HYo%I#Pl~I&eig`T{KzWpGukQ|O5`zv{N8G?T|BN7 z8x`@EQlRN#pj2~4nSHopk>d{Lp!bQtR%qLaI{1b)F!dpCkm7+jvPL_m(ui1Cg~im& x>#JewAfh1u8%SFX3((rdKsB@x^?NmN*TWmuY5%1aqG7%EdJ%OAtzFxv{twH*xg-Dp diff --git a/panda/board/obj/bootstub.body_h7.bin b/panda/board/obj/bootstub.body_h7.bin index 780a23f3f4206157f1fd5a57220df0146863c93e..45b1cab77c81a927941f988d62bdb63a7ecde1dd 100755 GIT binary patch delta 20 bcmaEo^dxD6n-05~QK~_Txyfc<9dT9wS0o0? delta 20 bcmaEo^dxD6n+|)LVWOpxrNw4n9dT9wSQrM< diff --git a/panda/board/obj/bootstub.panda.bin b/panda/board/obj/bootstub.panda.bin index 2489b6456b0e9fa4d10e7d1a2e4b5ad50e7edbe3..3a4ab4f0a0036a03de0676034f67f27dd1c2e434 100755 GIT binary patch delta 33 pcmdlJwkK?ZpPGP~QK~_Txrwfet5c{uLj%L)iK+^l>(utK006!a3cCOR delta 33 pcmdlJwkK?ZpPE3LVWOpxrG>7Gt5c{uLj%L)iK+^l>(utK006&i3c~;Z diff --git a/panda/board/obj/bootstub.panda_h7.bin b/panda/board/obj/bootstub.panda_h7.bin index 0405b300abcb2298863f230ac29c9b55be131db3..8cb038c5b6fbb32936ed260dd34b4cc1b30e6b9a 100755 GIT binary patch delta 22 ecmaDbiSfZC#tmK0>}E!(1}Wwyn}iIHmPVEqn}E!(1}Wwyn}iIHmPVEqn(utK006!a3cCOR delta 33 pcmdlJwkK?ZpPE3LVWOpxrG>7Gt5c{uLj%L)iK+^l>(utK006&i3c~;Z diff --git a/panda/board/obj/gitversion.h b/panda/board/obj/gitversion.h index 520b3107f2..a4c4b2f697 100644 --- a/panda/board/obj/gitversion.h +++ b/panda/board/obj/gitversion.h @@ -1,2 +1,2 @@ extern const uint8_t gitversion[19]; -const uint8_t gitversion[19] = "DEV-9f1a9298-DEBUG"; +const uint8_t gitversion[19] = "DEV-962e0d74-DEBUG"; diff --git a/panda/board/obj/panda.bin.signed b/panda/board/obj/panda.bin.signed index 53832ed9ebb84505143fc66624c6c9febd1e7a49..666e45822d146e7c812c5fc0c6d6761d791ddab0 100644 GIT binary patch delta 152 zcmV;J0B8S%mIQ>B1hCPY2R1TgFl0A0v)G%gZhxORcT-6v{(M}KakY%JzpB8cxev31 z;AH4KPi_8JDHTzF3oj37hFu(7EeGe6qhF@MGcV_Q#|CjNY9_jIM^P?Bi8FZ-F3R&3 z)qgIyNZcG^Ghrk24nRqU4WB5P?m--952{hM@i9$0A)=yRwnK__u9vv1a^N4Oq?G}O GgaJAkenOrA delta 152 zcmV;J0B8S%mIQ>B1hCPY2WBy0IWjpov)G%gZhs!AsjtXc2L;aY`|W7xfXfP2ld3(; zEv~+a?akyMy$@S@f3Q>v+lzvQmN?oCK&l42pCeE-_MdY-nfl-7uEX~%!RdRX4II`) zN|u4$1l0OTxWx;G{N`#*+F*ob){q#UR-mSOU;+y5o!06f4r(Ncn<4pv2xW+^HhlGF GPyzbtSWN@~ diff --git a/panda/board/obj/panda/bootstub.elf b/panda/board/obj/panda/bootstub.elf index a4b70f8ac23958b17b54ac897eec6797e143faa3..d1860cb0a5c55be994268a3c71c15db08d876b55 100755 GIT binary patch delta 39 vcmbO+nQg{owhew}0%k_31}Wwyx-PCxq3#R~43j6CDm2%bZLc$9lnMp_`LPTT delta 39 vcmbO+nQg{owhew}0%?YcmPVEqx-PCxq3#R~43j6CDm2%bZLc$9lnMp_`z;I@ diff --git a/panda/board/obj/panda/main.bin b/panda/board/obj/panda/main.bin index c9952de202a3e18f44b62d7c5d60587d22cccade..b4c22183ca1c0f07f00bc5674393efca2162a8ce 100755 GIT binary patch delta 22 ecmew}h2_r_mJJtYvzr;E8l;$;Y`!sjNge=tH40Dw delta 22 ecmew}h2_r_mJJtYv!@v*S{hkeY`!sjNge=uDGFEs diff --git a/panda/board/obj/panda/main.elf b/panda/board/obj/panda/main.elf index cb53d9574f69f0d64c041ea0f1fd29648e97c279..4b79a41b4bba7e90c07d18f0e86b10c5dde29da4 100755 GIT binary patch delta 38 scmbQURAkOlkqsADvzr;E8l;$;G~Za=eq%Kw5HkTW^Y$C7S&pOu09COPJOBUy delta 38 scmbQURAkOlkqsADv!@v*S{hkeG~Za=eq%Kw5HkTW^Y$C7S&pOu09PdvL;wH) diff --git a/panda/board/obj/panda_h7.bin.signed b/panda/board/obj/panda_h7.bin.signed index e2f6c71dd0205f6040db6728fd0fd88f41dd08cc..20b43b004c876581091a0d20501a7447c5a13a77 100644 GIT binary patch delta 1271 zcmZXTe@xV69LJyMxgUHlJc1oc3VPqe1zbWM%0wG5-9es;K`II+HA<ljyY$` zG|}7x^IR@-*V?gU6CW6dC&U&MKcpZb$doz%sH@TV5jgA@y`R2!*w(XszOT>o{(PPv zpU-o5tHv-^W1wRVw3pG7qK^fZ(;9v}X*2cmp(LlVafB(6H~F&UC3HZnP4?=|b5Jbb zOO+|V@t;?CO$nIUVL75UHC}JXgNT8O_)~@}}rBlSFlh*2-0SrtcC{RpoJpomgEVN^3Vn8Qy^#5Ov;6y=@NepH{MFw7q`x zC-~!S^`mh=Foh7NbaXLggj3%ii4G{2HWGCMc*jZ9=fJ`$qRt|t7CvsctnMC7SG(m( z;vm6EYw|6vI}y>up@a4;<`L`jFY(L)a9j%Q5&eQB9!hKUzmQQH{{t zJl$_u82p+kawbPO;^QU$OghWY;Jb!*dCkM0X|dSdh_Fy(dWV+nf)>7SR#9jNUfuE{&Yr}Y6f~2D)(n3tO;wy zBJHY<(nolDz>*#OmMOAuInKvw1^Wh>@{lIYYbns=Q^^s|^Y9}9i+#5L|Jm*v4;m28 zE*7nUW2S6h4^#BoKBS|NsIq<+wE5nKv{_UW?pNc}+Qt0*NT-FmMQvw1HL0jomaB@o zFP-#oOlVJugZQ(_PzETwI6bU&VZnFW*^QXTLXSmU7PTL9*#rkD-)#bU4}MxEJO>CN)x!0Z+cyw?7{ruN#XWxD$ znnW7?-3Q)0HTThN>ZN7A)bSH-{kcnXfAP#jmTfTw-_6hOEc89rF<^fq=SuIXZ9Q!( z?-pEn>&L41uMKSSKJJN#8vi)({0muspF4TpUD?Ykdbwl6^DamJHT@kX`8qjXJw3CTg}@1qYHmP zp-~%i?2+vfGaamf%90)#hu0}87x=3=fjA7Bvf1rsosy@J8bLOKHt~pd4E37 zkI(1X_qY9qiTwsT(M>Ngx!Rld0 zh2LJw7Ue)h{!y$it7S0@n9h%ji;iq#Ov?59{;ikN7|jv!FQ?`j60_Uq!aUz?r+U84 z{d|0AkSXt$64kSYsH*V0SL@lGL2+wmO|oGfRy&2WWnF?{JKSTUv#mg%H3RovCb3QR zcTJ7KpE=z%W&D9DgfQjg5L1RY?U>J2p&VaN)B-SMCu#+_VJA_;$k+oPH(b_vms%4q z$d$xG!n2vl6IyqSiNvCVR*rcya{aJr*ln0alpgD4)F~Fa0JrEl(aQ`+kT}TS6Xkdb zzt~5!{(xYeWQqf}5hi;c^cu*c-8k)c651->>1kzou2DP*PM2fEMbuc(_8)DahNv;n zT-@q4Ee(Fh6giV48u9Q~yahDOoAF)AFW}q3X`iXsbD1d*YpEooil_$o4rr2cRKKce z!AndrYSNHQ`$PT=z?@gRNi!~`|CXK8aacc4RuRK^2 z)f{5gDIKK>xB5)Q!D~#Bh0AepiB_;@geebc(xR3EO+J+z(Y!`p?=$6vul_&VHT<9f z(QJqC`#z2>_FQC&UfYKZY#^$v-v({5w-GIjYNGu*S)pC5gVzU4)FoO1=~VQ8TSRv! zMs|{@#xEx8e+-npn;z3@zlS%KC$?k01k@ugOL-l0S-J|!*9v{llt;iKFafLsO`zO2 z8C;9Jcy{VjjcZ+(cO3D}oqqDBbLQvI%g*Fi)|@{uIp6fxw(!d7P+h_HbF;rT zd~vh?pS{cD{yrYq+IeV;`_q&Y7Mrnk;ja0N{?PF4@@F!xzkRm0;wbyj+`MMw{7}E!(1}Wwy%@c#$Ck8WapBT)<&Ikap$O>%$ delta 30 mcmbQSl5@sN&JA6`>}iIHmPVEq%@c#$Ck8WapBT)<&Ikaq{0emd diff --git a/panda/board/obj/panda_h7/main.bin b/panda/board/obj/panda_h7/main.bin index 9d290ad2682be67223384d465689b9e592799c10..dc78c5665d145921ddfe3f412860e6070f480be9 100755 GIT binary patch delta 1138 zcmZXTZAg<*6vywq+cTeKD`l3Y)*cO4!v0X{dy7hIM=QTK~%8xg!w@g1|>WMO~-?JQ0?rbL7Ch(1uXa~T`CZa`<;f9YJE^Yfp3$;PHk~m0s#%6z|cPAl~;^M_2Oqc&?34!dYICQz;k|5Y{5$e#U+|aUNdz)tQK|7Xv4%Jgh#y+Ac@N1z-%2BsR*TRpOnxIQ@&BJ%}T60~9uxMnq zM$ayX7Q1grb#w>b+It9R&tOdsnn|N;Li_dj`H{bCVp^>z=rd5dh!+N|rQxScm4(Z3 zJw-3r7h>uhU5aZt(BxCe5zF)N=72RfGWvhEYwT|WV%fDK7&vDx^$juAsP9AiD~TrS zFNYTIZB&b(npnTOw(A%3^XB_j>Jskz>C~*DR#~nl+8#LRndIo65~uNJlcANM?BeWm zy$f@n>1TIgo&r4uaaq&}%w-cCpnSJ!nptoly@ zR}sjBkOayOhQJK)4t`cPa2Q+&j$+|r@EEuN%m-xwRXAWnSxv#}Rm%@M>WWs1djpF^%F8}}l delta 1128 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 delta 3445 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 bSh~uryP-J=0pIW+?V~#=(R_At!b;o8+ z@CH*u{P*0h_+Jr4VJmKkV-MYHRuYg&7v1@$1Zoq(l8A}A#9MB=DRmnXb+BEqD%b&W zsjP+lhd)@vL9yxa7N(3KjEI5qtd+{lf*XC(%IM!Baa(4NlKQ}zJ2O1Dxs0lOPqQac z?_+AiMxu3YAljU`)LdYuS4FfnFI}JCVqqx!qhkWnR=2Be0ZXqOu zlXCX*XPQTO|dy7~1UOKHjoQ_*i>U3s2pE8w|@ zaE=(}2a`Fumg*X~LwC_Ie@D0TCOw0ZAzrQD&;5FabN@A_nvH5=t09^Kzu_uVSH&=m zM|Df7e{i{BeYH_t2PSvPb#8~j++fT=WVX^^DclpZP(R-u-036(%Ux%^M3Y0z;F9U$ zp5asSxWX8QX+xIMnF!t?CR2BvsR=PG{0&p% zW0;#ahGg6J&>L~98@^gT>y--QtSQ{lYjK7##nR+~t;T`&|8KG-<`%WRRvM>aIys;w z8ow-~`%)L1N-4p=OQz<(H}35sR6h1F9$mi9Uc_n8ai|<>Jyec8_nq-lIy4z^8dP4< z4yXkxznc!tKz$;#3ET<|jIiwszmggx8~~$8$Xhsp*am$WjqT75=o)Az@|n;==xXRJ zxE#QS29Is5TwDC`y65uiU4`OMf9Doj(&Jb|+Y0uj9~^Yvwa%Za{3S|m`xMU~r;opu z7ysx>Q|CSZoUN7JNC%aQ&nr*FTY;0_2#Sf-3Jn$ z)qL-o(hgM(m7D*x6(98OS>;haDx4T9Kb={A&nue?2F5<^$h$o4ZQJsjYv&g=yOUjq M^|yol;~wh$7gnuby8r+H delta 1262 zcmZ9Le@xV69LJyMx%*w9xv88Dk|Z zT{_ynYHXF=y4#|0%&P}FZl^9g&Oj6uA+Jn2T5Q+)A-93nbk_Uf%gM&GeZKF{^Ljqd z^Z9(9=dS0F;yI*H&sTJa(M{qU3ue-->i+C<`kXqJ?Nk~fjEB_wax&-xcL`}QErlf*mPjVpBb+PYlC@VLD)Z6L~7SJjAn^&x1Z5s(d_dx)) zbu3^mFu5j2BCb}o_N}KrwHn_ke9fw_@1ESobByb?K(b;du_*9s&oX}Z0%lO-ea1r9 z(0s1C9a?k+nA|0Y_gRhEz?g=}bd|=4S{yJ^ms%NkId=+onaDa_PAsziC>WjFGg_nV zDN-k}#~@|`I+}aoJmaZz0iP_@ns<#bzGwkMqd{X~^b+Ipz2rzlS6pN~SwnZ2?*ikC z7ciT;D=5>p1>aw^toF=&t^E~Rtwgnkjk&(T`ObTu&}U@SIs3ENiUljc02XBL2QXg&twUlnv=wTC?!$UI^g-w{=x^Xlpvg$E zsif**d;OXh?Q88DM8`nKHk#*OW1@TWTOPf6t^FiFm3iQq=SNzL{byq`DD?8ra< z%Jj&@+s|LV{zj{#cjY68M}1RFfAp#B)kQq5==G02Fzwyk`rWX;jCGxE`P4pAH8Od7 z-PkGB(eHdO^!V3*95V%WJK|^F4GkVC?YUvSS~*<*QpDrvDJ^|$XSMriL-nz2*Zm%M H9sTux9j;>+ diff --git a/panda/board/obj/panda_h7_remote/bootstub.elf b/panda/board/obj/panda_h7_remote/bootstub.elf index d852ade783c41f5b293d7aafa34b2e4deae17626..d0461d5a5681ee77d54a7aaae913d3d17767fdbc 100755 GIT binary patch delta 30 mcmZ3ml5@dI&JA6`>}E!(1}Wwy%@c#$Ck8WapBT)<&j}iIHmPVEq%@c#$Ck8WapBT)<&jy>3C%OW z=uY{J`BG_xIG0vR4~wBRx7IMsct9*oPo`I8UV5uFvKQckg6|mjiEk@g!@nR3!WO)f zS5_^tY7xjJ$j%H)1Wl3Nf`EnQ$O|sJC3XiARj`Awy|9z=fxDjl!`ElASC(w3XW9_L zfb8Ftx=@>#af92E8T}(8cO<22vCD7$oDeJP+?0zWbw!azFXJ`EL~qU~`jmW7mt~~` zGT68#L9@SSJX@}4+8Cv6hI>lZw&qwJy>O@PBzM%`K6(%SkB9A}pP+;=e!h?Ko1*{r zZ^sl!TM5ylKQKP#CVCpQtdZz`R8+zb$niVBXy#XhgpdsKHE92#Fpj%0hGba4Qb!m+ z1l9!WhCPMx5gB#&KBL*Pr@f2O?XuC+#k4w9-Vk}R6wh#4UZjpbfUu8@>o6xweRkN; z$hZgXzLT+hncaDfQI~ktWh;ysVjTTu)}sSNUjWbb9OnpO9x#dM(sB_JZ-K z*@Bih^9DSxafKla)B0?M69K$KNT%u);}Idu|B~_W5atrKKGpWL?@ZX@nkVyTeN<+i zHAXmkY)(I>n47#~t9hUk|4lZ>T(Yt!nTF|@P7SEb+Q)8sJa)FJk^=m@RBHOId2iiN z_1J@WboDw7h~uCmP&HI8RE<6L#(XIQ8jUy(s;+1c)CN`GO@Jn%J`#EiJQ>6zn{TbCcYvtL# O<}I|K%MnlOv;G3V6C@S@ delta 1129 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 qnUrI0wA3DNWc=QOKoSNv+nY1hr$W<$BgmdURJQ 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 diff --git a/panda/board/obj/panda_jungle_h7.bin.signed b/panda/board/obj/panda_jungle_h7.bin.signed index f0450fbd0a7396e6a7c7cfb81af8beb818297867..613f044eedcd4ba9096371c7f8aca406933f4137 100644 GIT binary patch delta 1370 zcmZWoe@s(X6u$TJIvx&$rY)$D^_8%=DrChdKQDVFZHKM^J3u}QLgIyN1rH|1x z(SP_1qq)4Ubr|pDJn|Q{Z#~P@&tRRfUYL9m*Dj)M+r!jzh~>#MIIdA_IeL^?TtiI7 zDf270nrKPz%$)j7c2^%$6JwdI9YlK!eh)Z_a>Y3xclrzI2=DY;d9!~RQ~G$9zreY# z7t`vM#OEcN0lx1fQy+hX%K;~Iat*$&*Y$8)z~rpzSBYqTs?M3g#Ybq~ z7Vq$Opwg*)vv>!$n`m;Jo0y%(I^@2gS8v5#;~nB$jxe?-Q0G*bsY_$!t>%~t-!fI| zBv+jCox-=SQw!Wp?g?Uy0j4HDk{Rj$f3<6HQJi?!9MKjmRh>SuI7gO8pTi7p;VEL= z253AfbWCP1cry$#`#Gq zkg$QcgoKpxOT<~g-8k3^JOoS!wj#eASOl~H?}C>DXxtOBCl;*P?x-qUD;h(4wc+JN4pE7#)UOjl}*&9O}X7d9d6jcFO(H@{SAVz2_Rbj~g%V+(do<0jjNOrT_o{ delta 1361 zcmZXTe@t6d6vywqya#U+7`5%DQpbbDjVfxH6;^GH3AjYp1xUsmIu%AUoLSXtQABN~Ox(70sNjf7+w(dhT`T1e(iPQK@U z&bjB_b6$HkCUwRnY6;Nq7>)8P?A~Tts?B8Yr0-~koFe(~6jPj9MNTGd;dME^QrZ~6 zRRO1&GN?VVwRin2b}`uUly+_Fw=%gXPITvfB5#A|=FeL)v4lm%D^kJ$>73}e9Gz@o5=uv`3Tdp%pl$v7c!4i6VJ zGWjKJo!sT@_RC04MYZBqlk@j~M**-VvpZfs*oeBTk87Lu4sS7ZrnFq8? zYMus?UL)!+P;q<_+Rtya-l6$XWD!DaqT>1ZEh!nqmIU?}_I6k$>=^7M?0ZhzLW~j~ zZl7kf#3v~}MAY(nri8E;H_zg_BYam^7c<)@Fj`zK zR^CCPu7gS%?J-*IA*Q6Pa6&9KL`{a@2PRak1oLRFov&|03T zaHO}|wS-0!Z*aSbD*9OfqwxxPZ|m8`cx$3Uf|# zZ-Pdl;oK^N(B8BkJj;t9v8Mf%)M->BxT|E@jgI diff --git a/panda/board/obj/panda_jungle_h7/bootstub.elf b/panda/board/obj/panda_jungle_h7/bootstub.elf index cb340d4566b3b3b20d50a62ea7e38727a93b85c9..584f570b1c938e6146ec34f80e23d6e4fdaf82d2 100755 GIT binary patch delta 26 icmZ2*f_=dW_6_?S*v*Vm4N}ZanvXhcKkC33y%+$K*$Sfo delta 26 icmZ2*f_=dW_6_?S*wYLXEsZQKnvXhcKkC33y%+$L?Fy>^ diff --git a/panda/board/obj/panda_jungle_h7/main.bin b/panda/board/obj/panda_jungle_h7/main.bin index 063d31fa36ed21bc812692ef404e64506ace7adf..d0b2689c80abe75ebd006f0d58ab1cf5730a5a50 100755 GIT binary patch delta 1237 zcmZWoZAer>6rCC0%dxavcGn6epJLdS(JG}DEktfXwPp)O6cUm~1VIKH6eT4oL4OLy zFv%!a*FWM{<7b&}Y7|-!_NO3pBO|FF78n&tb;h@=Py?59@40vG%sum7^_12)rL{k2 zG$dcJ?`vqWc#^V@o)(tWJpJ-x#y#S2Y9hTO&!#qLabqAR6*DpTFpcXNCtjd0) zo$+V8h!JdM{L40Cyli8>9iVMa4VdEFr1$#v%=bre2f z{3fgg)(uln;yy);gBKWoiddaIjpHh0{@uIG?jB$qr_8U6lf;ODXA{(Kb+~&Nj}B*& zP7q@W{7!HR)rxRF;qvFu5z*pL7S;Y$OzRP?{%lueH>Nc!iLZzlI(%OjPNZv^tPkXImrpLvk>oY!uz_26iZC~Vc_UiJ7MPc<6e+D%-K~_U@oLm6 zJ*^szF(83b!H|2}^5`W?_A>>Xgc=O-yfA_c@-B$Sl*5GMi8;oxN8Enot$ u4*Au zUoje#ui4K{v_MRx9HhsEB{f$+Gs<|5C`nDE*JMp^{SO zkBYZxFLg4ePBf-p*LT44$eoV$R4-MoDBO~-*DOLGJpBsX+v3;udi@@}C{gFkx3nn_ zrTsp}L$G`DvvXIJWf1rUEC?He&B<-93v3Cm!U=^_Wq;O1rtifzN4m2c9W+7AoT#&3 z>STO!A29;$jQ`jJ?O?n>o-5y~QLpq>&e>O&;K;|n@w`aht(~!Fr$0A4%&8^D$6R8N z+4+8AIwc16VB z|9`e?Xn8o1sy5l^%jND0x!gxmq1lH9w)8E+%>Q(GVzK$=W2;3p_F%tZ+v2Z)`wk=iSn$JPCk@9j zy<%(DE5>Mi6@`Xmd&#KOpTSAP3yiu5xC39tYxsOC*qyt|XvCK*SU0l3d02lzb;}NJ zy@b&i`eNiT;XDQSEJhgPLyR9ozx6NSKf@lZ&~QemZEQ6+CVYNmBWLj9{JMm- zd${%Z!_3$5F1KDE&V2va&8@|u#R~>lXnSbKqOTI-%CIE-ligYp+W7LtgzT)&sD~q# zB0yu9k6rmDr32G%LhNP=%ev6fbYTs?uN`T+Z~&AsZmrwPt@WY3+ma~ZBS4nlGvAk> zdO1N|Yv{A>*Jw}}QV9D%t?{I}OAiMdD1hAp@5iXbkQi@ad>*2|Do&12+s^kmr3aVp zYR5U{G+m~&!Y*!IkI{s&A44CB|4+>K*b;7iAH3fA3bv~aJ-Yi1p5Q;it=J{S)|-kJ^6-)DAuoR7b7|)CH>bdO?#R-xKr& z;7OpZNBG!?C&ifP3*a0kbSN9ZCxcdD;}p<(P!H&4%=ZS(0!;w@0l0R+7o2o7t;f)e zrv{b`%M8^Xt?1Jn&dj#xeN|0=Y9)33ZmK=zv{P^4AS3$@@hJHWAqLB3=jj@4RP!&; z;3|7P62!A^0AneJ!w{{i<#FDVD6Ec6;kJ0Y*5=tggs~nExeeiy=V$V7>Q^B3lTs64FG;pn& zTLsD9Tfo)J&2xFKYai^b(i3OX8A}>)ry&CB>RkTsII2_sd=8FNts1|GSBtT_A~DOW zTevlSJh3YU$UK^42wkL@WfR~z_Y(Ul0#7uAu3OB~V8Wh>S{m?v=~x1X^5wuKd^o+Y z<}TrRg0kek7y0@`U4WV8(qE#go-Q=ktdX;-c^=itUDdoV)yog6`6&8GI%=TkOF6Ix zk!e+VHGETIUx(f`adB_Q^-ycug)qrjMMH`Oso!vaS|AXXx zbfrFvO7sx#ed8IsdkA@FMIhZy9+>}BfZd%hzupZ43Z#7x_w}Dbp3;bb?m6C-!?EUx z7?hO_==D@UGvwnCriF45hnLOuh%nfWqFVLIR#W+7e7tZqWZkgt2w#l>nHg4-v|u0VtLUpabpp_+P{ zFAy%>S8Ole%b5K$)6`CR;S)X-eMfoD@Rj!Ax^a2CQ6X$2$h2AaE$_BofJVh2HwwFV z_LG3dl4)Q-eSDekHt3RE`8Dt7)=c^SC3UpUwyKbCj39Z`dEuizBhVoKxP*h4^gKq13^N_O$Ek-v_hUJ zFjAcQ@v+Ag_M-u%%5Dwotc>Yg3AjY2O*B%-FY`2U%Q8(`y`Scs@uL6OG?1esJ22QHx38hJ>8f=FUV<68tu+j zNId{4C#3r0vW`?~GmL6NBJ3=NR9ME%#6g8+_Dmz!sr!=86#f{+FIldhX}m#)RN5>9 zX_u(VW*gTy3iz}+kwvTL7_U&3>|F|SPVOv?fM-jMYgD67JZ)4Eosrq)SlS^Mmt)td zvb!8IBUIX4quS!EM{>osdvh>jKGjyCZEKa;^KjNTbgob_-`m)tcvU=F}i} xE;I_9`azF?MLcWy9bO|UZjrV!AoHqVbdmZ`6;@NRihJHTIEr3UT?dWj;{W;!S~36t delta 3440 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 diff --git a/panda/board/obj/panda_remote.bin.signed b/panda/board/obj/panda_remote.bin.signed index 37c05ea780ab3e030796267ed83b064e554fc4b0..82de84e197cb349d68bf2d5fe2cfdc5d78d9696b 100644 GIT binary patch delta 152 zcmV;J0B8T$l?2$81hA!>2R1TgFl0A0v#gt}ZhyCmrj*ofd-r}Y%r+mo8&rbvj3DA) zsNj7xaP#V_cv1%Fq6VEce{Fi5VZQci+$3(A0QscfWIX(O=ka1%bGhY?k7ff~?@qFgWIgPpwJAzKqGy G-2vv_W>k9s delta 152 zcmV;J0B8T$l?2$81hA!>2WBy0IWjpov#gt}Zhr__i@A)xhcrd<>ZGSNFEE?ZC+M+v z?}&J6a5zQ}jz;eW&$rNC)5#Pj1THf_D1Zrs}QzscW=Vy8j{&gru-2c;T GeF1YZbxI5X diff --git a/panda/board/obj/panda_remote/bootstub.elf b/panda/board/obj/panda_remote/bootstub.elf index be9be20c6c86d299ee4e0cb5690ed4cf6227b336..d358c2ce15a3c43fb1aab6d3581da90321dee731 100755 GIT binary patch delta 39 vcmZ25nQg&jwhew}0%k_31}Wwyx-PCxq3#R~43j6CDm2%bZLc$9R0;+F{22@= delta 39 vcmZ25nQg&jwhew}0%?YcmPVEqx-PCxq3#R~43j6CDm2%bZLc$9R0;+F{gn(b diff --git a/panda/board/obj/panda_remote/main.bin b/panda/board/obj/panda_remote/main.bin index 2702c94638d887205e970455601d39d60cb877ee..1b418a124d80d64650748476eb8beb2562aef400 100755 GIT binary patch delta 22 ecmcaGh2_E&mJLg1vzr;E8l;$;Y+f^aNge=i