From a70746918bbabc41b4a2e212aa1a3ce041538c2e Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Wed, 25 Feb 2026 22:56:41 -0600 Subject: [PATCH] paddle refactor --- panda/board/obj/bootstub.panda.bin | Bin 14876 -> 14876 bytes panda/board/obj/bootstub.panda_h7.bin | Bin 16944 -> 16944 bytes panda/board/obj/bootstub.panda_h7_remote.bin | Bin 16944 -> 16944 bytes panda/board/obj/bootstub.panda_remote.bin | Bin 14876 -> 14876 bytes panda/board/obj/panda.bin.signed | Bin 61620 -> 62264 bytes panda/board/obj/panda_h7.bin.signed | Bin 70456 -> 71112 bytes panda/board/obj/panda_h7_remote.bin | Bin 70280 -> 70936 bytes panda/board/obj/panda_h7_remote.bin.signed | Bin 70416 -> 71072 bytes panda/board/obj/panda_remote.bin.signed | Bin 61580 -> 62224 bytes panda/board/safety/safety_gm.h | 141 ++++++++++++++++ panda/python/__init__.py | 1 + selfdrive/car/gm/carcontroller.py | 166 +++---------------- selfdrive/car/gm/interface.py | 11 +- 13 files changed, 174 insertions(+), 145 deletions(-) diff --git a/panda/board/obj/bootstub.panda.bin b/panda/board/obj/bootstub.panda.bin index d7694f70844f4f4c6382742fcb10fe5c399ada44..9f194e000c1086330c321d8bd70c0c0c2f15c451 100755 GIT binary patch delta 21 ccmbPJGN)w2En|)(BjYp+v&5v$kBqI@0A!vBOaK4? delta 21 ccmbPJGN)w2En^PjL^IRmGz-hkkBqI@0ArL0CjbBd diff --git a/panda/board/obj/bootstub.panda_h7.bin b/panda/board/obj/bootstub.panda_h7.bin index 2a9d9ce54af6aa86275e67595d58df186cf48227..e307352ef25f79d72dcf3c0cbe400cfd7248e10d 100755 GIT binary patch delta 23 dcmdnc!ngs5X4!Bg85yTpm?b7{US!k93IJ*>2zvkk delta 23 dcmdnc!ngs5X4!BUCz_cir&(BTUS!k93IJ&$2vz_9 diff --git a/panda/board/obj/bootstub.panda_h7_remote.bin b/panda/board/obj/bootstub.panda_h7_remote.bin index 2a9d9ce54af6aa86275e67595d58df186cf48227..e307352ef25f79d72dcf3c0cbe400cfd7248e10d 100755 GIT binary patch delta 23 dcmdnc!ngs5X4!Bg85yTpm?b7{US!k93IJ*>2zvkk delta 23 dcmdnc!ngs5X4!BUCz_cir&(BTUS!k93IJ&$2vz_9 diff --git a/panda/board/obj/bootstub.panda_remote.bin b/panda/board/obj/bootstub.panda_remote.bin index d7694f70844f4f4c6382742fcb10fe5c399ada44..9f194e000c1086330c321d8bd70c0c0c2f15c451 100755 GIT binary patch delta 21 ccmbPJGN)w2En|)(BjYp+v&5v$kBqI@0A!vBOaK4? delta 21 ccmbPJGN)w2En^PjL^IRmGz-hkkBqI@0ArL0CjbBd diff --git a/panda/board/obj/panda.bin.signed b/panda/board/obj/panda.bin.signed index bf9b31336a8400f51bd52aa9488b26c9558245ca..99fce438d22485dd18163b8d6212316eb52c8f7c 100644 GIT binary patch delta 19093 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%0D8zc z!2ar*J;PN1mvKP`m(@i&dlAq`O!6)Wk3|9__ZW!rg}eT?hlo_LFBsvSC=diU8R)&+53Cr%~kDPr;Rs!7uRa_$VU30{8&1C#T}M z&mZUXlhJhCaUwsl4lF@DtNzhH_5&ge%Gs#mZ}&8;nH-Ow#gh_xYHv)%&AkI8-f#W~ zpDuhvRr{w$&fW#ieuyzO;5T(fg3}pb58StN=(hdIgI-;RUmbV{=gAU~b4uuM&>yeIqTIi2NWMUM3K*xO7 z{lx|IF^I@I2F2C_w!)u;Vy7P|_J8!l&GIKpz!SG@A!H;j_}%^tqMNnABOVx^Mk5a+ zll^5->vvI-x@LOsyBrmthXS2{+mT~Ejt7s1b;Ia$-zRcYDpq{IC)PAm<~;oA(bTD5 zm0xQ5z5M>QhC4gtX)o{DFsSXOa9=$mc;kes#!+v5Q-9>c7xe?=>w51x|HFtszb@F; zaOwK?sX2d7S(&|HUO|i(SJts6%62<0I%h!k_OCuXJLNaa?-j3Uwk6z{`q)!X`yP8< hc53@e{gRt5ee%iD>%S~r{&&jf7q=As{0-;({{TGg6ng*w delta 18280 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 diff --git a/panda/board/obj/panda_h7.bin.signed b/panda/board/obj/panda_h7.bin.signed index edf594279d1c98efc5f28c870f4501f4b459e6c6..12d8885651e4e0d9ce7cc943426b7ece9866fa69 100644 GIT binary patch delta 22083 zcmb8X30PCt);E66Nq{g1aA4Gv1Qdv30JS)WfDs6aQ*X7_7PPfNJD_#|ylqg>T03dC zwpzzl+iU9>5GxJ@E4F&8EpceIcEH*;RjUmGon7kd)Z?`8fi?_P(0 zC;h#&d;WhTLeq(Af2`$RfqVY{tr1%8?`8fTzSqY8gFjCi>i^cr|CaWDYIql@Vg=mG z&p0a~$t!Xg31*NVxVdZ_$&|$u_)POq+H0;~2lh3S>Ga$|JK%o3%V zQ8CWlUa~@F;8uS`{w@0l_0;lbxNRSix8=(MHvNlJWcV?B{J%&)pBsHve*`8fmF30w zpMNAWTVGZ(fw7@NKi~T3{Es=s{y>Ize!?jx2Qd64CByTf44<)+-1WT^@Z2s=Q3Y7L zi`?;BMb7wt-YY1NN$O=|Rg8+_Lte1IplBiu!M#X*KuE|Alsy1w1YFofz6)69Lpz^Q zQxv#_rAYo5R6d8MG+DXCXuGw2jU}S#*|wa;Uq-UpkjwfznzZ-Z6^qvx6itder6tnJ zX^q^!6_+nld^Whi*lpP6#8Y=?-(YiOk0UZ5gGF2#=p{s?k1B$4AHd8<^QEh_HME_ z#1l=&vi}mpPe%)n1D*p^0oLv&pNGCoM{HEi*U(Ze=~p6KnC~JPkGH?9j8*yO&GJEy zX8j$OUncV8yiygt12tu(a%rLzT3=g38RO5CmrOu2Az^A(MN-51`m6bsg{-Pl)Q~A* zqi7Frh83oif}Wvvh0!aF?V3^NXIlSqqSe}d!b15c5)@P%0&c+jMM0#cdUnvd%#4D4mK7XT<%p{^7rPbs;oT3o0A3gT5pG)f1q`y-? zZG%DC6ksA^JlPtNG&-wzm-Wl&pgdw&YhyI5W?6B$_0?!a-WnQLfp;uQYhc!i7M5Y0 zEQ6WV+;Xt0R>!s#EJIF3@N`r+A`&fPt*`OX{Nt^R=9FKRI8di=*<8VDu04OewLuov z#ymSCr%FuJJ!F!#JjX@aqK#bP&o4dL?^boRHLR`5!Z=^6m|~im7hQO~wIU+S$uX=` z&arJ356yi6DY8ggwQHHPN=(wBy@*Jg-k%*jcQJZP=U=E2lXZ(Mml&(s8s^Li4YILn zMvbh9DpAXi&8rdz>B5}64Cy?B>C0xpdg>~1Fb_YiN=)Ii@94QzS<~zh)=yopw9fJm zkXMOAbQ3SK&Ib1VmIm2O!_3SoQKw{73bi(8(8MY+RaqsbDX-4067>jW0xa2Z3YCr5 zgTorH_X6|@^9s*+6>1g6{W$U}kQa;een_9=T?dX{0l4-OtM#+5#kfvbmBa3(>Wt#C zu(pc1kv2~AsDmB6#U^WCwKyOzqOiolsMk0c%^nA%s&!~y4z%*at~qqWt|mC>gunhZ z1Q90uzz+;RV=t!=AtELseLuoa!zbar_UdFNR$VEo_&EouaG}*W6C zI?WA+`An>0$cK4QFrY34E+bc zWJrs=q}In6VqA1EG{2WlDwR(Ajq4ND@2?tK)F{zge(?$)dv7^Pq3~df9TC-fc4#Ga<3BLSF`QUqkR2_0{yva&przD%g-4Hgg;zW+j&7+XLS6-9 zK)olOQm{@xHgw=S7_>t7D#NC~C6Q(Y;*>noMP4VrS;1&-_{pNk*O6hC?jh6s7_=>- z?c^ikvF@3p#0~|qWeF6AZX&bkv>i&+$zssBd*pVy|BfYXDFZF}9O)*wvX)WFjU4Y4 zmU$3@|FVZ2H0M&PsfuJp#{@QbW$GYR66n{TERBk=^!6}nAC(&M-Clo$`Xltbmr?tw z;t=}4>#K^%@mG6=1zuLg@!b^3s`pX#MlL~HKB@?W?zm|UB|@(v%~utI(CweUx9mk8*mMOBFW4|jfsSQUdLn{EjIeuzRrKt4^!##d# znTqQvF{GZcF$_1uPwkr%W~BK8kgvF(-=F5AzOptypFs<}8Hh~q@J1F9ukcaVz0h?x z52R&C%aC$u=v^t7hQ5<>1WJ52x63Qc#$Jm7nqEOf%l=a6I0=i3U_T`ZaRYmAm-_QXev_0>LmNm@Ttw7c zn4$oQmyWtQgnU5=x=Jf+-iTYr4$e68do~@d+*okeyNDf;sPhWHxyIjpY!POxC5Z6~ zKe@(1snhxRjuiBNNW0gSWTg3&QFppBj7i3En1}5yopE##U8EktYGZ8K4Ge#U*!%Y$ zzLH@yzPW7rl)}ig?OGSa#$n`BVN1)*)?n|G^NTc7uX(jtFbcG=63U-X34X+-2U1B! zI_3W$5Aox$t=Lh`ra=;st^5$}Um`KE&LgCI>29=DQU@iF4lyQUF(en?UA}{#5Q^}~ zbJeKLN7oUE?*dida5c|pWEEKzl}k@74L~cu)ss@yAKuD|0=4;s3~ zaK&B%`A3xvC7?WqGVly9l{1w6KLKHTouZvCI+&Obsi#~kuHsFxR3c8TD{xk1T@Y6n z&Ypikd|ju_-Wbz(T{DcO@)BBl6(3axl_vEUsj);)lyx!>?gFm63Ky8yPgpCi)TLWL zF>8z8GjNy9#a`h#@1ld~f}bWekB)jY+A7_&dtEUz(bZaAV0KJ&^YE!~}-WCRTku4nVv$no)pRz^5Ew)9$oo9=NJJ%Kix6o#Z zg*V$42lruHKe!Ls`oo=W;J;;$83yv8s!=o8L2poYP~y_<3}2XLzWZWIfx=USX;y z2H{Tkb~8IXa%i>~GJCi^`Fsf3#l|*YX#^splj6+Wc;>PX6gu*!)AcpDags zBrO(c6A?R!5+}iAk+v^x51fDU)&TN#Lhp%Gv}9o=%mC06@NoE4eqTRErS5OXD9Ry5 zALF*VV8}yfrdQa1EZ(Z|tvqiay_Q8}g zdPU!jBn zC2lzmVQ+nu6eVZ*(0#`t@^P{@bb&kFEK|prXTG%F>=7O(*OJFsvXREzPaETAG&dLW z*w~LY{(<9}R2MB#(Pj0rrpOY7w2x6j&O)Pj`H~VVm9l=Fe5qH+c2gAu zgiW5)-qX&bm{vM5%i$|)$D{sqk+nd}@jyHmnwRQ6kFZ|S!89aDI+%ufK~J*KupVKU zRE~zKq;fQLO)3|t+R1U*H^(!ycz~Oc_MRSL9N9Byh!35*Hga`P#Dnfms_3!P zZ5hpYgu9(=3fIJ?L^PEgD`=~j!W(B>p-H>2@c{*gbWz1m4;vmK3EZ08br+{|S}Fmh z_%75)z3uP_{YdWMB(|O`9y~GX=T4*+B^nz=`D%}FrL(}vEKEdO=gH;4L)at4KV@Ry zccn5J#(9MvVU1KG10`N3Pp71^C1h*L0(N9g;E+&OxmQH>5^n#o-}mdig69xP)~PK! zFxeTk{uAZKb>b#|nSpJhDw)NGFdkT~axE7(=`)UD6XEKR_5z6v2dfl488E735G&P1 z!$~=rccNL0$;GM$AoUrSSDl3ovPV!!`I=lhc`;I0ovTK;w@aO0&~_kiaV1P!e9l}T zALJ@%)2DY6R8y!i$L3_U?VPJYj<+K^pQbNYMWL$LQKIHmeGzKy;EnpbZ*oj~2lF7J@365yZipc^_m(tmbnOd#;06JiBn(^Q!$ovb=k z6^Wdr&hCB++8Q!F!oyN4g*dr*gy|gxZA@lZ4(-n)Or$upt;EJJ13dC3nVUAo@~=9` znjmgQMy)>IBb)(~D!@f!F`5Qf_b%2Wgm%)^rvT=w(L#5qSPIc~v|B1iL!Ah*(klCB zPp({Ak<&V~JuC8ti>}Clz$_Ofu-+}G)+|+{%X}ON#$Y9Sgl}AlXo`l0Nd@ULKO>c+ zA+1!7cKMl9j)qhnjG8xwfi(}gWOU9E>e~U8*-6*hSad8`1)$?09o?(%tq!a{RWPMG zU44`yL&>i6qy>@TEH4L8VdoY8u+eZyt#Tqohpvrk(B0RlkixqWmK*)0@JF2is%4Df zMz)MqXWj5+va4z7jh)#y8kmM^Y@mAKumdrA*_%-pYVw06V>1~yw6A3|uP_DV-Eqhg zS$lx`E-WX0ImqkTTrb5Dhi<&6OjsQbYbwBoH5H2C=yQ~{9$}COwl<8#0m&l_5XYFJ zjWf+F8V&2GQi;_M z#Xdtr`ZREFY7AmW5MyvIatj`*dwM`r>fM51BX19@VgpFu;YnP(yT&m5QP%HfmlD|h zPX6^k|HMmOikzDc-<%FdMFz_-+Za8wgVA3F0e=Vl3HS~WaGKnHU`67T&fXH$-9r8m zf75z{+}?|K3&zeqIH&kZ@vVrD?X209v6A)sxU&zs`G{yo4)%MilM43N$zvmgfL5jQwQl=(MnkE{&O0#pY<7tV~nr7D~yw(fxztx~Q~F zHHLvweaZ3B5up!4D=2cPP%hECg-PVvXl=w+o!ZE0nI^rJ(fC15EEBg9)tHE6O5 z-an5NXSG@8W;qoyQsf6au0}b+I<@$mTz-*(HCRL5A2Vd)caU7H$}N1;Il@RWr+6># zoL9K37-y(71uQN1+SpZuF?Q-9znDz$L#M_}Yi3EKr+Y%TU?p*5*I4*Y1IjEb8i1Cf zp{=}W@wt@kdUYmAJ!lXPk;<$pQX#C6%Jk3W5#~BoM%pjszb;pQtoK-i1Q(T_XI0S% zw@6_YQr9iqbg3kX-Us1dakTCd?s|1`@LF-=q$qU>x236$8_Owv2;~%En@QfdJa#Kt zH*Rb3Y*%qVSyJ$&pMJ+ZLzF7X3>_bd>D~YhCvV{qS}XNc(B>+Vw+uo&+cmeCj(2WR z2DE=uW_S6eE~V->2dy28GUZTl6$^iKbm!BQg=DjSR8pWzt_lL41@H@;`}J-i&*h&Z z2jz_rs&p-N3BlA5K-f&JPaCZJhe&GXVD?naW0^DAo(;({!vk?tI5KiZ4@ITNM}aO(cjg1!uy8zhl1ql4w$g1rOiU>kBZl`5@|Ty9}x7YDTx zfx2s4oZ4SSr~h@J7zU<$#6!=S`@C{&3ImZ|;gUmjC=gmg^>`5#26sh|@SLaH3ei>{ zl*7$n$cI@PON&U&bSWtDhe%B{ei&#auNk~&5tqf@jY$)8qC6Su*D04jP zq82R58W}EX8>7td1k!?~k)(iJ)Y9Y@Y$7M=8@KQeX`DPnSglCMIcWd}dKh}zvH!)~quWn1v zQG=3%l7?zcm|HbI`IQXs}v70VI`PqwL{t;i;%H8D2nC#>GA3tZ!qvBVy&`Ltm9`|QJUP! z?Q1!ti?GUZ*Vg8cn>s-gN{=1D;{c!$KvfN`zsKt*-Llm2^k(G{ktHtNP)KwSV^jHlxZ_-EJue>R+2o)m zA~x{Jh&AeW_-5Of_}G$VxYVdbs-a)+{1f6)CE1@B-S-gx9&P}An$C--crMweiB0sU zVRAJuBJ~ubJjSShxlaQhQzCFV!-v<=TcWeT{0y+@9;qDIenk>Ynh{@tLlw4ywxs7^ zFY&I#>Em?+XMbBfsGD}g+P==>L&N%i9>G`<8e79S<+bSrGHfL?%jz)(Oo;5oqKfGR6_W};yty%!EMmDGk!^fjKp&V^GRsTIHB z<;Jk&uqIiu!p6o2nsmnVqAqPCOoi*juXUs9m_Z82eCg)&7#n}vfz<=9$sz8EZ%Nm| zlU`>p)x;FM&sx4Ok(Ap~ic$_xqpOU?&0MAUHMGt9hiG~f=-;f&#QZdYS1|2-IHp@+ zi!LGJRm@bAawPJ8R))dlmHt*n6$LK(8A9tCPji0xubf}_^WyJdB%jNCFtP{f0_(iO zNn6PTk~1Zim60c=3>n4q%wWCKXX&bPCb_Jsru`?29(T1LlzoO(wG_SPEn$-N&TSPn z?e)mngdAoh1gUzd*i62jGHhT2&(#H#th3VmQ2Vy>@xF8&>RXOhtO0*3>M#i@+P+{;ndA4)`$({*{OZmQ{Ez4laWSJ5w~9VNg$n7K8nf$R138;HwT_#C%nsw+8#t3y04;f>H)tYG@5+f)a5j53UFU zSMbbU$F?#^IhJwyF}Oh^Pe0h#@2c)S$J^oo^4fz@39Fl6<+?6r`Ih+@W#*^yU+`Hi zG8M)f=Lf76Yjvku4T`l`gQp+Vvgb+rgXt{YmkZUN`CF^|9F}uj>H@KsNdHAyw!%4Oq=T*NTzs07#`vr1y*=zTY%_ zh&aicVNie5<&?x`B9<#%vX`JjDA5nWr^|P(wPr7F;n|{&zDKgk=jHuyE@Vyu_I zqJtl43H#1H2#25XcDXuHI$xh7LuSto+wP7)YRLW6jb!ueA-*})kVw_!-0VS_4ay&` zhc*9jJ!)4NtgL4X`&loDjfJ1L>iet}nbmc;mS>!6D_EQ|8kFk{x!*rz*k{1{7|0IX zEKYB@Ac|z%qX~&!$}ez^ZWP7IUg0(O1yPZjk=5(Hoi}B&2I&3KwnnjQa-*nNN?w07 z**`nI@%mVRf!H2ZrT0pWIdVZ%s$w=w9e>D{fm@*<)y|t7x5lvE=7(Jzo1S5uHU0vc z=#>hvHeSyn5szssN*bHOrcaadXiWM3H3ySoX?tp)&PcZyRLD^ZQcBW|k#E_i{W7zU z@dY2sw)#80)3+ENwXYU^8=f-0Zz{MEH0Zp@GzYbnJawWhq$S92Q+DXrXIhw`(8hQ1 zxPm?#I@21+Z23I|3*>;sUEySz#%lc?JDOpfe^eYxnQz}!_MZPtf5VOQ;gL22q$!nV zVM|Zo`N*nCX{F(Hj23Tl;@=T<;5o+mRmD4Eru6hd?>tq3-CWjV^PjT%sXvaZ$mtYr zbg-HgVt&O6Fu=v6zHh!ODY1vci6J=&&5QoPue)6{F$78eSn+~*BJd4p*B-(bgGmk4;6l|wZ z-7&(*8`u9%Zzw&HX{PqrDgGGYb}!k0@2u$(+F!nGbX}6aTI>mg1&&#Y~Lp z2|FFdqw^oJDlm$vz;z`?;d$~E@p0X#XJvI`pG-AQ%-Q0YkXKpOt2C(Yil6;Lmgy;2 z9sQdrI_pHghJqVEhG@$bn1F&C`J+Q_X7vkdV;%|p`mbpSxf#S*)=TqnxofXuD1@O_ z8EqtDQejlxtd|4pn3S1KH_Mw|I?>8S_-cb}Z)1@%@ob{p$;$oglb0l7!;s7k%vRELxT~#^OlsT&hM7*{O`y(l%jV)TDRto`agaw2}JEL3lUSr2;|pAj{TO1;x1tn`xi=4ABA7Lzc|KU|N~;GW%m!a=i& zyyW*eBm1v*^@6mBxi2kNy7s#&oO=IUM<5i_A(A;aF6b~b92<|JKyzC)nLqbYxl8!d zL(a@i4t3$~;jgAYBtDOi;A%ZY|9BtnV-K0}c#dv5TBc^!vmFhsL0O+MkCzuX3%MNI z_I74kW2?T`Y{OjBOiNJ@zE69|xyMJQCwf)J#2$QOyXdNGs2;h$`)69pS|8cVmul5geGP*mcc8Fh+!f`zy$}V9-05NBp9FQ@FmtK`u2Ir)qqrL zkDJyp2!sprEnE^~A-kW5O)$Css zD;?d#is_)_3&J3~O`H)OAYUuP&+?DVqIf^&2u8mD{d^h8oY$W_Q%&Z~8^HY}l2!Bi zsb_ioOq7U0UwVat&hF91?bjWnZy?(sw*ROm|DHEIVu&XM$3Jf>UA;kHQpL`bh$j<# z%{6$WS3|}=IWnZxJ@|f04i{PRwxXn|^?dH0K0Ao)%Wb7A=i*xN0>dO`H$lVTby5YiGSd)&$8=NX zN7|r!$iCv#u&zSriLjROyCLw!)d12`9HYIjGQwVWuPlSt)LDs~L{@TnudREZ~slX*|4u1EmS<f*B+s}Er3Q>Qu7 zqZoAuIYlC1=Rp#^(8!J?MGI5ed4#~7NKP&s&mJa$i^|xi$?`?dhFm~F$}C;*+YS853tu@~_3y*lNy-ce@IxHj{? zKcsybox-zc^2eM#b7sttAAT9z-6YG)N+X;hp(Qw~Qzf2IroR)RVa!ka6ipg`qbXst zA;CVk{6y<<8QU`up8W7)T*Ot~iGK17>5(&@$+C%*7{R6e*+Me7G{(PKm(_f2<vq1(J%eMIwW9Tw?Nx1#6II=uB(AHtUPXTyl9EMin}PamVv2es#g zxIcHW{8v5X{ZDeTeBV!}jG**jCTC4JL>88f<1TlR>auvB2AqPL$(6FCC|>uCn4>yx z-evH$Z!e3>?VeA1o{KB*3vv%DPq*;=83!}O(L`@}L|8rlJj@NLwr_FJnWQsHS+9Eo z=VRo|FZjqyrxzG+oWm9_D!j4PAYWp6$1un~=!jgcf`#Yb9w@;~J)57CV|%}yDatkA zrT`{PInEtj!VwQAudLpB%NRh_PDMJ%MXr|z`p@yQMm+{Rl(@@>SekXv%}lq&diCK= z28F$$9I8MDdl2)A*Z?cSz%C~K5631$r=4CkcL^`jS7-io>)jvL$G?Ch<#A_KB+G@WNkZ`-oj$CNn?olYQfSJUw}CGDO;!mS>fpX4sq4!UmeG*c@)OSawR} zlUZ{O)NcHG=Z^O39xlqjBzfu%w0~d;X}U0|ZiiBOuM6)YWPyPY$=xKgyO|7ncveV<(bM3${vA@WlWt|3g^`(P zW~F$QIqK+s47QqF{b%Y#URPPJIdY;r!s!hC>y+%*e4t%viMB5->yu*{;TEDg^>?y( zP4o-{wfW7+bPKEM^mm?!*krf^goE0Y%uc?jIn;TAwm}JAg&) zSDHgMztlIkLDy%pQ@(oE>CcV^-%-w*ndKI~aOv-a;$%O`-fCgA z6hlsP#PFD1I%{K_eV(u{_h)}1s+Uvy^U5c0zk<1r>sjux(o%E_yWOlYI;WN_e7X1Z zW}W^{F(hb&{ax5P!kT3eEqX}A23=*DOpEh8gb9_0l{7s9l2UhXP1z51kB4$bz_;5+ z{Y@%<_wv{nUWv#2>6v+34A0{%QEADNq*jG&nRt$*TQtcPU6=-*P67_XOhU74$!FzJ z+!gUMI`Ax1sjp`hFeol+|fVVzHgJ^UGip zImdI7iSa7`Q9A*1Q2|BgXTl*`f4fyyzD`VFAoW=p$^{x3YqWKpIDm^F4Qw(R}TIxa}iNs2#>?R!wDB&s376ieaO8-8*QS(T;DbZD0Lty!{;s zsq~T$Th7VuA^;G1zHJ@ePVDLZBnzPIm=E!U|LmwT0>`5M? zTsA)=r7+6)sP%MmU%O(Eubo?RLX4k6ZFR7`t4g5FTY7(j{j6e;XkS)_yrRz}d%0Rg zs+T1y)TxZ-xEP;GeqJ^xh(sG>gQyN@q#Fx?D^;{#*9vtrf8+#pJ8LPQQ@lV#;w?C}Nk3I^+&HzQY)6tcRsS z-c;Y>7aD0>E~Z}nyp_{@7`a?bOO3JmVTZb0Oixv3pKA3@z*D-_%fz8mf^O=43Y?Ka z%fw+z*NF$_tP^Xe26g(r6V&Om?ymWk`7?25(Pv5G>?yC-jCp#z^TLDUoeG~ZPn;8n zPhp3B1~=HxU^^#{m11M3kRPjf%M&WrIgVx1PKZya&Wj^eY}(XlXpyWF2zLt4A4a(H zuj?Rs!^|eq*Zc{WVhg?%|4=P6@UW*xPl}lsXOGG05YD;NOF0~1FM=!=#ob(|;L~wY z+{rNsodVMlF)7iQZoX2yenMPbI&NBLSr)9H@P+tCrg$s_l@I)n${MM1r_jHHO=#}f z2-3G>RMD=$wGzEF*#sZTwm>_H?5{9}8ov>pnP;r88+_Zv=M!x~M&I_Xg=(WHobVtA z7n%wdDJ9`CN!g-+C&NfgjfweObP~T6T6PObUy)#W&2u9L=~IGl2C_amM~unY>THxy ziTEzy#~w78Jcd6Ift_2ArS-)1)#?-1|Ea!rTcD_=&p5|=6jspD`w7As9(*Mx-HU9& zS59<~u;`$#bkCwza)kz%0`MN0zP;^t5StN6nA36j89&^==-~W`(z{^knP2;gDZLFU z{oRbon?<>jP1`K8`*VFxhz2t2l@r5uy2E$k!J<3-<9@jB{Iu($xH^p<%ckLEd{SJ^ z;mzq^Z;bCh6P&hkSo9=J{|RxD>SE6jDV3dv7(H12gO$VQtW{4%6DP#A+&Xa>MFUb)08405ZC^u}NRKaioKj&?(-aUg9uJ6t+;Z4^iaoc^0of5Zkz9{ukXM%}-84+WSnZJI5@5dSpXKd%C9@+-n zl!sILzAfs*HS8&IHF3Z3r1U}IAyWKioCWik^^;gt5o;v-eU0m3f(kYEHg2!cl#&|Q z4<)nZ;3gKwXb}&e^fe#d^!H^_;;#&5bD*rv#_>14NU#Kp!ey62T@)MK;>$4W-Vo&_ zqVRF28E5Goov=G<%-GDWgjtKS9iyS4Yi3#diL69R`nAFcN>r?6O6l$+fD@k?k^Oq- zfeK&ju3qrjnNQ7(2irfhq}$mgSxfx69Z;6dMNwIFf0Zb0u0TiZO}Z_JKf!{?I5U^( z?@(h~8Z6S(O88IQSX5-qn7>x6&~1B?(dwO#Eq$22kFU@%6qj^`8Wr#wcwe(=()!yBsu?pNb=2it$P5LD9E-Rx0dw9Z;ltDBc= zvaW%->^1AnvRU-DgJUZ!KIJ3ROSqk$+ZFYTvH+}UCFTgHTW}0jPra2z2uD8 z?>xrhlQ!C547y4J5qH8GNNs^K7+ud-T)=gZ42IcL6|7oa;)|77}8@3+%8%Dc9zea-{4O>xjJ_-UP^Aj>l+vcwQHN! zih5mE9i1q>j%`1Y9^8!4GJiU@FUY>j7ydh%Nj_woYFK7)eh-#P-v)DdaKu_M6?Mm1 z+FsblB#moZysw*EnSr8E+7WJ2sKaw5UM1bUI>AMG)!Ep~3#2g= z_Ar~D`j`q|B+6n;ULn<^cFcJ?^UliD%4kM=$TrLHn!$KyXT$~D#>kk+>yA0k{-5&J z{|19CK7F9yjb^7tfNq|Sc*io(N9EwOmZ5DA?BkLxZE5=&#Z$U7zcDsy1f^mv-Bi$4 zJ|#l!O)SCVQ#sUkZ{O|WDST{}Lf(H<%O;SsZw_H&i2Kd)DVy;6&?TI~lMcLl?!ul5 zqLC_G`|G&Lf16W$3x6Q|AK(vun>_PYvgMX^XSK*H8|2fX^toln3SZg?okZ0ledcoO zFumQoahQHi;W$i{$;gRRNrpgD>kUJUgJ2`detS^%tK;SE;m;W^bx)rt=*2u^rX-Ad zb@;T0FEkr3USA!r&ORyX)uIs4u~}r4jM^MxJdVQ|zSrnvG$*gGCJC#P3}IrjaVF+g z6n+(ZiuIIwsWadBgCoG$E#OKke;uoU+?Jvaa zsaE565<^UezNNahq&5w&e$yslhe5tv9b-|a(mS}3kN_&37B589I;w@P6<&l8*A(IV zfwZ}BSEp?+;!V-W*WmTYHz*wsKT@>=yYX7wB+prX5xbcw{qhWXnfOwdUnlOwo0BB? zmrynpWj;~QS+P!h6|sT%BB6@^8Lh78e_>R>IpVEdpPQTQ6){V9<2O$V!!*^`j+xyR#R z5(XA9@v^}KC;cRDs`x@&Z}>vohHYEK;P579aJoGSmb(t&PglA*x-8r}Yks0}{RA&G z?fx_vH}IwEs(KYzp+orbehJ*UOknUKba(nW*Z6ev7vgS1OxY{qP6MNDX}W|RpGyeu zOgGc}xZmuv=Ck~-D9-X7!VwoOOG|$1sKM6l27r#}5IO#Ks^y(!Km8uze2`ho{r$g) zDP~IkEA8+3Wz0XBWlSw|lsUs({9nplVQw-U>&FJMYjG93mg|zr^kw5&Et}5fvk$Y+ zu~kUlqhlM`FIhW+|NZ|B8^t9`sTo`*m&g4>3cpO=CsF3(ru`zz#F!hZXJJ1pZ>F(^ z>JC^Sn0Vjj!zM2N;gta;vsT6gm`b4GkKsEfvBgn~$=$3AEMeo@9JB_P=(xnF8mc|Q zBY0YYckiZvfxB~LH`xg0=F)KHPLh)FYx`KHXA-R455%ccmWlsBIMYCI3|S^Vl(|ft zk*ZhgjQV&%X!aa;1gYQ4g^d}p%bvru3*86WJ(u3ei&U|lGR+lpbU=E^qLS#KFZIOodpDsEg)GwlkaP;u9=P}1TAQ4+e?V1noqg1khmlEmk1Q^hzOi7dIM??mPQX`8G zERkzWB|e(hO0pI3)ILmu?lai_V`*!QC_L5WXF=AuwjgBrOlIQsgA;A~gbxjt zyFvR>qcX6_pX{RfKKt0Atv!{dcG2d>wRP^T1;Pf?vf`S~me%uy*MIA7)X&3*UeTXes~Z6!f9nj}3c%?1S*1^?QCa!pE1jitk}! zcLJDKi0m<>(Ss7F4Y)J`9Zcw=?-`AlfMv4t;u-FgBRl6;2_aF~)7ed{f9%zxWE#GP z5rwF(@idob;zygN^g99JVaYR8LVi?=`ys6>MXP$OG>W13M_ipYNJ`P&PpL`M{5Gg( zemA%&abx%5*B&6``qGjTr$p>c0JCk9n61xV$~6IMmBckUs4=chwl_-Rn)Af|Zd~Ch z2`Mgl+})dd!tU3*y(a)=xCqpSQiAyj?`90@>fZt|99w5%sVFG%bbQWlFMueNqHn-& z1V|DP)K(tC>u$tnohFmkkF!aI{j1+!QbHSui@gCBd5iI9VhYI5X^lll0F;MfeX9*?#fuYf%}SNZAiED>a;lm zofeKw4zN=x?_*aPQ35ZypLKuh7@l*>aioPqYOYa?W8%H|%IGXoWT9bF>7b_d;uhT~ zD-)k<9F((C+yY_XavgOf=hy*XqvWp8+9s;Pnq6_GNYG8!IUwhRV*paVbsZKN3zlOa zw;ItVY=Zo7G!J(pSt-WplXlwlhzGcTb7->(#xhecGrs4D%3%hGLY<3?2USp8(HV}~ zRu^UZy{`Uv2Fhe`I5ln6%4J3NAaq=7a7x0?*(c;I<=f%jC ztqgZ@6;SWh(T=z8D-jCqaN&cw{c@j+D-ct3EQjmUvCuEzViiJ62dzEBED8l37Q}H; zxqoxNzNPpnnt-TW@W=BmZtz2xuEjXneoKDcJdiCW!CT_u=E6i#DSm<@(W{-biSwdD zD{I%yJ?F<>oJ}Td(T;iX;^c`J#RG3sHi&DgYhgoQY?_2FR*3_eWrIJ)xrbHf8pq@F z6KV!|Q{3k8)o!sXR7P-c0NJ-C?y0d5IbY+w^U~_kNb_}}AN4s=F@kGX&bi{7da)K~ z{>3$GiVN;GEDAFuHR-kVaU8aI4CY$X-&N__V4Q+6T<@SIkPp_$TJV;w_1U+)!cose>6?$c!pHQ-1g`e#mCwZs;vcL>INX6g7BNHg z&IX(zH>I(>syK? zZiKHXjlg>?t2)oxPu*w{PpKEwF`7p4dtL8lmVecOGj1BAZEvE5Po=fsG;9SuZh;=( zz2WME2aEfxa(A=y%?Q zpWMJ?z&a*#`pK#|yiF0_kL!Eys4xo*wG=?#(YXYUXg_$+LVtLRGTe+_K*hl@V(s*N zmKTJN-P0xsLbTW+$VCB92}I$XmwvRv@YFKJsx)SWk%k~LUAdsalb(05&y1;?fN&Ac z14j6>J=A@e<}iZri6;xOX&(F<0Zg-AVLjT5Nq9BT+95>YbJ;;|daS@VuCyDTT5m_> z;>2C(5`Ga${PslUTz3cLs>VF4j8=(vlSj5kTa=!=!glXB;vZ8UJn|QMiT-!dIddP$ zlkGfyCWk@lR8MU?|JZf=f0mu_Uu9{@F&=izO}pKpvyCd&IOVcYMPEvvB~xO30wUf7 z$l^e~AOKy$mk#+b^dw#U0p$2CraA6xP56%6a?8%oIRy(rzuUm@5a-MR#O3gNjsMU1 zh0zQTiyPDM8KHFS4zAOpWlfg*n(PK!P_sykkCygPsT1OFNSeqcAr_X8zL z(tB|caY})%-rXZyi~W&=T3mPhal~mqoBB&}3v(~wK;ND**7YFN6QAA_Z;a~BzgPZ3 z%zwtGV?9ws?&UwO`Oi4AnEm*D56VA}z^BvV{2V`XNay1ZbV9Kb!2rGBk46DXz@4Cm zKm3aNZmPs%K0^^-jZucc&%k^}z^4uOg})Nz>1cN#JqCU$+NDTs0wc!4&%o#d;I9PZ z_JRL<7z*}AK#2y!;J^MwP5r))d=zui(&uFiFPcN1s+}A?b0Vjh_zzAoY(9)hCj8nT zJ|cV7AHN0}TJufq05)Jb;zfXWbBXV#i@56{r2Nz9=$0_lT8jNnF{elh$Iml{aEgBc zDnrQLPv=En$;VGXV))OSImP=Z`XP!;3FZ`g!b!@ZH$zeptbG}MKF2BAgGkEBKBW0j zPRP|D5CqBYC-F;_VPtsS@Q~w38uk)?j}l26x=XIEi_}a(a@`XA9OVIEEz!hsV??4tKH9F+kw`a*XV8{4yg7)B+h5{5Jw?`W?N^jyai!-?N;~DK5_8 z6rBMe6<{XdxU##kh5vu~1ize7^GJOo+iw(z_CqPivItG1>iY^b0eA^epsX3&FqSp^ ziLMvE0h|jlaKG;6DZcmq=nu(JSV`v{e>;m9hM&|Ors+%t*?GKQ&8g!LQgoG(N9V2=6sq_gB|kyG9=*#jb+#%EL!w< zxeup^>x6ucJDS{~DgAct>^*lpmz*EGSpO|M^YrD|F@b%pM&@&4y}onpzNz0Yj8A;tq}uf7 zhs~)sUQ0iA$kFm_k$GOj)Za|*1>(bh*RZ+3x7AkJ7?JcQ#Yj?WFrFucZa|k5)f93$Tz2EzLojg3;C;XWKn>so;3L2V zz-NHVfUf{Q0DcAB(r`9KGXes@1Mnqsir^$p;RlES$Pf<%(8hYgj{~Rx{Q+r!Ou#U} zD8Oid889C3DBuae48Ux_GXP5TV)#n|%K>WuuO!<3=s7{c8-U$_y?|=Khk#Rndcenk z&jD8f-M!a#>V`BKsTl)bjaU;x4jYz9NX<%_*`17=F(#(#P*+uO7QF8Ovow zaeH#{`WrzJF%7-U;g?ok2M3Hzry^SH)1w`n`ehfJ{FZ}j9sA(TH`i)qoNXjU8kmHw_Kc#%|UrPi5^TcS8()I*SeepT$gj$=FbDEbV~x8pBUQEfzpIU@c(t zUNS4}@3fo0g_UV2R&(Yz(ap@)(TvyES60EQ{EMdep;e3iF3YbFv&o`xRqP&=l$Fb+ zsjkraJL)Q!K&H}KfNJ)KtJx968QwcEhhJODs;b11q&YmBwlGjx+QSYeDxC_WPZ-)! zS{q;{;t+;xSH_Z)%7a12Q0?ykejiy9@i04zT#Crd)$>(iE?|^0rP}XLT#=c@t{L#~ zK29+ca1eF(a(c}l|h$Yk<*kNv5fnN?SbBlzh@ ztp#+bI5Q)~7k0;sCeGE|WSDU?$^4#K!8vxPQPIrGR*E^Kx~B&5W6eys%(+1vL4N2t zj9p1$dTD#E{E^|aY8D<1D=uUMUWvA@9#DFe`fVqS)#Cq2eq zRIp6}Yfs$rsq)CYV<5OMq}&j8DbJIM1A}(qSPnKxo~h!mPA{7MJmH) zLNaGizKs(@Mrm&P$zt++!d=gw>4}p#>J!>dbn;YL!>Hs&j`s;hA42dAK6b$LYw6~d zO{_eQxMEZ(DlelBRrLqgj{0N>B_h-tX?`j-Li>Dy2=ztiIg%b5Wt-jkibANx!>IjLN`ziOn!hRxp_@nxQ3WGpLtP=NK!l2Xv`v467W+a~a#Nt% zC+JbLoOgnYbQ~BtH|Y=R`*}O5SCemIG{MEFJ4BU&(jSm!(6kdRbW)r3fLa+^@K+@O zXQ0nt6(_aO=KX_q*Qrk0`#zxE{($zL4`^TVfcD@AwEtV;7p0x;q&*D8e~PNRh$rjf zhOjfqg*a`*SkE2TB55-8GBUtQB(nHI+iY(T$mg-_XL?JTtc!M*V&X8|Bt=cA$xj`u z@(Gi?eqD^3h)}310F90HhGA;^p_W3FvW=ISPF+`E5YC*W6I%iBHwCCUm7>NcWO)PB zG8NZ_k$#$S(E0<^{-y|{A`%G6Ku|nDP?7KA6AJcp@J1FD_=H;?9^}dp%JR}Q8hS&@ zrJ--7TscB1QZ5a>DCN@7XCyZvDs5>;hKW(Lh%3D^_ybM5TJ7pdgx)>trCI}#bH@{?=8X|xPc8W%p?}J5DaRi<4G0BdRDHr$PdMtK*ylYQd^)?< z5l=#IcGcmYeKxXb!%tk#rxQqSEV=Jn$PP=^`Go84(f6k=#5gsFFh1c&_b3oXN8wxY zW#31054ux~G@n-WPj{9v#W)JQ-tE>IM@&0)T?D6hA7dQyI)*R6rixKA`eZ-|z~3BD zR3)0oGki=u&3CFfh1~RuG!ifQv{)>3oR%FUyZC{jPrCIWD8)#JbQ1Z29|hI0>kyj( zNkjUp25JA0b-}ehp}$D?WcOU1@^RtOIJ0p!Bop6>zg$(2h4An%4xuz3TT8?dI$1Tu zILb74>4Sww{UP^rct#_$=h>^4*DnvM^$K4*)~k=%{&o%u7d*V`$f^k{_A}0y8*K=7 z()GFBmkh=<`zV!Le5_`rSg0$Vo19lVGpkDjKaH}N&O?vZ^eATf^%$eEd{e#f=tfAV z=@vF~6?}~)&N5NI!xCkXHI%g2c`Oni&8O0z=EuovH$r8M()6@ZWkI_rH__Sqn2!n= z%CmhA#<3C&Ss@Pl6+_S|H;6^NIi3nZLv2ZuJ+I%qC(3@FtIgjUclJiq5SEHZ!tg zE*({*%afYn=S?n~F)uhjF81t=9#Lon-0p4w+?Mtvbm$rM@_lR>eZspADs^`{WN^1T zsN~(|@PoU>;Scv8jsUnD916JW9JWAsuR4O@zT^moyVel`ca{t?lOlG zZiOQP?h;2N+(nMwaIKDLxbqw_aLXLAaG!R>!JX-dhda%Y0QX5pAGlK-ec?`W@Nge- zsNha;sBQ2{92&UAjzqYHjwHB7M?biEj{b1_~%~?idJn zpkokRts?_&vLh32lH*~xYR6!>eH}yK#yf_>jd45#x0fReZj@sfZ-ba{3`Zo?kqtM< zF#>LYBOk8ZF&ZxGFv9hoE`Zy9+5}fTT?n`JbQIjXr+dQv&*>g;e?Q#|?v2xL!~N~_ zcDO&E9tF4YbP?R|PMhI=eYzO#m#4?Ty>fa2?<)|Tr<2Tav(s)g|uMLHaZ_4!v$4@0zYXUfD)=1EH#FP94 zI~WY`QF=e{95FO~bJN8nawR{A3cCQwKv(YAk2@DueDUbn(jG$EZ?*L+`I8Ka`#-bX zdSv0zn8J0~(anip4w<#6|CpqlaXo9TC%uC2r1c~{=ygl0c=Kw@AJXdA{srOxC9Ozy zvWk6*JOTIb#FnfLfOMd;gH$IE3ICI%kOW0*@+&=hoqR%+n`s+NIisg5Ze23jl=3gO zoII8Kbown%wx!4zXZh;+=-FQ37f)!dy!OZfNbjm7zE77eG$ukgH= zg_<2;@(SPEfI_vpS6Cz!qoFGu{eT#N&}<+Es5C(QM8cCJZK{MvLv>Obix4G}YILt~ zRBAE|p*D#$8Zt^HXz0BTRvjjF>ud*vl8@#4dxeiZtXd9b?G=u9z@Wf;g>O4Jo&ox` z4o2EkdWAw#m^LVxj?NJWJru}sDClWqR8)_9g}@H#V>8%1g7FGm2icz1BYji{C$*H_ zK@~bZA$Wx$n2$p{?z^BQ#`DIcYOgS$16nBkj>{{gl3&wO*iT6Kz%em*+L1af*?3lz zzwQ-W?O3J@k}()Rki`QBu@}hhfn$2_lyI_)vr4_fHVGpO7@JAppmdxbvIos!jfdYG z6wWG-i70O64xYMxQ125IwdA}`ozertomCS!MsD0FKF+T&unj)pZR~aZOo^aslY5o; zxIXKYSJ*%z(tF!-+;o?pV#>W6%c2KvR@D#es&xC*dDxkIg)}K&Q%FauzZ6y%su5PX z)x{+(M;2AVQp1~OfYNApNsB(SlU~Wa<^5@t9m2k zYvY5A`unePD={K%q&i*8J-d&5pRQ-mkiHo`r+(NrSSqK#doLmb_y^jOrR^0R!1vqu z&aD>0JKJdOJyfZ{+13?KM))6HVcMg0Z8B97{Htwr8%BG!mXHi>?(lY29j=N-d`Np| z?IkUBxn5zGRJIhS46jhyR?@=cMwn5Vr*66m6reJuoh~gJdJ{Eth89a9x-yPQcr@fE;nC3Au3Wja$fmYw zyB1lCn=Z2cpzIM~U3)cR7l~Y2+NIuQuttdkZJ{ExS20w)piaHq-b7RBrp_z8 zgyRU+5Oj&Z9try&U=Y?wIJ%-YDQmn!mWY{a7>UD*SI8ivhV-?mkz!9DijF=d4l&0Y zV=e1s9aoVyJ{@UOM2%&OyyNPiB3+>l@nBJh5Y6#NC|wG%Seo_)bmrxYiA7PCt!&3t z{e9a)lS*sy2zPxYEqA8VS(J>}EuU4b$9Q_6LFqv%Nsi!;_q@^KO-W-k8SKLa~Z!QbU#3QyEn##W5dsk;ZO?jRS%gs*d?Ut)T zK-CoZB~1tQ9^r59K$9FiodBUp2iYS8(?dDgmaFxn+l6xSS#BD8<#2oMWY$mGLy*aN z580^jW8{p!1j@ZX&X^v-)P^;@AQ6@4wIvo^woHLI@CxT(G~!g0onzZLbzcY|kMJ{u zdx*rq{5F>N2;a4Ngr(R@{FqLa)VprF!Z@grD3sdfrp5?5(3?SW1m@S{UK|Nk!U3Ng zo48FkfuOd z719*g7I=hTL~2^2Q=!65Ek=~`d^a_%(V>3^X`vG3!zE?Lq3k7*lk|y4D3$ufqlX`f zv|o?)L&rqybbd^yl1YP(eFV)%yM~#Dj=}bVP)`y#+7T6E4*M#kC@252n4GaIuIH>B z;!N`0Xw`b-tHUfxSt~PRtEK*4sOIC?9il}S?O;_a#92zZZKrZW5*9c{L{P(ovM8P! zFNj!1E*O(Sa+EQ(bc^31l$|1?vAAH7CmAH3_4uJf^E|u-RC#8VT2Fn8A-&$UAZ2C@ zrXjlYjnWBakCj>rXdXQxjVSRqjwsG9-yqH*FBSC7nXhBCkHAj7Q1{YdPQ6MTpk~!8 z#d-Yj@|EJ;(v{*IzD9gjwM(?}8^rm1WHmc{CH$yrHhZPGkhltxhRoNoTDijy_K=0T zPh1;O1D7gyuu@%@Tm!3F%?5EUqo`)I)eWo$Eo5vE=aF1f%v1Aqs5|`#>fU;2i{X3& zgF5Ex-s(C+P?k{E&?yV6r^c^XQ|f1qv2+NtylV^OW=(0ku)xDOI{GqM^36?sBdS06 z{-K%RpDA}}XPt5*uT~Ux2-O~59Z<*{ zJ7BBT)$&M{7t)o~A?!M(Jk{t6SN!q;?vwYEC5122O9HNF;1i4Zu&!w^=^L|8G@YL{fSI)<^(K{Kp6NbfoR?F$9HL|lwZ zunK;1HL%GmMZIn1x~OV;%hTeLo7=$?%8%sz*f#@A0IFMP`44;n(q%;jPp>G-A!`@& zvOnE}&~lT2ABd?{&M&N;R87Q6KDE}rD6%{t^-YXathGw4WUK|zRyXbhC_X5(@d>z0 zs;K_@88$VffrxfKwfeHSQoqYT-@zotTUX!`p$e&nK0S)RdYVmDeI-xs+t6IAE@v|o zsmTt7`inzqD{XQMu3h{ZE{kh;w12u`$~r}Fm?*dCy_p3ZF5gf3jTuom)5{m;-c>Pv zO?H2u@QtsJ`P@BygkKZSMH{O`qC9u6E&?e@RpP5kA}+zOZx}ZWhRVg`l4>!4<8D?* zn&pkJV;bxolQMEK7U<6nvDHE5>#iX4Z-8H1(UGhqF|MJ}wSdilJ%D3?ivSUD9iTWs zBF7qf(_6a;v$ZB-jKA^n4K9+-xf*d3nKL#n?loO@Ei*s?J;5}wjP(?ocn9~Y(#;up zXY6Zqx@VNU%x*sHD0zpqy=j%y-*Vb(1&E;Qlf~s&mG~Ot5e^)q=`k3Y?aEw?-0PTS zm@<4Mri#K5i^=c~#_)CJaOCY!M!?Nh239kw7|g#N5O+IynzQS_a(3~T#XUTmD*q}v zwE7zxH36S@&}l$^A0N;9k-!Oq*laRvLPEkje9=-SRo}GTez^6tP2cpUeMbc|9HLge zT-;6;O&G%3$@>%Hf-4zCEf{EBE>@DyCnSto%ga(#4RYL>IWbA)sZfcWyaBF4*2t*c zI4`q`b)x^o%g#O&~W{1tGL<FJ7p23#xo5&E2mXXVZJ#u@uo8h`5H#ELfo#~ z-8yd3B*UcKp>)-gXC6sl7n4^WiNTKhy+<-1YH0I^7V}q~zZdFH&HWeKLI(D`R(CIy z2}#}{^&kRcn$7HYZLffIW0|G^28LJ?@weUq@94I;){D=QL4S*3$C1Ln#RV?bUA$*d zY`|)o_ctv|$QyslRHb3p1RIBY`@nQ3)tA(EKBg@It%gbA0&@FrX|@5CXK$xfmR;*^ zbtT$VH4Xs>Hi)!$L!B2#$2gB-&Gte{xo&Iio~3p7I3=6KCciAv2@86gqEUZ$anxIe zBTntI`g?lZ!oGvs(j`2TItq3LwfmrfmJM;&urR06UAcEBt8bK+XPZtS@m1M|<_&;c?4gUJh%RNNy{8j`-Fy0B4-hPPsZ6mq##dk;_j!5wY77h19SIsoO~IlY{&}Jpj3JfGl}( zK(1Z+-HnLG?{38GjexE5mC`=dSHzX2=kMuzZ4eo06);U3>?{rpcI8Gx;kS<(4j3@+ z`?LMGi4WIZ5s#6dpG-Ahg)t?OY}2S+^i zCYGr?q`&I~I@7ezek#r6+*z?DaB`sG=HYamsiYH*H>7KwlEG)asvEY8fW#% zpKLzbYJcXk$k>w|@3u0t6wL~@U2wGxGwO_+uhSd6i{5G%?nE9C*oq1#JB!S5<#d}j zqf*usD)ZBxZYXIST~t+}ELYTi6L9NFu6e$3gBaLIYu+FR)Ro-)K1@@oXbuS|vE3{l z5q2xDPe=>%c=+ex54aI_D}>oBaigc_qAR0loh{1P(-u=Z;qO7UOxmLjKUIGF{F!@P zq>1M!(wekolE5P4&b+oEB?Z!)l`QC}up4 zv`x!xeIUT{(;2O;<*5TPV>XIvEY0SIjbb9hB;R&olbfedzmwqC{5A7rS-UX3jczeD zy1iwx+Wpg$=ag3ujSVxcHbAKLWBY9s2V*08z8Pi%G(ZROQy1Iso{QBCbg}$-%n$lV zh|UrEXo#+`M&g|Q8W-C^rsEl4KnGbnBT+r5eT2F0UXXrXB@v%fma4bI^aY*nH|#K@ zQtxROj)>%6GqQTUEv6WG<99a_G(N%Zsdv$=S40v&bGYeicMq({{y-6Qf z=nBRQp>p)h){=iIG90~`G*HxFNzZ<)V4%AzQXonvDn<&t?tC}TJHBm(Ow14(w_ZnAc zM`pB9#)hC<^tK#Uur@IE9>Y%wjLxH^FLH$R^qi{x37 z{C@|^F9*qd%kZ#bZ`y;J(%Q*U%Y1HV8|gQDXjo}AtW^Ly)vi^Ove~B43!Zp0j~jN{ z>>lEnZD#99a9KGs3u-EzAV}S zNl$(#OOH5N3aPAY9=#9Z_1NnGqM8$@eITGC@C;A=rHe^zayGf zI%gQHG9BN#q7QQlJs=ApDHozzFq!?CEM2gQy-3)F+CGOm_`I`+j$ofrt2xo7hK>Mx zA7H={Qnb*Bt?9aj>FhpI50{YEg`?R@lD(*cJx^*DJrg$RNatj+!!JKVGM+7FrxDw; zxxHJE@H@cY99!>*qzm~8A!HLJ0w+~?X^QGc&a zwpx6L=)RN8fKe@$1HVhVAUcGfeOjFJ z*{7f84EpYuk)2htysSK`DJgv}|>~5`> zHsqalTH%D|g<34rA8yB%O*#Jd?cQWiW#93UWi5Apla}gp-gnVve+)`kSDVYxCN-8# z^qhmP`WM*UxtsYbgIT`!hvSD)4l(2M3d+g0%28Z`hkRd|=x4|2;(HRXGzF)n^rgLH zw(BNZ_8Jt}x76QTE}PuPY%u5cEL@JUowhVHA)Eiy#SC&a&>IsGHpR>n+@M3ww_J2= zHpV!Zi9KmFa9$g}qh@_&d~x=n@w&H*RnY85Og;XbIyTs>QCGCAI9Wu_Gx zFw8It%CY#@yG{BxLpX|X$<1+! z&UO!YIrZv5e~E_o$$@3P*%)$RnaY-}qpd%E$6opN?XaLuDu#jzYH3w;97EklopYAf z-?K-p!P(;ApEi=FAA{=X#JpNQJEwa>X4S~b{fu-{*55O*PdMcjGRsWA{F|2(^>-I! zzG;YYF0ah1{Fq^HO^ir3SGU@eo+08e-5!Zivg$$uwZVSYzN__6*Nn-+0E{|L);`Zq z-LCu9#VqY%1_wCG0cwK5Q<(OzA;mg`IIk=?7*e*g?>)Rs7Clu4N@ux`F>Tr;EQMFu zVq;`xnpY*h!<=+=zhD|i{QjN}Zd6rjPSjUMH8q9*aiR=pJkqMP#X6T)^fK9od4$RB z`n!3&CU%m6+R7&7dW27E^>?3&ded;%Syd5IM0dU`z^z-@UVZO6(i&j_5tD>$IMkbLy_-ec^#P2zCf34_wfrSa$B-FL6+zt0`0o03YixB zN^DrE0IZ_vQ4o!~?j;kB3sGTNta%c9R#Gu(*SIC*UMQ<4vHymxPvgJu) z$}U?Wt|t@in$)@uj1o`B2DsZqA{Ol1uBP2fNi+aiw7y~(lB4!Wv_y2*BX51U;_ z4OE%6vMlbw(O78P2s&l8T5CMEcI)^RFeR+#ImvSO4*zZ|!Th4~hz{PWW3>FvYFXt* zQO`ikvohcX8=30Z>WyM96I~qvHEdU=SYaFkNx8b8E4KK5ah1`0?t*;nC5`qvSb$me zAHoUtf#pN8voU<5Fc_n8-g*6*L<|ijD$}~V`3u<}1f(5nNK;4{E~kvHHOgdCyFBip zt!BDAbyqDgxvqs?J~w2Ps1E0Z#dl?5FYJVB{nynzsG5IN3Rm^!U7S1E$J%p zo=%;A@t%Lu590RMSBNd+LT>5(N}8fWR*0?kjpC8%8^xLlA?^N~LfZW{-nZPgoDpND zokJe@iK0J@_4 zeYxVPFcfC~PvNJe!tKJeHa4lTOK;FePgIZI$6XD*i3quXFVSu^m1xJ3gLY%M@!#UX z+)t}tHu$$*Tb%3&G5WWDyFhIeg&scS;C@iSBE=dRmy$0E!9g@JJudFNc#!m8qhanHbU(N4bJQm^O2Uu! zE5Nw>;KHM2IJ|eiW$U?id{0iLzn?X3nxZ;?BKP2(s3-FM zKDaLYu;Z#YE`y%KCgPBMP8`SiaDMp9t6AwS+@cqT#D=NpL$JkC}hw zg`u{G)e}%fz4$Pkb|X8f2jT?e(x3=Z(iQv4mla1XU8y#xOjFP0_@+klmSLcC#?l#w$?#Xzwtf6c z=$hUzcoqRMTQV8FWtiXaG0>~*rw8htKR+MU1=)yS5_LGQ}_N<`kkE`4!kzy_|`)~4;stX9c}%|_7Z5;*52xpw3O(bw$j3h z)$1f<&W8=RDyC3tHqY>0VRc7m>b`~G6!W`BkuuZVK1DCBimU_iLt&T57mhZ!x#m0}|HwQIaP%Mh}5*1B_g zf~$Bh&L*8(vX$aaT~F6mTV{2z)RQPs{d0SUYXwLf2cd+~Aox9wVLXM61{(Leo5aaSpudH$YXzmE}PH5bLlGmxgc#s**Y z+sY1A+>&tv2SWbplBqc@^9(}d{)?~o;M=!}@jCxEruea&^KLp-?ZOxz+49n)r*qn) zv65Z5R-fvAshNhWJYR`H>1^i5aQ*jS^0i$POCPN6i()C~53GE5l9_&&5@(4k+g#xP zz6MM0TVQs|fuLLRNGc1~i~2|ndr=%mCcpfν;$c>@+9U5t2SAk?3xcPe$K>AUk& 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 HcGv$0M)R=< delta 21103 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%0A M@s1ZY4eaj!56(x*b^rhX diff --git a/panda/board/obj/panda_remote.bin.signed b/panda/board/obj/panda_remote.bin.signed index bfffeef84d0fe4046f7016bab693b2cbafec5a2d..dd0a3027a38298c03131dd8662ed1f7d065bd97b 100644 GIT binary patch delta 18910 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 KWzudg>;D0cDAoM{ delta 18304 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 G^8W!I=#6{; diff --git a/panda/board/safety/safety_gm.h b/panda/board/safety/safety_gm.h index ddb4786c9..c71a7b8c9 100644 --- a/panda/board/safety/safety_gm.h +++ b/panda/board/safety/safety_gm.h @@ -87,10 +87,16 @@ const uint16_t GM_PARAM_BOLT_2017 = 2048; const uint16_t GM_PARAM_BOLT_2022_PEDAL = 4096; const uint16_t GM_PARAM_REMOTE_START_BOOTS_COMMA = 8192; const uint16_t GM_PARAM_PANDA_3D1_SCHED = 16384; +const uint16_t GM_PARAM_PANDA_PADDLE_SCHED = 32768; const uint32_t GM_3D1_PERIOD_US = 100000U; const uint32_t GM_3D1_TX_OFFSET_US = 0U; const uint32_t GM_3D1_LOCK_TOLERANCE_US = 20000U; +const uint32_t GM_PADDLE_PERIOD_US = 25000U; +const uint32_t GM_PADDLE_TX_OFFSET_US = 0U; +const uint32_t GM_PADDLE_LOCK_TOLERANCE_US = 5000U; +const uint32_t GM_PADDLE_STALE_US = 100000U; +const uint32_t GM_PADDLE_FEED_STALE_US = 100000U; void can_send(CANPacket_t *to_push, uint8_t bus_number, bool skip_tx_hook); void can_set_checksum(CANPacket_t *packet); @@ -120,6 +126,7 @@ bool gm_ascm_int = false; bool gm_force_brake_c9 = false; bool gm_remote_start_boots_comma = false; bool gm_panda_3d1_sched = false; +bool gm_panda_paddle_sched = false; bool gm_3d1_spoof_valid = false; bool gm_3d1_internal_tx = false; @@ -128,6 +135,75 @@ uint32_t gm_3d1_next_tx_us = 0U; uint32_t gm_3d1_expected_stock_us = 0U; uint32_t gm_3d1_last_stock_us = 0U; bool gm_3d1_phase_locked = false; +bool gm_paddle_internal_tx = false; + +typedef struct { + bool spoof_valid; + uint8_t spoof_data[8]; + uint32_t next_tx_us; + uint32_t expected_stock_us; + uint32_t last_stock_us; + uint32_t last_feed_us; + bool phase_locked; +} GmPeriodicSpoofState; + +GmPeriodicSpoofState gm_bd_state = {0}; +GmPeriodicSpoofState gm_prndl2_state = {0}; + +static void gm_update_periodic_phase(GmPeriodicSpoofState *state, uint32_t now_us, uint32_t period_us, uint32_t lock_tolerance_us) { + state->last_stock_us = now_us; + if (!state->phase_locked) { + state->phase_locked = true; + state->expected_stock_us = now_us + period_us; + } else { + int32_t phase_err_us = (int32_t)(now_us - state->expected_stock_us); + if (phase_err_us < 0) { + phase_err_us = -phase_err_us; + } + + if ((uint32_t)phase_err_us <= lock_tolerance_us) { + state->expected_stock_us += period_us; + } else { + state->expected_stock_us = now_us + period_us; + } + } +} + +static bool gm_periodic_scheduler_ready(const GmPeriodicSpoofState *state, uint32_t now_us, uint32_t stale_us, uint32_t feed_stale_us) { + bool stock_stale = (state->last_stock_us == 0U) || (get_ts_elapsed(now_us, state->last_stock_us) > stale_us); + bool feed_stale = (state->last_feed_us == 0U) || (get_ts_elapsed(now_us, state->last_feed_us) > feed_stale_us); + return state->phase_locked && !stock_stale && !feed_stale; +} + +static void gm_try_send_periodic_spoof(uint32_t now_us, uint32_t addr, uint8_t dlc, GmPeriodicSpoofState *state, uint32_t period_us) { + if (!(gm_panda_paddle_sched && state->spoof_valid && (state->next_tx_us != 0U))) { + return; + } + + if (!gm_periodic_scheduler_ready(state, now_us, GM_PADDLE_STALE_US, GM_PADDLE_FEED_STALE_US)) { + return; + } + + if ((int32_t)(now_us - state->next_tx_us) < 0) { + return; + } + + CANPacket_t to_send = {0}; + to_send.returned = 0U; + to_send.rejected = 0U; + to_send.extended = 0U; + to_send.addr = addr; + to_send.bus = 0U; + to_send.data_len_code = dlc; + (void)memcpy(to_send.data, state->spoof_data, 8U); + can_set_checksum(&to_send); + + gm_paddle_internal_tx = true; + can_send(&to_send, 0U, false); + gm_paddle_internal_tx = false; + + state->next_tx_us += period_us; +} static void gm_try_send_3d1_spoof(uint32_t now_us) { if (!(gm_panda_3d1_sched && gm_3d1_spoof_valid && (gm_3d1_next_tx_us != 0U))) { @@ -259,6 +335,20 @@ static void gm_rx_hook(const CANPacket_t *to_push) { if (addr == 0xBD) { regen_braking = (GET_BYTE(to_push, 0) >> 4) != 0U; + + if (gm_panda_paddle_sched) { + uint32_t now_us = microsecond_timer_get(); + gm_update_periodic_phase(&gm_bd_state, now_us, GM_PADDLE_PERIOD_US, GM_PADDLE_LOCK_TOLERANCE_US); + gm_bd_state.next_tx_us = now_us + GM_PADDLE_TX_OFFSET_US; + gm_try_send_periodic_spoof(now_us, 0xBDU, 7U, &gm_bd_state, GM_PADDLE_PERIOD_US); + } + } + + if ((addr == 0x1F5) && gm_panda_paddle_sched) { + uint32_t now_us = microsecond_timer_get(); + gm_update_periodic_phase(&gm_prndl2_state, now_us, GM_PADDLE_PERIOD_US, GM_PADDLE_LOCK_TOLERANCE_US); + gm_prndl2_state.next_tx_us = now_us + GM_PADDLE_TX_OFFSET_US; + gm_try_send_periodic_spoof(now_us, 0x1F5U, 8U, &gm_prndl2_state, GM_PADDLE_PERIOD_US); } // Pedal Interceptor @@ -385,6 +475,23 @@ static bool gm_tx_hook(const CANPacket_t *to_send) { if (!controls_allowed && regen_apply) { tx = false; } + + if (gm_panda_paddle_sched && !gm_paddle_internal_tx) { + uint32_t now_us = microsecond_timer_get(); + if (tx) { + (void)memcpy(gm_bd_state.spoof_data, to_send->data, 7U); + gm_bd_state.spoof_data[7] = 0U; + gm_bd_state.spoof_valid = true; + gm_bd_state.last_feed_us = now_us; + if (gm_bd_state.next_tx_us == 0U) { + gm_bd_state.next_tx_us = now_us + GM_PADDLE_TX_OFFSET_US; + } + } + bool scheduler_ready = gm_periodic_scheduler_ready(&gm_bd_state, now_us, GM_PADDLE_STALE_US, GM_PADDLE_FEED_STALE_US); + if (scheduler_ready) { + tx = false; + } + } } // PRNDL2 regen check (7 for Gen0, Gen1. 5 For Gen2) @@ -394,6 +501,22 @@ static bool gm_tx_hook(const CANPacket_t *to_send) { if (!controls_allowed && prndl_apply) { tx = false; } + + if (gm_panda_paddle_sched && !gm_paddle_internal_tx) { + uint32_t now_us = microsecond_timer_get(); + if (tx) { + (void)memcpy(gm_prndl2_state.spoof_data, to_send->data, 8U); + gm_prndl2_state.spoof_valid = true; + gm_prndl2_state.last_feed_us = now_us; + if (gm_prndl2_state.next_tx_us == 0U) { + gm_prndl2_state.next_tx_us = now_us + GM_PADDLE_TX_OFFSET_US; + } + } + bool scheduler_ready = gm_periodic_scheduler_ready(&gm_prndl2_state, now_us, GM_PADDLE_STALE_US, GM_PADDLE_FEED_STALE_US); + if (scheduler_ready) { + tx = false; + } + } } return tx; } @@ -471,6 +594,7 @@ static safety_config gm_init(uint16_t param) { gm_force_brake_c9 = GET_FLAG(param, GM_PARAM_FORCE_BRAKE_C9); gm_remote_start_boots_comma = GET_FLAG(param, GM_PARAM_REMOTE_START_BOOTS_COMMA); gm_panda_3d1_sched = GET_FLAG(param, GM_PARAM_PANDA_3D1_SCHED) && gm_pedal_long && !gm_has_acc && !gm_bolt_2022_pedal; + gm_panda_paddle_sched = GET_FLAG(param, GM_PARAM_PANDA_PADDLE_SCHED) && gm_pedal_long && enable_gas_interceptor; gm_3d1_spoof_valid = false; gm_3d1_internal_tx = false; @@ -478,6 +602,23 @@ static safety_config gm_init(uint16_t param) { gm_3d1_expected_stock_us = 0U; gm_3d1_last_stock_us = 0U; gm_3d1_phase_locked = false; + gm_paddle_internal_tx = false; + + gm_bd_state.spoof_valid = false; + gm_bd_state.next_tx_us = 0U; + gm_bd_state.expected_stock_us = 0U; + gm_bd_state.last_stock_us = 0U; + gm_bd_state.last_feed_us = 0U; + gm_bd_state.phase_locked = false; + (void)memset(gm_bd_state.spoof_data, 0, sizeof(gm_bd_state.spoof_data)); + + gm_prndl2_state.spoof_valid = false; + gm_prndl2_state.next_tx_us = 0U; + gm_prndl2_state.expected_stock_us = 0U; + gm_prndl2_state.last_stock_us = 0U; + gm_prndl2_state.last_feed_us = 0U; + gm_prndl2_state.phase_locked = false; + (void)memset(gm_prndl2_state.spoof_data, 0, sizeof(gm_prndl2_state.spoof_data)); safety_config ret = BUILD_SAFETY_CFG(gm_rx_checks, GM_ASCM_TX_MSGS); if (gm_hw == GM_CAM) { diff --git a/panda/python/__init__.py b/panda/python/__init__.py index 4a99c58e7..cc224baf5 100644 --- a/panda/python/__init__.py +++ b/panda/python/__init__.py @@ -244,6 +244,7 @@ class Panda: FLAG_GM_BOLT_2022_PEDAL = 4096 FLAG_GM_REMOTE_START_BOOTS_COMMA = 8192 FLAG_GM_PANDA_3D1_SCHED = 16384 + FLAG_GM_PANDA_PADDLE_SCHED = 32768 FLAG_FORD_LONG_CONTROL = 1 FLAG_FORD_CANFD = 2 diff --git a/selfdrive/car/gm/carcontroller.py b/selfdrive/car/gm/carcontroller.py index 5be506e5b..7b667a9df 100644 --- a/selfdrive/car/gm/carcontroller.py +++ b/selfdrive/car/gm/carcontroller.py @@ -15,7 +15,6 @@ from openpilot.selfdrive.car.gm.values import CAR, DBC, AccState, CanBus, CarCon from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.controls.lib.drive_helpers import apply_deadzone from openpilot.selfdrive.controls.lib.vehicle_model import ACCELERATION_DUE_TO_GRAVITY -from openpilot.common.swaglog import cloudlog VisualAlert = car.CarControl.HUDControl.VisualAlert NetworkLocation = car.CarParams.NetworkLocation @@ -27,15 +26,6 @@ TransmissionType = car.CarParams.TransmissionType CAMERA_CANCEL_DELAY_FRAMES = 10 # Enforce a minimum interval between steering messages to avoid a fault MIN_STEER_MSG_INTERVAL_MS = 15 -# Two‑sided spacing tuned for ~33 Hz steer; target a 10 ms wide window per interval -# Paddle spoofing and scheduling constants -PADDLE_STEER_GAP_MIN_NS = 5_000_000 # ≥5 ms each side (EPS guard) -PADDLE_STEER_GAP_MAX_NS = 12_000_000 # cap for long intervals -PADDLE_GAP_TARGET_NS = 5_000_000 # aim per‑side gap even if interval//2 − early is larger -PADDLE_NONBLOCK_GAP_NS = 1_000_000 # ≥1 ms since last paddle send -PADDLE_SLOT_EARLY_NS = 1_000_000 # allow firing up to 1 ms before slot -OVERFLOW_THRESH = 1.00 # fire one extra slot whenever credits ≥ 1.0 -PADDLE_TARGET_HZ = 42.0 # desired paddle rate (Hz) when regen active; steer is ~33 Hz # Constants for pitch compensation BRAKE_PITCH_FACTOR_BP = [5., 10.] # [m/s] smoothly revert to planned accel at low speeds BRAKE_PITCH_FACTOR_V = [0., 1.] # [unitless in [0,1]]; don't touch @@ -52,10 +42,6 @@ class CarController(CarControllerBase): self.frame = 0 self.last_steer_frame = 0 self.last_steer_ts_ns = 0 - self.last_regen_active = False - self.prev_steer_ts_ns = 0 - self.last_spoof_ts_ns = 0 - self.last_paddle_ts_ns = 0 self.last_button_frame = 0 self.cancel_counter = 0 self.pedal_steady = 0. @@ -93,14 +79,7 @@ class CarController(CarControllerBase): self.aego = 0.0 self.regen_paddle_timer = 0 self.planner_regen_hold = False - - - - # Midpoint + overflow spoof accumulator and flags - self.spoof_accum = 0.0 - self.spoof_mid_sent = False - self.spoof_over_sent = False - self.last_interval_ns = 0 + self.paddle_handoff_frames = 0 def calc_pedal_command(self, accel: float, long_active: bool, car_velocity) -> Tuple[float, bool]: if not long_active: @@ -192,7 +171,6 @@ class CarController(CarControllerBase): # Send CAN commands. can_sends = [] - paddle_sends = [] if self.CP.carFingerprint == CAR.CHEVROLET_MALIBU_HYBRID_CC: phase_map = gmcan.malibu_phase_map_for_acc(CS.cruise_buttons) @@ -208,113 +186,24 @@ class CarController(CarControllerBase): self.CP.enableGasInterceptor and (self.regen_paddle_timer >= 10 or self.planner_regen_hold) # hysteresis or planner hint ) - regen_active = raw_regen_active + use_panda_paddle_sched = ( + self.CP.enableGasInterceptor and + self.CP.carFingerprint in CC_REGEN_PADDLE_CAR and + self.CP.openpilotLongitudinalControl and + bool(self.CP.flags & GMFlags.PEDAL_LONG.value) + ) + if use_panda_paddle_sched: + if CC.enabled: + self.paddle_handoff_frames = 2 + paddle_sched_feed_active = CC.enabled or (self.paddle_handoff_frames > 0) + if not CC.enabled and self.paddle_handoff_frames > 0: + self.paddle_handoff_frames -= 1 + else: + self.paddle_handoff_frames = 0 + paddle_sched_feed_active = False - # === Spoof scheduling: midpoint + overflow (~target Hz) === - # Rising-edge reset on regen start - if raw_regen_active and not self.last_regen_active: - self.prev_steer_ts_ns = self.last_steer_ts_ns - self.last_spoof_ts_ns = 0 - self.spoof_accum = 0.0 - self.spoof_mid_sent = False - self.spoof_over_sent = False - - if raw_regen_active: - # Interval between last two bus-0 steer sends - interval_ns = self.last_steer_ts_ns - self.prev_steer_ts_ns - - # Adaptive two‑sided gap sized to the current steer interval, but capped to a target so the window stays wide enough - gap_ns = (PADDLE_STEER_GAP_MIN_NS if interval_ns <= 0 else - max(PADDLE_STEER_GAP_MIN_NS, - min(PADDLE_STEER_GAP_MAX_NS, - min((interval_ns // 2) - PADDLE_SLOT_EARLY_NS, PADDLE_GAP_TARGET_NS)))) - - # New steer interval? clear per-interval flags and add credits to reach target Hz - if interval_ns != self.last_interval_ns: - self.spoof_mid_sent = False - self.spoof_over_sent = False - self.last_interval_ns = interval_ns - # Add credits once per new steer interval to reach the desired paddle rate - if interval_ns > 0: - steer_hz = 1e9 / float(interval_ns) - extra_needed = max(0.0, (PADDLE_TARGET_HZ / steer_hz) - 1.0) # e.g., 42/33 − 1 ≈ 0.2727 - self.spoof_accum += extra_needed - - # Midpoint spoof: one per interval - if not self.spoof_mid_sent and interval_ns > 0: - midpoint_ns = self.prev_steer_ts_ns + interval_ns // 2 - # Compute spacing to last and next steer (two-sided guard) - next_steer_ts_ns = self.last_steer_ts_ns + interval_ns if interval_ns > 0 else 0 - delta_after_ns = now_nanos - self.last_steer_ts_ns - delta_before_ns = (next_steer_ts_ns - now_nanos) if interval_ns > 0 else 1_000_000_000 - if (CS.out.vEgo > 2.68 - and now_nanos >= (midpoint_ns - PADDLE_SLOT_EARLY_NS) - and delta_after_ns >= gap_ns - and delta_before_ns >= gap_ns): - # Non-blocking 1 ms spacing for paddle frames - if now_nanos - self.last_paddle_ts_ns >= PADDLE_NONBLOCK_GAP_NS: - paddle_sends.append(gmcan.create_prndl2_command(self.packer_pt, CanBus.POWERTRAIN, True, self.CP)) - paddle_sends.append(gmcan.create_regen_paddle_command(self.packer_pt, CanBus.POWERTRAIN, True)) - self.last_paddle_ts_ns = now_nanos - self.last_spoof_ts_ns = now_nanos - self.spoof_mid_sent = True - - # Overflow spoof: insert extra when accumulator allows - if self.spoof_accum >= OVERFLOW_THRESH and not self.spoof_over_sent and interval_ns > 0: - slot2_ns = self.prev_steer_ts_ns + (interval_ns * 2) // 3 - # Two-sided spacing relative to steer - next_steer_ts_ns = self.last_steer_ts_ns + interval_ns if interval_ns > 0 else 0 - delta_after_ns = now_nanos - self.last_steer_ts_ns - delta_before_ns = (next_steer_ts_ns - now_nanos) if interval_ns > 0 else 1_000_000_000 - if (CS.out.vEgo > 2.68 - and now_nanos >= (slot2_ns - PADDLE_SLOT_EARLY_NS) - and delta_after_ns >= gap_ns - and delta_before_ns >= gap_ns): - # Non-blocking 1 ms spacing for paddle frames - if now_nanos - self.last_paddle_ts_ns >= PADDLE_NONBLOCK_GAP_NS: - paddle_sends.append(gmcan.create_prndl2_command(self.packer_pt, CanBus.POWERTRAIN, True, self.CP)) - paddle_sends.append(gmcan.create_regen_paddle_command(self.packer_pt, CanBus.POWERTRAIN, True)) - self.last_paddle_ts_ns = now_nanos - self.last_spoof_ts_ns = now_nanos - self.spoof_over_sent = True - self.spoof_accum -= OVERFLOW_THRESH - # === End Spoof scheduling === - - # === Off-pulse scheduling on regen release === - if not raw_regen_active and self.last_regen_active: - # schedule two off-slots at 1/3 and 2/3 of the last steer interval - if self.prev_steer_ts_ns and self.last_steer_ts_ns: - intv = self.last_steer_ts_ns - self.prev_steer_ts_ns - self.off_schedule_ns = [ - self.prev_steer_ts_ns + intv // 3, - self.prev_steer_ts_ns + (2 * intv) // 3 - ] - self.off_sent = [False, False] - - if hasattr(self, "off_schedule_ns"): - for i, t_ns in enumerate(self.off_schedule_ns): - if not self.off_sent[i] and now_nanos >= (t_ns - PADDLE_SLOT_EARLY_NS): - # Two-sided spacing to steer before sending - interval_ns = self.last_steer_ts_ns - self.prev_steer_ts_ns - gap_ns = (PADDLE_STEER_GAP_MIN_NS if interval_ns <= 0 else - max(PADDLE_STEER_GAP_MIN_NS, - min(PADDLE_STEER_GAP_MAX_NS, - min((interval_ns // 2) - PADDLE_SLOT_EARLY_NS, PADDLE_GAP_TARGET_NS)))) - next_steer_ts_ns = self.last_steer_ts_ns + interval_ns if interval_ns > 0 else 0 - delta_after_ns = now_nanos - self.last_steer_ts_ns - delta_before_ns = (next_steer_ts_ns - now_nanos) if interval_ns > 0 else 1_000_000_000 - if (delta_after_ns >= gap_ns and delta_before_ns >= gap_ns): - # Non-blocking 1 ms spacing for paddle frames - if now_nanos - self.last_paddle_ts_ns >= PADDLE_NONBLOCK_GAP_NS: - paddle_sends.append(gmcan.create_prndl2_command(self.packer_pt, CanBus.POWERTRAIN, False, self.CP)) - paddle_sends.append(gmcan.create_regen_paddle_command(self.packer_pt, CanBus.POWERTRAIN, False)) - self.last_paddle_ts_ns = now_nanos - self.off_sent[i] = True - # clean up once both off pulses are sent - if hasattr(self, "off_sent") and all(self.off_sent): - del self.off_schedule_ns - del self.off_sent - # === End off-pulse scheduling === + # Preserve existing on-send gate: only send "pressed" while above low-speed threshold. + paddle_spoof_pressed = raw_regen_active and (CS.out.vEgo > 2.68) # Steering (Active: 50Hz, inactive: 10Hz) steer_step = self.params.STEER_STEP if CC.latActive else self.params.INACTIVE_STEER_STEP @@ -347,27 +236,12 @@ class CarController(CarControllerBase): if (self.CP.flags & GMFlags.CC_LONG.value) and CC.enabled and not CS.out.cruiseState.enabled: # Send 0 so Panda doesn't error apply_steer = 0 - # shift previous steer timestamp - self.prev_steer_ts_ns = self.last_steer_ts_ns self.last_steer_ts_ns = now_nanos self.last_steer_frame = self.frame self.apply_steer_last = apply_steer idx = self.lka_steering_cmd_counter % 4 can_sends.append(gmcan.create_steering_control(self.packer_pt, CanBus.POWERTRAIN, apply_steer, idx, CC.latActive)) - # Update regen_active state and last_regen_paddle_pressed for next loop - self.last_regen_active = regen_active - self.last_regen_paddle_pressed = self.regen_paddle_pressed or self.planner_regen_hold - - if paddle_sends: - interval_ns = self.last_steer_ts_ns - self.prev_steer_ts_ns - flush_gap_ns = (PADDLE_STEER_GAP_MIN_NS if interval_ns <= 0 else - max(PADDLE_STEER_GAP_MIN_NS, - min(PADDLE_STEER_GAP_MAX_NS, - min((interval_ns // 2) - PADDLE_SLOT_EARLY_NS, PADDLE_GAP_TARGET_NS)))) - if now_nanos - self.last_steer_ts_ns >= flush_gap_ns: - can_sends.extend(paddle_sends) - spoof_ecm_cruise_cars = { CAR.CHEVROLET_BOLT_CC_2017, CAR.CHEVROLET_BOLT_CC_2019_2021, @@ -462,6 +336,10 @@ class CarController(CarControllerBase): idx = (self.frame // 4) % 4 + if paddle_sched_feed_active: + can_sends.append(gmcan.create_prndl2_command(self.packer_pt, CanBus.POWERTRAIN, paddle_spoof_pressed, self.CP)) + can_sends.append(gmcan.create_regen_paddle_command(self.packer_pt, CanBus.POWERTRAIN, paddle_spoof_pressed)) + if self.CP.flags & GMFlags.CC_LONG.value: if CC.longActive and CS.out.cruiseState.enabled and CS.out.vEgo > self.CP.minEnableSpeed: # Using extend instead of append since the message is only sent intermittently diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 6c8d5af81..551b5dec3 100644 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -7,7 +7,7 @@ from panda import Panda from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car import create_button_events, get_safety_config from openpilot.selfdrive.car.gm.radar_interface import RADAR_HEADER_MSG -from openpilot.selfdrive.car.gm.values import CAR, CruiseButtons, CarControllerParams, EV_CAR, CAMERA_ACC_CAR, CanBus, GMFlags, CC_ONLY_CAR, SDGM_CAR, ASCM_INT, set_red_panda_canbus +from openpilot.selfdrive.car.gm.values import CAR, CruiseButtons, CarControllerParams, EV_CAR, CAMERA_ACC_CAR, CanBus, GMFlags, CC_ONLY_CAR, SDGM_CAR, ASCM_INT, CC_REGEN_PADDLE_CAR, set_red_panda_canbus from openpilot.selfdrive.car.interfaces import CarInterfaceBase, TorqueFromLateralAccelCallbackType, FRICTION_THRESHOLD, LateralAccelFromTorqueCallbackType, get_friction_threshold from openpilot.selfdrive.controls.lib.drive_helpers import get_friction @@ -556,6 +556,15 @@ class CarInterface(CarInterfaceBase): if use_panda_3d1_sched: gm_safety_cfg.safetyParam |= Panda.FLAG_GM_PANDA_3D1_SCHED + use_panda_paddle_sched = ( + ret.openpilotLongitudinalControl and + ret.enableGasInterceptor and + bool(ret.flags & GMFlags.PEDAL_LONG.value) and + candidate in CC_REGEN_PADDLE_CAR + ) + if use_panda_paddle_sched: + gm_safety_cfg.safetyParam |= Panda.FLAG_GM_PANDA_PADDLE_SCHED + return ret # returns a car.CarState