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