@ -5,6 +5,7 @@ from common.conversions import Conversions as CV 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					from  selfdrive . car . interfaces  import  CarStateBase  
					 
					 
					 
					from  selfdrive . car . interfaces  import  CarStateBase  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					from  opendbc . can . parser  import  CANParser  
					 
					 
					 
					from  opendbc . can . parser  import  CANParser  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					from  selfdrive . car . subaru . values  import  DBC ,  CAR ,  GLOBAL_GEN2 ,  PREGLOBAL_CARS ,  CanBus ,  SubaruFlags  
					 
					 
					 
					from  selfdrive . car . subaru . values  import  DBC ,  CAR ,  GLOBAL_GEN2 ,  PREGLOBAL_CARS ,  CanBus ,  SubaruFlags  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					from  selfdrive . car  import  CanSignalRateCalculator  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					class  CarState ( CarStateBase ) :  
					 
					 
					 
					class  CarState ( CarStateBase ) :  
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -13,6 +14,8 @@ class CarState(CarStateBase): 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    can_define  =  CANDefine ( DBC [ CP . carFingerprint ] [ " pt " ] )   
					 
					 
					 
					    can_define  =  CANDefine ( DBC [ CP . carFingerprint ] [ " pt " ] )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    self . shifter_values  =  can_define . dv [ " Transmission " ] [ " Gear " ]   
					 
					 
					 
					    self . shifter_values  =  can_define . dv [ " Transmission " ] [ " Gear " ]   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    self . angle_rate_calulator  =  CanSignalRateCalculator ( 50 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  def  update ( self ,  cp ,  cp_cam ,  cp_body ) :   
					 
					 
					 
					  def  update ( self ,  cp ,  cp_cam ,  cp_body ) :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ret  =  car . CarState . new_message ( )   
					 
					 
					 
					    ret  =  car . CarState . new_message ( )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -47,6 +50,11 @@ class CarState(CarStateBase): 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ret . gearShifter  =  self . parse_gear_shifter ( self . shifter_values . get ( can_gear ,  None ) )   
					 
					 
					 
					    ret . gearShifter  =  self . parse_gear_shifter ( self . shifter_values . get ( can_gear ,  None ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ret . steeringAngleDeg  =  cp . vl [ " Steering_Torque " ] [ " Steering_Angle " ]   
					 
					 
					 
					    ret . steeringAngleDeg  =  cp . vl [ " Steering_Torque " ] [ " Steering_Angle " ]   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    if  self . car_fingerprint  not  in  PREGLOBAL_CARS :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					      # ideally we get this from the car, but unclear if it exists. diagnostic software doesn't even have it   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					      ret . steeringRateDeg  =  self . angle_rate_calulator . update ( ret . steeringAngleDeg ,  cp . vl [ " Steering_Torque " ] [ " COUNTER " ] )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ret . steeringTorque  =  cp . vl [ " Steering_Torque " ] [ " Steer_Torque_Sensor " ]   
					 
					 
					 
					    ret . steeringTorque  =  cp . vl [ " Steering_Torque " ] [ " Steer_Torque_Sensor " ]   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ret . steeringTorqueEps  =  cp . vl [ " Steering_Torque " ] [ " Steer_Torque_Output " ]   
					 
					 
					 
					    ret . steeringTorqueEps  =  cp . vl [ " Steering_Torque " ] [ " Steer_Torque_Output " ]