1 #include <isotp/isotp.h>
10 uint16_t last_can_frame_sent_arb_id;
11 uint8_t last_can_payload_sent[8];
12 uint8_t last_can_payload_size;
13 bool can_frame_was_sent;
15 bool message_was_received;
16 uint16_t last_message_received_arb_id;
17 uint8_t* last_message_received_payload;
18 uint8_t last_message_received_payload_size;
20 uint16_t last_message_sent_arb_id;
21 bool last_message_sent_status;
22 uint8_t* last_message_sent_payload;
23 uint8_t last_message_sent_payload_size;
25 void debug(const char* format, ...) {
27 va_start(args, format);
28 vprintf(format, args);
33 void mock_send_can(const uint16_t arbitration_id, const uint8_t* data,
35 can_frame_was_sent = true;
36 last_can_frame_sent_arb_id = arbitration_id;
37 last_can_payload_size = size;
39 memcpy(last_can_payload_sent, data, size);
43 void mock_set_timer(uint16_t time_ms, void (*callback)) {
46 void message_received(const IsoTpMessage* message) {
47 debug("Received ISO-TP message:");
48 message_was_received = true;
50 isotp_message_to_string(message, str_message, sizeof(str_message));
51 debug("%s", str_message);
52 last_message_received_arb_id = message->arbitration_id;
53 last_message_received_payload_size = message->size;
54 if(message->size > 0) {
55 memcpy(last_message_received_payload, message->payload, message->size);
59 void message_sent(const IsoTpMessage* message, const bool success) {
61 debug("Sent ISO-TP message:");
63 debug("Unable to send ISO-TP message:");
65 char str_message[24] = {0};
66 isotp_message_to_string(message, str_message, sizeof(str_message));
67 debug("%s", str_message);
69 last_message_sent_arb_id = message->arbitration_id;
70 last_message_sent_payload_size = message->size;
71 last_message_sent_status = success;
72 if(message->size > 0) {
73 memcpy(last_message_sent_payload, message->payload, message->size);
77 void can_frame_sent(const uint16_t arbitration_id, const uint8_t* payload,
79 debug("Sent CAN Frame:");
80 // TODO add something like this to canutil
81 /* log_can_message(arbitration_id, payload, size); */
85 SHIMS = isotp_init_shims(debug, mock_send_can, mock_set_timer);
86 HANDLE = isotp_receive(&SHIMS, 0x2a, message_received);
87 last_message_sent_payload = malloc(MAX_ISO_TP_MESSAGE_SIZE);
88 last_message_received_payload = malloc(MAX_ISO_TP_MESSAGE_SIZE);
89 memset(last_can_payload_sent, 0, sizeof(last_can_payload_sent));
90 last_message_sent_status = false;
91 message_was_received = false;
92 can_frame_was_sent = false;