Skip to content
Snippets Groups Projects
Select Git revision
  • 678dca50270b8b1b5515afee98e3139b6277114d
  • master default protected
  • nrs1g15-experiemental
  • Integrated-can-sd-board
4 results

ecuCan.cpp

Blame
  • 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];
    }