Libraries and Example of mbed parallel bus using I2C port expanders
Dependencies: HDSP253X mbed PCF8574_Bus
Testloop.h
- Committer:
- wim
- Date:
- 2011-08-26
- Revision:
- 5:38b853bb1afa
- Parent:
- 4:745fbbd5e4e5
File content as of revision 5:38b853bb1afa:
//------------------------------------------------------------// // Testing Stuff // //------------------------------------------------------------// void show_LEDS () { static int state = 0; switch (state) { case 0: myled1 = 1; myled2 = 0; myled3 = 0; state = 1; break; case 1: myled1 = 0; myled2 = 1; myled3 = 0; state = 2; break; case 2: myled1 = 0; myled2 = 0; myled3 = 1; state = 0; break; } } void show_menu() { pc.printf("0: Exit\r"); pc.printf("1: Show Menu\r"); pc.printf("2: Send Message\r"); pc.printf("3: Toggle Heartbeat\r"); pc.printf("4: Show STANAGs\r"); pc.printf("5: Set all STANAGs\r"); pc.printf("6: Inc STANAG Code Idx\r"); pc.printf("7: Inc STANAG Digit Idx\r"); pc.printf("8: Inc STANAG Digit\r"); pc.printf("9: Test I2C Databus\r"); pc.printf("A: Test I2C Addressbus\r"); pc.printf("E: Test I2C Enablebus\r"); pc.printf("S: Test Status LEDs\r"); pc.printf("B: Test Brightness LEDs\r"); pc.printf("D: Test Display\r"); pc.printf("K: Test Keyboard\r"); pc.printf("N: Test STANAG\r"); pc.printf("\r"); } void testloop() { bool running=true; bool run_test=true; char command; int count; pc.printf("Start Test!\r"); show_LEDS(); show_menu(); //make sure we see something LF28A_status.set_brightness(BRT_MED); while(running) { if(pc.readable()) { command = pc.getc(); pc.printf("\r"); show_LEDS(); switch (command) { case '0' : pc.printf("Done\r"); running = false; break; case '1' : show_menu(); break; case '2' : pc.printf("Hello World!\r"); break; case '3' : if (heartbeatflag){ heartbeat_stop(); } else { heartbeat_start(); }; break; case '4' : pc.printf("Show STANAGs\r"); for (int codeIdx=0; codeIdx < D_STANAG_CODES; codeIdx++) { pc.printf("Code[%d] = %d\r", codeIdx, STANAG_codes.getCode(codeIdx) ); } break; case '5' : pc.printf("Set STANAGs\r"); for (int codeIdx=0; codeIdx < D_STANAG_CODES; codeIdx++) { STANAG_codes.setCode(codeIdx, 2000 + codeIdx ); } break; case '6' : pc.printf("Inc STANAG Code Idx\r"); pc.printf("New Idx = %d\r", STANAG_codes.incCodeIdx() ); break; case '7' : pc.printf("Inc STANAG Digit Idx\r"); pc.printf("New Idx = %d\r", STANAG_codes.incDigitIdx() ); break; case '8' : pc.printf("Inc STANAG Digit\r"); pc.printf("New Digit = %d\r", STANAG_codes.incDigit() ); pc.printf("New Code = %4d\r", STANAG_codes.getCode() ); break; case '9' : pc.printf("Test I2C Databus\r"); pc.printf("Press any key to quit..."); count=0; while(! pc.readable()) { myled2 = 1; wait(0.1); myled2 = 0; wait(0.1); databus.write(count); //addressbus.write(count); //enablebus.chipselect(CS_DISP, HIGH); count = (count + 1) & 0xFF; } command = pc.getc(); pc.printf("..Done\r"); break; case 'A' : pc.printf("Test I2C Addressbus\r"); pc.printf("Press any key to quit..."); count=0; while(! pc.readable()) { myled2 = 1; wait(0.1); myled2 = 0; wait(0.1); //databus.write(count); addressbus.write(count); //enablebus.chipselect(CS_DISP, HIGH); count = (count + 1) & 0xFF; } command = pc.getc(); pc.printf("..Done\r"); break; case 'E' : pc.printf("Test I2C Enablebus\r"); pc.printf("Press any key to quit..."); count=0; while(! pc.readable()) { myled2 = 1; enablebus.chipselect(CS_SWITCH, LOW); wait(0.1); myled2 = 0; // enablebus.chipselect(CS_SWITCH, HIGH); wait(0.1); myled2 = 1; enablebus.chipselect(LATCHEN_1, LOW); wait(0.1); myled2 = 0; // enablebus.chipselect(LATCHEN_1, HIGH); wait(0.1); myled2 = 1; enablebus.chipselect(LATCHEN_2, LOW); wait(0.1); myled2 = 0; // enablebus.chipselect(LATCHEN_2, HIGH); wait(0.1); myled2 = 1; enablebus.chipselect(CS_BRIGHT, LOW); wait(0.1); myled2 = 0; // enablebus.chipselect(CS_BRIGHT, HIGH); wait(0.1); myled2 = 1; enablebus.chipselect(CS_DISP, LOW); wait(0.1); myled2 = 0; enablebus.chipselect(CS_DISP, HIGH); wait(0.1); myled2 = 1; enablebus.reset(LOW); wait(0.1); myled2 = 0; enablebus.reset(HIGH); wait(0.1); myled2 = 1; enablebus.nogo(LOW); wait(0.1); myled2 = 0; enablebus.nogo(HIGH); wait(0.1); //databus.write(count); //addressbus.write(count); //count = (count + 1) & 0xFF; } command = pc.getc(); pc.printf("..Done\r"); break; case 'S' : pc.printf("Test Status LEDs\r"); pc.printf("Press any key to quit..."); count=0; while(! pc.readable()) { // LEDs On LF28A_status.NoGo(LED_ON); wait(0.1); LF28A_status.LED(LED_LASER, LED_ON); wait(0.1); LF28A_status.LED(LED_TEMP, LED_ON); wait(0.1); LF28A_status.LED(LED_MULT, LED_ON); wait(0.1); LF28A_status.LED(LED_ENRGY, LED_ON); wait(0.1); LF28A_status.LED(LED_BATT, LED_ON); wait(0.1); LF28A_status.LED(LED_DESIG, LED_ON); wait(0.1); LF28A_status.LED(LED_RANGE, LED_ON); wait(0.1); LF28A_status.LED(LED_CODE, LED_ON); wait(0.1); LF28A_status.LED(LED_ADDR, LED_ON); wait(0.1); LF28A_status.LED(LED_FREQ, LED_ON); wait(0.1); LF28A_status.LED(LED_PATH, LED_ON); wait(0.1); LF28A_status.backlight(LED_ON); wait(0.1); // LEDs Off LF28A_status.NoGo(LED_OFF); wait(0.1); LF28A_status.LED(LED_LASER, LED_OFF); wait(0.1); LF28A_status.LED(LED_TEMP, LED_OFF); wait(0.1); LF28A_status.LED(LED_MULT, LED_OFF); wait(0.1); LF28A_status.LED(LED_ENRGY, LED_OFF); wait(0.1); LF28A_status.LED(LED_BATT, LED_OFF); wait(0.1); LF28A_status.LED(LED_DESIG, LED_OFF); wait(0.1); LF28A_status.LED(LED_RANGE, LED_OFF); wait(0.1); LF28A_status.LED(LED_CODE, LED_OFF); wait(0.1); LF28A_status.LED(LED_ADDR, LED_OFF); wait(0.1); LF28A_status.LED(LED_FREQ, LED_OFF); wait(0.1); LF28A_status.LED(LED_PATH, LED_OFF); wait(0.1); LF28A_status.backlight(LED_OFF); wait(0.1); } command = pc.getc(); pc.printf("..Done\r"); break; case 'B' : pc.printf("Test Brightness LEDs\r"); pc.printf("Press any key to quit..."); // LEDs On LF28A_status.NoGo(LED_ON); LF28A_status.LED(LED_LASER, LED_ON); LF28A_status.LED(LED_TEMP, LED_ON); while(! pc.readable()) { LF28A_status.set_brightness(BRT_LOW); wait(0.5); LF28A_status.set_brightness(BRT_MED); wait(0.5); // LF28A_status.set_brightness(BRT_HIGH); // wait(0.5); LF28A_status.set_brightness(BRT_OFF); wait(0.5); } // LEDs Off LF28A_status.NoGo(LED_OFF); LF28A_status.LED(LED_LASER, LED_OFF); LF28A_status.LED(LED_TEMP, LED_OFF); LF28A_status.set_brightness(BRT_LOW); command = pc.getc(); pc.printf("..Done\r"); break; case 'D' : pc.printf("Test Display\r"); pc.printf("Press any key to continue..."); LF28A_display.cls(); LF28A_display.putc('H'); LF28A_display.putc('i'); LF28A_display.putc('-'); LF28A_display.putc('W'); LF28A_display.putc('i'); LF28A_display.putc('m'); LF28A_display.putc('-'); while(! pc.readable()) { } command = pc.getc(); pc.printf("Test printf\r\n"); LF28A_display.locate (0); LF28A_display.printf ("%s=%d", "Rng", 2); while(! pc.readable()) { } command = pc.getc(); LF28A_display.locate (4); LF28A_display.printf (" "); LF28A_display.locate (4); LF28A_display.printf ("%d", 123); while(! pc.readable()) { } command = pc.getc(); LF28A_display.cls(); LF28A_display.printf ("%s", "Hello..."); while(! pc.readable()) { } command = pc.getc(); pc.printf("Test Flash\r\n"); LF28A_display.set_flash_mode(true); for (int i=0; i<8; i++) { LF28A_display.set_char_flash_state(true, i); while(! pc.readable()) { } command = pc.getc(); LF28A_display.set_char_flash_state(false, i); } LF28A_display.set_flash_mode(false); pc.printf("..Done\r"); break; case 'K' : pc.printf("Test Keyboard\r"); pc.printf("Press any key to continue..."); while(! pc.readable()) { if (LF28A_keyboard.readable()) { pc.printf("."); keycode = LF28A_keyboard.getkey(); switch (keycode) { case KEY_MODE : pc.printf("Mode\r"); break; case KEY_EDIT_PATH : pc.printf("Edit\r"); break; case KEY_BRIGHT : pc.printf("Bright\r"); break; case KEY_GRAT_RT : pc.printf("Grat\r"); break; case KEY_F_L_UP : pc.printf("F-L\r"); break; case KEY_FIRE: pc.printf("Fire\r"); break; case KEY_NONE: pc.printf("None\r"); break; default: pc.printf("Oops\r"); break; }; //switch } //if } //while command = pc.getc(); pc.printf("..Done\r"); break; case 'N' : pc.printf("Test STANAG\r"); STANAG_codes.setDigitIdx(0); pc.printf("Code = %04d; CodeIdx=%d; DigitIdx=%d;\r", STANAG_codes.getCode(), STANAG_codes.getCodeIdx(), STANAG_codes.getDigitIdx() ); LF28A_display.locate (0); LF28A_display.printf (" %04d",STANAG_codes.getCode() ); LF28A_display.set_flash_mode(true); run_test=true; while(run_test) { while(! pc.readable()) { } command = pc.getc(); switch(command) { case '0': run_test=false; break; case '1': pc.printf("0: Exit\r"); pc.printf("1: Show Menu\r"); pc.printf("f: Next Code\r"); pc.printf("g: Next Digit\r"); pc.printf("u: Inc Digit\r"); break; case 'f': pc.printf("New Code Idx = %d\r", STANAG_codes.incCodeIdx() ); pc.printf("New Code = %04d\r", STANAG_codes.getCode() ); LF28A_display.locate (0); LF28A_display.printf (" %04d",STANAG_codes.getCode() ); break; case 'g': // Disable previous flashing digit LF28A_display.set_char_flash_state(false, 4 + STANAG_codes.getDigitIdx()); // Incr selected digit pc.printf("New Digit Idx = %d\r", STANAG_codes.incDigitIdx() ); // Enable current flashing digit LF28A_display.set_char_flash_state(true, 4 + STANAG_codes.getDigitIdx()); break; case 'u': pc.printf("New Digit = %d\r", STANAG_codes.incDigit() ); pc.printf("New Code = %04d\r", STANAG_codes.getCode() ); LF28A_display.locate (0); LF28A_display.printf (" %04d",STANAG_codes.getCode() ); break; default: pc.printf("Oops\r"); break; }; //switch } //while run_test LF28A_display.set_flash_mode(false); pc.printf("..Done\r"); break; } //switch }//if }//while pc.printf("End Test!\r\r"); } //------------------------------------------------------------// // End Testing Stuff // //------------------------------------------------------------//