Fork to see if I can get working

Dependencies:   BufferedSerial OneWire WinbondSPIFlash libxDot-dev-mbed5-deprecated

Fork of xDotBridge_update_test20180823 by Matt Briggs

Revision:
61:8d9efd33cac9
diff -r 5179449a684f -r 8d9efd33cac9 xDotBridge/manualTest/testXDotDevComm/testXDotDevComm.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xDotBridge/manualTest/testXDotDevComm/testXDotDevComm.cpp	Thu Mar 09 16:47:42 2017 -0700
@@ -0,0 +1,98 @@
+#include "mbed.h"
+#include "../../config.h"
+#include "CommProtocolPeerBrute.h"
+//#include "BaseboardIO.h"
+//#include "MTSLog.h"
+#include "RadioEvent.h"
+#include "dot_util.h"
+#include "mDot.h"
+
+#ifdef __TEST_XDOT_DEV_COMM__
+Serial pc(USBTX, USBRX); // Externally defined
+mDot* dot = NULL; // Used by dot-utils
+
+const int VERSION = 0;
+
+volatile bool ccInIntFlag;  // Wake pin
+
+void ccInIntCallback () {
+    ccInIntFlag = true;
+}
+
+InterruptIn mCCIn(WAKE);
+DigitalOut led(GPIO0);
+/**
+ * Checks that in idle state all the IOs are pulled up.
+ */
+int main ()
+{
+    CommProtocolPeerBrute *protocol = new CommProtocolPeerBrute();
+    unsigned int loopCnt = 0;
+    uint16_t txSeqNum=0;
+    uint16_t rxSeqNum=0;
+    CmdResult result;
+    std::vector<uint8_t> data;
+    pc.baud(115200);
+    RadioEvent events;  // Custom event handler for automatically displaying RX data
+    mts::MTSLog::setLogLevel(mts::MTSLog::TRACE_LEVEL);
+    dot = mDot::getInstance();
+
+    dot->setLogLevel(mts::MTSLog::INFO_LEVEL);  // This actually is very important
+
+    dot->setEvents(&events);  // Little bonus event debug information
+
+    protocol->init();
+    dot->setWakeMode(mDot::RTC_ALARM_OR_INTERRUPT);
+    dot->setWakePin(UART_CTS);
+
+    ccInIntFlag = false;
+
+    Callback<void()> ccInIntObj (&ccInIntCallback);
+    mCCIn.rise(ccInIntCallback);
+    mCCIn.mode(PullDown);
+    mCCIn.enable_irq();
+
+    uint8_t waitCharIdx = 0;
+
+    logInfo("Version %d.  Setup complete.  Starting main loop.", VERSION);
+
+    while (true) {
+        if (ccInIntFlag) { // TX
+            led = 1;
+            data.clear();
+            data.push_back((txSeqNum >> 8) & 0xFF);
+            data.push_back(txSeqNum & 0xFF);
+            std::string dataStr(data.begin(), data.end());
+            logInfo("Sent msg num: %d, payload: %s", txSeqNum, dataStr.c_str());
+            protocol->send(data);
+            txSeqNum++;
+            ccInIntFlag = false;
+        }
+        else { // RX
+		    bool msgPending;
+		    protocol->listen(msgPending);
+		    logInfo("Loop Cnt %d.  Listening.", loopCnt);
+		    if (msgPending) {
+		        protocol->recv(data);
+                std::string dataStr(data.begin(), data.end());
+                logInfo("Got msg num: %d, payload: %s", rxSeqNum, dataStr.c_str());
+                rxSeqNum++;
+                led = 1;
+                wait(0.5);
+                protocol->sampleDLC();
+		    }
+        }
+
+        loopCnt++;
+
+		led = 0;
+        sleep_save_io();
+        sleep_configure_io();
+        dot->sleep(2, mDot::RTC_ALARM_OR_INTERRUPT, false);  // Go to sleep until wake button
+        sleep_restore_io();
+        logInfo("\r\n================================");
+    }
+    return 0;
+}
+
+#endif