From 577da5f3001bfe2899241574efe0b796c4776e57 Mon Sep 17 00:00:00 2001
From: nrs1g15 <nrs1g15@soton.ac.uk>
Date: Tue, 30 Jul 2019 10:16:49 +0100
Subject: [PATCH] Added wireless with default pin setup

---
 sufst-controller/sd.h                 |  2 +
 sufst-controller/sufst-controller.ino | 15 ++++----
 sufst-controller/wireless.cpp         | 53 +++++++++++++++++++++++++++
 sufst-controller/wireless.h           | 26 +++++++++++++
 4 files changed, 88 insertions(+), 8 deletions(-)
 create mode 100644 sufst-controller/wireless.cpp
 create mode 100644 sufst-controller/wireless.h

diff --git a/sufst-controller/sd.h b/sufst-controller/sd.h
index 3849013..7fdfc9e 100644
--- a/sufst-controller/sd.h
+++ b/sufst-controller/sd.h
@@ -16,6 +16,8 @@
 #define SD_FILE_NAME "DATA.BIN"
 #define SD_WRITES_BEFORE_FLUSH 2
 
+#define SD_START_TRY_AGAIN_MS 1000
+
 uint8_t sdBegin();
 
 void sdWrite(void *data, uint8_t len);
diff --git a/sufst-controller/sufst-controller.ino b/sufst-controller/sufst-controller.ino
index 8d39956..44e5db9 100644
--- a/sufst-controller/sufst-controller.ino
+++ b/sufst-controller/sufst-controller.ino
@@ -5,11 +5,7 @@
 #include "ecuCan.h"
 #include "can.h"
 #include "dashController.h"
-
-// Watchdog
-#include <avr/wdt.h>
-
-#define OPENLOGGER_SERIAL_BUAD_RATE 115200
+#include "wireless.h"
 
 void setup()
 {
@@ -19,13 +15,15 @@ void setup()
     // Serial port for host pc communications
     Serial.begin(115200);
 
-    Serial.println("BEGIN");
+    // Serial.println("BEGIN");
 
     dashBegin();
 
     sdBegin();
 
     canBegin();
+
+    wirelessBegin();
 }
 
 void loop()
@@ -35,9 +33,10 @@ void loop()
     /*
    * ALL PROCESSES *MUST* BE NON BLOCKING
    */
+
     canProcessRx();
     dashControllerProcess();
     sdProcess();
-
-    //canProcessTx();
+    wirelessProcess();
+    canProcessTx();
 }
\ No newline at end of file
diff --git a/sufst-controller/wireless.cpp b/sufst-controller/wireless.cpp
new file mode 100644
index 0000000..63992c5
--- /dev/null
+++ b/sufst-controller/wireless.cpp
@@ -0,0 +1,53 @@
+//
+// Created by Sil on 30/07/2019.
+//
+
+#include "wireless.h"
+
+#include <XBee.h>
+#include "buffer.h"
+
+XBee xbee;
+
+XBeeAddress64 xbeeAddress64(XBEE_ADDRESS_UPPER, XBEE_ADDRESS_LOWER);
+
+Tx64Request tx64Request(xbeeAddress64, 0, 0);
+
+uint8_t wirelessTxBuffer[WIRELESS_TX_BUFFER_LEN];
+
+CirBuffer wirelessTxCirBuffer;
+
+uint8_t wirelessBegin()
+{
+    XBEE_SERIAL.begin(XBEE_SERIAL_BAUD_RATE);
+
+    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));
+}
+
+void wirelessWrite(void *data, uint8_t len)
+{
+    cirBufferWriteBytes(&wirelessTxCirBuffer, data, len);
+}
+
+void wirelessProcess()
+{
+    if (!digitalRead(XBEE_RTS_PIN)) {
+        if (XBEE_SERIAL.availableForWrite() >= WIRELESS_PAYLOAD_LEN) {
+            static uint8_t payload[WIRELESS_PAYLOAD_LEN];
+
+            tx64Request.setPayload(payload);
+            tx64Request.setPayloadLength(WIRELESS_PAYLOAD_LEN);
+
+            cirBufferReadBytes(&wirelessTxCirBuffer, payload, WIRELESS_PAYLOAD_LEN);
+
+            xbee.send(tx64Request);
+        }
+    }
+}
\ No newline at end of file
diff --git a/sufst-controller/wireless.h b/sufst-controller/wireless.h
new file mode 100644
index 0000000..8c260ca
--- /dev/null
+++ b/sufst-controller/wireless.h
@@ -0,0 +1,26 @@
+//
+// Created by Sil on 30/07/2019.
+//
+
+#ifndef WIRELESS_H
+#define WIRELESS_H
+
+#include "Arduino.h"
+
+#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 Serial1
+
+#define WIRELESS_TX_BUFFER_LEN 256
+#define WIRELESS_PAYLOAD_LEN 32
+
+uint8_t wirelessBegin();
+void wirelessWrite(void *data, uint8_t len);
+void wirelessProcess();
+
+#endif //WIRELESS_H
-- 
GitLab