Kyle,
It's interesting that it hangs on the read transaction. The actual I2C communication is handled by the FPGA so it's a little difficult to know exactly what is happening. Normally, I would expect the transaction to return an error if it couldn't complete. My only thought is that the Wii MotionPlus is holding the clock signal low preventing the transaction from completing. Removing power from the Wii would allow the clock to resume. There are two things I can suggest you try.
First, the transaction routine expects a pointer to a byte array for the "dataToSend" argument. So I think your 0x00 in the send transmission is getting converted to a pointer to memory address 0x00 rather than a value of zero. Try changing to the following:
Code:
uint8_t sendBuffer[1]={0};
_wmp->Transaction(sendBuffer, 1, 0, 0);
Second, ensure the setCompatibilityMode is set to true in your initiation routine.
Code:
_wmp->setCompatibilityMode(TRUE);
Other than these two things, your code looks like it should work.
Mike