Fixes for DBC saving, especially when saving extended frames. Saved

DBC files should load in Vector tools now.
This commit is contained in:
Collin Kidder
2023-01-10 22:14:56 -05:00
parent 8328634626
commit 8f9503ff0b
+10 -6
View File
@@ -1303,7 +1303,7 @@ bool DBCFile::saveFile(QString fileName)
int msgNumber = 1; int msgNumber = 1;
int sigNumber = 1; int sigNumber = 1;
QFile *outFile = new QFile(fileName); QFile *outFile = new QFile(fileName);
QString nodesOutput, msgOutput, commentsOutput, valuesOutput; QString nodesOutput, msgOutput, commentsOutput, valuesOutput, extMultiplexOutput;
QString defaultsOutput, attrValOutput; QString defaultsOutput, attrValOutput;
bool hasExtendedMultiplexing = false; bool hasExtendedMultiplexing = false;
@@ -1400,7 +1400,7 @@ bool DBCFile::saveFile(QString fileName)
uint32_t ID = msg->ID; uint32_t ID = msg->ID;
if (msg->ID > 0x7FF || msg->extendedID) if (msg->ID > 0x7FF || msg->extendedID)
{ {
msg->ID += 0x80000000ul; //set bit 31 if this ID is extended. ID += 0x80000000ul; //set bit 31 if this ID is extended.
} }
msgOutput.append("BO_ " + QString::number(ID) + " " + msg->name + ": " + QString::number(msg->len) + msgOutput.append("BO_ " + QString::number(ID) + " " + msg->name + ": " + QString::number(msg->len) +
@@ -1582,6 +1582,8 @@ bool DBCFile::saveFile(QString fileName)
defaultsOutput.append("\"" + dbc_attributes[x].enumVals[dbc_attributes[x].defaultValue.toInt()] + "\";\n"); defaultsOutput.append("\"" + dbc_attributes[x].enumVals[dbc_attributes[x].defaultValue.toInt()] + "\";\n");
break; break;
case ATTR_INT: case ATTR_INT:
defaultsOutput.append(QString::number(dbc_attributes[x].defaultValue.toLongLong()) + ";\n");
break;
case ATTR_FLOAT: case ATTR_FLOAT:
defaultsOutput.append(dbc_attributes[x].defaultValue.toString() + ";\n"); defaultsOutput.append(dbc_attributes[x].defaultValue.toString() + ";\n");
break; break;
@@ -1601,7 +1603,7 @@ bool DBCFile::saveFile(QString fileName)
uint32_t ID = msg->ID; uint32_t ID = msg->ID;
if (msg->ID > 0x7FF || msg->extendedID) if (msg->ID > 0x7FF || msg->extendedID)
{ {
msg->ID += 0x80000000ul; //set bit 31 if this ID is extended. ID += 0x80000000ul; //set bit 31 if this ID is extended.
} }
for (int s = 0; s < msg->sigHandler->getCount(); s++) for (int s = 0; s < msg->sigHandler->getCount(); s++)
@@ -1614,7 +1616,7 @@ bool DBCFile::saveFile(QString fileName)
msgOutput.append(sig->name + " " + sig->multiplexParent->name + " "); msgOutput.append(sig->name + " " + sig->multiplexParent->name + " ");
msgOutput.append(QString::number(sig->multiplexLowValue) + "-" + QString::number(sig->multiplexHighValue) + ";"); msgOutput.append(QString::number(sig->multiplexLowValue) + "-" + QString::number(sig->multiplexHighValue) + ";");
msgOutput.append("\n"); msgOutput.append("\n");
outFile->write(msgOutput.toUtf8()); extMultiplexOutput.append(msgOutput);
msgOutput.clear(); //got to reset it after writing msgOutput.clear(); //got to reset it after writing
} }
} }
@@ -1622,15 +1624,17 @@ bool DBCFile::saveFile(QString fileName)
} }
//now write out all of the accumulated comments and value tables from above //now write out all of the accumulated comments and value tables from above
outFile->write(attrValOutput.toUtf8());
outFile->write(defaultsOutput.toUtf8());
outFile->write(commentsOutput.toUtf8()); outFile->write(commentsOutput.toUtf8());
outFile->write(defaultsOutput.toUtf8());
outFile->write(attrValOutput.toUtf8());
outFile->write(valuesOutput.toUtf8()); outFile->write(valuesOutput.toUtf8());
outFile->write(extMultiplexOutput.toUtf8());
attrValOutput.clear(); attrValOutput.clear();
defaultsOutput.clear(); defaultsOutput.clear();
commentsOutput.clear(); commentsOutput.clear();
valuesOutput.clear(); valuesOutput.clear();
extMultiplexOutput.clear();
outFile->close(); outFile->close();
delete outFile; delete outFile;