Update carcontroller.py

This commit is contained in:
firestar5683
2025-05-20 00:54:25 -05:00
parent 153758c88b
commit d732fe98ff
+16 -5
View File
@@ -59,6 +59,7 @@ class CarController(CarControllerBase):
self.accel_g = 0.0
self.regen_paddle_pressed = False
self.aego = 0.0
self.regen_disable_until = 0 # frame index until which regen spoof is blocked after a fault
def calc_pedal_command(self, accel: float, long_active: bool, car_velocity) -> Tuple[float, bool]:
if not long_active:
@@ -122,11 +123,16 @@ class CarController(CarControllerBase):
self.regen_paddle_pressed
)
# Send regen paddle and PRNDL2 commands at ~40Hz, avoiding steer frame timing
steer_phase = self.last_steer_frame % 5
send_paddle_and_prndl2 = (self.frame % 5) != steer_phase # Avoid steer frame
send_every_other = self.frame % 2 == 0 # ~50Hz -> ~40Hz
send_prndl_frame = send_paddle_and_prndl2 and send_every_other
# If longActive just dropped (EPS error), block regen spoof for a cooldown period
if not CC.longActive and getattr(self, "last_regen_active", False):
# block for 50 frames (~0.5s)
self.regen_disable_until = self.frame + 50
regen_active = regen_active and (self.frame >= self.regen_disable_until)
# Send regen paddle and PRNDL2 commands at ~66Hz, avoiding steer frame timing
steer_phase = self.last_steer_frame % 3
send_prndl_frame = (self.frame % 3) != steer_phase
press_regen_paddle = None
if regen_active and send_prndl_frame:
@@ -134,6 +140,11 @@ class CarController(CarControllerBase):
elif not regen_active and getattr(self, "last_regen_active", False):
press_regen_paddle = False
# Enforce at least 3-frame gap after last steer to avoid EPS faults
frames_since_last_steer = self.frame - self.last_steer_frame
if frames_since_last_steer < 3:
press_regen_paddle = None
if press_regen_paddle is not None:
can_sends.append(gmcan.create_prndl2_command(self.packer_pt, CanBus.POWERTRAIN, press_regen_paddle))
can_sends.append(gmcan.create_regen_paddle_command(self.packer_pt, CanBus.POWERTRAIN, press_regen_paddle))