Merge pull request #2 from esaulenka/fix_DCB_parser

Fix parsing complicated DBCs
This commit is contained in:
rusefillc 2025-03-25 06:51:06 -04:00 committed by GitHub
commit 853addb1eb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 7 additions and 3 deletions

View File

@ -41,7 +41,7 @@ public class DbcFile {
while ((line = reader.readLine()) != null) {
lineIndex++;
line = line.trim();
if (line.startsWith("BO_")) {
if (line.startsWith("BO_ ")) {
purgePacket(currentPacket);
line = line.replaceAll(":", "");
String[] tokens = line.split(" ");
@ -56,7 +56,7 @@ public class DbcFile {
}
String packetName = tokens[2];
currentPacket = new DbcPacket((int) decId, packetName);
} else if (line.startsWith("CM_")) {
} else if (line.startsWith("CM_ ")) {
purgePacket(currentPacket);
line = replaceSpecialWithSpaces(line);
String[] tokens = line.split(" ");
@ -64,6 +64,10 @@ public class DbcFile {
// skipping header line
continue;
}
if (!tokens[1].equals("SG_")) {
// will parse only signal descriptions
continue;
}
if (tokens.length < 4)
throw new IllegalStateException("Failing to parse comment: " + line + " at " + lineIndex);
int id = Integer.parseInt(tokens[2]);
@ -74,7 +78,7 @@ public class DbcFile {
packet.replaceName(originalName, niceName);
} else if (line.startsWith("SG_")) {
} else if (line.startsWith("SG_ ")) {
DbcField field;
try {
field = DbcField.parseField(currentPacket, line);