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:
Fri Feb 10 07:41:16 2017 -0700
Revision:
47:a68747642a7a
Child:
48:bab9f747d9ed
Added test files

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