| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -430,8 +430,6 @@ bool Panda::can_receive(std::vector<can_frame>& out_vec) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return false; | 
					 | 
					 | 
					 | 
					    return false; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  } | 
					 | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  out_vec.reserve(out_vec.size() + (recv / CANPACKET_HEAD_SIZE)); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  static uint8_t tail[CANPACKET_MAX_SIZE]; | 
					 | 
					 | 
					 | 
					  static uint8_t tail[CANPACKET_MAX_SIZE]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  uint8_t tail_size = 0; | 
					 | 
					 | 
					 | 
					  uint8_t tail_size = 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  uint8_t counter = 0; | 
					 | 
					 | 
					 | 
					  uint8_t counter = 0; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -453,9 +451,10 @@ bool Panda::can_receive(std::vector<can_frame>& out_vec) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      uint8_t data_len = dlc_to_len[(chunk[pos] >> 4)]; | 
					 | 
					 | 
					 | 
					      uint8_t data_len = dlc_to_len[(chunk[pos] >> 4)]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      uint8_t pckt_len = CANPACKET_HEAD_SIZE + data_len; | 
					 | 
					 | 
					 | 
					      uint8_t pckt_len = CANPACKET_HEAD_SIZE + data_len; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (pckt_len <= (chunk_len - pos)) { | 
					 | 
					 | 
					 | 
					      if (pckt_len <= (chunk_len - pos)) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        can_frame canData; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        can_header header; | 
					 | 
					 | 
					 | 
					        can_header header; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        memcpy(&header, &chunk[pos], CANPACKET_HEAD_SIZE); | 
					 | 
					 | 
					 | 
					        memcpy(&header, &chunk[pos], CANPACKET_HEAD_SIZE); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        can_frame &canData = out_vec.emplace_back(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        canData.busTime = 0; | 
					 | 
					 | 
					 | 
					        canData.busTime = 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        canData.address = header.addr; | 
					 | 
					 | 
					 | 
					        canData.address = header.addr; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        canData.src = header.bus + bus_offset; | 
					 | 
					 | 
					 | 
					        canData.src = header.bus + bus_offset; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -465,9 +464,6 @@ bool Panda::can_receive(std::vector<can_frame>& out_vec) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        canData.dat.assign((char*)&chunk[pos+CANPACKET_HEAD_SIZE], data_len); | 
					 | 
					 | 
					 | 
					        canData.dat.assign((char*)&chunk[pos+CANPACKET_HEAD_SIZE], data_len); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        pos += pckt_len; | 
					 | 
					 | 
					 | 
					        pos += pckt_len; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // add to vector
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        out_vec.push_back(canData); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      } else { | 
					 | 
					 | 
					 | 
					      } else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // Keep partial CAN packet until next USB packet
 | 
					 | 
					 | 
					 | 
					        // Keep partial CAN packet until next USB packet
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tail_size = (chunk_len - pos); | 
					 | 
					 | 
					 | 
					        tail_size = (chunk_len - pos); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |