|  |  |  | @ -113,11 +113,11 @@ bool safety_setter_thread(std::vector<Panda *> pandas) { | 
			
		
	
		
			
				
					|  |  |  |  |     return false; | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   // set to ELM327 for fingerprinting
 | 
			
		
	
		
			
				
					|  |  |  |  |   for (int i = 0; i < pandas.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  |  |     const uint16_t safety_param = (i > 0) ? 1U : 0U; | 
			
		
	
		
			
				
					|  |  |  |  |     pandas[i]->set_safety_model(cereal::CarParams::SafetyModel::ELM327, safety_param); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | //  // set to ELM327 for fingerprinting
 | 
			
		
	
		
			
				
					|  |  |  |  | //  for (int i = 0; i < pandas.size(); i++) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //    const uint16_t safety_param = (i > 0) ? 1U : 0U;
 | 
			
		
	
		
			
				
					|  |  |  |  | //    pandas[i]->set_safety_model(cereal::CarParams::SafetyModel::ELM327, safety_param);
 | 
			
		
	
		
			
				
					|  |  |  |  | //  }
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   // wait for FW query at OBD port to finish
 | 
			
		
	
		
			
				
					|  |  |  |  |   while (true) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -125,6 +125,16 @@ bool safety_setter_thread(std::vector<Panda *> pandas) { | 
			
		
	
		
			
				
					|  |  |  |  |       return false; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     // set to ELM327 for fingerprinting, multiplexing is controlled by a param
 | 
			
		
	
		
			
				
					|  |  |  |  |     bool obd_multiplexing_requested = p.getBool("ObdMultiplexingRequested"); | 
			
		
	
		
			
				
					|  |  |  |  |     if (obd_multiplexing_requested != p.getBool("ObdMultiplexingEnabled")) { | 
			
		
	
		
			
				
					|  |  |  |  |       for (int i = 0; i < pandas.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  |  |         const uint16_t safety_param = (i > 0) ? (!obd_multiplexing_requested) : 0U; | 
			
		
	
		
			
				
					|  |  |  |  |         pandas[i]->set_safety_model(cereal::CarParams::SafetyModel::ELM327, safety_param); | 
			
		
	
		
			
				
					|  |  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |  |       p.putBool("ObdMultiplexingEnabled", obd_multiplexing_requested); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     if (p.getBool("FirmwareObdQueryDone")) { | 
			
		
	
		
			
				
					|  |  |  |  |       LOGW("finished FW query at OBD port"); | 
			
		
	
		
			
				
					|  |  |  |  |       break; | 
			
		
	
	
		
			
				
					|  |  |  | @ -132,12 +142,12 @@ bool safety_setter_thread(std::vector<Panda *> pandas) { | 
			
		
	
		
			
				
					|  |  |  |  |     util::sleep_for(20); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   // set to ELM327 to finish fingerprinting and for potential ECU knockouts
 | 
			
		
	
		
			
				
					|  |  |  |  |   for (Panda *panda : pandas) { | 
			
		
	
		
			
				
					|  |  |  |  |     panda->set_safety_model(cereal::CarParams::SafetyModel::ELM327, 1U); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   p.putBool("ObdMultiplexingDisabled", true); | 
			
		
	
		
			
				
					|  |  |  |  | //  // set to ELM327 to finish fingerprinting and for potential ECU knockouts
 | 
			
		
	
		
			
				
					|  |  |  |  | //  for (Panda *panda : pandas) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //    panda->set_safety_model(cereal::CarParams::SafetyModel::ELM327, 1U);
 | 
			
		
	
		
			
				
					|  |  |  |  | //  }
 | 
			
		
	
		
			
				
					|  |  |  |  | //
 | 
			
		
	
		
			
				
					|  |  |  |  | //  p.putBool("ObdMultiplexingDisabled", true);
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   std::string params; | 
			
		
	
		
			
				
					|  |  |  |  |   LOGW("waiting for params to set safety model"); | 
			
		
	
	
		
			
				
					|  |  |  | 
 |