1#include "../../../../Inc/Systems/Comms/Can/DBCParser.h"
2#include "../../../../Inc/Systems/PrintHelpers.h"
9 if (strstr(line,
"BO_") != NULL) {
12 if (sscanf(line,
"BO_ %d %s: %d %s", &msg.
id, msg.
name, &msg.
dlc, msg.
sender) != 4) {
17 }
else if (strstr(line,
"SG_") != NULL) {
21 if (sscanf(line,
"SG_ %s %d|%d@%d%c(%f,%f) [%f|%f] \"%[^\"]\" %s", sig.
name, &sig.
start_bit, &sig.
length, &sig.
endian, signedness, &sig.
scale, &sig.
offset, &sig.
min, &sig.
max, sig.
unit, sig.
reciever) != 11) {
33 char* line = strtok(dbc_contents,
"\n");
34 while (line != NULL) {
35 printf(
"Parsing line: %s\n", line);
39 line = strtok(NULL,
"\n");
45 printf(
"Printing CAN Message List with %d messages\n", messages->
num_messages);
51 printf(
"\t" ANSI_COLOR_BLUE "Signal" ANSI_COLOR_RESET ": %s (Start bit: %d, Length: %d, Endain: %d, Signed: %c,\n\t\tScale: %f, Offset: %f, Min: %f, Max: %f, \n\t\tUnit: %s, Reciever: %s)\n", sig->
name, sig->
start_bit, sig->
length, sig->
endian, sig->
isSigned, sig->
scale, sig->
offset, sig->
min, sig->
max, sig->
unit, sig->
reciever);
int parseDbcFile(CAN_MessageList *messages, const unsigned char *dbc_contents)
Parses a DBC (CAN database) file and populates the DBC structure.
int parseDbcLine(CAN_MessageList *messages, char *line)
Parses a single line of a DBC file and populates the CAN_MessageList structure.
void print_CAN_MessageList(const CAN_MessageList *messages)
Prints the contents of a CAN message list (aka DBC file).
CAN_Message_Template messages[MAX_MESSAGES]
char sender[MAX_NODE_NAME_LENGTH]
CAN_Signal_Template signals[MAX_SIGNALS]
char name[MAX_MESSAGE_NAME_LENGTH]
char unit[MAX_UNIT_NAME_LENGTH]
char reciever[MAX_NODE_NAME_LENGTH]
char name[MAX_SIGNAL_NAME_LENGTH]