#include <SPI.h>
#include "mcp_can.h"
#include <stdio.h> /* printf */
#include <stdlib.h> /* strtol */
const int SPI_CS_PIN = 9;
MCP_CAN CAN(SPI_CS_PIN);
void setup()
{
Serial.begin(115200);
while (CAN_OK != CAN.begin(CAN_500KBPS))
{
delay(100);
}
// CAN_EXTID_REMOTE
//CAN.init_Filt(0, CAN_EXTID, 0x1FFFFFFF);
//CAN.init_Mask(0, CAN_EXTID, 0x1FFFFFFF);
}
int ticks = 0;
const int size = 17;
double buf[size];
unsigned char rxBuf[8];
long unsigned int rxId;
unsigned char len = 0;
void loop()
{
//CAN.readMsgBuf(&len, rxBuf);
//rxId = CAN.getCanId();
CAN.readMsgBufID(&rxId, &len, rxBuf);
if (CAN.checkError() == false)
{
Serial.println("CAN ERROR");
}
if (CAN.isExtendedFrame())
{
Serial.println("Extended Frame");
}
/*if (rxId >= 300 && rxId <= 400)
{
Serial.println(rxId);
}*/
if (ticks == 1000)
{
ticks = 0;
for (int i =0; i < size; i++)
{
Serial.print(buf[i]);
if (i != size - 1)
{
Serial.print(',');
}
}
Serial.println();
}
ticks++;
if (rxId == 321)
{
if (rxBuf[5] > 130)
{
buf[0] = (rxBuf[4] + ((rxBuf[5] - 128) * 256));
}
else
{
buf[0] = (rxBuf[4] + (rxBuf[5] * 256));
}
buf[14] = (rxBuf[4] % 256);
buf[15] = (rxBuf[5] / 256) + 0x80;
buf[12] = (rxBuf[2] + ((rxBuf[3]-37) * 256)) / 2048;
}
else if (rxId == 320)
{
buf[1] = rxBuf[0]; // accel pos
}
else if (rxId == 209)
{
buf[2] = rxBuf[2]; // brake pos
buf[3] = (rxBuf[0] + (rxBuf[1] * 256)); // log
// arf fine? log again
if (rxBuf[7] > 14)
{
buf[4] = rxBuf[7] - 256;
}
else
{
buf[4] = rxBuf[7];
}
}
else if (rxId == 864)
{
buf[5] = rxBuf[4]; // load
buf[6] = rxBuf[0] + (rxBuf[1] * 256); // log
}
else if (rxId == 322)
{
if (rxBuf[1] > 130)
{
//buf[7] = (rxBuf[0] + ((((100/128) * rxBuf[1]) - 100) * 256));
}
else
{
//buf[7] = (rxBuf[0] + (((100/128) * rxBuf[1]) * 256));
}
//=IF([@8]>=166, ((100/128)*[@8])-100,(100/128)*[@8])
if (rxBuf[1] >= 166)
{
buf[8] = ((100/128) * rxBuf[1]) - 100;
}
else
{
buf[8] = (100/128) * rxBuf[1];
}
}
else if (rxId == 324)
{
buf[9] = rxBuf[2]; // log again
}
else if (rxId == 211)
{
buf[10] = rxBuf[4]; // speeds up with road speed and or rpm
buf[13] = rxBuf[5];
buf[11] = rxBuf[7]; // clutch slip?
}
else if (rxId == 865)
{
buf[16] = rxBuf[0]; // gear
}
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/