From db2bf9a160e8b6304ee0693a70bd991171a0161e Mon Sep 17 00:00:00 2001
From: nrs1g15 <nrs1g15@soton.ac.uk>
Date: Wed, 24 Jul 2019 19:30:47 +0100
Subject: [PATCH] Lastest tested with car rpm and water temp

---
 sufst-controller/ecuCan.cpp |  2 +-
 sufst-dash/sufst-dash.ino   | 60 ++++++++++++++++++++++++++-----------
 2 files changed, 43 insertions(+), 19 deletions(-)

diff --git a/sufst-controller/ecuCan.cpp b/sufst-controller/ecuCan.cpp
index 65e3bd3..ab764d4 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 c562714..43dbc62 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;
     }
   }
 }
-- 
GitLab