![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Fork to see if I can get working
Dependencies: BufferedSerial OneWire WinbondSPIFlash libxDot-dev-mbed5-deprecated
Fork of xDotBridge_update_test20180823 by
xDotBridge/manualTest/testLRRPins/testLRRPins.cpp@47:a68747642a7a, 2017-02-10 (annotated)
- 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?
User | Revision | Line number | New 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 | } |