@ -12,7 +12,7 @@ int safety_ignition_hook(); 
			
		
	
		
		
			
				
					
					uint32_t  get_ts_elapsed ( uint32_t  ts ,  uint32_t  ts_last ) ; uint32_t  get_ts_elapsed ( uint32_t  ts ,  uint32_t  ts_last ) ;  
			
		
	
		
		
			
				
					
					int  to_signed ( int  d ,  int  bits ) ; int  to_signed ( int  d ,  int  bits ) ;  
			
		
	
		
		
			
				
					
					void  update_sample ( struct  sample_t  * sample ,  int  sample_new ) ; void  update_sample ( struct  sample_t  * sample ,  int  sample_new ) ;  
			
		
	
		
		
			
				
					
					int  max_limit_check ( int  val ,  const  int  MAX ) ; int  max_limit_check ( int  val ,  const  int  MAX ,  const  int  MIN ) ;  
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					int  dist_to_meas_check ( int  val ,  int  val_last ,  struct  sample_t  * val_meas , int  dist_to_meas_check ( int  val ,  int  val_last ,  struct  sample_t  * val_meas ,  
			
		
	
		
		
			
				
					
					  const  int  MAX_RATE_UP ,  const  int  MAX_RATE_DOWN ,  const  int  MAX_ERROR ) ;    const  int  MAX_RATE_UP ,  const  int  MAX_RATE_DOWN ,  const  int  MAX_ERROR ) ;   
			
		
	
		
		
			
				
					
					int  driver_limit_check ( int  val ,  int  val_last ,  struct  sample_t  * val_driver , int  driver_limit_check ( int  val ,  int  val_last ,  struct  sample_t  * val_driver ,  
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -149,8 +149,8 @@ void update_sample(struct sample_t *sample, int sample_new) { 
			
		
	
		
		
			
				
					
					  }    }   
			
		
	
		
		
			
				
					
					} }  
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					int  max_limit_check ( int  val ,  const  int  MAX )  { int  max_limit_check ( int  val ,  const  int  MAX ,  const  int  MIN )  {  
			
				
				
			
		
	
		
		
			
				
					
					  return  ( val  >  MAX )  |  ( val  <  - MAX ) ;    return  ( val  >  MAX )  | | ( val  <  MIN ) ;   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					} }  
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					// check that commanded value isn't too far from measured
 // check that commanded value isn't too far from measured
  
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -158,8 +158,8 @@ int dist_to_meas_check(int val, int val_last, struct sample_t *val_meas, 
			
		
	
		
		
			
				
					
					  const  int  MAX_RATE_UP ,  const  int  MAX_RATE_DOWN ,  const  int  MAX_ERROR )  {    const  int  MAX_RATE_UP ,  const  int  MAX_RATE_DOWN ,  const  int  MAX_ERROR )  {   
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					  // *** val rate limit check ***
    // *** val rate limit check ***
   
			
		
	
		
		
			
				
					
					  int16_t   highest_allowed_val  =  max ( val_last ,  0 )  +  MAX_RATE_UP ;    int  highest_allowed_val  =  max ( val_last ,  0 )  +  MAX_RATE_UP ;   
			
				
				
			
		
	
		
		
			
				
					
					  int16_t   lowest_allowed_val  =  min ( val_last ,  0 )  -  MAX_RATE_UP ;    int  lowest_allowed_val  =  min ( val_last ,  0 )  -  MAX_RATE_UP ;   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					  // if we've exceeded the meas val, we must start moving toward 0
    // if we've exceeded the meas val, we must start moving toward 0
   
			
		
	
		
		
			
				
					
					  highest_allowed_val  =  min ( highest_allowed_val ,  max ( val_last  -  MAX_RATE_DOWN ,  max ( val_meas - > max ,  0 )  +  MAX_ERROR ) ) ;    highest_allowed_val  =  min ( highest_allowed_val ,  max ( val_last  -  MAX_RATE_DOWN ,  max ( val_meas - > max ,  0 )  +  MAX_ERROR ) ) ;   
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -195,8 +195,8 @@ int driver_limit_check(int val, int val_last, struct sample_t *val_driver, 
			
		
	
		
		
			
				
					
					int  rt_rate_limit_check ( int  val ,  int  val_last ,  const  int  MAX_RT_DELTA )  { int  rt_rate_limit_check ( int  val ,  int  val_last ,  const  int  MAX_RT_DELTA )  {  
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					  // *** torque real time rate limit check ***
    // *** torque real time rate limit check ***
   
			
		
	
		
		
			
				
					
					  int16_t   highest_val  =  max ( val_last ,  0 )  +  MAX_RT_DELTA ;    int  highest_val  =  max ( val_last ,  0 )  +  MAX_RT_DELTA ;   
			
				
				
			
		
	
		
		
			
				
					
					  int16_t   lowest_val  =  min ( val_last ,  0 )  -  MAX_RT_DELTA ;    int  lowest_val  =  min ( val_last ,  0 )  -  MAX_RT_DELTA ;   
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					  // check for violation
    // check for violation
   
			
		
	
		
		
			
				
					
					  return  ( val  <  lowest_val )  | |  ( val  >  highest_val ) ;    return  ( val  <  lowest_val )  | |  ( val  >  highest_val ) ;