Production Test Program (PTP) for the LPC4088 Experiment Base Board

Dependencies:   EALib I2S LM75B SDFileSystem mbed

main.cpp

Committer:
embeddedartists
Date:
2014-10-01
Revision:
9:eb6086159020
Parent:
3:7ef908e84ae1

File content as of revision 9:eb6086159020:

/******************************************************************************
 * Includes
 *****************************************************************************/
#include "mbed.h"

#include "TestRGBLed.h"
#include "TestFileSystemMCI.h"
#include "TestFileSystemSPI.h"
#include "TestAcc.h"
#include "TestTemperature.h"
#include "TestTrimpot.h"
#include "TestJoystick.h"
#include "TestAudio.h"
#include "TestShiftreg.h"
#include "TestDisplay.h"

/******************************************************************************
 * Typedefs and defines
 *****************************************************************************/


/******************************************************************************
 * Local variables
 *****************************************************************************/

DigitalOut myled(LED1);

/******************************************************************************
 * Local functions
 *****************************************************************************/


static void setupSerial(int baudrate)
{
    // This works because both the default serial (used by printf) and the s instance
    // (used by s.printf) would use the same underlying UART code so setting the baudrate
    // in one affects the other.
    Serial s(USBTX, USBRX);
    s.baud(baudrate);
}

int main() {
    setupSerial(115200);
    printf("\n"
           "---\n"
           "Production Test Program: LPC4088 Experiment Base Board\n"
           "Build Date: " __DATE__ " at " __TIME__ "\n"
           "\n");
    
    // run all tests
    int failed = 0;
    
    TestRGBLed rgb;
    TestFileSystemMCI mcifs;
    TestAcc acc;
//    TestFileSystemSPI spifs;
    TestTemperature temp;
    TestTrimpot trim;
    TestJoystick joy;
    TestShiftreg shift;
    TestDisplay display;
    TestAudio audio;
    
    /* NOTE: Audio must be initialized AFTER the display as they both reference the same pins
             (P0_4, P0_5, P0_6, P0_7, P0_8, P0_9). However the display only uses those pins
             for 24-bit color depth and we only use 16-bit in this demo. */
    
    //startup flash behaviour
    rgb.showStartupPattern();
    
    if (!mcifs.runTest()) {
        failed++;
    }

//    if (!spifs.runTest()) {
//        failed++;
//    }
    
    if (!acc.runTest()) {
        failed++;
    }

    if (!temp.runTest()) {
        failed++;
    }
    
    if (!trim.runTest()) {
        failed++;
    }

    if (!joy.runTest()) {
        failed++;
    }
    
    if (!rgb.runTest()) {
        failed++;
    }

    if (!audio.runTest()) {
        failed++;
    }

    if (!display.runTest()) {
        failed++;
    }
    
    if (failed == 0) {
        printf("\n\n---\nTest PASSED\n\n");
        printf("NOTE: The display as well as the shift register LEDs\n"
               "      must be manually checked as well\n\n");
    } else {
        printf("\n\n---\nTest FAILED  (%d failed parts)\n\n", failed);
    }
    rgb.showStatus(failed == 0);
    display.showStatus(failed == 0);

    while(1) {
        shift.runTest();
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}