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-30
- Revision:
- 3:21e262cee052
- Parent:
- 0:3c7f660dbc34
- Child:
- 4:71f5e3d2b0c6
File content as of revision 3:21e262cee052:
/* * SOURCE FILE : main.cpp * * Test program to test out WiiClassicController class. * */ #include "mbed.h" #include "WiiClassicControllerWithCalibration.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( WiiClassicControllerWithCalibration *ctrlr, const char *portname ) { if( ctrlr->Read() ) { pc.printf( "%c[H", 27 ); // VT100 home cursor 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("A=%u\r\n", ctrlr->GetButtonA()); pc.printf("B=%u\r\n", ctrlr->GetButtonB()); pc.printf("X=%u\r\n", ctrlr->GetButtonX()); pc.printf("Y=%u\r\n", ctrlr->GetButtonY()); pc.printf("ZL=%u\r\n", ctrlr->GetButtonZL()); pc.printf("ZR=%u\r\n", ctrlr->GetButtonZR()); pc.printf("Up=%u\r\n", ctrlr->GetButtonUp()); pc.printf("Down=%u\r\n", ctrlr->GetButtonDown()); pc.printf("Left=%u\r\n", ctrlr->GetButtonLeft()); pc.printf("Right=%u\r\n", ctrlr->GetButtonRight()); pc.printf("Home=%u\r\n", ctrlr->GetButtonHome()); pc.printf("Select=%u\r\n", ctrlr->GetButtonSelect()); pc.printf("Start=%u\r\n", ctrlr->GetButtonStart()); pc.printf("LeftTrigger=%2u (%5.3f)\r\n", ctrlr->GetLeftTrigger(), ctrlr->GetCalLeftTrigger() ); pc.printf("ButtonLT=%u\r\n", ctrlr->GetButtonLT()); pc.printf("RightTrigger=%2u (%5.3f)\r\n", ctrlr->GetRightTrigger(), ctrlr->GetCalRightTrigger() ); pc.printf("ButtonRT=%u\r\n", ctrlr->GetButtonRT()); pc.printf("LJoyX=%2u (%5.3f)\r\n", ctrlr->GetLJoyX(), ctrlr->GetCalLJoyX() ); pc.printf("LJoyY=%2u (%5.3f)\r\n", ctrlr->GetLJoyY(), ctrlr->GetCalLJoyY() ); pc.printf("RJoyX=%2u (%5.3f)\r\n", ctrlr->GetRJoyX(), ctrlr->GetCalRJoyX() ); pc.printf("RJoyY=%2u (%5.3f)\r\n", ctrlr->GetRJoyY(), ctrlr->GetCalRJoyY() ); } else { pc.puts( "READ FAILURE\r\n" ); } } /** Main program. */ int main() { WiiClassicControllerWithCalibration ctrlrA( PTE0, PTE1 ); while (true) { ReadAndReport( &ctrlrA, "PORT A" ); wait(LOOP_DELAY); } // Never gets here. // return EXIT_SUCCESS; }