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                                          //   
//------------------------------------------------------------//