return handler;
}
-// TODO this would be better as a "isotp_message_to_string"
-void log_isotp_message(const IsoTpMessage* message) {
- debug("ID: 0x%02x", message->arbitration_id);
- if(message->size > 0) {
- debug("Payload:");
- for(int i = 0; i < message->size; i++) {
- debug("0x%x", message->payload[i]);
- }
- } else {
- debug("(no payload)");
- }
+void isotp_message_to_string(const IsoTpMessage* message, char* destination,
+ size_t destination_length) {
+ snprintf(destination, destination_length,"ID: 0x%02x, Payload: 0x%llx",
+ // TODO the payload may be backwards here
+ message->arbitration_id, message->payload);
}
#include <stdint.h>
#include <stdbool.h>
+#include <stdio.h>
#define CAN_MESSAGE_BYTE_SIZE 8
const uint16_t size;
} IsoTpMessage;
-typedef void (*LogShim)(const char* message);
+typedef void (*LogShim)(const char* message, ...);
typedef bool (*SendCanMessageShim)(const uint16_t arbitration_id,
const uint8_t* data, const uint8_t size);
typedef bool (*SetTimerShim)(uint16_t time_ms, void (*callback));
void isotp_destroy(IsoTpHandler* handler);
-void log_isotp_message(const IsoTpMessage* message);
-
+void isotp_message_to_string(const IsoTpMessage* message, char* destination,
+ size_t destination_length);
#ifdef __cplusplus
}
void message_received(const IsoTpMessage* message) {
debug("Received ISO-TP message:");
message_was_received = true;
- log_isotp_message(message);
+ char str_message[24];
+ isotp_message_to_string(message, str_message, sizeof(str_message));
+ debug("%s", str_message);
last_message_received_arb_id = message->arbitration_id;
last_message_received_payload_size = message->size;
if(message->size > 0) {
} else {
debug("Unable to send ISO-TP message:");
}
- log_isotp_message(message);
+ char str_message[24] = {0};
+ isotp_message_to_string(message, str_message, sizeof(str_message));
+ debug("%s", str_message);
last_message_sent_arb_id = message->arbitration_id;
last_message_sent_payload_size = message->size;