From e33006887eefbca514054f03aead468c1d119a99 Mon Sep 17 00:00:00 2001
From: nrs1g15 <nrs1g15@soton.ac.uk>
Date: Thu, 1 Aug 2019 23:12:52 +0100
Subject: [PATCH] Updated daq so you can select either to save to sd, wireless
 or both

---
 sufst-controller/daq.cpp              | 18 +++++++++++++--
 sufst-controller/daq.h                |  8 ++++++-
 sufst-controller/ecuCan.cpp           | 32 +++++++++++++--------------
 sufst-controller/sufst-controller.ino |  2 ++
 sufst-controller/wireless.cpp         |  7 ------
 sufst-controller/wireless.h           |  3 ---
 6 files changed, 41 insertions(+), 29 deletions(-)

diff --git a/sufst-controller/daq.cpp b/sufst-controller/daq.cpp
index b60c7f1..a2bff6b 100644
--- a/sufst-controller/daq.cpp
+++ b/sufst-controller/daq.cpp
@@ -10,7 +10,7 @@
  * e.g 1 is rpm and 2 is tps... etc
  */
 
-void daqEcuWrite(CanMsgTemplate *canMsg, uint8_t index)
+void daqEcuWrite(CanMsgTemplate *canMsg, uint8_t index, DaqWriteSpace daqWriteSpace)
 {
     static DaqEcuFormat daqEcuFormat;
 
@@ -24,6 +24,20 @@ void daqEcuWrite(CanMsgTemplate *canMsg, uint8_t index)
 
     daqEcuFormat.endTag = ecuParamterTag;
 
-    sdWrite(&daqEcuFormat, sizeof(DaqEcuFormat));
+    switch(daqWriteSpace) {
+        case SD:
+            sdWrite(&daqEcuFormat, sizeof(DaqEcuFormat));
 
+            break;
+        case WIRELESS:
+            wirelessWrite(&daqEcuFormat, sizeof(DaqEcuFormat));
+
+            break;
+
+        case SD_AND_WIRELESS:
+            sdWrite(&daqEcuFormat, sizeof(DaqEcuFormat));
+            wirelessWrite(&daqEcuFormat, sizeof(DaqEcuFormat));
+
+            break;
+    }
 }
\ No newline at end of file
diff --git a/sufst-controller/daq.h b/sufst-controller/daq.h
index c59439c..adf529a 100644
--- a/sufst-controller/daq.h
+++ b/sufst-controller/daq.h
@@ -34,8 +34,14 @@ static const uint8_t daqEcuDataToTag[8][4] = {
     {28, 29, 30, 31},
 };
 
+typedef enum DaqWriteSpace
+{
+    SD,
+    WIRELESS,
+    SD_AND_WIRELESS
+};
 static const uint8_t daqEvoScannPressSensToTag[8] = {32, 33, 34, 35, 36, 37, 38, 39};
 
-void daqEcuWrite(CanMsgTemplate *canMsg, uint8_t index);
+void daqEcuWrite(CanMsgTemplate *canMsg, uint8_t index, DaqWriteSpace daqWriteSpace);
 
 #endif //DAQ_H
diff --git a/sufst-controller/ecuCan.cpp b/sufst-controller/ecuCan.cpp
index 7ce5c44..6d8934a 100644
--- a/sufst-controller/ecuCan.cpp
+++ b/sufst-controller/ecuCan.cpp
@@ -26,9 +26,9 @@ void ecuCanMsg0x2000(CanMsgTemplate *canMsg)
     uint16_t waterTempC = canMsg->data16[2];
     uint16_t airTempC = canMsg->data16[3];
 
-    daqEcuWrite(canMsg, 0);
-    daqEcuWrite(canMsg, 1);
-    daqEcuWrite(canMsg, 2);
+    daqEcuWrite(canMsg, 0, SD_AND_WIRELESS);
+    daqEcuWrite(canMsg, 1, SD);
+    daqEcuWrite(canMsg, 2, SD_AND_WIRELESS);
 
      dashEcuSetRpm(rpm);
      dashEcuSetWaterTemp(waterTempC);
@@ -54,8 +54,8 @@ void ecuCanMsg0x2001(CanMsgTemplate *canMsg)
     uint16_t speedKphx10 = canMsg->data16[2];
     uint16_t oilPressKpa = canMsg->data16[3];
 
-    daqEcuWrite(canMsg, 1);
-    daqEcuWrite(canMsg, 2);
+    daqEcuWrite(canMsg, 1, SD);
+    daqEcuWrite(canMsg, 2, SD);
 }
 
 void ecuCanMsg0x2002(CanMsgTemplate *canMsg)
@@ -78,7 +78,7 @@ void ecuCanMsg0x2002(CanMsgTemplate *canMsg)
     uint16_t batteryVx10 = canMsg->data16[2];
     uint16_t fuelComsumLpHrx10 = canMsg->data16[3];
 
-    daqEcuWrite(canMsg, 2);
+    daqEcuWrite(canMsg, 2, SD);
 
     // Serial.println((float)(batteryVx10 / 10.0));
 }
