diff --git a/sufst-controller/ecuCan.cpp b/sufst-controller/ecuCan.cpp index 65e3bd34ec26523e467947275bd7e77150819135..ab764d420ef7dc02834d4e358e6a29993629d5e8 100644 --- a/sufst-controller/ecuCan.cpp +++ b/sufst-controller/ecuCan.cpp @@ -77,7 +77,7 @@ void ecuCanMsg0x2000(CanMsgTemplate *canMsg) // ecuOpenloggerSave(canMsg, 1); // ecuOpenloggerSave(canMsg, 2); - dashEcuSetRpm(tpsPerc); + dashEcuSetRpm(rpm); dashEcuSetWaterTemp(waterTempC); } diff --git a/sufst-dash/sufst-dash.ino b/sufst-dash/sufst-dash.ino index c562714f111f9a9f6d2dc613c6b50a896835d981..43dbc6240cab02950b0f350b4fdf0a560d266b2e 100644 --- a/sufst-dash/sufst-dash.ino +++ b/sufst-dash/sufst-dash.ino @@ -20,12 +20,12 @@ #define DASH_SERIAL_START_BYTE 0x55 -#define DASH_RPM_THRESHOLD_1 30 -#define DASH_RPM_THRESHOLD_2 40 -#define DASH_RPM_THRESHOLD_3 50 -#define DASH_RPM_THRESHOLD_4 60 -#define DASH_RPM_THRESHOLD_5 70 -#define DASH_RPM_THRESHOLD_SHIFT 80 +#define DASH_RPM_THRESHOLD_1 7000 +#define DASH_RPM_THRESHOLD_2 9000 +#define DASH_RPM_THRESHOLD_3 11000 +#define DASH_RPM_THRESHOLD_4 12000 +#define DASH_RPM_THRESHOLD_5 13000 +#define DASH_RPM_THRESHOLD_SHIFT 13500 #define DASH_WATER_C_THRESHOLD 100 @@ -34,12 +34,14 @@ void dashRpmLedsProcess(); bool gShiftFlashState = true; -struct DashSerialFrame { - uint8_t startByte; - uint16_t waterTemp; - uint16_t rpm; - // uint8_t crc; -} __attribute__((packed)); +enum DashSerialState { + checkStart = 0, + checkRpm, + checkWaterTemp, + startError +}; + +DashSerialState dashSerialState = checkStart; uint16_t gDashRpm = 0; uint16_t gDashWaterTemp = 0; @@ -252,14 +254,36 @@ void dashWaterLedProcess() void serialProcess() { - DashSerialFrame dashSerialFrame; + + while(Serial.available() > 0) { + switch (dashSerialState) { + case checkStart: case startError: + if (Serial.read() == DASH_SERIAL_START_BYTE) { + dashSerialState = checkWaterTemp; + } + else { + dashSerialState = startError; + } + + break; + + case checkWaterTemp: + + Serial.readBytes((uint8_t *)(&gDashWaterTemp), 2); + + dashSerialState = checkRpm; + + Serial.println(gDashWaterTemp); + + break; + + case checkRpm: - if (Serial.available() >= sizeof(DashSerialFrame)) { - Serial.readBytes((uint8_t *)(&dashSerialFrame), sizeof(DashSerialFrame)); + Serial.readBytes((uint8_t *)(&gDashRpm), 2); + + dashSerialState = checkStart; - if (dashSerialFrame.startByte == DASH_SERIAL_START_BYTE) { - gDashRpm = dashSerialFrame.rpm; - gDashWaterTemp = dashSerialFrame.waterTemp; + break; } } }