Fork to see if I can get working

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

Fork of xDotBridge_update_test20180823 by Matt Briggs

Committer:
Matt Briggs
Date:
Tue Feb 21 11:07:22 2017 -0700
Revision:
51:58d2a1b8f9d2
Parent:
50:e89647e77fd5
Child:
53:a1563574a980
Moved PVD test files to seperate manual test.  Add new PVD manual test.  Updated bbio test and commited bin of test.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Matt Briggs 48:bab9f747d9ed 1 #include "mbed.h"
Matt Briggs 48:bab9f747d9ed 2 #include <string>
Matt Briggs 48:bab9f747d9ed 3 #include "..\..\config.h"
Matt Briggs 48:bab9f747d9ed 4 #include "BaseboardIO.h"
Matt Briggs 49:18f1354f9e51 5 #include "MTSLog.h"
Matt Briggs 48:bab9f747d9ed 6
Matt Briggs 48:bab9f747d9ed 7 #ifdef __TEST_BBIO__
Matt Briggs 48:bab9f747d9ed 8 Serial pc(USBTX, USBRX); // Externally defined
Matt Briggs 48:bab9f747d9ed 9
Matt Briggs 51:58d2a1b8f9d2 10 const int VERSION = 2;
Matt Briggs 51:58d2a1b8f9d2 11 extern void Error_Handler(void);
Matt Briggs 49:18f1354f9e51 12
Matt Briggs 48:bab9f747d9ed 13 char* bool2Str(bool in) {
Matt Briggs 48:bab9f747d9ed 14 if (in) {
Matt Briggs 48:bab9f747d9ed 15 return "Asserted\ "; // Extra space for alignment
Matt Briggs 48:bab9f747d9ed 16 }
Matt Briggs 48:bab9f747d9ed 17 else {
Matt Briggs 48:bab9f747d9ed 18 return "Not Asserted";
Matt Briggs 48:bab9f747d9ed 19 }
Matt Briggs 48:bab9f747d9ed 20 }
Matt Briggs 48:bab9f747d9ed 21
Matt Briggs 49:18f1354f9e51 22 volatile uint8_t ccInIntCnt;
Matt Briggs 49:18f1354f9e51 23 volatile uint8_t tamperIntCnt;
Matt Briggs 49:18f1354f9e51 24 volatile uint8_t pairBtnIntCnt;
Matt Briggs 49:18f1354f9e51 25 volatile uint8_t pvdIntCnt;
Matt Briggs 48:bab9f747d9ed 26
Matt Briggs 48:bab9f747d9ed 27 void ccInIntCallback () {
Matt Briggs 48:bab9f747d9ed 28 ccInIntCnt++;
Matt Briggs 48:bab9f747d9ed 29 }
Matt Briggs 48:bab9f747d9ed 30 void tamperIntCallback () {
Matt Briggs 48:bab9f747d9ed 31 tamperIntCnt++;
Matt Briggs 48:bab9f747d9ed 32 }
Matt Briggs 48:bab9f747d9ed 33 void pairBtnIntCallback () {
Matt Briggs 48:bab9f747d9ed 34 pairBtnIntCnt++;
Matt Briggs 48:bab9f747d9ed 35 }
Matt Briggs 51:58d2a1b8f9d2 36
Matt Briggs 51:58d2a1b8f9d2 37 // TODO Add in later after I figure out how
Matt Briggs 48:bab9f747d9ed 38
Matt Briggs 48:bab9f747d9ed 39 class MenuManager
Matt Briggs 48:bab9f747d9ed 40 {
Matt Briggs 48:bab9f747d9ed 41 private:
Matt Briggs 48:bab9f747d9ed 42 uint8_t mCurrSel; // Current selection
Matt Briggs 48:bab9f747d9ed 43 BaseboardIO *mBbio;
Matt Briggs 48:bab9f747d9ed 44 bool validInput(uint8_t in) {
Matt Briggs 48:bab9f747d9ed 45 if (in > 0 && in <= 8)
Matt Briggs 48:bab9f747d9ed 46 return true;
Matt Briggs 48:bab9f747d9ed 47 else {
Matt Briggs 48:bab9f747d9ed 48 return false;
Matt Briggs 48:bab9f747d9ed 49 }
Matt Briggs 48:bab9f747d9ed 50 }
Matt Briggs 48:bab9f747d9ed 51 public:
Matt Briggs 48:bab9f747d9ed 52 MenuManager() {
Matt Briggs 48:bab9f747d9ed 53 mCurrSel = 0;
Matt Briggs 48:bab9f747d9ed 54 mBbio = NULL;
Matt Briggs 48:bab9f747d9ed 55 }
Matt Briggs 48:bab9f747d9ed 56 void regBBIO (BaseboardIO *bbio) {
Matt Briggs 48:bab9f747d9ed 57 mBbio = bbio;
Matt Briggs 48:bab9f747d9ed 58 }
Matt Briggs 48:bab9f747d9ed 59 uint8_t getCurrentSel() {
Matt Briggs 48:bab9f747d9ed 60 return mCurrSel;
Matt Briggs 48:bab9f747d9ed 61 }
Matt Briggs 48:bab9f747d9ed 62 void applyInput(uint8_t in) {
Matt Briggs 48:bab9f747d9ed 63 if (validInput(in)) {
Matt Briggs 48:bab9f747d9ed 64 // mCurrSel = in;
Matt Briggs 48:bab9f747d9ed 65 if (in == 1) {
Matt Briggs 48:bab9f747d9ed 66 mBbio->ledOn();
Matt Briggs 48:bab9f747d9ed 67 }
Matt Briggs 48:bab9f747d9ed 68 else if (in == 2) {
Matt Briggs 48:bab9f747d9ed 69 mBbio->ledOff();
Matt Briggs 48:bab9f747d9ed 70 }
Matt Briggs 48:bab9f747d9ed 71 else if (in == 3) {
Matt Briggs 48:bab9f747d9ed 72 mBbio->relayNormal();
Matt Briggs 48:bab9f747d9ed 73 }
Matt Briggs 48:bab9f747d9ed 74 else if (in == 4) {
Matt Briggs 48:bab9f747d9ed 75 mBbio->relayAlert();
Matt Briggs 48:bab9f747d9ed 76 }
Matt Briggs 48:bab9f747d9ed 77 else if (in == 5) {
Matt Briggs 48:bab9f747d9ed 78 mBbio->serialRx(true);
Matt Briggs 48:bab9f747d9ed 79 }
Matt Briggs 48:bab9f747d9ed 80 else if (in == 6) {
Matt Briggs 48:bab9f747d9ed 81 mBbio->serialRx(false);
Matt Briggs 48:bab9f747d9ed 82 }
Matt Briggs 48:bab9f747d9ed 83 else if (in == 7) {
Matt Briggs 48:bab9f747d9ed 84 mBbio->serialTx(true);
Matt Briggs 48:bab9f747d9ed 85 }
Matt Briggs 48:bab9f747d9ed 86 else if (in == 8) {
Matt Briggs 48:bab9f747d9ed 87 mBbio->serialTx(false);
Matt Briggs 48:bab9f747d9ed 88 }
Matt Briggs 48:bab9f747d9ed 89 }
Matt Briggs 48:bab9f747d9ed 90 }
Matt Briggs 48:bab9f747d9ed 91 void printMenu() {
Matt Briggs 48:bab9f747d9ed 92 mBbio->sampleUserSwitches();
Matt Briggs 48:bab9f747d9ed 93 pc.printf("\r\n\r\n");
Matt Briggs 48:bab9f747d9ed 94 pc.printf("===============================================\r\n");
Matt Briggs 49:18f1354f9e51 95 pc.printf("= Baseboard I/O Tester v%02d =\r\n", VERSION);
Matt Briggs 48:bab9f747d9ed 96 pc.printf("===============================================\r\n");
Matt Briggs 48:bab9f747d9ed 97 pc.printf("===============================================\r\n");
Matt Briggs 48:bab9f747d9ed 98 pc.printf("= Selection Options =\r\n");
Matt Briggs 48:bab9f747d9ed 99 pc.printf("===============================================\r\n");
Matt Briggs 48:bab9f747d9ed 100 pc.printf("= 0: Just refresh =\r\n");
Matt Briggs 48:bab9f747d9ed 101 pc.printf("= 1: Turn on LED =\r\n");
Matt Briggs 48:bab9f747d9ed 102 pc.printf("= 2: Turn off LED =\r\n");
Matt Briggs 48:bab9f747d9ed 103 pc.printf("= 3: Toggle Relay Normal =\r\n");
Matt Briggs 48:bab9f747d9ed 104 pc.printf("= 4: Toggle Relay Alert =\r\n");
Matt Briggs 48:bab9f747d9ed 105 pc.printf("= 5: Turn on 232 RX =\r\n");
Matt Briggs 48:bab9f747d9ed 106 pc.printf("= 6: Turn off 232 RX =\r\n");
Matt Briggs 48:bab9f747d9ed 107 pc.printf("= 7: Turn on 232 TX (Note RX on as well) =\r\n");
Matt Briggs 48:bab9f747d9ed 108 pc.printf("= 8: Turn off 232 TX =\r\n");
Matt Briggs 48:bab9f747d9ed 109 pc.printf("===============================================\r\n");
Matt Briggs 48:bab9f747d9ed 110 pc.printf("= Status and Counters =\r\n");
Matt Briggs 48:bab9f747d9ed 111 pc.printf("===============================================\r\n");
Matt Briggs 48:bab9f747d9ed 112 pc.printf("= Pair btn. State: %s IntCnt: %02d =\r\n",
Matt Briggs 49:18f1354f9e51 113 bool2Str(mBbio->isPairBtn()), pairBtnIntCnt);
Matt Briggs 49:18f1354f9e51 114 pc.printf("= Tamper. State: N/A IntCnt: %04d =\r\n",
Matt Briggs 49:18f1354f9e51 115 tamperIntCnt);
Matt Briggs 48:bab9f747d9ed 116 pc.printf("= CCIN. State: %s IntCnt: %02d =\r\n",
Matt Briggs 49:18f1354f9e51 117 bool2Str(0), ccInIntCnt);
Matt Briggs 51:58d2a1b8f9d2 118 pc.printf("= PVD (BROKEN). State: N/A IntCnt: %02d =\r\n",
Matt Briggs 49:18f1354f9e51 119 pvdIntCnt);
Matt Briggs 48:bab9f747d9ed 120 pc.printf("= Is TX. State: %s =\r\n", bool2Str(mBbio->isTx()));
Matt Briggs 49:18f1354f9e51 121 pc.printf("= CC Normally Closed. State: %s =\r\n", bool2Str(mBbio->isCCNC()));
Matt Briggs 48:bab9f747d9ed 122 pc.printf("= Is LoraWAN. State: %s =\r\n", bool2Str(mBbio->isLoRaWANMode()));
Matt Briggs 50:e89647e77fd5 123 pc.printf("= Is Serial En. State: %s =\r\n", bool2Str(mBbio->isSerialEnabled()));
Matt Briggs 48:bab9f747d9ed 124 pc.printf("= Rotary Switch 1. Value: %02d =\r\n", mBbio->rotarySwitch1());
Matt Briggs 48:bab9f747d9ed 125 pc.printf("= Rotary Switch 2. Value: %02d =\r\n", mBbio->rotarySwitch2());
Matt Briggs 48:bab9f747d9ed 126 pc.printf("===============================================\r\n");
Matt Briggs 48:bab9f747d9ed 127 }
Matt Briggs 48:bab9f747d9ed 128 };
Matt Briggs 48:bab9f747d9ed 129
Matt Briggs 49:18f1354f9e51 130 char WAIT_CHARS [] = {'-', '\\', '|', '/'};
Matt Briggs 48:bab9f747d9ed 131 /**
Matt Briggs 48:bab9f747d9ed 132 * Checks that in idle state all the IOs are pulled up.
Matt Briggs 48:bab9f747d9ed 133 */
Matt Briggs 48:bab9f747d9ed 134 int main ()
Matt Briggs 48:bab9f747d9ed 135 {
Matt Briggs 48:bab9f747d9ed 136 MenuManager menuMgr;
Matt Briggs 48:bab9f747d9ed 137 CmdResult result;
Matt Briggs 48:bab9f747d9ed 138 ccInIntCnt = 0;
Matt Briggs 48:bab9f747d9ed 139 tamperIntCnt = 0;
Matt Briggs 48:bab9f747d9ed 140 pairBtnIntCnt = 0;
Matt Briggs 49:18f1354f9e51 141 pvdIntCnt = 0;
Matt Briggs 48:bab9f747d9ed 142
Matt Briggs 48:bab9f747d9ed 143 pc.baud(115200);
Matt Briggs 49:18f1354f9e51 144 mts::MTSLog::setLogLevel(mts::MTSLog::TRACE_LEVEL);
Matt Briggs 49:18f1354f9e51 145
Matt Briggs 48:bab9f747d9ed 146 wait(1.0);
Matt Briggs 48:bab9f747d9ed 147
Matt Briggs 48:bab9f747d9ed 148 pc.printf("===============================================\r\n");
Matt Briggs 48:bab9f747d9ed 149 pc.printf("= Baseboard Constructor Starting =\r\n");
Matt Briggs 48:bab9f747d9ed 150 BaseboardIO bbio;
Matt Briggs 48:bab9f747d9ed 151 pc.printf("= Baseboard Constructor Finished =\r\n");
Matt Briggs 48:bab9f747d9ed 152
Matt Briggs 48:bab9f747d9ed 153 pc.printf("= Baseboard Init Starting =\r\n");
Matt Briggs 48:bab9f747d9ed 154 result = bbio.init();
Matt Briggs 48:bab9f747d9ed 155 if (result == cmdSuccess) {
Matt Briggs 48:bab9f747d9ed 156 pc.printf("= Baseboard Init Finished Successfully =\r\n");
Matt Briggs 48:bab9f747d9ed 157 }
Matt Briggs 48:bab9f747d9ed 158 else {
Matt Briggs 48:bab9f747d9ed 159 pc.printf("= Baseboard Init Finished with Error =\r\n");
Matt Briggs 48:bab9f747d9ed 160 }
Matt Briggs 48:bab9f747d9ed 161
Matt Briggs 49:18f1354f9e51 162 Callback<void()> ccInIntObj (&ccInIntCallback);
Matt Briggs 49:18f1354f9e51 163 Callback<void()> tamperIntObj (&tamperIntCallback);
Matt Briggs 49:18f1354f9e51 164 Callback<void()> pairBtnIntObj (&pairBtnIntCallback);
Matt Briggs 49:18f1354f9e51 165 bbio.regCCInInt(ccInIntObj);
Matt Briggs 49:18f1354f9e51 166 bbio.regTamperInt(tamperIntObj);
Matt Briggs 49:18f1354f9e51 167 bbio.regPairBtnInt(pairBtnIntObj);
Matt Briggs 48:bab9f747d9ed 168
Matt Briggs 48:bab9f747d9ed 169 menuMgr.regBBIO(&bbio);
Matt Briggs 48:bab9f747d9ed 170 menuMgr.printMenu();
Matt Briggs 48:bab9f747d9ed 171
Matt Briggs 49:18f1354f9e51 172 uint8_t waitCharIdx = 0;
Matt Briggs 48:bab9f747d9ed 173 while (true) {
Matt Briggs 48:bab9f747d9ed 174
Matt Briggs 48:bab9f747d9ed 175 if (pc.readable()) {
Matt Briggs 48:bab9f747d9ed 176 char menuInput = pc.getc();
Matt Briggs 48:bab9f747d9ed 177 menuInput -= '0'; // Convert to raw interger value
Matt Briggs 48:bab9f747d9ed 178 menuMgr.applyInput(menuInput);
Matt Briggs 48:bab9f747d9ed 179 menuMgr.printMenu();
Matt Briggs 48:bab9f747d9ed 180 }
Matt Briggs 48:bab9f747d9ed 181 else {
Matt Briggs 49:18f1354f9e51 182 pc.printf("\b%c", WAIT_CHARS[waitCharIdx]);
Matt Briggs 49:18f1354f9e51 183 if (waitCharIdx >= sizeof(WAIT_CHARS)) {
Matt Briggs 49:18f1354f9e51 184 waitCharIdx = 0;
Matt Briggs 49:18f1354f9e51 185 }
Matt Briggs 49:18f1354f9e51 186 else {
Matt Briggs 49:18f1354f9e51 187 waitCharIdx++;
Matt Briggs 49:18f1354f9e51 188 }
Matt Briggs 48:bab9f747d9ed 189 }
Matt Briggs 49:18f1354f9e51 190 wait(0.1);
Matt Briggs 48:bab9f747d9ed 191 }
Matt Briggs 48:bab9f747d9ed 192 return 0;
Matt Briggs 48:bab9f747d9ed 193 }
Matt Briggs 51:58d2a1b8f9d2 194
Matt Briggs 48:bab9f747d9ed 195 #endif