L VD
/
SC16IS740_test
Testsoftware for SC16IS740
main.cpp@0:320d96eb6974, 2020-08-13 (annotated)
- Committer:
- elelthvd
- Date:
- Thu Aug 13 15:46:12 2020 +0800
- Revision:
- 0:320d96eb6974
Adapted Test Software for SC16IS740
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
elelthvd | 0:320d96eb6974 | 1 | /* Modified |
elelthvd | 0:320d96eb6974 | 2 | COPY OF https://os.mbed.com/users/wim/code/mbed_SC16IS740//file/20d8ef79d787/main.cpp |
elelthvd | 0:320d96eb6974 | 3 | */ |
elelthvd | 0:320d96eb6974 | 4 | #include "mbed.h" |
elelthvd | 0:320d96eb6974 | 5 | |
elelthvd | 0:320d96eb6974 | 6 | #include "SC16IS740.h" |
elelthvd | 0:320d96eb6974 | 7 | |
elelthvd | 0:320d96eb6974 | 8 | |
elelthvd | 0:320d96eb6974 | 9 | #if defined(TARGET_DISCO_F746NG) |
elelthvd | 0:320d96eb6974 | 10 | // SPI for DISCO_F746NG board w/Mikro Adruino Click Shield |
elelthvd | 0:320d96eb6974 | 11 | #define D_MOSI SPI_MOSI // D11 |
elelthvd | 0:320d96eb6974 | 12 | #define D_MISO SPI_MISO // D12 |
elelthvd | 0:320d96eb6974 | 13 | #define D_SCLK SPI_SCK // D13 |
elelthvd | 0:320d96eb6974 | 14 | #define D_CS D9 // PWM_OUT // MikroBUS 2 |
elelthvd | 0:320d96eb6974 | 15 | #define D_INTR D3 // PB_4 // MikroBUS 2 |
elelthvd | 0:320d96eb6974 | 16 | #define D_RST A2 // PF_9 // MikroBUS 2 |
elelthvd | 0:320d96eb6974 | 17 | // #define D_CS D10 // SPI_CS // MikroBUS 1 |
elelthvd | 0:320d96eb6974 | 18 | // #define D_INTR D2 // PG_6 // MikroBUS 1 |
elelthvd | 0:320d96eb6974 | 19 | // #define D_RST A3 // PF_8 // MikroBUS 1 |
elelthvd | 0:320d96eb6974 | 20 | |
elelthvd | 0:320d96eb6974 | 21 | // I2C for DISCO_F746NG (not used) |
elelthvd | 0:320d96eb6974 | 22 | #define D_SCL A5 // PF_6 |
elelthvd | 0:320d96eb6974 | 23 | #define D_SDA A4 // PF_7 |
elelthvd | 0:320d96eb6974 | 24 | // #define D_SCL D15 // = PB_8 Manually Wired to A5 |
elelthvd | 0:320d96eb6974 | 25 | // #define D_SDA D14 // = PB_9 Manually Wired to A4 |
elelthvd | 0:320d96eb6974 | 26 | |
elelthvd | 0:320d96eb6974 | 27 | // Serial for DISCO_F746NG already defined. |
elelthvd | 0:320d96eb6974 | 28 | // Optionally specify different pins for printing on UART other than the default console UART. |
elelthvd | 0:320d96eb6974 | 29 | #define D_TX USBTX |
elelthvd | 0:320d96eb6974 | 30 | #define D_RX USBRX |
elelthvd | 0:320d96eb6974 | 31 | |
elelthvd | 0:320d96eb6974 | 32 | #endif |
elelthvd | 0:320d96eb6974 | 33 | |
elelthvd | 0:320d96eb6974 | 34 | // Bizarre: If this line is above declaration SC16IS740_SPI serial_bridge, |
elelthvd | 0:320d96eb6974 | 35 | // It does not blink ... |
elelthvd | 0:320d96eb6974 | 36 | // But if this line is below declaration SC16IS740_SPI serial_bridge, |
elelthvd | 0:320d96eb6974 | 37 | // Then serial_bridge stops working after a few chars! |
elelthvd | 0:320d96eb6974 | 38 | DigitalOut heartbeatLED(LED1); |
elelthvd | 0:320d96eb6974 | 39 | |
elelthvd | 0:320d96eb6974 | 40 | //SPI Version |
elelthvd | 0:320d96eb6974 | 41 | SPI spi(D_MOSI, D_MISO, D_SCLK); //MOSI, MISO, SCK |
elelthvd | 0:320d96eb6974 | 42 | // SC16IS740_SPI serial_bridge(&spi, D_CS); |
elelthvd | 0:320d96eb6974 | 43 | SC16IS740_SPI serial_bridge(&spi, D_CS, D_RST); // version with Hardware Reset pin |
elelthvd | 0:320d96eb6974 | 44 | //SC16IS752_SPI serial_bridge(&spi, D_CS, D_RST, SC16IS740::Channel_A); // Dual UART version with Hardware Reset pin |
elelthvd | 0:320d96eb6974 | 45 | //SC16IS752_SPI serial_bridge(&spi, D_CS, D_RST, SC16IS740::Channel_B); // Dual UART version with Hardware Reset pin |
elelthvd | 0:320d96eb6974 | 46 | |
elelthvd | 0:320d96eb6974 | 47 | // //I2C Version |
elelthvd | 0:320d96eb6974 | 48 | // I2C i2c(D_SDA, D_SCL); //SDA, SCL |
elelthvd | 0:320d96eb6974 | 49 | // //SC16IS740_I2C serial_bridge(&i2c, SC16IS740_DEFAULT_ADDR); |
elelthvd | 0:320d96eb6974 | 50 | // //SC16IS740_I2C serial_bridge(&i2c, SC16IS740_DEFAULT_ADDR, D_RST); |
elelthvd | 0:320d96eb6974 | 51 | // SC16IS752_I2C serial_bridge(&i2c, SC16IS740_DEFAULT_ADDR, D_RST, SC16IS740::Channel_A); // Dual UART version with Hardware Reset pin |
elelthvd | 0:320d96eb6974 | 52 | // //SC16IS752_I2C serial_bridge(&i2c, SC16IS740_DEFAULT_ADDR, D_RST, SC16IS740::Channel_B); // Dual UART version with Hardware Reset pin |
elelthvd | 0:320d96eb6974 | 53 | |
elelthvd | 0:320d96eb6974 | 54 | |
elelthvd | 0:320d96eb6974 | 55 | |
elelthvd | 0:320d96eb6974 | 56 | // Create a BufferedSerial object to be used by the system I/O retarget code. |
elelthvd | 0:320d96eb6974 | 57 | static BufferedSerial pc(D_TX, D_RX, 9600); |
elelthvd | 0:320d96eb6974 | 58 | // static BufferedSerial pc(D_TX, D_RX, 115200); |
elelthvd | 0:320d96eb6974 | 59 | // Specify a custom FileHandle for the console. |
elelthvd | 0:320d96eb6974 | 60 | FileHandle * mbed::mbed_override_console(int fd) { |
elelthvd | 0:320d96eb6974 | 61 | return &pc; |
elelthvd | 0:320d96eb6974 | 62 | } |
elelthvd | 0:320d96eb6974 | 63 | |
elelthvd | 0:320d96eb6974 | 64 | void show_menu() { |
elelthvd | 0:320d96eb6974 | 65 | printf("0: Exit\r\n"); |
elelthvd | 0:320d96eb6974 | 66 | printf("1: Show Menu\r\n"); |
elelthvd | 0:320d96eb6974 | 67 | printf("2: Init\r\n"); |
elelthvd | 0:320d96eb6974 | 68 | printf("3: IO Port Out\r\n"); |
elelthvd | 0:320d96eb6974 | 69 | printf("4: Transparant mode\r\n"); |
elelthvd | 0:320d96eb6974 | 70 | printf("5: Free bufferspace\r\n"); |
elelthvd | 0:320d96eb6974 | 71 | printf("6: Enable RTS/CTS\r\n"); |
elelthvd | 0:320d96eb6974 | 72 | printf("7: Disable RTS/CTS\r\n"); |
elelthvd | 0:320d96eb6974 | 73 | printf("8: Write block\r\n"); |
elelthvd | 0:320d96eb6974 | 74 | printf("9: Baudrate 9600\r\n"); |
elelthvd | 0:320d96eb6974 | 75 | printf("A: Baudrate 115200\r\n"); |
elelthvd | 0:320d96eb6974 | 76 | printf("B: Transparant mode with bufferdisplay\r\n"); |
elelthvd | 0:320d96eb6974 | 77 | printf("C: Test printf \r\n"); |
elelthvd | 0:320d96eb6974 | 78 | printf("D: Test connected\r\n"); |
elelthvd | 0:320d96eb6974 | 79 | printf("E: Clear screen\r\n"); |
elelthvd | 0:320d96eb6974 | 80 | printf("F: Funky ANSI\r\n"); |
elelthvd | 0:320d96eb6974 | 81 | printf("G: Heart Beat\r\n"); |
elelthvd | 0:320d96eb6974 | 82 | printf("\r\n"); |
elelthvd | 0:320d96eb6974 | 83 | } |
elelthvd | 0:320d96eb6974 | 84 | |
elelthvd | 0:320d96eb6974 | 85 | // Local functions |
elelthvd | 0:320d96eb6974 | 86 | void clear_screen() { |
elelthvd | 0:320d96eb6974 | 87 | //ANSI Terminal Commands |
elelthvd | 0:320d96eb6974 | 88 | printf("\x1B[2J"); |
elelthvd | 0:320d96eb6974 | 89 | printf("\x1B[H"); |
elelthvd | 0:320d96eb6974 | 90 | serial_bridge.writeString("\x1B[2J"); |
elelthvd | 0:320d96eb6974 | 91 | serial_bridge.writeString("\x1B[H"); |
elelthvd | 0:320d96eb6974 | 92 | } |
elelthvd | 0:320d96eb6974 | 93 | |
elelthvd | 0:320d96eb6974 | 94 | void funky_ansi() { |
elelthvd | 0:320d96eb6974 | 95 | int i, j, n; |
elelthvd | 0:320d96eb6974 | 96 | for (i = 0; i < 11; i++) { |
elelthvd | 0:320d96eb6974 | 97 | for (j = 0; j < 10; j++) { |
elelthvd | 0:320d96eb6974 | 98 | n = 10*i + j; |
elelthvd | 0:320d96eb6974 | 99 | if (n > 108) break; |
elelthvd | 0:320d96eb6974 | 100 | serial_bridge.printf("\033[%dm %3d\033[m", n, n); |
elelthvd | 0:320d96eb6974 | 101 | } |
elelthvd | 0:320d96eb6974 | 102 | serial_bridge.printf("\r\n"); |
elelthvd | 0:320d96eb6974 | 103 | } |
elelthvd | 0:320d96eb6974 | 104 | } |
elelthvd | 0:320d96eb6974 | 105 | |
elelthvd | 0:320d96eb6974 | 106 | // Variables for Heartbeat and Status monitoring |
elelthvd | 0:320d96eb6974 | 107 | Ticker heartbeat; |
elelthvd | 0:320d96eb6974 | 108 | // Heartbeat |
elelthvd | 0:320d96eb6974 | 109 | void heartbeat_beat() { |
elelthvd | 0:320d96eb6974 | 110 | heartbeatLED = ! heartbeatLED; |
elelthvd | 0:320d96eb6974 | 111 | } |
elelthvd | 0:320d96eb6974 | 112 | void heartbeat_start() { |
elelthvd | 0:320d96eb6974 | 113 | heartbeatLED = 1; |
elelthvd | 0:320d96eb6974 | 114 | } |
elelthvd | 0:320d96eb6974 | 115 | void heartbeat_stop() { |
elelthvd | 0:320d96eb6974 | 116 | heartbeat.detach(); |
elelthvd | 0:320d96eb6974 | 117 | } |
elelthvd | 0:320d96eb6974 | 118 | int main() { |
elelthvd | 0:320d96eb6974 | 119 | bool running = true; |
elelthvd | 0:320d96eb6974 | 120 | bool running_test = true; |
elelthvd | 0:320d96eb6974 | 121 | char command, ch; |
elelthvd | 0:320d96eb6974 | 122 | char * buffer; |
elelthvd | 0:320d96eb6974 | 123 | int i = 0; |
elelthvd | 0:320d96eb6974 | 124 | heartbeat_start(); |
elelthvd | 0:320d96eb6974 | 125 | heartbeat.attach(callback( &heartbeat_beat), 500ms); |
elelthvd | 0:320d96eb6974 | 126 | |
elelthvd | 0:320d96eb6974 | 127 | #if defined(TARGET_DISCO_F746NG) |
elelthvd | 0:320d96eb6974 | 128 | printf("\r\nHello World from DISCO_F746NG\r\n"); |
elelthvd | 0:320d96eb6974 | 129 | #endif |
elelthvd | 0:320d96eb6974 | 130 | #if defined(TARGET_LPC1768) |
elelthvd | 0:320d96eb6974 | 131 | printf("\r\nHello World from LPC1768\r\n"); |
elelthvd | 0:320d96eb6974 | 132 | #endif |
elelthvd | 0:320d96eb6974 | 133 | #if defined(TARGET_KL25Z) |
elelthvd | 0:320d96eb6974 | 134 | printf("\r\nHello World from KL25Z\r\n"); |
elelthvd | 0:320d96eb6974 | 135 | #endif |
elelthvd | 0:320d96eb6974 | 136 | #if defined(TARGET_LPC812) |
elelthvd | 0:320d96eb6974 | 137 | printf("\r\nHello World from LPC812\r\n"); |
elelthvd | 0:320d96eb6974 | 138 | #endif |
elelthvd | 0:320d96eb6974 | 139 | |
elelthvd | 0:320d96eb6974 | 140 | // We need to enable flow control or we overflow buffers and |
elelthvd | 0:320d96eb6974 | 141 | // lose data when used with the WiFly. Note that flow control |
elelthvd | 0:320d96eb6974 | 142 | // needs to be enabled on the WiFly for this to work but it's |
elelthvd | 0:320d96eb6974 | 143 | // possible to do that with flow control enabled here but not there. |
elelthvd | 0:320d96eb6974 | 144 | // serial_bridge.set_flow_control(SC16IS740::RTSCTS); |
elelthvd | 0:320d96eb6974 | 145 | |
elelthvd | 0:320d96eb6974 | 146 | // Not available of SC16IS740: |
elelthvd | 0:320d96eb6974 | 147 | // serial_bridge.ioSetDirection(0xFF); // All outputs |
elelthvd | 0:320d96eb6974 | 148 | // serial_bridge.ioSetState(0xFF); // All On |
elelthvd | 0:320d96eb6974 | 149 | |
elelthvd | 0:320d96eb6974 | 150 | show_menu(); |
elelthvd | 0:320d96eb6974 | 151 | |
elelthvd | 0:320d96eb6974 | 152 | while (running) { |
elelthvd | 0:320d96eb6974 | 153 | // heartbeat_beat(); |
elelthvd | 0:320d96eb6974 | 154 | |
elelthvd | 0:320d96eb6974 | 155 | if (pc.readable()) { |
elelthvd | 0:320d96eb6974 | 156 | // pc.read( & command, 1); |
elelthvd | 0:320d96eb6974 | 157 | command = getchar(); |
elelthvd | 0:320d96eb6974 | 158 | |
elelthvd | 0:320d96eb6974 | 159 | printf("command= %c \r\n", command); |
elelthvd | 0:320d96eb6974 | 160 | |
elelthvd | 0:320d96eb6974 | 161 | switch (command) { |
elelthvd | 0:320d96eb6974 | 162 | case '0': |
elelthvd | 0:320d96eb6974 | 163 | printf("Done\r\n"); |
elelthvd | 0:320d96eb6974 | 164 | running = false; |
elelthvd | 0:320d96eb6974 | 165 | break; |
elelthvd | 0:320d96eb6974 | 166 | |
elelthvd | 0:320d96eb6974 | 167 | case '1': |
elelthvd | 0:320d96eb6974 | 168 | show_menu(); |
elelthvd | 0:320d96eb6974 | 169 | break; |
elelthvd | 0:320d96eb6974 | 170 | |
elelthvd | 0:320d96eb6974 | 171 | case '2': |
elelthvd | 0:320d96eb6974 | 172 | printf("Hardware Reset\r\n"); |
elelthvd | 0:320d96eb6974 | 173 | serial_bridge.hwReset(); //test |
elelthvd | 0:320d96eb6974 | 174 | |
elelthvd | 0:320d96eb6974 | 175 | printf("Init\r\n"); |
elelthvd | 0:320d96eb6974 | 176 | serial_bridge._init(); |
elelthvd | 0:320d96eb6974 | 177 | printf("Hardware Init done\r\n"); |
elelthvd | 0:320d96eb6974 | 178 | break; |
elelthvd | 0:320d96eb6974 | 179 | |
elelthvd | 0:320d96eb6974 | 180 | case '3': |
elelthvd | 0:320d96eb6974 | 181 | printf("IO Port Out\r\n"); |
elelthvd | 0:320d96eb6974 | 182 | |
elelthvd | 0:320d96eb6974 | 183 | i = 0; |
elelthvd | 0:320d96eb6974 | 184 | while (!pc.readable()) { |
elelthvd | 0:320d96eb6974 | 185 | serial_bridge.ioSetState(~i); |
elelthvd | 0:320d96eb6974 | 186 | // serial_bridge.ioGetState() ; //test |
elelthvd | 0:320d96eb6974 | 187 | thread_sleep_for(500); |
elelthvd | 0:320d96eb6974 | 188 | printf("*"); |
elelthvd | 0:320d96eb6974 | 189 | i = (i + 1) & 0xFF; |
elelthvd | 0:320d96eb6974 | 190 | } |
elelthvd | 0:320d96eb6974 | 191 | |
elelthvd | 0:320d96eb6974 | 192 | pc.read( & ch, 1); |
elelthvd | 0:320d96eb6974 | 193 | printf("IO Port Out Done\r\n"); |
elelthvd | 0:320d96eb6974 | 194 | break; |
elelthvd | 0:320d96eb6974 | 195 | |
elelthvd | 0:320d96eb6974 | 196 | case '4': |
elelthvd | 0:320d96eb6974 | 197 | printf("Transparant Mode, Enter '#' to quit...\r\n"); |
elelthvd | 0:320d96eb6974 | 198 | |
elelthvd | 0:320d96eb6974 | 199 | running_test = true; |
elelthvd | 0:320d96eb6974 | 200 | |
elelthvd | 0:320d96eb6974 | 201 | while (running_test) { |
elelthvd | 0:320d96eb6974 | 202 | // From SPI/I2C to serial |
elelthvd | 0:320d96eb6974 | 203 | while (running_test && pc.readable()) { |
elelthvd | 0:320d96eb6974 | 204 | // pc.read( & ch, 1); |
elelthvd | 0:320d96eb6974 | 205 | ch = getchar(); |
elelthvd | 0:320d96eb6974 | 206 | running_test = (ch != '#'); |
elelthvd | 0:320d96eb6974 | 207 | serial_bridge.putc(ch); |
elelthvd | 0:320d96eb6974 | 208 | } |
elelthvd | 0:320d96eb6974 | 209 | |
elelthvd | 0:320d96eb6974 | 210 | // From Serial to SPI/I2C |
elelthvd | 0:320d96eb6974 | 211 | while (running_test && serial_bridge.readable()) { |
elelthvd | 0:320d96eb6974 | 212 | ch = serial_bridge.getc(); |
elelthvd | 0:320d96eb6974 | 213 | running_test = (ch != '#'); |
elelthvd | 0:320d96eb6974 | 214 | printf("%s", & ch); |
elelthvd | 0:320d96eb6974 | 215 | } |
elelthvd | 0:320d96eb6974 | 216 | |
elelthvd | 0:320d96eb6974 | 217 | } |
elelthvd | 0:320d96eb6974 | 218 | |
elelthvd | 0:320d96eb6974 | 219 | printf("\r\nTransparant Mode done\r\n"); |
elelthvd | 0:320d96eb6974 | 220 | break; |
elelthvd | 0:320d96eb6974 | 221 | |
elelthvd | 0:320d96eb6974 | 222 | case '5': |
elelthvd | 0:320d96eb6974 | 223 | printf("Available for Reading = %3d (Free Space = %3d)\r\n", serial_bridge.readableCount(), SC16IS740_FIFO_RX - serial_bridge.readableCount()); |
elelthvd | 0:320d96eb6974 | 224 | printf("Available for Writing = %3d (Used Space = %3d)\r\n", serial_bridge.writableCount(), SC16IS740_FIFO_TX - serial_bridge.writableCount()); |
elelthvd | 0:320d96eb6974 | 225 | break; |
elelthvd | 0:320d96eb6974 | 226 | |
elelthvd | 0:320d96eb6974 | 227 | case '6': |
elelthvd | 0:320d96eb6974 | 228 | printf("Enable RTS/CTS\r\n"); |
elelthvd | 0:320d96eb6974 | 229 | serial_bridge.set_flow_control(SC16IS740::RTSCTS); |
elelthvd | 0:320d96eb6974 | 230 | break; |
elelthvd | 0:320d96eb6974 | 231 | case '7': |
elelthvd | 0:320d96eb6974 | 232 | printf("Disable RTS/CTS\r\n"); |
elelthvd | 0:320d96eb6974 | 233 | serial_bridge.set_flow_control(SC16IS740::Disabled); |
elelthvd | 0:320d96eb6974 | 234 | break; |
elelthvd | 0:320d96eb6974 | 235 | |
elelthvd | 0:320d96eb6974 | 236 | case '8': |
elelthvd | 0:320d96eb6974 | 237 | printf("Write block\r\n"); |
elelthvd | 0:320d96eb6974 | 238 | serial_bridge.writeString("Hello World from mbed and SC16IS740\r\n"); |
elelthvd | 0:320d96eb6974 | 239 | break; |
elelthvd | 0:320d96eb6974 | 240 | |
elelthvd | 0:320d96eb6974 | 241 | case '9': |
elelthvd | 0:320d96eb6974 | 242 | printf("Baudrate = 9600, Divisor = %d\r\n", (int) SC16IS740_BAUDRATE_DIVISOR(9600)); |
elelthvd | 0:320d96eb6974 | 243 | serial_bridge.baud(9600); |
elelthvd | 0:320d96eb6974 | 244 | break; |
elelthvd | 0:320d96eb6974 | 245 | |
elelthvd | 0:320d96eb6974 | 246 | case 'a': |
elelthvd | 0:320d96eb6974 | 247 | case 'A': |
elelthvd | 0:320d96eb6974 | 248 | printf("Baudrate = 115200, Divisor = %d\r\n", (int) SC16IS740_BAUDRATE_DIVISOR(115200)); |
elelthvd | 0:320d96eb6974 | 249 | serial_bridge.baud(115200); |
elelthvd | 0:320d96eb6974 | 250 | break; |
elelthvd | 0:320d96eb6974 | 251 | |
elelthvd | 0:320d96eb6974 | 252 | case 'b': |
elelthvd | 0:320d96eb6974 | 253 | case 'B': |
elelthvd | 0:320d96eb6974 | 254 | printf("Transparant Mode with buffer display, Enter '#' to quit...\r\n"); |
elelthvd | 0:320d96eb6974 | 255 | |
elelthvd | 0:320d96eb6974 | 256 | running_test = true; |
elelthvd | 0:320d96eb6974 | 257 | |
elelthvd | 0:320d96eb6974 | 258 | while (running_test) { |
elelthvd | 0:320d96eb6974 | 259 | // From SPI/I2C to serial |
elelthvd | 0:320d96eb6974 | 260 | while (running_test && pc.readable()) { |
elelthvd | 0:320d96eb6974 | 261 | // pc.read( & ch, 1); |
elelthvd | 0:320d96eb6974 | 262 | ch = getchar(); |
elelthvd | 0:320d96eb6974 | 263 | running_test = (ch != '#'); |
elelthvd | 0:320d96eb6974 | 264 | serial_bridge.putc(ch); |
elelthvd | 0:320d96eb6974 | 265 | |
elelthvd | 0:320d96eb6974 | 266 | // // Show buffers when character was entered |
elelthvd | 0:320d96eb6974 | 267 | // printf("\r\n"); |
elelthvd | 0:320d96eb6974 | 268 | // printf("Available for Reading = %3d (Free Space = %3d)\r\n", serial_bridge.readableCount(), SC16IS740_FIFO_RX - serial_bridge.readableCount()); |
elelthvd | 0:320d96eb6974 | 269 | // printf("Available for Writing = %3d (Used Space = %3d)\r\n", serial_bridge.writableCount(), SC16IS740_FIFO_TX - serial_bridge.writableCount()); |
elelthvd | 0:320d96eb6974 | 270 | } |
elelthvd | 0:320d96eb6974 | 271 | |
elelthvd | 0:320d96eb6974 | 272 | // From Serial to SPI/I2C |
elelthvd | 0:320d96eb6974 | 273 | while (running_test && serial_bridge.readable()) { |
elelthvd | 0:320d96eb6974 | 274 | ch = serial_bridge.getc(); |
elelthvd | 0:320d96eb6974 | 275 | running_test = (ch != '#'); |
elelthvd | 0:320d96eb6974 | 276 | putchar(ch); |
elelthvd | 0:320d96eb6974 | 277 | // printf("%s", & ch); |
elelthvd | 0:320d96eb6974 | 278 | } |
elelthvd | 0:320d96eb6974 | 279 | |
elelthvd | 0:320d96eb6974 | 280 | } |
elelthvd | 0:320d96eb6974 | 281 | |
elelthvd | 0:320d96eb6974 | 282 | printf("\r\nTransparant Mode done\r\n"); |
elelthvd | 0:320d96eb6974 | 283 | break; |
elelthvd | 0:320d96eb6974 | 284 | |
elelthvd | 0:320d96eb6974 | 285 | case 'c': |
elelthvd | 0:320d96eb6974 | 286 | case 'C': |
elelthvd | 0:320d96eb6974 | 287 | printf("Test printf() \r\n"); |
elelthvd | 0:320d96eb6974 | 288 | |
elelthvd | 0:320d96eb6974 | 289 | serial_bridge.printf("Available for Reading = %3d (Free Space = %3d)\r\n", serial_bridge.readableCount(), SC16IS740_FIFO_RX - serial_bridge.readableCount()); |
elelthvd | 0:320d96eb6974 | 290 | serial_bridge.printf("Available for Writing = %3d (Used Space = %3d)\r\n", serial_bridge.writableCount(), SC16IS740_FIFO_TX - serial_bridge.writableCount()); |
elelthvd | 0:320d96eb6974 | 291 | |
elelthvd | 0:320d96eb6974 | 292 | printf("\r\nTest printf() done\r\n"); |
elelthvd | 0:320d96eb6974 | 293 | break; |
elelthvd | 0:320d96eb6974 | 294 | case 'd': |
elelthvd | 0:320d96eb6974 | 295 | case 'D': |
elelthvd | 0:320d96eb6974 | 296 | printf("Test connected\r\n"); |
elelthvd | 0:320d96eb6974 | 297 | if (!serial_bridge.connected()) { |
elelthvd | 0:320d96eb6974 | 298 | printf("Failed to detect UART bridge\r\n"); |
elelthvd | 0:320d96eb6974 | 299 | } else { |
elelthvd | 0:320d96eb6974 | 300 | printf("Found UART bridge!\r\n"); |
elelthvd | 0:320d96eb6974 | 301 | } |
elelthvd | 0:320d96eb6974 | 302 | break; |
elelthvd | 0:320d96eb6974 | 303 | case 'e': |
elelthvd | 0:320d96eb6974 | 304 | case 'E': |
elelthvd | 0:320d96eb6974 | 305 | printf("Clear Screen\r\n"); |
elelthvd | 0:320d96eb6974 | 306 | clear_screen(); |
elelthvd | 0:320d96eb6974 | 307 | break; |
elelthvd | 0:320d96eb6974 | 308 | case 'f': |
elelthvd | 0:320d96eb6974 | 309 | case 'F': |
elelthvd | 0:320d96eb6974 | 310 | printf("Funky ANSI\r\n"); |
elelthvd | 0:320d96eb6974 | 311 | funky_ansi(); |
elelthvd | 0:320d96eb6974 | 312 | break; |
elelthvd | 0:320d96eb6974 | 313 | case 'g': |
elelthvd | 0:320d96eb6974 | 314 | case 'G': |
elelthvd | 0:320d96eb6974 | 315 | printf("Heart Beat\r\n"); |
elelthvd | 0:320d96eb6974 | 316 | // heartbeat_beat(); |
elelthvd | 0:320d96eb6974 | 317 | heartbeatLED = ! heartbeatLED; |
elelthvd | 0:320d96eb6974 | 318 | break; |
elelthvd | 0:320d96eb6974 | 319 | default: |
elelthvd | 0:320d96eb6974 | 320 | break; |
elelthvd | 0:320d96eb6974 | 321 | |
elelthvd | 0:320d96eb6974 | 322 | } //switch |
elelthvd | 0:320d96eb6974 | 323 | } //if |
elelthvd | 0:320d96eb6974 | 324 | } //while |
elelthvd | 0:320d96eb6974 | 325 | |
elelthvd | 0:320d96eb6974 | 326 | printf("\nBye World!\n"); |
elelthvd | 0:320d96eb6974 | 327 | } |