![](/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@48:bab9f747d9ed, 2017-02-13 (annotated)
- Committer:
- Matt Briggs
- Date:
- Mon Feb 13 17:10:59 2017 -0700
- Revision:
- 48:bab9f747d9ed
- Parent:
- 47:a68747642a7a
- Child:
- 55:79ab0bbc5008
First cut at manual testing for baseboard IO. Still needs to be debugged and used.
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 | 48:bab9f747d9ed | 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 |