| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -15,7 +15,7 @@ def is_valid_vin(vin: str): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  return re.fullmatch(VIN_RE, vin) is not None | 
					 | 
					 | 
					 | 
					  return re.fullmatch(VIN_RE, vin) is not None | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					def get_vin(logcan, sendcan, buses, timeout=0.1, retry=5, debug=False): | 
					 | 
					 | 
					 | 
					def get_vin(logcan, sendcan, buses, timeout=0.1, retry=3, debug=False): | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  addrs = list(range(0x7e0, 0x7e8)) + list(range(0x18DA00F1, 0x18DB00F1, 0x100))  # addrs to process/wait for | 
					 | 
					 | 
					 | 
					  addrs = list(range(0x7e0, 0x7e8)) + list(range(0x18DA00F1, 0x18DB00F1, 0x100))  # addrs to process/wait for | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  valid_vin_addrs = [0x7e0, 0x7e2, 0x18da10f1, 0x18da0ef1]  # engine, VMCU, 29-bit engine, PGM-FI | 
					 | 
					 | 
					 | 
					  valid_vin_addrs = [0x7e0, 0x7e2, 0x18da10f1, 0x18da0ef1]  # engine, VMCU, 29-bit engine, PGM-FI | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  for i in range(retry): | 
					 | 
					 | 
					 | 
					  for i in range(retry): | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |