#!/usr/bin/env python3 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  typing  import  Optional 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  Service : 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  __init__ ( self ,  should_log :  bool ,  frequency :  float ,  decimation :  Optional [ int ]  =  None ) : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . should_log  =  should_log 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . frequency  =  frequency 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . decimation  =  decimation 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								_services :  dict [ str ,  tuple ]  =  { 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # service: (should_log, frequency, qlog decimation (optional)) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # note: the "EncodeIdx" packets will still be in the log 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " gyroscope " :  ( True ,  104. ,  104 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " gyroscope2 " :  ( True ,  100. ,  100 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " accelerometer " :  ( True ,  104. ,  104 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " accelerometer2 " :  ( True ,  100. ,  100 ) , 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  " magnetometer " :  ( True ,  25. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " lightSensor " :  ( True ,  100. ,  100 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " temperatureSensor " :  ( True ,  2. ,  200 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " temperatureSensor2 " :  ( True ,  2. ,  200 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " gpsNMEA " :  ( True ,  9. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " deviceState " :  ( True ,  2. ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  " can " :  ( True ,  100. ,  2053 ) ,   # decimation gives ~3 msgs in a full segment 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " controlsState " :  ( True ,  100. ,  10 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " pandaStates " :  ( True ,  10. ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " peripheralState " :  ( True ,  2. ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " radarState " :  ( True ,  20. ,  5 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " roadEncodeIdx " :  ( False ,  20. ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " liveTracks " :  ( True ,  20. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " sendcan " :  ( True ,  100. ,  139 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " logMessage " :  ( True ,  0. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " errorLogMessage " :  ( True ,  0. ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " liveCalibration " :  ( True ,  4. ,  4 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " liveTorqueParameters " :  ( True ,  4. ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " androidLog " :  ( True ,  0. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " carState " :  ( True ,  100. ,  10 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " carControl " :  ( True ,  100. ,  10 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " carOutput " :  ( True ,  100. ,  10 ) , 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  " longitudinalPlan " :  ( True ,  20. ,  10 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " procLog " :  ( True ,  0.5 ,  15 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " gpsLocationExternal " :  ( True ,  10. ,  10 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " gpsLocation " :  ( True ,  1. ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " ubloxGnss " :  ( True ,  10. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " qcomGnss " :  ( True ,  2. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " gnssMeasurements " :  ( True ,  10. ,  10 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " clocks " :  ( True ,  0.1 ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " ubloxRaw " :  ( True ,  20. ) , 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  " livePose " :  ( True ,  20. ,  4 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " liveLocationKalman " :  ( True ,  20. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " liveParameters " :  ( True ,  20. ,  5 ) , 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  " cameraOdometry " :  ( True ,  20. ,  10 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " thumbnail " :  ( True ,  0.2 ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " onroadEvents " :  ( True ,  1. ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " carParams " :  ( True ,  0.02 ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " roadCameraState " :  ( True ,  20. ,  20 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " driverCameraState " :  ( True ,  20. ,  20 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " driverEncodeIdx " :  ( False ,  20. ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " driverStateV2 " :  ( True ,  20. ,  10 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " driverMonitoringState " :  ( True ,  20. ,  10 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " wideRoadEncodeIdx " :  ( False ,  20. ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " wideRoadCameraState " :  ( True ,  20. ,  20 ) , 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  " drivingModelData " :  ( True ,  20. ,  10 ) , 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  " modelV2 " :  ( True ,  20. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " managerState " :  ( True ,  2. ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " uploaderState " :  ( True ,  0. ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " navInstruction " :  ( True ,  1. ,  10 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " navRoute " :  ( True ,  0. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " navThumbnail " :  ( True ,  0. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " qRoadEncodeIdx " :  ( False ,  20. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " userFlag " :  ( True ,  0. ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " microphone " :  ( True ,  10. ,  10 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # debug 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " uiDebug " :  ( True ,  0. ,  1 ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " testJoystick " :  ( True ,  0. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " roadEncodeData " :  ( False ,  20. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " driverEncodeData " :  ( False ,  20. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " wideRoadEncodeData " :  ( False ,  20. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " qRoadEncodeData " :  ( False ,  20. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " livestreamWideRoadEncodeIdx " :  ( False ,  20. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " livestreamRoadEncodeIdx " :  ( False ,  20. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " livestreamDriverEncodeIdx " :  ( False ,  20. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " livestreamWideRoadEncodeData " :  ( False ,  20. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " livestreamRoadEncodeData " :  ( False ,  20. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " livestreamDriverEncodeData " :  ( False ,  20. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " customReservedRawData0 " :  ( True ,  0. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " customReservedRawData1 " :  ( True ,  0. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " customReservedRawData2 " :  ( True ,  0. ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SERVICE_LIST  =  { name :  Service ( * vals )  for 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                idx ,  ( name ,  vals )  in  enumerate ( _services . items ( ) ) } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  build_header ( ) : 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  h  =  " " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  h  + =  " /* THIS IS AN AUTOGENERATED FILE, PLEASE EDIT services.py */ \n " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  h  + =  " #ifndef __SERVICES_H \n " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  h  + =  " #define __SERVICES_H \n " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  h  + =  " #include <map> \n " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  h  + =  " #include <string> \n " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  h  + =  " struct service  {  std::string name; bool should_log; int frequency; int decimation; }; \n " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  h  + =  " static std::map<std::string, service> services =  { \n " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  k ,  v  in  SERVICE_LIST . items ( ) : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    should_log  =  " true "  if  v . should_log  else  " false " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    decimation  =  - 1  if  v . decimation  is  None  else  v . decimation 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    h  + =  '    {   " %s " ,  { " %s " ,  %s ,  %d ,  %d }}, \n '  %  \
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         ( k ,  k ,  should_log ,  v . frequency ,  decimation ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  h  + =  " }; \n " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  h  + =  " #endif \n " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  h 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  __name__  ==  " __main__ " : 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  print ( build_header ( ) )