Libraries and Example of mbed parallel bus using I2C port expanders

Dependencies:   HDSP253X mbed PCF8574_Bus

Revision:
2:1dab1089c332
Child:
3:3fbfdec782f4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Testloop.h	Sat Aug 20 12:49:44 2011 +0000
@@ -0,0 +1,342 @@
+//------------------------------------------------------------//
+// 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("B: Test I2C Enablebus\r");        
+    pc.printf("C: Test Status LEDs\r");            
+    pc.printf("D: Test Brightness LEDs\r");                
+    pc.printf("\r");                
+}
+
+
+void testloop() {
+  bool running=true;
+  char command;
+  int count;
+  
+    pc.printf("Start Test!\r");
+    show_LEDS();
+    show_menu();
+    myled4=1;
+    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 'B' :
+                      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 'C' :
+                      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 'D' :
+                      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;   
+                              
+        } //switch
+      }//if
+    }//while
+
+    pc.printf("End Test!\r\r");
+}
+
+//------------------------------------------------------------//
+// End Testing Stuff                                          //   
+//------------------------------------------------------------//
+