@@ -103,8 +103,8 @@ void ecuCanMsg0x2003(CanMsgTemplate *canMsg)
     uint16_t injectionTimeMsx100 = canMsg->data16[2];
     uint16_t fuelComsumLp100kMx10 = canMsg->data16[3];
 
-    daqEcuWrite(canMsg, 1);
-    daqEcuWrite(canMsg, 2);
+    daqEcuWrite(canMsg, 1, SD);
+    daqEcuWrite(canMsg, 2, SD);
 }
 
 void ecuCanMsg0x2004(CanMsgTemplate *canMsg)
@@ -127,7 +127,7 @@ void ecuCanMsg0x2004(CanMsgTemplate *canMsg)
     uint16_t ana3mV = canMsg->data16[2];
     uint16_t camAdvanceDegx10 = canMsg->data16[3];
 
-    daqEcuWrite(canMsg, 3);
+    daqEcuWrite(canMsg, 3, SD);
 }
 
 void ecuCanMsg0x2005(CanMsgTemplate *canMsg)
@@ -150,10 +150,10 @@ void ecuCanMsg0x2005(CanMsgTemplate *canMsg)
     uint16_t crankErrorsNr = canMsg->data16[2];
     uint16_t camErrorsNr = canMsg->data16[3];
 
-    daqEcuWrite(canMsg, 0);
-    daqEcuWrite(canMsg, 1);
-    daqEcuWrite(canMsg, 2);
-    daqEcuWrite(canMsg, 3);
+    daqEcuWrite(canMsg, 0, SD);
+    daqEcuWrite(canMsg, 1, SD);
+    daqEcuWrite(canMsg, 2, SD);
+    daqEcuWrite(canMsg, 3, SD);
 }
 
 void ecuCanMsg0x2006(CanMsgTemplate *canMsg)
@@ -197,9 +197,9 @@ void ecuCanMsg0x2007(CanMsgTemplate *canMsg)
     uint16_t lambdaPidAdjPercx10 = canMsg->data16[2];
     uint16_t ecuSwitchesBitField = canMsg->data16[3];
 
-    daqEcuWrite(canMsg, 0);
-    daqEcuWrite(canMsg, 1);
-    daqEcuWrite(canMsg, 2);
+    daqEcuWrite(canMsg, 0, SD);
+    daqEcuWrite(canMsg, 1, SD);
+    daqEcuWrite(canMsg, 2, SD);
 }
 
 void ecuCanMsg0x2008(CanMsgTemplate *canMsg)
diff --git a/sufst-controller/sufst-controller.ino b/sufst-controller/sufst-controller.ino
index fe7b2e6..b796831 100644
--- a/sufst-controller/sufst-controller.ino
+++ b/sufst-controller/sufst-controller.ino
@@ -19,6 +19,7 @@ void setup()
     sdBegin();
     canBegin();
     lapTimerBegin();
+    wirelessBegin();
 }
 
 void loop()
@@ -33,4 +34,5 @@ void loop()
     dashControllerProcess();
     sdProcess();
     canProcessTx();
+    wirelessProcess();
 }
\ No newline at end of file
diff --git a/sufst-controller/wireless.cpp b/sufst-controller/wireless.cpp
index 12a29f8..d41d4e4 100644
--- a/sufst-controller/wireless.cpp
+++ b/sufst-controller/wireless.cpp
@@ -23,11 +23,6 @@ uint8_t wirelessBegin()
 
     xbee.setSerial(XBEE_SERIAL);
 
-    pinMode(XBEE_CTS_PIN, INPUT);
-
-    pinMode(XBEE_RTS_PIN, OUTPUT);
-    digitalWrite(XBEE_RTS_PIN, LOW);
-
     return cirBufferBegin(&wirelessTxCirBuffer, wirelessTxBuffer, WIRELESS_TX_BUFFER_LEN, sizeof(uint8_t));
 }
 
@@ -39,7 +34,6 @@ void wirelessWrite(void *data, uint8_t len)
 void wirelessProcess()
 {
     if (cirBufferAvailable(&wirelessTxCirBuffer) >= WIRELESS_PAYLOAD_LEN) {
-//        if (!digitalRead(XBEE_RTS_PIN)) {
         if (XBEE_SERIAL.availableForWrite() >= WIRELESS_PAYLOAD_LEN) {
             static uint8_t payload[WIRELESS_PAYLOAD_LEN];
 
@@ -50,6 +44,5 @@ void wirelessProcess()
 
             xbee.send(tx64Request);
         }
-//        }
     }
 }
\ No newline at end of file
diff --git a/sufst-controller/wireless.h b/sufst-controller/wireless.h
index 2c0f433..27c8fbe 100644
--- a/sufst-controller/wireless.h
+++ b/sufst-controller/wireless.h
@@ -10,9 +10,6 @@
 #define XBEE_ADDRESS_UPPER 0x0013A200
 #define XBEE_ADDRESS_LOWER 0x410AC922
 
-#define XBEE_CTS_PIN 6
-#define XBEE_RTS_PIN 7
-
 #define XBEE_SERIAL_BAUD_RATE 115200
 #define XBEE_SERIAL Serial
 
-- 
GitLab