| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -32,6 +32,11 @@ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include "cereal/gen/c/log.capnp.h" | 
					 | 
					 | 
					 | 
					#include "cereal/gen/c/log.capnp.h" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					// Calibration status values from controlsd.py
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#define CALIBRATION_UNCALIBRATED 0 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#define CALIBRATION_CALIBRATED 1 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#define CALIBRATION_INVALID 2 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define UI_BUF_COUNT 4 | 
					 | 
					 | 
					 | 
					#define UI_BUF_COUNT 4 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					typedef struct UIScene { | 
					 | 
					 | 
					 | 
					typedef struct UIScene { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -48,7 +53,6 @@ typedef struct UIScene { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  float mpc_y[50]; | 
					 | 
					 | 
					 | 
					  float mpc_y[50]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  bool world_objects_visible; | 
					 | 
					 | 
					 | 
					  bool world_objects_visible; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  // TODO(mgraczyk): Remove and use full frame for everything.
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  mat3 warp_matrix;           // transformed box -> frame.
 | 
					 | 
					 | 
					 | 
					  mat3 warp_matrix;           // transformed box -> frame.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  mat4 extrinsic_matrix;      // Last row is 0 so we can use mat4.
 | 
					 | 
					 | 
					 | 
					  mat4 extrinsic_matrix;      // Last row is 0 so we can use mat4.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -68,6 +72,10 @@ typedef struct UIScene { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  char alert_text2[1024]; | 
					 | 
					 | 
					 | 
					  char alert_text2[1024]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  float awareness_status; | 
					 | 
					 | 
					 | 
					  float awareness_status; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  // Used to display calibration progress
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  int cal_status; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  int cal_perc; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} UIScene; | 
					 | 
					 | 
					 | 
					} UIScene; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					typedef struct UIState { | 
					 | 
					 | 
					 | 
					typedef struct UIState { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -844,6 +852,25 @@ static void ui_draw_vision(UIState *s) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                  255 * scene->awareness_status, 0, 128)); | 
					 | 
					 | 
					 | 
					                                  255 * scene->awareness_status, 0, 128)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      nvgFill(s->vg); | 
					 | 
					 | 
					 | 
					      nvgFill(s->vg); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    // Draw calibration progress (if needed)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    if (scene->cal_status == CALIBRATION_UNCALIBRATED && scene->cal_perc > 0) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      int rec_width = 1020; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      int x_pos = 470; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      nvgBeginPath(s->vg); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      nvgStrokeWidth(s->vg, 14); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      nvgRoundedRect(s->vg, (1920-rec_width)/2, 970, rec_width, 100, 20); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      nvgStroke(s->vg); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      nvgFillColor(s->vg, nvgRGBA(10,100,220,180)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      nvgFill(s->vg); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      nvgFontSize(s->vg, labelfontsize); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      nvgTextAlign(s->vg, NVG_ALIGN_LEFT | NVG_ALIGN_BASELINE); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      nvgFillColor(s->vg, nvgRGBA(255, 255, 255, 220)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      char calib_status_str[32]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      snprintf(calib_status_str, sizeof(calib_status_str), "Calibration In Progress: %d%%", scene->cal_perc); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      nvgText(s->vg, x_pos, 1040, calib_status_str, NULL); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  } | 
					 | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  nvgEndFrame(s->vg); | 
					 | 
					 | 
					 | 
					  nvgEndFrame(s->vg); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1138,6 +1165,9 @@ static void ui_update(UIState *s) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        struct cereal_LiveCalibrationData datad; | 
					 | 
					 | 
					 | 
					        struct cereal_LiveCalibrationData datad; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        cereal_read_LiveCalibrationData(&datad, eventd.liveCalibration); | 
					 | 
					 | 
					 | 
					        cereal_read_LiveCalibrationData(&datad, eventd.liveCalibration); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        s->scene.cal_status = datad.calStatus; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        s->scene.cal_perc = datad.calPerc; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // should we still even have this?
 | 
					 | 
					 | 
					 | 
					        // should we still even have this?
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        capn_list32 warpl = datad.warpMatrix2; | 
					 | 
					 | 
					 | 
					        capn_list32 warpl = datad.warpMatrix2; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        capn_resolve(&warpl.p);  // is this a bug?
 | 
					 | 
					 | 
					 | 
					        capn_resolve(&warpl.p);  // is this a bug?
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |