Exploring DBC Autogenerated API



DBC Encode API

void can_transmitter_option1(void) {

 dbc_DRIVER_HEARTBEAT_s heartbeat={};

 dbc_SENSOR_SONARS_s sensor_values={};

 dbc_message_header_t header;

 can__msg_t can_msg = {};

 header = dbc_encode_SENSOR_SONARS(can_msg.data.bytes, &sensor_values);

 can_msg.msg_id = header.message_id;

 can_msg.frame_fields.data_len = header.message_dlc;

 can__tx(can1, &can_msg, 0);

 header = dbc_encode_DRIVER_HEARTBEAT(can_msg.data.bytes, &heartbeat);

 can_msg.msg_id = header.message_id;

 can_msg.frame_fields.data_len = header.message_dlc;

 can__tx(can1, &can_msg, 0);

}

DBC Encode and Send API

void can_transmitter_option2(void) {

 dbc_DRIVER_HEARTBEAT_s heartbeat={};

 dbc_SENSOR_SONARS_s sensor_values={};

 void *unused = NULL;

 dbc_encode_and_send_DRIVER_HEARTBEAT(unused, &sensor_values);

 dbc_encode_and_send_DRIVER_HEARTBEAT(unused, &heartbeat);

}

bool dbc_send_can_message(void * argument_from_dbc_encode_and_send, uint32_t message_id, const uint8_t bytes[8], uint8_t dlc) {

 can__msg_t can_msg = {};

 

 can_msg.msg_id = message_id;

 can_msg.frame_fields.data_len = dlc;

 memcpy(can_msg.data.bytes, bytes, sizeof(can_msg.data.bytes));

 

 can__tx(can1, &can_msg, 0);

}