Diff: main.cpp
- Revision:
- 0:1e5295127662
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Fri Oct 23 14:05:46 2009 +0000
@@ -0,0 +1,400 @@
+#include "Objects.h"
+#include "Helper.h"
+#include "Tests.h"
+
+
+//#define AUDIO // it beeps at the end
+
+#define TEST_DELAY 0.001
+
+
+// ============================
+// Tests
+// The numbers are used to trigger
+// The test on the DUT
+// ============================
+// 1. VoltageCurrent
+// 2. DUTSetupTest
+// 3. IOTest
+// 4. Resettest
+// 5. BatteryTest
+// 6. EthernetTest
+// ============================
+// Assumptions
+// ============================
+// All tests run off the initial VUSB power up
+// Vin test explicity fiddles the power
+// ============================
+
+int wibble=1;
+
+int main() {
+
+ DutReset(1);
+
+
+ char result=0;
+
+ pc.printf("mbed-005.1 Production test jig\n");
+
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf("Reflash jig");
+ lcd.locate(0,1);
+ lcd.printf("Press GREEN");
+
+
+ DutISPConnect();
+
+ wait(0.5);
+
+ while (wibble) {
+
+ // wait for the button to be pressed
+ while (!gbtn) {}
+ // Power up
+ DutUsbPowerUp();
+ wait (1.0);
+
+
+ // wait for the button to be pressed
+ while (!gbtn) {}
+ // Power down
+ DutUsbPowerDown();
+ wait (1.0);
+
+
+
+ }
+
+
+ while (1) {
+
+
+
+
+
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf("mbed-005.1 Test");
+ lcd.locate(0,1);
+ lcd.printf("Press GREEN");
+
+ // wait for the button to be pressed
+ while (!gbtn) {}
+
+ // Power up USB and connect
+ DutUsbPowerUp();
+ wait (0.1);
+
+
+
+// Connect the USB after the current test
+// this stops the spiking currents during enumeration from
+// giving false readings
+// DutUsbConnect();
+// wait (0.5);
+
+
+// ========================
+// Voltage and current test
+// ========================
+
+
+
+ lcd.locate(0,1);
+ lcd.printf("VCTest ");
+ wait (TEST_DELAY);
+
+ result |= VCTest ();
+ pc.printf("VCTest 0x%x\n",result);
+
+ gled=0; rled=0; wait (0.05);
+ if (result == 0 ) {gled = 1; rled=0;} else {gled = 0; rled=1;}
+
+
+// ========================
+// Connect USB
+// ========================
+
+ DutUsbConnect();
+ wait (0.5);
+
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf("Copy TestDUT.bin");
+ lcd.locate(0,1);
+ lcd.printf("Press GREEN");
+ wait(0.5);
+
+ // wait for the button to be pressed
+ while (!gbtn) {}
+
+ // turn off the board and USB, and power it up using VIN
+ DutUsbPowerDown();
+ DutUsbDisconnect();
+
+ wait (0.2);
+ DutVinPowerUp();
+
+ // Turn on the VB power, this is so it can stablise
+ DutVB(1);
+ VBatGnd=1;
+
+ // this covers the debug case when the board
+ // remains powered by USB
+ DUT_NR = 0;
+ wait (0.1);
+ DUT_NR = 1;
+
+
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf("Waiting for DUT");
+
+
+ // this is where the DUT power up... it will take a bunch of time
+ // for the binary to be programmed
+ // We should wait for a "R" to be sent by the DUT
+
+ DutBufferFlush();
+ // wait here until
+ while (!Dut.readable()) {
+ led4 = !led4;
+ wait (0.05);
+ }
+
+ char tmp = Dut.getc();
+
+ if ( tmp != 'R' ) {
+ }
+
+
+ // Start the test
+ lcd.locate(0,1);
+ lcd.printf("Testing...");
+
+
+
+
+//// ///////////////////////////////////////////////////////
+//// This is where we do the grunt work of running the tests
+//// ///////////////////////////////////////////////////////
+
+
+
+
+
+
+
+
+// ========================
+// Dut setup
+// ========================
+
+ lcd.locate(0,1);
+ lcd.printf("DutSetupTest");
+ result |= DutSetupTest ();
+ pc.printf("DutSetup 0x%x\n",result);
+ wait (TEST_DELAY);
+
+ gled=0; rled=0; wait (0.05);
+ if (result == 0 ) {gled = 1; rled=0;} else {gled = 0; rled=1;}
+
+
+// ========================
+// IO Test
+// ========================
+
+ lcd.locate(0,1);
+ lcd.printf("IOTest ");
+ result |= IOTest ();
+ pc.printf("IOTest 0x%x\n",result);
+ wait (TEST_DELAY);
+
+ gled=0; rled=0; wait (0.05);
+ if (result == 0 ) {gled = 1; rled=0;} else {gled = 0; rled=1;}
+
+
+// ========================
+// Reset Test
+// ========================
+
+ lcd.cls(); lcd.locate(0,0);
+ lcd.printf("ResetTest");
+ result |= ResetTest ();
+ pc.printf("ResetTest 0x%x\n",result);
+ wait (TEST_DELAY);
+
+ gled=0; rled=0; wait (0.05);
+ if (result == 0 ) {gled = 1; rled=0;} else {gled = 0; rled=1;}
+
+
+// ========================
+// Ethernet test
+// ========================
+
+
+ lcd.cls(); lcd.locate(0,0);
+ lcd.printf("EthernetTest");
+ result |= EthernetTest ();
+ pc.printf("EthernetTest 0x%x\n",result);
+ wait (TEST_DELAY);
+
+ gled=0; rled=0; wait (0.05);
+ if (result == 0 ) {gled = 1; rled=0;} else {gled = 0; rled=1;}
+
+
+
+// ========================
+// RTC Test
+// ========================
+
+
+ lcd.cls(); lcd.locate(0,0);
+ lcd.printf("RTC test");
+
+ result |= RTCTest ();
+ pc.printf("RTCtTest 0x%x\n",result);
+ wait (TEST_DELAY);
+
+ gled=0; rled=0; wait (0.05);
+ if (result == 0 ) {gled = 1; rled=0;} else {gled = 0; rled=1;}
+
+
+
+
+// ========================
+// VBat Test
+// ========================
+
+
+// make sure the clock still has a sensible value
+
+ lcd.cls(); lcd.locate(0,0);
+ lcd.printf("VBat test");
+
+ // Turn off all other power
+ DutVinPowerDown();
+
+ // wait for 1 second
+ wait(0.1);
+
+ // power back on
+ DutVinPowerUp();
+ wait (0.1);
+
+ // flush the buffer (there will be an "R")
+ DutBufferFlush();
+
+ result |= BatteryTest ();
+ pc.printf("VBatTest 0x%x\n",result);
+ wait (TEST_DELAY);
+
+ gled=0; rled=0; wait (0.05);
+ if (result == 0 ) {gled = 1; rled=0;} else {gled = 0; rled=1;}
+
+
+
+
+
+
+
+
+// ========================
+// Clean up
+// ========================
+
+ lcd.cls(); lcd.locate(0,0);
+ if (result==0) {
+ result |= CleanUp ();
+ }
+
+
+
+ gled=0; rled=0; wait (0.05);
+ if (result == 0 ) {gled = 1; rled=0;} else {gled = 0; rled=1;}
+
+
+ // non-zero, Dut failed
+ if (result) {
+ lcd.cls(); lcd.locate(0,0);
+ lcd.printf("Failed : 0x%x",result);
+ gled = 0; rled=1;
+ lcd.locate(0,1);
+ lcd.printf("Info in Test.log",result);
+
+
+
+ // Power up USB and connect
+ DutUsbPowerUp();
+ wait (0.1);
+ DutUsbConnect();
+ wait (0.5);
+
+
+ #ifdef AUDIO
+ Beep(500,0.5);
+ #endif
+
+
+
+
+ } else {
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf("Passed! :-)");
+
+ lcd.locate(0,1);
+ lcd.printf("Press GREEN");
+ gled = 1; rled=0;
+
+ #ifdef AUDIO
+ Beep(4000,0.5);
+ #endif
+ }
+
+//// ///////////////////////////////////////////////////////
+////
+//// ///////////////////////////////////////////////////////
+
+
+ // wait for the button to be pressed
+ while (!gbtn) {}
+ wait(0.1);
+
+ // Clean up for the next pass
+ result = 0;
+ rled=0;
+ gled=0;
+ DutUsbPowerDown ();
+ DutUsbDisconnect ();
+ DutVinPowerDown ();
+ DutReset (1);
+ DutVB (0);
+
+
+
+ } // end of while
+
+} // end of main
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+