1#include "../../../../Inc/Systems/Comms/Can/DBCParser.h"
2#include "../../../../Inc/Utils/Common.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) {
39 line = strtok(NULL,
"\n");
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]