final messsage added

This commit is contained in:
Jack Andersen 2015-04-25 22:25:44 -10:00
parent 79b9e0fd9b
commit cf0eaad388
5 changed files with 21 additions and 5 deletions

View File

@ -25,6 +25,7 @@ public:
bool sendInterruptTransfer(uint8_t pipe, const uint8_t* data, size_t length);
size_t receiveInterruptTransfer(uint8_t pipe, uint8_t* data, size_t length);
virtual void transferCycle() {};
virtual void finalCycle() {};
/* High-Level API */
bool sendReport(const uint8_t* data, size_t length);

View File

@ -49,6 +49,7 @@ class CDolphinSmashAdapter final : public CDeviceBase
bool m_didHandshake;
void deviceDisconnected();
void transferCycle();
void finalCycle();
public:
CDolphinSmashAdapter(CDeviceToken* token);
~CDolphinSmashAdapter();

View File

@ -48,9 +48,9 @@ parseState(IDolphinSmashAdapterCallback::SDolphinControllerState* stateOut, uint
stateOut->m_btns = (uint16_t)payload[1] << 8 | (uint16_t)payload[2];
stateOut->m_leftStick[0] = payload[3];
stateOut->m_leftStick[1] = payload[4] ^ 0xFF;
stateOut->m_leftStick[1] = payload[4];
stateOut->m_rightStick[0] = payload[5];
stateOut->m_rightStick[1] = payload[6] ^ 0xFF;
stateOut->m_rightStick[1] = payload[6];
stateOut->m_analogTriggers[0] = payload[7];
stateOut->m_analogTriggers[1] = payload[8];
@ -118,6 +118,15 @@ void CDolphinSmashAdapter::transferCycle()
}
};
void CDolphinSmashAdapter::finalCycle()
{
if (m_didHandshake)
{
uint8_t rumbleMessage[5] = {0x11, 0, 0, 0, 0};
sendInterruptTransfer(0, rumbleMessage, sizeof(rumbleMessage));
}
};
void CDolphinSmashAdapter::deviceDisconnected()
{

View File

@ -146,10 +146,9 @@ class CHIDDeviceIOKit final : public IHIDDevice
/* Start transfer loop */
while (device->m_runningTransferLoop)
{
device->m_devImp.transferCycle();
}
device->m_devImp.finalCycle();
/* Cleanup */
(*intf)->USBInterfaceClose(intf);
(*intf)->Release(intf);

View File

@ -1,5 +1,8 @@
#if __APPLE__
#include <CoreFoundation/CoreFoundation.h>
#else
#endif
#include <stdio.h>
#include <boo.hpp>
@ -55,7 +58,10 @@ int main(int argc, char** argv)
{
}
#if __APPLE__
CFRunLoopRun();
#else
#endif
delete ctx;
return 0;