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; }