|  |  |  | @ -69,6 +69,7 @@ class CarState(CarStateBase): | 
			
		
	
		
			
				
					|  |  |  |  |                         cp.vl["BodyInfo"]["DOOR_OPEN_FL"]]) | 
			
		
	
		
			
				
					|  |  |  |  |     ret.steerFaultPermanent = cp.vl["Steering_Torque"]["Steer_Error_1"] == 1 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     cp_es_distance = cp_body if self.car_fingerprint in GLOBAL_GEN2 else cp_cam | 
			
		
	
		
			
				
					|  |  |  |  |     if self.car_fingerprint in PREGLOBAL_CARS: | 
			
		
	
		
			
				
					|  |  |  |  |       self.cruise_button = cp_cam.vl["ES_Distance"]["Cruise_Button"] | 
			
		
	
		
			
				
					|  |  |  |  |       self.ready = not cp_cam.vl["ES_DashStatus"]["Not_Ready_Startup"] | 
			
		
	
	
		
			
				
					|  |  |  | @ -76,10 +77,13 @@ class CarState(CarStateBase): | 
			
		
	
		
			
				
					|  |  |  |  |       ret.steerFaultTemporary = cp.vl["Steering_Torque"]["Steer_Warning"] == 1 | 
			
		
	
		
			
				
					|  |  |  |  |       ret.cruiseState.nonAdaptive = cp_cam.vl["ES_DashStatus"]["Conventional_Cruise"] == 1 | 
			
		
	
		
			
				
					|  |  |  |  |       ret.cruiseState.standstill = cp_cam.vl["ES_DashStatus"]["Cruise_State"] == 3 | 
			
		
	
		
			
				
					|  |  |  |  |       ret.stockFcw = cp_cam.vl["ES_LKAS_State"]["LKAS_Alert"] == 2 | 
			
		
	
		
			
				
					|  |  |  |  |       ret.stockFcw = (cp_cam.vl["ES_LKAS_State"]["LKAS_Alert"] == 1) or \ | 
			
		
	
		
			
				
					|  |  |  |  |                      (cp_cam.vl["ES_LKAS_State"]["LKAS_Alert"] == 2) | 
			
		
	
		
			
				
					|  |  |  |  |       # 8 is known AEB, there are a few other values related to AEB we ignore | 
			
		
	
		
			
				
					|  |  |  |  |       ret.stockAeb = (cp_es_distance.vl["ES_Brake"]["AEB_Status"] == 8) and \ | 
			
		
	
		
			
				
					|  |  |  |  |                      (cp_es_distance.vl["ES_Brake"]["Brake_Pressure"] != 0) | 
			
		
	
		
			
				
					|  |  |  |  |       self.es_lkas_state_msg = copy.copy(cp_cam.vl["ES_LKAS_State"]) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     cp_es_distance = cp_body if self.car_fingerprint in GLOBAL_GEN2 else cp_cam | 
			
		
	
		
			
				
					|  |  |  |  |     self.es_distance_msg = copy.copy(cp_es_distance.vl["ES_Distance"]) | 
			
		
	
		
			
				
					|  |  |  |  |     self.es_dashstatus_msg = copy.copy(cp_cam.vl["ES_DashStatus"]) | 
			
		
	
		
			
				
					|  |  |  |  |     if self.CP.flags & SubaruFlags.SEND_INFOTAINMENT: | 
			
		
	
	
		
			
				
					|  |  |  | @ -106,6 +110,18 @@ class CarState(CarStateBase): | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     return signals, checks | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   @staticmethod | 
			
		
	
		
			
				
					|  |  |  |  |   def get_global_es_brake_signals(): | 
			
		
	
		
			
				
					|  |  |  |  |     signals = [ | 
			
		
	
		
			
				
					|  |  |  |  |       ("AEB_Status", "ES_Brake"), | 
			
		
	
		
			
				
					|  |  |  |  |       ("Brake_Pressure", "ES_Brake"), | 
			
		
	
		
			
				
					|  |  |  |  |     ] | 
			
		
	
		
			
				
					|  |  |  |  |     checks = [ | 
			
		
	
		
			
				
					|  |  |  |  |       ("ES_Brake", 20), | 
			
		
	
		
			
				
					|  |  |  |  |     ] | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     return signals, checks | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   @staticmethod | 
			
		
	
		
			
				
					|  |  |  |  |   def get_global_es_distance_signals(): | 
			
		
	
		
			
				
					|  |  |  |  |     signals = [ | 
			
		
	
	
		
			
				
					|  |  |  | @ -304,7 +320,9 @@ class CarState(CarStateBase): | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       if CP.carFingerprint not in GLOBAL_GEN2: | 
			
		
	
		
			
				
					|  |  |  |  |         signals += CarState.get_global_es_distance_signals()[0] | 
			
		
	
		
			
				
					|  |  |  |  |         signals += CarState.get_global_es_brake_signals()[0] | 
			
		
	
		
			
				
					|  |  |  |  |         checks += CarState.get_global_es_distance_signals()[1] | 
			
		
	
		
			
				
					|  |  |  |  |         checks += CarState.get_global_es_brake_signals()[1] | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       if CP.flags & SubaruFlags.SEND_INFOTAINMENT: | 
			
		
	
		
			
				
					|  |  |  |  |         signals += [ | 
			
		
	
	
		
			
				
					|  |  |  | @ -324,7 +342,9 @@ class CarState(CarStateBase): | 
			
		
	
		
			
				
					|  |  |  |  |     if CP.carFingerprint in GLOBAL_GEN2: | 
			
		
	
		
			
				
					|  |  |  |  |       signals, checks = CarState.get_common_global_signals() | 
			
		
	
		
			
				
					|  |  |  |  |       signals += CarState.get_global_es_distance_signals()[0] | 
			
		
	
		
			
				
					|  |  |  |  |       signals += CarState.get_global_es_brake_signals()[0] | 
			
		
	
		
			
				
					|  |  |  |  |       checks += CarState.get_global_es_distance_signals()[1] | 
			
		
	
		
			
				
					|  |  |  |  |       checks += CarState.get_global_es_brake_signals()[1] | 
			
		
	
		
			
				
					|  |  |  |  |       return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, 1) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     return None | 
			
		
	
	
		
			
				
					|  |  |  | 
 |