1 #include <isotp/isotp.h>
8 IsoTpHandler ISOTP_HANDLER;
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 uint16_t arbitration_id, const uint8_t* payload,
47 const uint16_t size) {
48 debug("Received ISO-TP message:");
49 message_was_received = true;
50 log_isotp_message(arbitration_id, payload, size);
51 last_message_received_arb_id = arbitration_id;
52 last_message_received_payload_size = size;
54 memcpy(last_message_received_payload, payload, size);
58 void message_sent(const uint16_t arbitration_id, const uint8_t* payload,
59 const uint16_t size, const bool success) {
61 debug("Sent ISO-TP message:");
63 debug("Unable to send ISO-TP message:");
65 log_isotp_message(arbitration_id, payload, size);
67 last_message_sent_arb_id = arbitration_id;
68 last_message_sent_payload_size = size;
69 last_message_sent_status = success;
71 memcpy(last_message_sent_payload, payload, size);
75 void can_frame_sent(const uint16_t arbitration_id,
76 const uint8_t* payload, const uint8_t size) {
77 debug("Sent CAN Frame:");
78 log_isotp_message(arbitration_id, payload, size);
79 for(int i = 0; i < size; i++) {
80 debug("0x%x", payload[i]);
85 SHIMS = isotp_init_shims(debug, mock_send_can, mock_set_timer);
86 ISOTP_HANDLER = isotp_init(&SHIMS, 0x2a, message_received, message_sent,
88 last_message_sent_payload = malloc(MAX_ISO_TP_MESSAGE_SIZE);
89 last_message_received_payload = malloc(MAX_ISO_TP_MESSAGE_SIZE);
90 memset(last_can_payload_sent, 0, sizeof(last_can_payload_sent));
91 last_message_sent_status = false;
92 message_was_received = false;
93 can_frame_was_sent = false;