| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -117,6 +117,7 @@ void DBCFile::parse(const QString &content) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      current_msg->address = address; | 
					 | 
					 | 
					 | 
					      current_msg->address = address; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      current_msg->name = match.captured(2); | 
					 | 
					 | 
					 | 
					      current_msg->name = match.captured(2); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      current_msg->size = match.captured(3).toULong(); | 
					 | 
					 | 
					 | 
					      current_msg->size = match.captured(3).toULong(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      current_msg->transmitter = match.captured(4).trimmed(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } else if (line.startsWith("SG_ ")) { | 
					 | 
					 | 
					 | 
					    } else if (line.startsWith("SG_ ")) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      int offset = 0; | 
					 | 
					 | 
					 | 
					      int offset = 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      auto match = sg_regexp.match(line); | 
					 | 
					 | 
					 | 
					      auto match = sg_regexp.match(line); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -150,6 +151,7 @@ void DBCFile::parse(const QString &content) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      s.min = match.captured(8 + offset).toDouble(); | 
					 | 
					 | 
					 | 
					      s.min = match.captured(8 + offset).toDouble(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      s.max = match.captured(9 + offset).toDouble(); | 
					 | 
					 | 
					 | 
					      s.max = match.captured(9 + offset).toDouble(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      s.unit = match.captured(10 + offset); | 
					 | 
					 | 
					 | 
					      s.unit = match.captured(10 + offset); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      s.receiver_name = match.captured(11 + offset).trimmed(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      current_msg->sigs.push_back(new cabana::Signal(s)); | 
					 | 
					 | 
					 | 
					      current_msg->sigs.push_back(new cabana::Signal(s)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } else if (line.startsWith("VAL_ ")) { | 
					 | 
					 | 
					 | 
					    } else if (line.startsWith("VAL_ ")) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -196,7 +198,7 @@ void DBCFile::parse(const QString &content) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					QString DBCFile::generateDBC() { | 
					 | 
					 | 
					 | 
					QString DBCFile::generateDBC() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  QString dbc_string, signal_comment, message_comment, val_desc; | 
					 | 
					 | 
					 | 
					  QString dbc_string, signal_comment, message_comment, val_desc; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  for (const auto &[address, m] : msgs) { | 
					 | 
					 | 
					 | 
					  for (const auto &[address, m] : msgs) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    dbc_string += QString("BO_ %1 %2: %3 XXX\n").arg(address).arg(m.name).arg(m.size); | 
					 | 
					 | 
					 | 
					    dbc_string += QString("BO_ %1 %2: %3 %4\n").arg(address).arg(m.name).arg(m.size).arg(m.transmitter.isEmpty() ? "XXX" : m.transmitter); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (!m.comment.isEmpty()) { | 
					 | 
					 | 
					 | 
					    if (!m.comment.isEmpty()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      message_comment += QString("CM_ BO_ %1 \"%2\";\n").arg(address).arg(m.comment); | 
					 | 
					 | 
					 | 
					      message_comment += QString("CM_ BO_ %1 \"%2\";\n").arg(address).arg(m.comment); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -207,7 +209,7 @@ QString DBCFile::generateDBC() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      } else if (sig->type == cabana::Signal::Type::Multiplexed) { | 
					 | 
					 | 
					 | 
					      } else if (sig->type == cabana::Signal::Type::Multiplexed) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        multiplexer_indicator = QString("m%1 ").arg(sig->multiplex_value); | 
					 | 
					 | 
					 | 
					        multiplexer_indicator = QString("m%1 ").arg(sig->multiplex_value); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      } | 
					 | 
					 | 
					 | 
					      } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      dbc_string += QString(" SG_ %1 %2: %3|%4@%5%6 (%7,%8) [%9|%10] \"%11\" XXX\n") | 
					 | 
					 | 
					 | 
					      dbc_string += QString(" SG_ %1 %2: %3|%4@%5%6 (%7,%8) [%9|%10] \"%11\" %12\n") | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        .arg(sig->name) | 
					 | 
					 | 
					 | 
					                        .arg(sig->name) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        .arg(multiplexer_indicator) | 
					 | 
					 | 
					 | 
					                        .arg(multiplexer_indicator) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        .arg(sig->start_bit) | 
					 | 
					 | 
					 | 
					                        .arg(sig->start_bit) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -218,7 +220,8 @@ QString DBCFile::generateDBC() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        .arg(doubleToString(sig->offset)) | 
					 | 
					 | 
					 | 
					                        .arg(doubleToString(sig->offset)) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        .arg(doubleToString(sig->min)) | 
					 | 
					 | 
					 | 
					                        .arg(doubleToString(sig->min)) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        .arg(doubleToString(sig->max)) | 
					 | 
					 | 
					 | 
					                        .arg(doubleToString(sig->max)) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        .arg(sig->unit); | 
					 | 
					 | 
					 | 
					                        .arg(sig->unit) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        .arg(sig->receiver_name.isEmpty() ? "XXX" : sig->receiver_name); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (!sig->comment.isEmpty()) { | 
					 | 
					 | 
					 | 
					      if (!sig->comment.isEmpty()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        signal_comment += QString("CM_ SG_ %1 %2 \"%3\";\n").arg(address).arg(sig->name).arg(sig->comment); | 
					 | 
					 | 
					 | 
					        signal_comment += QString("CM_ SG_ %1 %2 \"%3\";\n").arg(address).arg(sig->name).arg(sig->comment); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      } | 
					 | 
					 | 
					 | 
					      } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |