|  |  |  | @ -8,7 +8,7 @@ from opendbc.can.parser import CANParser | 
			
		
	
		
			
				
					|  |  |  |  | from opendbc.can.can_define import CANDefine | 
			
		
	
		
			
				
					|  |  |  |  | from openpilot.selfdrive.car.hyundai.hyundaicanfd import CanBus | 
			
		
	
		
			
				
					|  |  |  |  | from openpilot.selfdrive.car.hyundai.values import HyundaiFlags, CAR, DBC, CAN_GEARS, CAMERA_SCC_CAR, \ | 
			
		
	
		
			
				
					|  |  |  |  |                                                    CANFD_CAR, EV_CAR, HYBRID_CAR, Buttons, CarControllerParams | 
			
		
	
		
			
				
					|  |  |  |  |                                                    CANFD_CAR, Buttons, CarControllerParams | 
			
		
	
		
			
				
					|  |  |  |  | from openpilot.selfdrive.car.interfaces import CarStateBase | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | PREV_BUTTON_SAMPLES = 8 | 
			
		
	
	
		
			
				
					|  |  |  | @ -36,8 +36,8 @@ class CarState(CarStateBase): | 
			
		
	
		
			
				
					|  |  |  |  |     else:  # preferred and elect gear methods use same definition | 
			
		
	
		
			
				
					|  |  |  |  |       self.shifter_values = can_define.dv["LVR12"]["CF_Lvr_Gear"] | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     self.accelerator_msg_canfd = "ACCELERATOR" if CP.carFingerprint in EV_CAR else \ | 
			
		
	
		
			
				
					|  |  |  |  |                                  "ACCELERATOR_ALT" if CP.carFingerprint in HYBRID_CAR else \ | 
			
		
	
		
			
				
					|  |  |  |  |     self.accelerator_msg_canfd = "ACCELERATOR" if CP.flags & HyundaiFlags.EV else \ | 
			
		
	
		
			
				
					|  |  |  |  |                                  "ACCELERATOR_ALT" if CP.flags & HyundaiFlags.HYBRID else \ | 
			
		
	
		
			
				
					|  |  |  |  |                                  "ACCELERATOR_BRAKE_ALT" | 
			
		
	
		
			
				
					|  |  |  |  |     self.cruise_btns_msg_canfd = "CRUISE_BUTTONS_ALT" if CP.flags & HyundaiFlags.CANFD_ALT_BUTTONS else \ | 
			
		
	
		
			
				
					|  |  |  |  |                                  "CRUISE_BUTTONS" | 
			
		
	
	
		
			
				
					|  |  |  | @ -120,8 +120,8 @@ class CarState(CarStateBase): | 
			
		
	
		
			
				
					|  |  |  |  |     ret.parkingBrake = cp.vl["TCS13"]["PBRAKE_ACT"] == 1 | 
			
		
	
		
			
				
					|  |  |  |  |     ret.accFaulted = cp.vl["TCS13"]["ACCEnable"] != 0  # 0 ACC CONTROL ENABLED, 1-3 ACC CONTROL DISABLED | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     if self.CP.carFingerprint in (HYBRID_CAR | EV_CAR): | 
			
		
	
		
			
				
					|  |  |  |  |       if self.CP.carFingerprint in HYBRID_CAR: | 
			
		
	
		
			
				
					|  |  |  |  |     if self.CP.flags & (HyundaiFlags.HYBRID | HyundaiFlags.EV): | 
			
		
	
		
			
				
					|  |  |  |  |       if self.CP.flags & HyundaiFlags.HYBRID: | 
			
		
	
		
			
				
					|  |  |  |  |         ret.gas = cp.vl["E_EMS11"]["CR_Vcu_AccPedDep_Pos"] / 254. | 
			
		
	
		
			
				
					|  |  |  |  |       else: | 
			
		
	
		
			
				
					|  |  |  |  |         ret.gas = cp.vl["E_EMS11"]["Accel_Pedal_Pos"] / 254. | 
			
		
	
	
		
			
				
					|  |  |  | @ -132,7 +132,7 @@ class CarState(CarStateBase): | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     # Gear Selection via Cluster - For those Kia/Hyundai which are not fully discovered, we can use the Cluster Indicator for Gear Selection, | 
			
		
	
		
			
				
					|  |  |  |  |     # as this seems to be standard over all cars, but is not the preferred method. | 
			
		
	
		
			
				
					|  |  |  |  |     if self.CP.carFingerprint in (HYBRID_CAR | EV_CAR): | 
			
		
	
		
			
				
					|  |  |  |  |     if self.CP.flags & (HyundaiFlags.HYBRID | HyundaiFlags.EV): | 
			
		
	
		
			
				
					|  |  |  |  |       gear = cp.vl["ELECT_GEAR"]["Elect_Gear_Shifter"] | 
			
		
	
		
			
				
					|  |  |  |  |     elif self.CP.carFingerprint in CAN_GEARS["use_cluster_gears"]: | 
			
		
	
		
			
				
					|  |  |  |  |       gear = cp.vl["CLU15"]["CF_Clu_Gear"] | 
			
		
	
	
		
			
				
					|  |  |  | @ -172,8 +172,8 @@ class CarState(CarStateBase): | 
			
		
	
		
			
				
					|  |  |  |  |     self.is_metric = cp.vl["CRUISE_BUTTONS_ALT"]["DISTANCE_UNIT"] != 1 | 
			
		
	
		
			
				
					|  |  |  |  |     speed_factor = CV.KPH_TO_MS if self.is_metric else CV.MPH_TO_MS | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     if self.CP.carFingerprint in (EV_CAR | HYBRID_CAR): | 
			
		
	
		
			
				
					|  |  |  |  |       offset = 255. if self.CP.carFingerprint in EV_CAR else 1023. | 
			
		
	
		
			
				
					|  |  |  |  |     if self.CP.flags & (HyundaiFlags.EV | HyundaiFlags.HYBRID): | 
			
		
	
		
			
				
					|  |  |  |  |       offset = 255. if self.CP.flags & HyundaiFlags.EV else 1023. | 
			
		
	
		
			
				
					|  |  |  |  |       ret.gas = cp.vl[self.accelerator_msg_canfd]["ACCELERATOR_PEDAL"] / offset | 
			
		
	
		
			
				
					|  |  |  |  |       ret.gasPressed = ret.gas > 1e-5 | 
			
		
	
		
			
				
					|  |  |  |  |     else: | 
			
		
	
	
		
			
				
					|  |  |  | @ -233,7 +233,7 @@ class CarState(CarStateBase): | 
			
		
	
		
			
				
					|  |  |  |  |     # It limits the vehicle speed, overridable by pressing the accelerator past a certain point. | 
			
		
	
		
			
				
					|  |  |  |  |     # The car will brake, but does not respect positive acceleration commands in this mode | 
			
		
	
		
			
				
					|  |  |  |  |     # TODO: find this message on ICE & HYBRID cars + cruise control signals (if exists) | 
			
		
	
		
			
				
					|  |  |  |  |     if self.CP.carFingerprint in EV_CAR: | 
			
		
	
		
			
				
					|  |  |  |  |     if self.CP.flags & HyundaiFlags.EV: | 
			
		
	
		
			
				
					|  |  |  |  |       ret.cruiseState.nonAdaptive = cp.vl["MANUAL_SPEED_LIMIT_ASSIST"]["MSLA_ENABLED"] == 1 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     self.prev_cruise_buttons = self.cruise_buttons[-1] | 
			
		
	
	
		
			
				
					|  |  |  | @ -278,7 +278,7 @@ class CarState(CarStateBase): | 
			
		
	
		
			
				
					|  |  |  |  |     if CP.enableBsm: | 
			
		
	
		
			
				
					|  |  |  |  |       messages.append(("LCA11", 50)) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     if CP.carFingerprint in (HYBRID_CAR | EV_CAR): | 
			
		
	
		
			
				
					|  |  |  |  |     if CP.flags & (HyundaiFlags.HYBRID | HyundaiFlags.EV): | 
			
		
	
		
			
				
					|  |  |  |  |       messages.append(("E_EMS11", 50)) | 
			
		
	
		
			
				
					|  |  |  |  |     else: | 
			
		
	
		
			
				
					|  |  |  |  |       messages += [ | 
			
		
	
	
		
			
				
					|  |  |  | @ -286,7 +286,7 @@ class CarState(CarStateBase): | 
			
		
	
		
			
				
					|  |  |  |  |         ("EMS16", 100), | 
			
		
	
		
			
				
					|  |  |  |  |       ] | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     if CP.carFingerprint in (HYBRID_CAR | EV_CAR): | 
			
		
	
		
			
				
					|  |  |  |  |     if CP.flags & (HyundaiFlags.HYBRID | HyundaiFlags.EV): | 
			
		
	
		
			
				
					|  |  |  |  |       messages.append(("ELECT_GEAR", 20)) | 
			
		
	
		
			
				
					|  |  |  |  |     elif CP.carFingerprint in CAN_GEARS["use_cluster_gears"]: | 
			
		
	
		
			
				
					|  |  |  |  |       pass | 
			
		
	
	
		
			
				
					|  |  |  | @ -330,7 +330,7 @@ class CarState(CarStateBase): | 
			
		
	
		
			
				
					|  |  |  |  |       ("DOORS_SEATBELTS", 4), | 
			
		
	
		
			
				
					|  |  |  |  |     ] | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     if CP.carFingerprint in EV_CAR: | 
			
		
	
		
			
				
					|  |  |  |  |     if CP.flags & HyundaiFlags.EV: | 
			
		
	
		
			
				
					|  |  |  |  |       messages += [ | 
			
		
	
		
			
				
					|  |  |  |  |         ("MANUAL_SPEED_LIMIT_ASSIST", 10), | 
			
		
	
		
			
				
					|  |  |  |  |       ] | 
			
		
	
	
		
			
				
					|  |  |  | 
 |