added can data loging
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
#include "cls_device.pb.h"
|
#include "cls_device.pb.h"
|
||||||
#include "usb.pb.h"
|
#include "usb.pb.h"
|
||||||
#include "version_info.h"
|
#include "version_info.h"
|
||||||
|
#include "ulog.h"
|
||||||
// Define thread flags
|
// Define thread flags
|
||||||
#define FLAG_FDCAN_RX_FIFO0 (1<<0)
|
#define FLAG_FDCAN_RX_FIFO0 (1<<0)
|
||||||
#define FLAG_FDCAN_RX_FIFO1 (1<<1)
|
#define FLAG_FDCAN_RX_FIFO1 (1<<1)
|
||||||
@@ -129,6 +130,13 @@ void CanDataTask_func(void *argument) {
|
|||||||
|
|
||||||
static uint64_t last_car_message_time = UINT64_MAX;
|
static uint64_t last_car_message_time = UINT64_MAX;
|
||||||
|
|
||||||
|
// convert byte to 2 hex characters
|
||||||
|
void byteToHex(uint8_t byte, char * hex) {
|
||||||
|
const char hexLookup[] = "0123456789ABCDEF";
|
||||||
|
hex[0] = hexLookup[byte >> 4];
|
||||||
|
hex[1] = hexLookup[byte & 0x0F];
|
||||||
|
}
|
||||||
|
|
||||||
void CarCanTask_func(void *argument) {
|
void CarCanTask_func(void *argument) {
|
||||||
|
|
||||||
// for testing accept all messages from the car can bus
|
// for testing accept all messages from the car can bus
|
||||||
@@ -159,6 +167,70 @@ void CarCanTask_func(void *argument) {
|
|||||||
|
|
||||||
// do something with the can data
|
// do something with the can data
|
||||||
last_car_message_time = osKernelGetTickCount();
|
last_car_message_time = osKernelGetTickCount();
|
||||||
|
char msg[17] = {0};
|
||||||
|
|
||||||
|
switch (RxHeader.DataLength)
|
||||||
|
{
|
||||||
|
case FDCAN_DLC_BYTES_1:
|
||||||
|
byteToHex(RxData[0], &msg[0]);
|
||||||
|
break;
|
||||||
|
case FDCAN_DLC_BYTES_2:
|
||||||
|
byteToHex(RxData[0], &msg[0]);
|
||||||
|
byteToHex(RxData[1], &msg[2]);
|
||||||
|
break;
|
||||||
|
case FDCAN_DLC_BYTES_3:
|
||||||
|
byteToHex(RxData[0], &msg[0]);
|
||||||
|
byteToHex(RxData[1], &msg[2]);
|
||||||
|
byteToHex(RxData[2], &msg[4]);
|
||||||
|
break;
|
||||||
|
case FDCAN_DLC_BYTES_4:
|
||||||
|
byteToHex(RxData[0], &msg[0]);
|
||||||
|
byteToHex(RxData[1], &msg[2]);
|
||||||
|
byteToHex(RxData[2], &msg[4]);
|
||||||
|
byteToHex(RxData[3], &msg[6]);
|
||||||
|
break;
|
||||||
|
case FDCAN_DLC_BYTES_5:
|
||||||
|
byteToHex(RxData[0], &msg[0]);
|
||||||
|
byteToHex(RxData[1], &msg[2]);
|
||||||
|
byteToHex(RxData[2], &msg[4]);
|
||||||
|
byteToHex(RxData[3], &msg[6]);
|
||||||
|
byteToHex(RxData[4], &msg[8]);
|
||||||
|
break;
|
||||||
|
case FDCAN_DLC_BYTES_6:
|
||||||
|
byteToHex(RxData[0], &msg[0]);
|
||||||
|
byteToHex(RxData[1], &msg[2]);
|
||||||
|
byteToHex(RxData[2], &msg[4]);
|
||||||
|
byteToHex(RxData[3], &msg[6]);
|
||||||
|
byteToHex(RxData[4], &msg[8]);
|
||||||
|
byteToHex(RxData[5], &msg[10]);
|
||||||
|
break;
|
||||||
|
case FDCAN_DLC_BYTES_7:
|
||||||
|
byteToHex(RxData[0], &msg[0]);
|
||||||
|
byteToHex(RxData[1], &msg[2]);
|
||||||
|
byteToHex(RxData[2], &msg[4]);
|
||||||
|
byteToHex(RxData[3], &msg[6]);
|
||||||
|
byteToHex(RxData[4], &msg[8]);
|
||||||
|
byteToHex(RxData[5], &msg[10]);
|
||||||
|
byteToHex(RxData[6], &msg[12]);
|
||||||
|
break;
|
||||||
|
case FDCAN_DLC_BYTES_8:
|
||||||
|
byteToHex(RxData[0], &msg[0]);
|
||||||
|
byteToHex(RxData[1], &msg[2]);
|
||||||
|
byteToHex(RxData[2], &msg[4]);
|
||||||
|
byteToHex(RxData[3], &msg[6]);
|
||||||
|
byteToHex(RxData[4], &msg[8]);
|
||||||
|
byteToHex(RxData[5], &msg[10]);
|
||||||
|
byteToHex(RxData[6], &msg[12]);
|
||||||
|
byteToHex(RxData[7], &msg[14]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FDCAN_DLC_BYTES_0:
|
||||||
|
default:
|
||||||
|
/* nothing to do */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
ULOG_DEBUG("Car MSG: %x, %d %s", RxHeader.Identifier, RxHeader.DataLength, msg);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user