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:
mbriggs_vortex
Date:
Wed Nov 29 13:54:36 2017 -0700
Revision:
100:0882cf295f8e
Parent:
55:79ab0bbc5008
Adding relaese bin to repo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Matt Briggs 47:a68747642a7a 1 #include "mbed.h"
Matt Briggs 47:a68747642a7a 2 #include <string>
Matt Briggs 55:79ab0bbc5008 3 #include "../../config.h"
Matt Briggs 47:a68747642a7a 4
Matt Briggs 48:bab9f747d9ed 5 #ifdef __TEST_LRR__
Matt Briggs 47:a68747642a7a 6 DigitalOut gpio0(GPIO0);
Matt Briggs 47:a68747642a7a 7 DigitalOut gpio1(GPIO1);
Matt Briggs 47:a68747642a7a 8 DigitalOut gpio2(GPIO2);
Matt Briggs 47:a68747642a7a 9 DigitalOut gpio3(GPIO3);
Matt Briggs 47:a68747642a7a 10 DigitalOut wake_DOUT(WAKE);
Matt Briggs 47:a68747642a7a 11 DigitalOut i2cOut1(I2C1_SCL);
Matt Briggs 47:a68747642a7a 12 DigitalOut i2cOut2(I2C1_SDA);
Matt Briggs 47:a68747642a7a 13
Matt Briggs 47:a68747642a7a 14 DigitalOut uartCts(UART1_CTS);
Matt Briggs 47:a68747642a7a 15 DigitalOut uartRts(UART1_RTS);
Matt Briggs 47:a68747642a7a 16 DigitalOut uartTx(UART1_TX);
Matt Briggs 47:a68747642a7a 17 DigitalOut uartRx(UART1_RX);
Matt Briggs 47:a68747642a7a 18
Matt Briggs 47:a68747642a7a 19 DigitalOut mosi(SPI_MOSI);
Matt Briggs 47:a68747642a7a 20 DigitalOut sck(SPI_SCK);
Matt Briggs 47:a68747642a7a 21
Matt Briggs 47:a68747642a7a 22 DigitalOut nss(SPI_NSS, 1); // if low then miso on the flash becomes output
Matt Briggs 47:a68747642a7a 23 DigitalInOut miso(SPI_MISO, PIN_INPUT, PullNone, 0);
Matt Briggs 47:a68747642a7a 24
Matt Briggs 47:a68747642a7a 25 Serial pc(USBTX, USBRX); // Externally defined
Matt Briggs 47:a68747642a7a 26
Matt Briggs 47:a68747642a7a 27 const static std::string PIN_NAMES [] = {
Matt Briggs 47:a68747642a7a 28 "Pin 2: UART_TX ", // Idx 0
Matt Briggs 47:a68747642a7a 29 "Pin 3: UART_RX ", // Idx 1
Matt Briggs 47:a68747642a7a 30 "Pin 4: MISO ", // Idx 2
Matt Briggs 47:a68747642a7a 31 "Pin 6: SCL ", // Idx 3
Matt Briggs 47:a68747642a7a 32 "Pin 7: SDA ", // Idx 4
Matt Briggs 47:a68747642a7a 33 "Pin 11: MOSI ", // Idx 5
Matt Briggs 47:a68747642a7a 34 "Pin 12: UART_CTS", // Idx 6
Matt Briggs 47:a68747642a7a 35 "Pin 13: WAKE ", // Idx 7
Matt Briggs 47:a68747642a7a 36 "Pin 15: GPIO2 ", // Idx 8
Matt Briggs 47:a68747642a7a 37 "Pin 16: UART_RTS", // Idx 9
Matt Briggs 47:a68747642a7a 38 "Pin 17: NSS ", // Idx 10
Matt Briggs 47:a68747642a7a 39 "Pin 18: SCK ", // Idx 11
Matt Briggs 47:a68747642a7a 40 "Pin 19: GPIO1 ", // Idx 12
Matt Briggs 47:a68747642a7a 41 "Pin 20: GPIO3 " // Idx 13
Matt Briggs 47:a68747642a7a 42 };
Matt Briggs 47:a68747642a7a 43
Matt Briggs 47:a68747642a7a 44 const uint8_t config0PinIdx[] = {0,1, 3,4,5,6,7,8,9,10,11,12,13};
Matt Briggs 47:a68747642a7a 45 const uint8_t config1PinIdx[] = {0,1,2,3,4,5,6,7,8,9, 11,12,13};
Matt Briggs 47:a68747642a7a 46
Matt Briggs 47:a68747642a7a 47 class MenuManager
Matt Briggs 47:a68747642a7a 48 {
Matt Briggs 47:a68747642a7a 49 private:
Matt Briggs 47:a68747642a7a 50 uint8_t mCurrSel; // Current selection
Matt Briggs 47:a68747642a7a 51 bool validInput(uint8_t in) {
Matt Briggs 47:a68747642a7a 52 return in <= 1; // Either 0, 1
Matt Briggs 47:a68747642a7a 53 }
Matt Briggs 47:a68747642a7a 54 public:
Matt Briggs 47:a68747642a7a 55 MenuManager() {
Matt Briggs 47:a68747642a7a 56 mCurrSel = 0;
Matt Briggs 47:a68747642a7a 57 }
Matt Briggs 47:a68747642a7a 58 uint8_t getCurrentSel() {
Matt Briggs 47:a68747642a7a 59 return mCurrSel;
Matt Briggs 47:a68747642a7a 60 }
Matt Briggs 47:a68747642a7a 61 void applyInput(uint8_t in) {
Matt Briggs 47:a68747642a7a 62 if (validInput(in)) {
Matt Briggs 47:a68747642a7a 63 mCurrSel = in;
Matt Briggs 47:a68747642a7a 64 }
Matt Briggs 47:a68747642a7a 65 }
Matt Briggs 47:a68747642a7a 66 void printMenu() {
Matt Briggs 47:a68747642a7a 67 pc.printf("===============================================\r\n");
Matt Briggs 47:a68747642a7a 68 pc.printf("= LRR I/O Tester =\r\n");
Matt Briggs 47:a68747642a7a 69 pc.printf("===============================================\r\n");
Matt Briggs 47:a68747642a7a 70 pc.printf("= Option 0: MISO Disabled, NSS Enabled =\r\n");
Matt Briggs 47:a68747642a7a 71 pc.printf("= Option 1: MISO Enabled, NSS Disabled = \r\n");
Matt Briggs 47:a68747642a7a 72 pc.printf("= Current Selection is %d =\r\n", mCurrSel);
Matt Briggs 47:a68747642a7a 73 pc.printf("===============================================\r\n");
Matt Briggs 47:a68747642a7a 74 pc.printf("= Details: =\r\n");
Matt Briggs 47:a68747642a7a 75 if (mCurrSel == 0) {
Matt Briggs 47:a68747642a7a 76 pc.printf("= The following pins are toggling: =\r\n");
Matt Briggs 47:a68747642a7a 77 pc.printf("= Pin #: Name =\r\n");
Matt Briggs 47:a68747642a7a 78 for (unsigned int i=0; i < sizeof(config0PinIdx); i++) {
Matt Briggs 47:a68747642a7a 79 pc.printf("= %s =\r\n", PIN_NAMES[i].c_str());
Matt Briggs 47:a68747642a7a 80 }
Matt Briggs 47:a68747642a7a 81 }
Matt Briggs 47:a68747642a7a 82 else if (mCurrSel == 1) {
Matt Briggs 47:a68747642a7a 83 pc.printf("= The following pins are toggling: =\r\n");
Matt Briggs 47:a68747642a7a 84 pc.printf("= Pin #: Name =\r\n");
Matt Briggs 47:a68747642a7a 85 for (unsigned int i=0; i < sizeof(config1PinIdx); i++) {
Matt Briggs 47:a68747642a7a 86 pc.printf("= %s =\r\n", PIN_NAMES[i].c_str());
Matt Briggs 47:a68747642a7a 87 }
Matt Briggs 47:a68747642a7a 88 }
Matt Briggs 47:a68747642a7a 89 pc.printf("===============================================\r\n");
Matt Briggs 47:a68747642a7a 90 }
Matt Briggs 47:a68747642a7a 91 };
Matt Briggs 47:a68747642a7a 92
Matt Briggs 47:a68747642a7a 93 /**
Matt Briggs 47:a68747642a7a 94 * Checks that in idle state all the IOs are pulled up.
Matt Briggs 47:a68747642a7a 95 */
Matt Briggs 47:a68747642a7a 96 int main ()
Matt Briggs 47:a68747642a7a 97 {
Matt Briggs 47:a68747642a7a 98 pc.baud(115200);
Matt Briggs 47:a68747642a7a 99
Matt Briggs 47:a68747642a7a 100 MenuManager menuMgr;
Matt Briggs 47:a68747642a7a 101 menuMgr.printMenu();
Matt Briggs 47:a68747642a7a 102
Matt Briggs 47:a68747642a7a 103 while (true) {
Matt Briggs 47:a68747642a7a 104 gpio0 = !gpio0;
Matt Briggs 47:a68747642a7a 105 gpio1 = !gpio1;
Matt Briggs 47:a68747642a7a 106 gpio2 = !gpio2;
Matt Briggs 47:a68747642a7a 107 gpio3 = !gpio3;
Matt Briggs 47:a68747642a7a 108 wake_DOUT = !wake_DOUT;
Matt Briggs 47:a68747642a7a 109 i2cOut1 = !i2cOut1;
Matt Briggs 47:a68747642a7a 110 i2cOut2 = !i2cOut2;
Matt Briggs 47:a68747642a7a 111
Matt Briggs 47:a68747642a7a 112 uartCts = !uartCts;
Matt Briggs 47:a68747642a7a 113 uartRts = !uartRts;
Matt Briggs 47:a68747642a7a 114 uartTx = !uartTx;
Matt Briggs 47:a68747642a7a 115 uartRx = !uartRx;
Matt Briggs 47:a68747642a7a 116
Matt Briggs 47:a68747642a7a 117 mosi = !mosi;
Matt Briggs 47:a68747642a7a 118 sck = !sck;
Matt Briggs 47:a68747642a7a 119
Matt Briggs 47:a68747642a7a 120 if (menuMgr.getCurrentSel() == 0) {
Matt Briggs 47:a68747642a7a 121 miso.input();
Matt Briggs 47:a68747642a7a 122 nss = !nss;
Matt Briggs 47:a68747642a7a 123 }
Matt Briggs 47:a68747642a7a 124 else if (menuMgr.getCurrentSel() == 1) {
Matt Briggs 47:a68747642a7a 125 nss = 1; // Disable flash
Matt Briggs 47:a68747642a7a 126 miso.output();
Matt Briggs 47:a68747642a7a 127 miso = !miso;
Matt Briggs 47:a68747642a7a 128 }
Matt Briggs 47:a68747642a7a 129
Matt Briggs 47:a68747642a7a 130 if (pc.readable()) {
Matt Briggs 47:a68747642a7a 131 char menuInput = pc.getc();
Matt Briggs 47:a68747642a7a 132 menuInput -= '0'; // Convert to raw interger value
Matt Briggs 47:a68747642a7a 133 menuMgr.applyInput(menuInput);
Matt Briggs 47:a68747642a7a 134 menuMgr.printMenu();
Matt Briggs 47:a68747642a7a 135 }
Matt Briggs 47:a68747642a7a 136 else {
Matt Briggs 47:a68747642a7a 137 pc.printf("*");
Matt Briggs 47:a68747642a7a 138 }
Matt Briggs 47:a68747642a7a 139 wait(1.0);
Matt Briggs 47:a68747642a7a 140 }
Matt Briggs 47:a68747642a7a 141 return 0;
Matt Briggs 47:a68747642a7a 142 }
Matt Briggs 48:bab9f747d9ed 143 #endif