Select Git revision
ecuCan.cpp 7.87 KiB
//
// Created by Sil on 7/21/2019.
//
#include "ecuCan.h"
#include "openLoggerController.h"
#include "ecuOpenloggerTags.h"
struct EcuDataOpenlogger
{
uint8_t startTag;
uint32_t timestamp;
uint16_t data;
uint8_t endTag;
};
void ecuOpenloggerWrite(EcuDataOpenlogger *ecuDataOpenlogger);
void ecuOpenloggerSave(CanMsgTemplate *canMsgTemplate, uint8_t index);
void ecuOpenloggerWrite(EcuDataOpenlogger &ecuDataOpenlogger)
{
static uint8_t openloggerPayload[8];
memcpy(openloggerPayload, &(ecuDataOpenlogger.startTag), 1);
memcpy(&(openloggerPayload[1]), &(ecuDataOpenlogger.timestamp), 4);
memcpy(&(openloggerPayload[5]), &(ecuDataOpenlogger.data), 2);
memcpy(&(openloggerPayload[7]), &(ecuDataOpenlogger.endTag), 1);
openloggerWrite(openloggerPayload, 8);
}
void ecuOpenloggerSave(CanMsgTemplate *canMsg, uint8_t index)
{
static EcuDataOpenlogger ecuDataOpenlogger;
uint8_t ecuId = canMsg->idByte[0];
uint8_t ecuParamterTag = ecuMsgParameterToOpenloggerTag[ecuId][index];
ecuDataOpenlogger.startTag = ecuParamterTag;
ecuDataOpenlogger.timestamp = canMsg->timestamp;
ecuDataOpenlogger.data = canMsg->data16[index];
ecuDataOpenlogger.endTag = ecuParamterTag;
ecuOpenloggerWrite(ecuDataOpenlogger);
}
void ecuCanMsg0x2000(CanMsgTemplate *canMsg)
{
#if DEBUG_ECU_CAN
Serial.print("ECU : 0x2000 : ");
for (uint8_t i = 0; i < 3; i++) {
Serial.print(canMsg->data16[i], HEX);
Serial.print(" , ");
}
Serial.println(canMsg->data16[3], HEX);
#endif //DEBUG_ECU_CAN
#if DEBUG_ECU_CAN_MINIMAL
Serial.println("ECU : 0x2000");
#endif //DEBUG_ECU_CAN_MINIMAL
uint16_t rpm = canMsg->data16[0];
uint16_t tpsPerc = canMsg->data16[1];
uint16_t waterTempC = canMsg->data16[2];
uint16_t airTempC = canMsg->data16[3];
ecuOpenloggerSave(canMsg, 0);
ecuOpenloggerSave(canMsg, 1);
ecuOpenloggerSave(canMsg, 2);
ecuOpenloggerSave(canMsg, 3);
}
void ecuCanMsg0x2001(CanMsgTemplate *canMsg)
{
#if DEBUG_ECU_CAN
Serial.print("ECU : 0x2001 : ");
for (uint8_t i = 0; i < 3; i++) {
Serial.print(canMsg->data16[i], HEX);
Serial.print(" , ");
}
Serial.println(canMsg->data16[3], HEX);
#endif //DEBUG_ECU_CAN
#if DEBUG_ECU_CAN_MINIMAL
Serial.println("ECU : 0x2001");
#endif //DEBUG_ECU_CAN_MINIMAL
uint16_t mainifoldPresKpa = canMsg->data16[0];
uint16_t lambdax1000 = canMsg->data16[1];
uint16_t speedKphx10 = canMsg->data16[2];
uint16_t oilPressKpa = canMsg->data16[3];
ecuOpenloggerSave(canMsg, 0);
ecuOpenloggerSave(canMsg, 1);
ecuOpenloggerSave(canMsg, 2);
ecuOpenloggerSave(canMsg, 3);
}
void ecuCanMsg0x2002(CanMsgTemplate *canMsg)
{
#if DEBUG_ECU_CAN
Serial.print("ECU : 0x2002 : ");
for (uint8_t i = 0; i < 3; i++) {
Serial.print(canMsg->data16[i], HEX);
Serial.print(" , ");
}
Serial.println(canMsg->data16[3], HEX);
#endif //DEBUG_ECU_CAN
#if DEBUG_ECU_CAN_MINIMAL
Serial.println("ECU : 0x2002");
#endif //DEBUG_ECU_CAN_MINIMAL
uint16_t fuelPressKpa = canMsg->data16[0];
uint16_t oilTempC = canMsg->data16[1];
uint16_t batteryVx10 = canMsg->data16[2];
uint16_t fuelComsumLpHrx10 = canMsg->data16[3];
ecuOpenloggerSave(canMsg, 0);
ecuOpenloggerSave(canMsg, 1);
ecuOpenloggerSave(canMsg, 2);
ecuOpenloggerSave(canMsg, 3);
// Serial.println((float)(batteryVx10 / 10.0));
}
void ecuCanMsg0x2003(CanMsgTemplate *canMsg)
{
#if DEBUG_ECU_CAN
Serial.print("ECU : 0x2003 : ");
for (uint8_t i = 0; i < 3; i++) {
Serial.print(canMsg->data16[i], HEX);
Serial.print(" , ");
}
Serial.println(canMsg->data16[3], HEX);
#endif //DEBUG_ECU_CAN
#if DEBUG_ECU_CAN_MINIMAL
Serial.println("ECU : 0x2003");
#endif //DEBUG_ECU_CAN_MINIMAL
uint16_t currentGear = canMsg->data16[0];
uint16_t advanceDegx10 = canMsg->data16[1];
uint16_t injectionTimeMsx100 = canMsg->data16[2];
uint16_t fuelComsumLp100kMx10 = canMsg->data16[3];
ecuOpenloggerSave(canMsg, 0);
ecuOpenloggerSave(canMsg, 1);
ecuOpenloggerSave(canMsg, 2);
ecuOpenloggerSave(canMsg, 3);
}
void ecuCanMsg0x2004(CanMsgTemplate *canMsg)
{
#if DEBUG_ECU_CAN
Serial.print("ECU : 0x2004 : ");
for (uint8_t i = 0; i < 3; i++) {
Serial.print(canMsg->data16[i], HEX);
Serial.print(" , ");
}
Serial.println(canMsg->data16[3], HEX);
#endif //DEBUG_ECU_CAN
#if DEBUG_ECU_CAN_MINIMAL
Serial.println("ECU : 0x2004");
#endif //DEBUG_ECU_CAN_MINIMAL
uint16_t ana1mV = canMsg->data16[0];
uint16_t ana2mV = canMsg->data16[1];
uint16_t ana3mV = canMsg->data16[2];
uint16_t camAdvanceDegx10 = canMsg->data16[3];
ecuOpenloggerSave(canMsg, 0);
ecuOpenloggerSave(canMsg, 1);
ecuOpenloggerSave(canMsg, 2);
ecuOpenloggerSave(canMsg, 3);
}
void ecuCanMsg0x2005(CanMsgTemplate *canMsg)
{
#if DEBUG_ECU_CAN
Serial.print("ECU : 0x2005 : ");
for (uint8_t i = 0; i < 3; i++) {
Serial.print(canMsg->data16[i], HEX);
Serial.print(" , ");
}
Serial.println(canMsg->data16[3], HEX);
#endif //DEBUG_ECU_CAN
#if DEBUG_ECU_CAN_MINIMAL
Serial.println("ECU : 0x2005");
#endif //DEBUG_ECU_CAN_MINIMAL
uint16_t camTargDegx10 = canMsg->data16[0];
uint16_t camPwmPercx10 = canMsg->data16[1];
uint16_t crankErrorsNr = canMsg->data16[2];
uint16_t camErrorsNr = canMsg->data16[3];
}
void ecuCanMsg0x2006(CanMsgTemplate *canMsg)
{
#if DEBUG_ECU_CAN
Serial.print("ECU : 0x2006 : ");
for (uint8_t i = 0; i < 3; i++) {
Serial.print(canMsg->data16[i], HEX);
Serial.print(" , ");
}
Serial.println(canMsg->data16[3], HEX);
#endif //DEBUG_ECU_CAN
#if DEBUG_ECU_CAN_MINIMAL
Serial.println("ECU : 0x2006");
#endif //DEBUG_ECU_CAN_MINIMAL
uint16_t cam2AdvDegx10 = canMsg->data16[0];
uint16_t cam2TargDegx10 = canMsg->data16[1];
uint16_t cam2PwmPercx10 = canMsg->data16[2];
uint16_t external5VmV = canMsg->data16[3];
ecuOpenloggerSave(canMsg, 0);
ecuOpenloggerSave(canMsg, 1);
ecuOpenloggerSave(canMsg, 2);
ecuOpenloggerSave(canMsg, 3);
}
void ecuCanMsg0x2007(CanMsgTemplate *canMsg)
{
#if DEBUG_ECU_CAN
Serial.print("ECU : 0x2007 : ");
for (uint8_t i = 0; i < 3; i++) {
Serial.print(canMsg->data16[i], HEX);
Serial.print(" , ");
}
Serial.println(canMsg->data16[3], HEX);
#endif //DEBUG_ECU_CAN
#if DEBUG_ECU_CAN_MINIMAL
Serial.println("ECU : 0x2007");
#endif //DEBUG_ECU_CAN_MINIMAL
uint16_t injDutyCyclePerc = canMsg->data16[0];
uint16_t lambdaPidTargPercx10 = canMsg->data16[1];
uint16_t lambdaPidAdjPercx10 = canMsg->data16[2];
uint16_t ecuSwitchesBitField = canMsg->data16[3];
ecuOpenloggerSave(canMsg, 0);
ecuOpenloggerSave(canMsg, 1);
ecuOpenloggerSave(canMsg, 2);
ecuOpenloggerSave(canMsg, 3);
}
void ecuCanMsg0x2008(CanMsgTemplate *canMsg)
{
#if DEBUG_ECU_CAN
Serial.print("ECU : 0x2008 : ");
for (uint8_t i = 0; i < 3; i++) {
Serial.print(canMsg->data16[i], HEX);
Serial.print(" , ");
}
Serial.println(canMsg->data16[3], HEX);
#endif //DEBUG_ECU_CAN
#if DEBUG_ECU_CAN_MINIMAL
Serial.println("ECU : 0x2008");
#endif //DEBUG_ECU_CAN_MINIMAL
uint16_t rdSpeedKphx10 = canMsg->data16[0];
uint16_t rUdSpeedKphx10 = canMsg->data16[1];
uint16_t ldSpeedKphx10 = canMsg->data16[2];
uint16_t lUdSpeedKphx10 = canMsg->data16[3];
ecuOpenloggerSave(canMsg, 0);
ecuOpenloggerSave(canMsg, 1);
ecuOpenloggerSave(canMsg, 2);
ecuOpenloggerSave(canMsg, 3);
}
void ecuCanMsg0x2009(CanMsgTemplate *canMsg)
{
#if DEBUG_ECU_CAN
Serial.print("ECU : 0x2009 : ");
for (uint8_t i = 0; i < 3; i++) {
Serial.print(canMsg->data16[i], HEX);
Serial.print(" , ");
}
Serial.println(canMsg->data16[3], HEX);
#endif //DEBUG_ECU_CAN
#if DEBUG_ECU_CAN_MINIMAL
Serial.println("ECU : 0x2008");
#endif //DEBUG_ECU_CAN_MINIMAL
uint16_t rightLambdax1000 = canMsg->data16[0];
}