|  |  | @ -270,6 +270,8 @@ void AnnotatedCameraWidget::updateState(const UIState &s) { | 
			
		
	
		
		
			
				
					
					|  |  |  |   const bool nav_alive = sm.alive("navInstruction") && sm["navInstruction"].getValid(); |  |  |  |   const bool nav_alive = sm.alive("navInstruction") && sm["navInstruction"].getValid(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   const auto cs = sm["controlsState"].getControlsState(); |  |  |  |   const auto cs = sm["controlsState"].getControlsState(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   const auto car_state = sm["carState"].getCarState(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   const auto nav_instruction = sm["navInstruction"].getNavInstruction(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   // Handle older routes where vCruiseCluster is not set
 |  |  |  |   // Handle older routes where vCruiseCluster is not set
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   float v_cruise =  cs.getVCruiseCluster() == 0.0 ? cs.getVCruise() : cs.getVCruiseCluster(); |  |  |  |   float v_cruise =  cs.getVCruiseCluster() == 0.0 ? cs.getVCruise() : cs.getVCruiseCluster(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -281,17 +283,17 @@ void AnnotatedCameraWidget::updateState(const UIState &s) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   // Handle older routes where vEgoCluster is not set
 |  |  |  |   // Handle older routes where vEgoCluster is not set
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   float v_ego; |  |  |  |   float v_ego; | 
			
		
	
		
		
			
				
					
					|  |  |  |   if (sm["carState"].getCarState().getVEgoCluster() == 0.0 && !v_ego_cluster_seen) { |  |  |  |   if (car_state.getVEgoCluster() == 0.0 && !v_ego_cluster_seen) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     v_ego = sm["carState"].getCarState().getVEgo(); |  |  |  |     v_ego = car_state.getVEgo(); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   } else { |  |  |  |   } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |     v_ego = sm["carState"].getCarState().getVEgoCluster(); |  |  |  |     v_ego = car_state.getVEgoCluster(); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     v_ego_cluster_seen = true; |  |  |  |     v_ego_cluster_seen = true; | 
			
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  |   float cur_speed = cs_alive ? std::max<float>(0.0, v_ego) : 0.0; |  |  |  |   float cur_speed = cs_alive ? std::max<float>(0.0, v_ego) : 0.0; | 
			
		
	
		
		
			
				
					
					|  |  |  |   cur_speed *= s.scene.is_metric ? MS_TO_KPH : MS_TO_MPH; |  |  |  |   cur_speed *= s.scene.is_metric ? MS_TO_KPH : MS_TO_MPH; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   auto speed_limit_sign = sm["navInstruction"].getNavInstruction().getSpeedLimitSign(); |  |  |  |   auto speed_limit_sign = nav_instruction.getSpeedLimitSign(); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |   float speed_limit = nav_alive ? sm["navInstruction"].getNavInstruction().getSpeedLimit() : 0.0; |  |  |  |   float speed_limit = nav_alive ? nav_instruction.getSpeedLimit() : 0.0; | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   speed_limit *= (s.scene.is_metric ? MS_TO_KPH : MS_TO_MPH); |  |  |  |   speed_limit *= (s.scene.is_metric ? MS_TO_KPH : MS_TO_MPH); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   setProperty("speedLimit", speed_limit); |  |  |  |   setProperty("speedLimit", speed_limit); | 
			
		
	
	
		
		
			
				
					|  |  | 
 |