Based on Alfredo Guerrero's WiiClassicControllerReader although I had to do additional decoding of packet. KL25Z talking to Wii classic controller.

Dependencies:   CommonTypes WiiClassicControllerLib mbed

main.cpp

Committer:
RichardE
Date:
2013-06-29
Revision:
0:3c7f660dbc34
Child:
3:21e262cee052

File content as of revision 0:3c7f660dbc34:

/*
 * SOURCE FILE : main.cpp
 *
 * Test program to test out WiiClassicController class.
 *
 */
 
#include "mbed.h"
#include "WiiClassicController.h"

// Define this to dump packet in hex.
#define DUMP_PACKET

#define LOOP_DELAY    1    // seconds

// global declarations
Serial pc(USBTX, USBRX);

/* Read from the Wii classic controller and display results on serial port output.
 * @param ctrlr Controller to read from.
 * @param portname Name of port you are reading from.
 */
static void ReadAndReport( WiiClassicController* const ctrlr, const char* const portname ) {
    if( ctrlr->Read() ) {

        pc.printf("%s: ", portname);
    
        #ifdef DUMP_PACKET
            int bufSize = ctrlr->GetReadBufSize();
            UInt8 *bufPtr = ctrlr->GetReadBuf();
            for (int i = 0; i < bufSize; i++) {
                pc.printf("%x ", bufPtr[i]);
            }
            pc.printf("\r\n");
        #endif
        
        pc.printf("\r\nA\tB\tX\tY\tZL\tZR\tDU\tDD\tDL\tDR\tH\r\n");
        pc.printf("%u\t", ctrlr->GetButtonA());
        pc.printf("%u\t", ctrlr->GetButtonB());
        pc.printf("%u\t", ctrlr->GetButtonX());
        pc.printf("%u\t", ctrlr->GetButtonY());
        pc.printf("%u\t", ctrlr->GetButtonZL());
        pc.printf("%u\t", ctrlr->GetButtonZR());
        pc.printf("%u\t", ctrlr->GetButtonUp());
        pc.printf("%u\t", ctrlr->GetButtonDown());
        pc.printf("%u\t", ctrlr->GetButtonLeft());
        pc.printf("%u\t", ctrlr->GetButtonRight());
        pc.printf("%u\t", ctrlr->GetButtonHome());
        pc.printf("\r\nSEL\tSTART\tLT\tLC\tRT\tRC\tLX\tLY\tRX\tRY\r\n");
        pc.printf("%u\t", ctrlr->GetButtonSelect());
        pc.printf("%u\t", ctrlr->GetButtonStart());
        pc.printf("%u\t", ctrlr->GetLeftTrigger());
        pc.printf("%u\t", ctrlr->GetButtonLT());
        pc.printf("%u\t", ctrlr->GetRightTrigger());
        pc.printf("%u\t", ctrlr->GetButtonRT());
        pc.printf("%u\t", ctrlr->GetLJoyX());
        pc.printf("%u\t", ctrlr->GetLJoyY());
        pc.printf("%u\t", ctrlr->GetRJoyX());
        pc.printf("%u\t", ctrlr->GetRJoyY());
        pc.printf("\r\n\n\n");
    }
    else {
        pc.puts( "READ FAILURE\r\n" );
    }
}

/** Main program.
 */
int main() {
    WiiClassicController ctrlrA( PTE0, PTE1 );
    while (true) {
        ReadAndReport( &ctrlrA, "PORT A" );
        wait(LOOP_DELAY);
    }
    // Never gets here.
    // return EXIT_SUCCESS;
}