|  |  |  | @ -22,6 +22,7 @@ | 
			
		
	
		
			
				
					|  |  |  |  | #include "cereal/gen/cpp/car.capnp.h" | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #include "common/util.h" | 
			
		
	
		
			
				
					|  |  |  |  | #include "common/utilpp.h" | 
			
		
	
		
			
				
					|  |  |  |  | #include "common/params.h" | 
			
		
	
		
			
				
					|  |  |  |  | #include "common/swaglog.h" | 
			
		
	
		
			
				
					|  |  |  |  | #include "common/timing.h" | 
			
		
	
	
		
			
				
					|  |  |  | @ -85,7 +86,7 @@ void safety_setter_thread() { | 
			
		
	
		
			
				
					|  |  |  |  |       LOGW("got CarVin %s", str_vin.c_str()); | 
			
		
	
		
			
				
					|  |  |  |  |       break; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |     usleep(100*1000); | 
			
		
	
		
			
				
					|  |  |  |  |     util::sleep_for(100); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   // VIN query done, stop listening to OBDII
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -101,7 +102,7 @@ void safety_setter_thread() { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     params = Params().read_db_bytes("CarParams"); | 
			
		
	
		
			
				
					|  |  |  |  |     if (params.size() > 0) break; | 
			
		
	
		
			
				
					|  |  |  |  |     usleep(100*1000); | 
			
		
	
		
			
				
					|  |  |  |  |     util::sleep_for(100); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  |   LOGW("got %d bytes CarParams", params.size()); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -193,7 +194,7 @@ bool usb_connect() { | 
			
		
	
		
			
				
					|  |  |  |  | // must be called before threads or with mutex
 | 
			
		
	
		
			
				
					|  |  |  |  | void usb_retry_connect() { | 
			
		
	
		
			
				
					|  |  |  |  |   LOGW("attempting to connect"); | 
			
		
	
		
			
				
					|  |  |  |  |   while (!usb_connect()) { usleep(100*1000); } | 
			
		
	
		
			
				
					|  |  |  |  |   while (!usb_connect()) { util::sleep_for(100); } | 
			
		
	
		
			
				
					|  |  |  |  |   LOGW("connected to board"); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -260,8 +261,7 @@ void can_recv_thread() { | 
			
		
	
		
			
				
					|  |  |  |  |     uint64_t cur_time = nanos_since_boot(); | 
			
		
	
		
			
				
					|  |  |  |  |     int64_t remaining = next_frame_time - cur_time; | 
			
		
	
		
			
				
					|  |  |  |  |     if (remaining > 0){ | 
			
		
	
		
			
				
					|  |  |  |  |       useconds_t sleep = remaining / 1000; | 
			
		
	
		
			
				
					|  |  |  |  |       usleep(sleep); | 
			
		
	
		
			
				
					|  |  |  |  |       std::this_thread::sleep_for(std::chrono::nanoseconds(remaining)); | 
			
		
	
		
			
				
					|  |  |  |  |     } else { | 
			
		
	
		
			
				
					|  |  |  |  |       if (ignition){ | 
			
		
	
		
			
				
					|  |  |  |  |         LOGW("missed cycles (%d) %lld", (int)-1*remaining/dt, remaining); | 
			
		
	
	
		
			
				
					|  |  |  | @ -288,7 +288,7 @@ void can_health_thread() { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     healthData.setHwType(cereal::HealthData::HwType::UNKNOWN); | 
			
		
	
		
			
				
					|  |  |  |  |     pm.send("health", msg); | 
			
		
	
		
			
				
					|  |  |  |  |     usleep(500*1000); | 
			
		
	
		
			
				
					|  |  |  |  |     util::sleep_for(500); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   // run at 2hz
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -388,7 +388,7 @@ void can_health_thread() { | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |     pm.send("health", msg); | 
			
		
	
		
			
				
					|  |  |  |  |     panda->send_heartbeat(); | 
			
		
	
		
			
				
					|  |  |  |  |     usleep(500*1000); | 
			
		
	
		
			
				
					|  |  |  |  |     util::sleep_for(500); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -508,7 +508,7 @@ void pigeon_thread() { | 
			
		
	
		
			
				
					|  |  |  |  |     ignition_last = ignition; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     // 10ms - 100 Hz
 | 
			
		
	
		
			
				
					|  |  |  |  |     usleep(10*1000); | 
			
		
	
		
			
				
					|  |  |  |  |     util::sleep_for(10); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   delete pigeon; | 
			
		
	
	
		
			
				
					|  |  |  | 
 |