|
|
|
@ -18,9 +18,6 @@
|
|
|
|
|
#include "WII_IPC_HLE_Device_usb.h"
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define USB_HLE_LOG DSPHLE
|
|
|
|
|
|
|
|
|
|
CWII_IPC_HLE_Device_usb_oh1_57e_305::CWII_IPC_HLE_Device_usb_oh1_57e_305(u32 _DeviceID, const std::string& _rDeviceName)
|
|
|
|
|
: IWII_IPC_HLE_Device(_DeviceID, _rDeviceName)
|
|
|
|
|
, m_ACLAnswer(false)
|
|
|
|
@ -58,10 +55,12 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::IOCtlV(u32 _CommandAddress)
|
|
|
|
|
// wpadsampled.elf - patch so the USB_LOG will print somehting
|
|
|
|
|
// even it it wasn't very useful yet...
|
|
|
|
|
// Memory::Write_U8(1, 0x801514A8); // USB_LOG
|
|
|
|
|
Memory::Write_U8(1, 0x801514D8); // WUD_DEBUGPrint
|
|
|
|
|
//Memory::Write_U8(1, 0x801514D8); // WUD_DEBUGPrint
|
|
|
|
|
|
|
|
|
|
SIOCtlVBuffer CommandBuffer(_CommandAddress);
|
|
|
|
|
|
|
|
|
|
LOG(WIIMOTE, "USB_IOCTL_CTRLMSG(0x%x)", CommandBuffer.Parameter);
|
|
|
|
|
|
|
|
|
|
// DumpAsync(CommandBuffer.BufferVector, _CommandAddress, CommandBuffer.NumberInBuffer, CommandBuffer.NumberPayloadBuffer);
|
|
|
|
|
|
|
|
|
|
switch(CommandBuffer.Parameter)
|
|
|
|
@ -83,15 +82,17 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::IOCtlV(u32 _CommandAddress)
|
|
|
|
|
CtrlSetup.m_PayLoadAddr = CommandBuffer.PayloadBuffer[0].m_Address;
|
|
|
|
|
CtrlSetup.m_PayLoadSize = CommandBuffer.PayloadBuffer[0].m_Size;
|
|
|
|
|
|
|
|
|
|
_dbg_assert_msg_(USB_HLE_LOG, Termination == 0, "USB_HLE_LOG: Termination != 0");
|
|
|
|
|
_dbg_assert_msg_(WIIMOTE, Termination == 0, "WIIMOTE: Termination != 0");
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "USB_IOCTL_CTRLMSG (0x%08x) - add to queue and send ack only", _CommandAddress);
|
|
|
|
|
#if 0
|
|
|
|
|
LOG(WIIMOTE, "USB_IOCTL_CTRLMSG (0x%08x) - add to queue and send ack only", _CommandAddress);
|
|
|
|
|
|
|
|
|
|
/* LOG(USB_HLE_LOG, " bRequestType: 0x%x", CtrlSetup.bRequestType);
|
|
|
|
|
LOG(USB_HLE_LOG, " bRequest: 0x%x", CtrlSetup.bRequest);
|
|
|
|
|
LOG(USB_HLE_LOG, " wValue: 0x%x", CtrlSetup.wValue);
|
|
|
|
|
LOG(USB_HLE_LOG, " wIndex: 0x%x", CtrlSetup.wIndex);
|
|
|
|
|
LOG(USB_HLE_LOG, " wLength: 0x%x", CtrlSetup.wLength); */
|
|
|
|
|
LOG(WIIMOTE, " bRequestType: 0x%x", CtrlSetup.bRequestType);
|
|
|
|
|
LOG(WIIMOTE, " bRequest: 0x%x", CtrlSetup.bRequest);
|
|
|
|
|
LOG(WIIMOTE, " wValue: 0x%x", CtrlSetup.wValue);
|
|
|
|
|
LOG(WIIMOTE, " wIndex: 0x%x", CtrlSetup.wIndex);
|
|
|
|
|
LOG(WIIMOTE, " wLength: 0x%x", CtrlSetup.wLength);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
m_HCICommandMessageQueue.push(CtrlSetup);
|
|
|
|
|
|
|
|
|
@ -114,8 +115,8 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::IOCtlV(u32 _CommandAddress)
|
|
|
|
|
SIOCtlVBuffer pBulkBuffer(_CommandAddress);
|
|
|
|
|
UACLHeader* pACLHeader = (UACLHeader*)Memory::GetPointer(pBulkBuffer.PayloadBuffer[0].m_Address);
|
|
|
|
|
|
|
|
|
|
_dbg_assert_(USB_HLE_LOG, pACLHeader->BCFlag == 0);
|
|
|
|
|
_dbg_assert_(USB_HLE_LOG, pACLHeader->PBFlag == 2);
|
|
|
|
|
_dbg_assert_(WIIMOTE, pACLHeader->BCFlag == 0);
|
|
|
|
|
_dbg_assert_(WIIMOTE, pACLHeader->PBFlag == 2);
|
|
|
|
|
|
|
|
|
|
SendToDevice(pACLHeader->ConnectionHandle, Memory::GetPointer(pBulkBuffer.PayloadBuffer[0].m_Address + 4), pACLHeader->Size);
|
|
|
|
|
}
|
|
|
|
@ -127,14 +128,14 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::IOCtlV(u32 _CommandAddress)
|
|
|
|
|
delete m_pACLBuffer;
|
|
|
|
|
m_pACLBuffer = new SIOCtlVBuffer(_CommandAddress);
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "ACL_DATA_ENDPOINT: 0x%08x ", _CommandAddress);
|
|
|
|
|
LOG(WIIMOTE, "ACL_DATA_ENDPOINT: 0x%08x ", _CommandAddress);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
{
|
|
|
|
|
_dbg_assert_msg_(USB_HLE_LOG, 0, "Unknown USB_IOCTL_BLKMSG: %x", Command);
|
|
|
|
|
_dbg_assert_msg_(WIIMOTE, 0, "Unknown USB_IOCTL_BLKMSG: %x", Command);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
@ -153,14 +154,14 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::IOCtlV(u32 _CommandAddress)
|
|
|
|
|
delete m_pHCIBuffer;
|
|
|
|
|
m_pHCIBuffer = new SIOCtlVBuffer(_CommandAddress);
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "HCI_EVENT_ENDPOINT: 0x%08x", _CommandAddress);
|
|
|
|
|
LOG(WIIMOTE, "HCI_EVENT_ENDPOINT: 0x%08x", _CommandAddress);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
{
|
|
|
|
|
_dbg_assert_msg_(USB_HLE_LOG, 0, "Unknown USB_IOCTL_INTRMSG: %x", Command);
|
|
|
|
|
_dbg_assert_msg_(WIIMOTE, 0, "Unknown USB_IOCTL_INTRMSG: %x", Command);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
@ -169,14 +170,14 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::IOCtlV(u32 _CommandAddress)
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
{
|
|
|
|
|
_dbg_assert_msg_(USB_HLE_LOG, 0, "Unknown CWII_IPC_HLE_Device_usb_oh1_57e_305: %x", CommandBuffer.Parameter);
|
|
|
|
|
_dbg_assert_msg_(WIIMOTE, 0, "Unknown CWII_IPC_HLE_Device_usb_oh1_57e_305: %x", CommandBuffer.Parameter);
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "%s - IOCtlV:", GetDeviceName().c_str());
|
|
|
|
|
LOG(USB_HLE_LOG, " Parameter: 0x%x", CommandBuffer.Parameter);
|
|
|
|
|
LOG(USB_HLE_LOG, " NumberIn: 0x%08x", CommandBuffer.NumberInBuffer);
|
|
|
|
|
LOG(USB_HLE_LOG, " NumberOut: 0x%08x", CommandBuffer.NumberPayloadBuffer);
|
|
|
|
|
LOG(USB_HLE_LOG, " BufferVector: 0x%08x", CommandBuffer.BufferVector);
|
|
|
|
|
LOG(USB_HLE_LOG, " BufferSize: 0x%08x", CommandBuffer.BufferSize);
|
|
|
|
|
LOG(WIIMOTE, "%s - IOCtlV:", GetDeviceName().c_str());
|
|
|
|
|
LOG(WIIMOTE, " Parameter: 0x%x", CommandBuffer.Parameter);
|
|
|
|
|
LOG(WIIMOTE, " NumberIn: 0x%08x", CommandBuffer.NumberInBuffer);
|
|
|
|
|
LOG(WIIMOTE, " NumberOut: 0x%08x", CommandBuffer.NumberPayloadBuffer);
|
|
|
|
|
LOG(WIIMOTE, " BufferVector: 0x%08x", CommandBuffer.BufferVector);
|
|
|
|
|
LOG(WIIMOTE, " BufferSize: 0x%08x", CommandBuffer.BufferSize);
|
|
|
|
|
DumpAsync(CommandBuffer.BufferVector, _CommandAddress, CommandBuffer.NumberInBuffer, CommandBuffer.NumberPayloadBuffer);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
@ -220,6 +221,8 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::SendACLFrame(u16 _ConnectionHandle, u8
|
|
|
|
|
|
|
|
|
|
u32 CWII_IPC_HLE_Device_usb_oh1_57e_305::Update()
|
|
|
|
|
{
|
|
|
|
|
LOG(WIIMOTE, "Update() %i 0x%08x",
|
|
|
|
|
m_HCICommandMessageQueue.size(), m_pHCIBuffer);
|
|
|
|
|
// check state machine
|
|
|
|
|
if (m_pHCIBuffer)
|
|
|
|
|
{
|
|
|
|
@ -310,6 +313,18 @@ u32 CWII_IPC_HLE_Device_usb_oh1_57e_305::Update()
|
|
|
|
|
return Addr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(scan_enable && m_pHCIBuffer) {
|
|
|
|
|
//by now, the emulatee should be listening for incoming L2CAP packets.
|
|
|
|
|
//let's send a few.
|
|
|
|
|
SendEventRequestConnection();
|
|
|
|
|
scan_enable = 0;
|
|
|
|
|
|
|
|
|
|
u32 Addr = m_pHCIBuffer->m_Address;
|
|
|
|
|
delete m_pHCIBuffer;
|
|
|
|
|
m_pHCIBuffer = NULL;
|
|
|
|
|
return Addr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -374,8 +389,8 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::SendEventInquiryResponse()
|
|
|
|
|
pResponse->page_scan_mode = 0;
|
|
|
|
|
pResponse->clock_offset = 0x3818;
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Event: Send Fake Inquriy of one controller");
|
|
|
|
|
LOG(USB_HLE_LOG, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
LOG(WIIMOTE, "Event: Send Fake Inquriy of one controller");
|
|
|
|
|
LOG(WIIMOTE, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
pResponse->bdaddr.b[0], pResponse->bdaddr.b[1], pResponse->bdaddr.b[2],
|
|
|
|
|
pResponse->bdaddr.b[3], pResponse->bdaddr.b[4], pResponse->bdaddr.b[5]);
|
|
|
|
|
}
|
|
|
|
@ -396,7 +411,7 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::SendEventInquiryComplete()
|
|
|
|
|
// control message has been sent...
|
|
|
|
|
Memory::Write_U32(sizeof(SHCIEventInquiryComplete), m_pHCIBuffer->m_Address + 0x4);
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Event: Inquiry complete");
|
|
|
|
|
LOG(WIIMOTE, "Event: Inquiry complete");
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
@ -424,25 +439,25 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::SendEventRemoteNameReq()
|
|
|
|
|
// return reply buffer size
|
|
|
|
|
Memory::Write_U32(sizeof(SHCIEventRemoteNameReq), m_pHCIBuffer->m_Address + 0x4);
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Event: SendEventRemoteNameReq");
|
|
|
|
|
LOG(USB_HLE_LOG, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
LOG(WIIMOTE, "Event: SendEventRemoteNameReq");
|
|
|
|
|
LOG(WIIMOTE, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
pRemoteNameReq->bdaddr.b[0], pRemoteNameReq->bdaddr.b[1], pRemoteNameReq->bdaddr.b[2],
|
|
|
|
|
pRemoteNameReq->bdaddr.b[3], pRemoteNameReq->bdaddr.b[4], pRemoteNameReq->bdaddr.b[5]);
|
|
|
|
|
LOG(USB_HLE_LOG, " remotename: %s", pRemoteNameReq->RemoteName);
|
|
|
|
|
LOG(WIIMOTE, " remotename: %s", pRemoteNameReq->RemoteName);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CWII_IPC_HLE_Device_usb_oh1_57e_305::SendEventRequestConnection()
|
|
|
|
|
{
|
|
|
|
|
PanicAlert("unused");
|
|
|
|
|
/*
|
|
|
|
|
//PanicAlert("unused");
|
|
|
|
|
|
|
|
|
|
SHCIEventRequestConnection* pEventRequestConnection = (SHCIEventRequestConnection*)Memory::GetPointer(m_pHCIBuffer->PayloadBuffer[0].m_Address);
|
|
|
|
|
|
|
|
|
|
pEventRequestConnection->EventType = 0x04;
|
|
|
|
|
pEventRequestConnection->PayloadLength = 13;
|
|
|
|
|
|
|
|
|
|
pEventRequestConnection->bdaddr = XXXXX; // BD_ADDR of the device that requests the connection
|
|
|
|
|
pEventRequestConnection->bdaddr = m_WiiMotes[0].GetBD(); // BD_ADDR of the device that requests the connection
|
|
|
|
|
pEventRequestConnection->uclass[0] = 0x04; // thanks to shagkur
|
|
|
|
|
pEventRequestConnection->uclass[1] = 0x25;
|
|
|
|
|
pEventRequestConnection->uclass[2] = 0x00;
|
|
|
|
@ -451,15 +466,15 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::SendEventRequestConnection()
|
|
|
|
|
// return reply buffer size
|
|
|
|
|
Memory::Write_U32(sizeof(SHCIEventRequestConnection), m_pHCIBuffer->m_Address + 0x4);
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Event: SendEventRequestConnection");
|
|
|
|
|
LOG(USB_HLE_LOG, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
LOG(WIIMOTE, "Event: SendEventRequestConnection");
|
|
|
|
|
LOG(WIIMOTE, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
pEventRequestConnection->bdaddr.b[0], pEventRequestConnection->bdaddr.b[1], pEventRequestConnection->bdaddr.b[2],
|
|
|
|
|
pEventRequestConnection->bdaddr.b[3], pEventRequestConnection->bdaddr.b[4], pEventRequestConnection->bdaddr.b[5]);
|
|
|
|
|
LOG(USB_HLE_LOG, " COD[0]: 0x%02x", pEventRequestConnection->uclass[0]);
|
|
|
|
|
LOG(USB_HLE_LOG, " COD[1]: 0x%02x", pEventRequestConnection->uclass[1]);
|
|
|
|
|
LOG(USB_HLE_LOG, " COD[2]: 0x%02x", pEventRequestConnection->uclass[2]);
|
|
|
|
|
LOG(USB_HLE_LOG, " LinkType: %i", pEventRequestConnection->LinkType);
|
|
|
|
|
*/
|
|
|
|
|
LOG(WIIMOTE, " COD[0]: 0x%02x", pEventRequestConnection->uclass[0]);
|
|
|
|
|
LOG(WIIMOTE, " COD[1]: 0x%02x", pEventRequestConnection->uclass[1]);
|
|
|
|
|
LOG(WIIMOTE, " COD[2]: 0x%02x", pEventRequestConnection->uclass[2]);
|
|
|
|
|
LOG(WIIMOTE, " LinkType: %i", pEventRequestConnection->LinkType);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -488,13 +503,13 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::SendEventConnectionComplete()
|
|
|
|
|
// return reply buffer size
|
|
|
|
|
Memory::Write_U32(sizeof(SHCIEventConnectionComplete), m_pHCIBuffer->m_Address + 0x4);
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Event: SendEventConnectionComplete");
|
|
|
|
|
LOG(USB_HLE_LOG, " Connection_Handle: 0x%04x", pConnectionComplete->Connection_Handle);
|
|
|
|
|
LOG(USB_HLE_LOG, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
LOG(WIIMOTE, "Event: SendEventConnectionComplete");
|
|
|
|
|
LOG(WIIMOTE, " Connection_Handle: 0x%04x", pConnectionComplete->Connection_Handle);
|
|
|
|
|
LOG(WIIMOTE, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
pConnectionComplete->bdaddr.b[0], pConnectionComplete->bdaddr.b[1], pConnectionComplete->bdaddr.b[2],
|
|
|
|
|
pConnectionComplete->bdaddr.b[3], pConnectionComplete->bdaddr.b[4], pConnectionComplete->bdaddr.b[5]);
|
|
|
|
|
LOG(USB_HLE_LOG, " LinkType: %i", pConnectionComplete->LinkType);
|
|
|
|
|
LOG(USB_HLE_LOG, " EncryptionEnabled: %i", pConnectionComplete->EncryptionEnabled);
|
|
|
|
|
LOG(WIIMOTE, " LinkType: %i", pConnectionComplete->LinkType);
|
|
|
|
|
LOG(WIIMOTE, " EncryptionEnabled: %i", pConnectionComplete->EncryptionEnabled);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
@ -519,9 +534,9 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::SendEventReadClockOffsetComplete()
|
|
|
|
|
// return reply buffer size
|
|
|
|
|
Memory::Write_U32(sizeof(SHCIEventReadClockOffsetComplete), m_pHCIBuffer->m_Address + 0x4);
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Event: SendEventConnectionComplete");
|
|
|
|
|
LOG(USB_HLE_LOG, " Connection_Handle: 0x%04x", pReadClockOffsetComplete->ConnectionHandle);
|
|
|
|
|
LOG(USB_HLE_LOG, " ClockOffset: 0x%04x", pReadClockOffsetComplete->ClockOffset);
|
|
|
|
|
LOG(WIIMOTE, "Event: SendEventConnectionComplete");
|
|
|
|
|
LOG(WIIMOTE, " Connection_Handle: 0x%04x", pReadClockOffsetComplete->ConnectionHandle);
|
|
|
|
|
LOG(WIIMOTE, " ClockOffset: 0x%04x", pReadClockOffsetComplete->ClockOffset);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
@ -548,11 +563,11 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::SendEventReadRemoteVerInfo()
|
|
|
|
|
// control message has been sent...
|
|
|
|
|
Memory::Write_U32(sizeof(SHCIEventReadRemoteVerInfo), m_pHCIBuffer->m_Address + 0x4);
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Event: SendEventReadReadRemoteVerInfo");
|
|
|
|
|
LOG(USB_HLE_LOG, " Connection_Handle: 0x%04x", pReadRemoteVerInfo->ConnectionHandle);
|
|
|
|
|
LOG(USB_HLE_LOG, " lmp_version: 0x%02x", pReadRemoteVerInfo->lmp_version);
|
|
|
|
|
LOG(USB_HLE_LOG, " manufacturer: 0x%04x", pReadRemoteVerInfo->manufacturer);
|
|
|
|
|
LOG(USB_HLE_LOG, " lmp_subversion: 0x%04x", pReadRemoteVerInfo->lmp_subversion);
|
|
|
|
|
LOG(WIIMOTE, "Event: SendEventReadReadRemoteVerInfo");
|
|
|
|
|
LOG(WIIMOTE, " Connection_Handle: 0x%04x", pReadRemoteVerInfo->ConnectionHandle);
|
|
|
|
|
LOG(WIIMOTE, " lmp_version: 0x%02x", pReadRemoteVerInfo->lmp_version);
|
|
|
|
|
LOG(WIIMOTE, " manufacturer: 0x%04x", pReadRemoteVerInfo->manufacturer);
|
|
|
|
|
LOG(WIIMOTE, " lmp_subversion: 0x%04x", pReadRemoteVerInfo->lmp_subversion);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
@ -584,9 +599,9 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::SendEventReadRemoteFeatures()
|
|
|
|
|
// control message has been sent...
|
|
|
|
|
Memory::Write_U32(sizeof(SHCIEventReadRemoteFeatures), m_pHCIBuffer->m_Address + 0x4);
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Event: SendEventReadReadRemoteVerInfo");
|
|
|
|
|
LOG(USB_HLE_LOG, " Connection_Handle: 0x%04x", pReadRemoteFeatures->ConnectionHandle);
|
|
|
|
|
LOG(USB_HLE_LOG, " features: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
LOG(WIIMOTE, "Event: SendEventReadReadRemoteVerInfo");
|
|
|
|
|
LOG(WIIMOTE, " Connection_Handle: 0x%04x", pReadRemoteFeatures->ConnectionHandle);
|
|
|
|
|
LOG(WIIMOTE, " features: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
pReadRemoteFeatures->features[0], pReadRemoteFeatures->features[1], pReadRemoteFeatures->features[2],
|
|
|
|
|
pReadRemoteFeatures->features[3], pReadRemoteFeatures->features[4], pReadRemoteFeatures->features[5],
|
|
|
|
|
pReadRemoteFeatures->features[6], pReadRemoteFeatures->features[7]);
|
|
|
|
@ -601,6 +616,8 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::ExecuteHCICommandMessage(const SHCICom
|
|
|
|
|
u8* pInput = Memory::GetPointer(_rHCICommandMessage.m_PayLoadAddr + 3);
|
|
|
|
|
SCommandMessage* pMsg = (SCommandMessage*)Memory::GetPointer(_rHCICommandMessage.m_PayLoadAddr);
|
|
|
|
|
|
|
|
|
|
LOG(WIIMOTE, "ExecuteHCICommandMessage(0x%04x)", pMsg->Opcode);
|
|
|
|
|
|
|
|
|
|
switch(pMsg->Opcode)
|
|
|
|
|
{
|
|
|
|
|
//
|
|
|
|
@ -721,7 +738,7 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::ExecuteHCICommandMessage(const SHCICom
|
|
|
|
|
u16 ogf = HCI_OGF(pMsg->Opcode);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
_dbg_assert_msg_(USB_HLE_LOG, 0, "Unknown USB_IOCTL_CTRLMSG: 0x%04X (ocf: 0x%x ogf 0x%x)", pMsg->Opcode, ocf, ogf);
|
|
|
|
|
_dbg_assert_msg_(WIIMOTE, 0, "Unknown USB_IOCTL_CTRLMSG: 0x%04X (ocf: 0x%x ogf 0x%x)", pMsg->Opcode, ocf, ogf);
|
|
|
|
|
|
|
|
|
|
// send fake all is okay msg...
|
|
|
|
|
SendEventCommandComplete(pMsg->Opcode, NULL, 0);
|
|
|
|
@ -738,7 +755,7 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReset(u8* _Input)
|
|
|
|
|
|
|
|
|
|
SendEventCommandComplete(HCI_CMD_RESET, &Reply, sizeof(hci_status_rp));
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_RESET");
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_RESET");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadBufferSize(u8* _Input)
|
|
|
|
@ -753,12 +770,12 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadBufferSize(u8* _Input)
|
|
|
|
|
|
|
|
|
|
SendEventCommandComplete(HCI_CMD_READ_BUFFER_SIZE, &Reply, sizeof(hci_read_buffer_size_rp));
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_READ_BUFFER_SIZE:");
|
|
|
|
|
LOG(USB_HLE_LOG, "return:");
|
|
|
|
|
LOG(USB_HLE_LOG, " max_acl_size: %i", Reply.max_acl_size);
|
|
|
|
|
LOG(USB_HLE_LOG, " num_acl_pkts: %i", Reply.num_acl_pkts);
|
|
|
|
|
LOG(USB_HLE_LOG, " max_sco_size: %i", Reply.max_sco_size);
|
|
|
|
|
LOG(USB_HLE_LOG, " num_sco_pkts: %i", Reply.num_sco_pkts);
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_READ_BUFFER_SIZE:");
|
|
|
|
|
LOG(WIIMOTE, "return:");
|
|
|
|
|
LOG(WIIMOTE, " max_acl_size: %i", Reply.max_acl_size);
|
|
|
|
|
LOG(WIIMOTE, " num_acl_pkts: %i", Reply.num_acl_pkts);
|
|
|
|
|
LOG(WIIMOTE, " max_sco_size: %i", Reply.max_sco_size);
|
|
|
|
|
LOG(WIIMOTE, " num_sco_pkts: %i", Reply.num_sco_pkts);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadLocalVer(u8* _Input)
|
|
|
|
@ -774,13 +791,13 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadLocalVer(u8* _Input)
|
|
|
|
|
|
|
|
|
|
SendEventCommandComplete(HCI_CMD_READ_LOCAL_VER, &Reply, sizeof(hci_read_local_ver_rp));
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_READ_LOCAL_VER:");
|
|
|
|
|
LOG(USB_HLE_LOG, "return:");
|
|
|
|
|
LOG(USB_HLE_LOG, " status: %i", Reply.status);
|
|
|
|
|
LOG(USB_HLE_LOG, " hci_revision: %i", Reply.hci_revision);
|
|
|
|
|
LOG(USB_HLE_LOG, " lmp_version: %i", Reply.lmp_version);
|
|
|
|
|
LOG(USB_HLE_LOG, " manufacturer: %i", Reply.manufacturer);
|
|
|
|
|
LOG(USB_HLE_LOG, " lmp_subversion: %i", Reply.lmp_subversion);
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_READ_LOCAL_VER:");
|
|
|
|
|
LOG(WIIMOTE, "return:");
|
|
|
|
|
LOG(WIIMOTE, " status: %i", Reply.status);
|
|
|
|
|
LOG(WIIMOTE, " hci_revision: %i", Reply.hci_revision);
|
|
|
|
|
LOG(WIIMOTE, " lmp_version: %i", Reply.lmp_version);
|
|
|
|
|
LOG(WIIMOTE, " manufacturer: %i", Reply.manufacturer);
|
|
|
|
|
LOG(WIIMOTE, " lmp_subversion: %i", Reply.lmp_subversion);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadBDAdrr(u8* _Input)
|
|
|
|
@ -792,9 +809,9 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadBDAdrr(u8* _Input)
|
|
|
|
|
|
|
|
|
|
SendEventCommandComplete(HCI_CMD_READ_BDADDR, &Reply, sizeof(hci_read_bdaddr_rp));
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_READ_BDADDR:");
|
|
|
|
|
LOG(USB_HLE_LOG, "return:");
|
|
|
|
|
LOG(USB_HLE_LOG, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_READ_BDADDR:");
|
|
|
|
|
LOG(WIIMOTE, "return:");
|
|
|
|
|
LOG(WIIMOTE, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
Reply.bdaddr.b[0], Reply.bdaddr.b[1], Reply.bdaddr.b[2],
|
|
|
|
|
Reply.bdaddr.b[3], Reply.bdaddr.b[4], Reply.bdaddr.b[5]);
|
|
|
|
|
}
|
|
|
|
@ -815,9 +832,9 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadLocalFeatures(u8* _Input)
|
|
|
|
|
|
|
|
|
|
SendEventCommandComplete(HCI_CMD_READ_LOCAL_FEATURES, &Reply, sizeof(hci_read_local_features_rp));
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_READ_LOCAL_FEATURES:");
|
|
|
|
|
LOG(USB_HLE_LOG, "return:");
|
|
|
|
|
LOG(USB_HLE_LOG, " features: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_READ_LOCAL_FEATURES:");
|
|
|
|
|
LOG(WIIMOTE, "return:");
|
|
|
|
|
LOG(WIIMOTE, " features: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
Reply.features[0], Reply.features[1], Reply.features[2],
|
|
|
|
|
Reply.features[3], Reply.features[4], Reply.features[5],
|
|
|
|
|
Reply.features[6], Reply.features[7]);
|
|
|
|
@ -835,14 +852,14 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadStoredLinkKey(u8* _Input)
|
|
|
|
|
|
|
|
|
|
SendEventCommandComplete(HCI_CMD_READ_STORED_LINK_KEY, &Reply, sizeof(hci_read_stored_link_key_rp));
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_READ_STORED_LINK_KEY:");
|
|
|
|
|
LOG(USB_HLE_LOG, "input:");
|
|
|
|
|
LOG(USB_HLE_LOG, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_READ_STORED_LINK_KEY:");
|
|
|
|
|
LOG(WIIMOTE, "input:");
|
|
|
|
|
LOG(WIIMOTE, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
ReadStoredLinkKey->bdaddr.b[0], ReadStoredLinkKey->bdaddr.b[1], ReadStoredLinkKey->bdaddr.b[2],
|
|
|
|
|
ReadStoredLinkKey->bdaddr.b[3], ReadStoredLinkKey->bdaddr.b[4], ReadStoredLinkKey->bdaddr.b[5]);
|
|
|
|
|
LOG(USB_HLE_LOG, " read_all_ %i", ReadStoredLinkKey->read_all);
|
|
|
|
|
LOG(USB_HLE_LOG, "return:");
|
|
|
|
|
LOG(USB_HLE_LOG, " no idea what i should answer :)");
|
|
|
|
|
LOG(WIIMOTE, " read_all_ %i", ReadStoredLinkKey->read_all);
|
|
|
|
|
LOG(WIIMOTE, "return:");
|
|
|
|
|
LOG(WIIMOTE, " no idea what i should answer :)");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWriteUnitClass(u8* _Input)
|
|
|
|
@ -859,11 +876,11 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWriteUnitClass(u8* _Input)
|
|
|
|
|
|
|
|
|
|
SendEventCommandComplete(HCI_CMD_WRITE_UNIT_CLASS, &Reply, sizeof(hci_write_unit_class_rp));
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_WRITE_UNIT_CLASS:");
|
|
|
|
|
LOG(USB_HLE_LOG, "write:");
|
|
|
|
|
LOG(USB_HLE_LOG, " COD[0]: 0x%02x", pWriteUnitClass->uclass[0]);
|
|
|
|
|
LOG(USB_HLE_LOG, " COD[1]: 0x%02x", pWriteUnitClass->uclass[1]);
|
|
|
|
|
LOG(USB_HLE_LOG, " COD[2]: 0x%02x", pWriteUnitClass->uclass[2]);
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_WRITE_UNIT_CLASS:");
|
|
|
|
|
LOG(WIIMOTE, "write:");
|
|
|
|
|
LOG(WIIMOTE, " COD[0]: 0x%02x", pWriteUnitClass->uclass[0]);
|
|
|
|
|
LOG(WIIMOTE, " COD[1]: 0x%02x", pWriteUnitClass->uclass[1]);
|
|
|
|
|
LOG(WIIMOTE, " COD[2]: 0x%02x", pWriteUnitClass->uclass[2]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWriteLocalName(u8* _Input)
|
|
|
|
@ -878,9 +895,9 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWriteLocalName(u8* _Input)
|
|
|
|
|
|
|
|
|
|
SendEventCommandComplete(HCI_CMD_WRITE_LOCAL_NAME, &Reply, sizeof(hci_write_local_name_rp));
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_WRITE_LOCAL_NAME:");
|
|
|
|
|
LOG(USB_HLE_LOG, "write:");
|
|
|
|
|
LOG(USB_HLE_LOG, " local_name: %s", pWriteLocalName->name);
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_WRITE_LOCAL_NAME:");
|
|
|
|
|
LOG(WIIMOTE, "write:");
|
|
|
|
|
LOG(WIIMOTE, " local_name: %s", pWriteLocalName->name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWritePinType(u8* _Input)
|
|
|
|
@ -895,9 +912,9 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWritePinType(u8* _Input)
|
|
|
|
|
|
|
|
|
|
SendEventCommandComplete(HCI_CMD_WRITE_PIN_TYPE, &Reply, sizeof(hci_write_pin_type_rp));
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_WRITE_PIN_TYPE:");
|
|
|
|
|
LOG(USB_HLE_LOG, "write:");
|
|
|
|
|
LOG(USB_HLE_LOG, " pin_type: %x", pWritePinType->pin_type);
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_WRITE_PIN_TYPE:");
|
|
|
|
|
LOG(WIIMOTE, "write:");
|
|
|
|
|
LOG(WIIMOTE, " pin_type: %x", pWritePinType->pin_type);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandHostBufferSize(u8* _Input)
|
|
|
|
@ -915,12 +932,12 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandHostBufferSize(u8* _Input)
|
|
|
|
|
|
|
|
|
|
SendEventCommandComplete(HCI_CMD_HOST_BUFFER_SIZE, &Reply, sizeof(hci_host_buffer_size_rp));
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_HOST_BUFFER_SIZE:");
|
|
|
|
|
LOG(USB_HLE_LOG, "write:");
|
|
|
|
|
LOG(USB_HLE_LOG, " max_acl_size: %i", pHostBufferSize->max_acl_size);
|
|
|
|
|
LOG(USB_HLE_LOG, " max_sco_size: %i", pHostBufferSize->max_sco_size);
|
|
|
|
|
LOG(USB_HLE_LOG, " num_acl_pkts: %i", pHostBufferSize->num_acl_pkts);
|
|
|
|
|
LOG(USB_HLE_LOG, " num_sco_pkts: %i", pHostBufferSize->num_sco_pkts);
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_HOST_BUFFER_SIZE:");
|
|
|
|
|
LOG(WIIMOTE, "write:");
|
|
|
|
|
LOG(WIIMOTE, " max_acl_size: %i", pHostBufferSize->max_acl_size);
|
|
|
|
|
LOG(WIIMOTE, " max_sco_size: %i", pHostBufferSize->max_sco_size);
|
|
|
|
|
LOG(WIIMOTE, " num_acl_pkts: %i", pHostBufferSize->num_acl_pkts);
|
|
|
|
|
LOG(WIIMOTE, " num_sco_pkts: %i", pHostBufferSize->num_sco_pkts);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWritePageTimeOut(u8* _Input)
|
|
|
|
@ -936,9 +953,9 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWritePageTimeOut(u8* _Input)
|
|
|
|
|
|
|
|
|
|
SendEventCommandComplete(HCI_CMD_WRITE_PAGE_TIMEOUT, &Reply, sizeof(hci_host_buffer_size_rp));
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_WRITE_PAGE_TIMEOUT:");
|
|
|
|
|
LOG(USB_HLE_LOG, "write:");
|
|
|
|
|
LOG(USB_HLE_LOG, " timeout: %i", pWritePageTimeOut->timeout);
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_WRITE_PAGE_TIMEOUT:");
|
|
|
|
|
LOG(WIIMOTE, "write:");
|
|
|
|
|
LOG(WIIMOTE, " timeout: %i", pWritePageTimeOut->timeout);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWriteScanEnable(u8* _Input)
|
|
|
|
@ -963,9 +980,10 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWriteScanEnable(u8* _Input)
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_WRITE_SCAN_ENABLE:");
|
|
|
|
|
LOG(USB_HLE_LOG, "write:");
|
|
|
|
|
LOG(USB_HLE_LOG, " scan_enable: %s", Scanning[pWriteScanEnable->scan_enable]);
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_WRITE_SCAN_ENABLE:");
|
|
|
|
|
LOG(WIIMOTE, "write:");
|
|
|
|
|
LOG(WIIMOTE, " scan_enable: %s", Scanning[pWriteScanEnable->scan_enable]);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWriteInquiryMode(u8* _Input)
|
|
|
|
@ -989,9 +1007,9 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWriteInquiryMode(u8* _Input)
|
|
|
|
|
{ "Inquiry Result with RSSI format or Extended Inquiry Result format" }
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_WRITE_INQUIRY_MODE:");
|
|
|
|
|
LOG(USB_HLE_LOG, "write:");
|
|
|
|
|
LOG(USB_HLE_LOG, " mode: %s", InquiryMode[pInquiryMode->mode]);
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_WRITE_INQUIRY_MODE:");
|
|
|
|
|
LOG(WIIMOTE, "write:");
|
|
|
|
|
LOG(WIIMOTE, " mode: %s", InquiryMode[pInquiryMode->mode]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWritePageScanType(u8* _Input)
|
|
|
|
@ -1015,9 +1033,9 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWritePageScanType(u8* _Input)
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_WRITE_PAGE_SCAN_TYPE:");
|
|
|
|
|
LOG(USB_HLE_LOG, "write:");
|
|
|
|
|
LOG(USB_HLE_LOG, " type: %s", PageScanType[pWritePageScanType->type]);
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_WRITE_PAGE_SCAN_TYPE:");
|
|
|
|
|
LOG(WIIMOTE, "write:");
|
|
|
|
|
LOG(WIIMOTE, " type: %s", PageScanType[pWritePageScanType->type]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandSetEventFilter(u8* _Input)
|
|
|
|
@ -1033,10 +1051,10 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandSetEventFilter(u8* _Input)
|
|
|
|
|
|
|
|
|
|
SendEventCommandComplete(HCI_CMD_SET_EVENT_FILTER, &Reply, sizeof(hci_set_event_filter_rp));
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_SET_EVENT_FILTER:");
|
|
|
|
|
LOG(USB_HLE_LOG, "write:");
|
|
|
|
|
LOG(USB_HLE_LOG, " filter_type: %i", pSetEventFilter->filter_type);
|
|
|
|
|
LOG(USB_HLE_LOG, " filter_condition_type: %i", pSetEventFilter->filter_condition_type);
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_SET_EVENT_FILTER:");
|
|
|
|
|
LOG(WIIMOTE, "write:");
|
|
|
|
|
LOG(WIIMOTE, " filter_type: %i", pSetEventFilter->filter_type);
|
|
|
|
|
LOG(WIIMOTE, " filter_condition_type: %i", pSetEventFilter->filter_condition_type);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandInquiry(u8* _Input)
|
|
|
|
@ -1047,17 +1065,17 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandInquiry(u8* _Input)
|
|
|
|
|
|
|
|
|
|
memcpy(lap, pInquiry->lap, HCI_LAP_SIZE);
|
|
|
|
|
|
|
|
|
|
_dbg_assert_msg_(USB_HLE_LOG, m_State == STATE_NONE, "m_State != NONE");
|
|
|
|
|
_dbg_assert_msg_(WIIMOTE, m_State == STATE_NONE, "m_State != NONE");
|
|
|
|
|
m_State = STATE_INQUIRY_RESPONSE;
|
|
|
|
|
SendEventCommandStatus(HCI_CMD_INQUIRY);
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_INQUIRY:");
|
|
|
|
|
LOG(USB_HLE_LOG, "write:");
|
|
|
|
|
LOG(USB_HLE_LOG, " LAP[0]: 0x%02x", pInquiry->lap[0]);
|
|
|
|
|
LOG(USB_HLE_LOG, " LAP[1]: 0x%02x", pInquiry->lap[1]);
|
|
|
|
|
LOG(USB_HLE_LOG, " LAP[2]: 0x%02x", pInquiry->lap[2]);
|
|
|
|
|
LOG(USB_HLE_LOG, " inquiry_length: %i (N x 1.28) sec", pInquiry->inquiry_length);
|
|
|
|
|
LOG(USB_HLE_LOG, " num_responses: %i (N x 1.28) sec", pInquiry->num_responses);
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_INQUIRY:");
|
|
|
|
|
LOG(WIIMOTE, "write:");
|
|
|
|
|
LOG(WIIMOTE, " LAP[0]: 0x%02x", pInquiry->lap[0]);
|
|
|
|
|
LOG(WIIMOTE, " LAP[1]: 0x%02x", pInquiry->lap[1]);
|
|
|
|
|
LOG(WIIMOTE, " LAP[2]: 0x%02x", pInquiry->lap[2]);
|
|
|
|
|
LOG(WIIMOTE, " inquiry_length: %i (N x 1.28) sec", pInquiry->inquiry_length);
|
|
|
|
|
LOG(WIIMOTE, " num_responses: %i (N x 1.28) sec", pInquiry->num_responses);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWriteInquiryScanType(u8* _Input)
|
|
|
|
@ -1072,9 +1090,9 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWriteInquiryScanType(u8* _Input
|
|
|
|
|
|
|
|
|
|
SendEventCommandComplete(HCI_CMD_WRITE_INQUIRY_SCAN_TYPE, &Reply, sizeof(hci_write_inquiry_scan_type_rp));
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_WRITE_INQUIRY_SCAN_TYPE:");
|
|
|
|
|
LOG(USB_HLE_LOG, "write:");
|
|
|
|
|
LOG(USB_HLE_LOG, " type: %i", pSetEventFilter->type);
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_WRITE_INQUIRY_SCAN_TYPE:");
|
|
|
|
|
LOG(WIIMOTE, "write:");
|
|
|
|
|
LOG(WIIMOTE, " type: %i", pSetEventFilter->type);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandVendorSpecific_FC4F(u8* _Input, u32 _Size)
|
|
|
|
@ -1092,12 +1110,12 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandVendorSpecific_FC4F(u8* _Input,
|
|
|
|
|
|
|
|
|
|
SendEventCommandComplete(0xFC4F, &Reply, sizeof(hci_status_rp));
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: CommandVendorSpecific_FC4F:");
|
|
|
|
|
LOG(USB_HLE_LOG, "input (size 0x%x):", _Size);
|
|
|
|
|
LOG(WIIMOTE, "Command: CommandVendorSpecific_FC4F:");
|
|
|
|
|
LOG(WIIMOTE, "input (size 0x%x):", _Size);
|
|
|
|
|
for (u32 i=0; i<_Size; i++)
|
|
|
|
|
LOG(USB_HLE_LOG, " Data: 0x%02x", _Input[i]);
|
|
|
|
|
LOG(USB_HLE_LOG, "write:");
|
|
|
|
|
LOG(USB_HLE_LOG, " callstack WUDiRemovePatch");
|
|
|
|
|
LOG(WIIMOTE, " Data: 0x%02x", _Input[i]);
|
|
|
|
|
LOG(WIIMOTE, "write:");
|
|
|
|
|
LOG(WIIMOTE, " callstack WUDiRemovePatch");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandVendorSpecific_FC4C(u8* _Input, u32 _Size)
|
|
|
|
@ -1108,12 +1126,12 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandVendorSpecific_FC4C(u8* _Input,
|
|
|
|
|
|
|
|
|
|
SendEventCommandComplete(0xFC4C, &Reply, sizeof(hci_status_rp));
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: CommandVendorSpecific_FC4C:");
|
|
|
|
|
LOG(USB_HLE_LOG, "input (size 0x%x):", _Size);
|
|
|
|
|
LOG(WIIMOTE, "Command: CommandVendorSpecific_FC4C:");
|
|
|
|
|
LOG(WIIMOTE, "input (size 0x%x):", _Size);
|
|
|
|
|
for (u32 i=0; i<_Size; i++)
|
|
|
|
|
LOG(USB_HLE_LOG, " Data: 0x%02x", _Input[i]);
|
|
|
|
|
LOG(USB_HLE_LOG, "write:");
|
|
|
|
|
LOG(USB_HLE_LOG, " perhaps append patch?");
|
|
|
|
|
LOG(WIIMOTE, " Data: 0x%02x", _Input[i]);
|
|
|
|
|
LOG(WIIMOTE, "write:");
|
|
|
|
|
LOG(WIIMOTE, " perhaps append patch?");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandInquiryCancel(u8* _Input)
|
|
|
|
@ -1124,7 +1142,7 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandInquiryCancel(u8* _Input)
|
|
|
|
|
|
|
|
|
|
SendEventCommandComplete(HCI_CMD_INQUIRY_CANCEL, &Reply, sizeof(hci_inquiry_cancel_rp));
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_INQUIRY_CANCEL");
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_INQUIRY_CANCEL");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandRemoteNameReq(u8* _Input)
|
|
|
|
@ -1132,19 +1150,19 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandRemoteNameReq(u8* _Input)
|
|
|
|
|
// command parameters
|
|
|
|
|
hci_remote_name_req_cp* pRemoteNameReq = (hci_remote_name_req_cp*)_Input;
|
|
|
|
|
|
|
|
|
|
_dbg_assert_msg_(USB_HLE_LOG, m_State == STATE_NONE, "m_State != NONE");
|
|
|
|
|
_dbg_assert_msg_(WIIMOTE, m_State == STATE_NONE, "m_State != NONE");
|
|
|
|
|
SendEventCommandStatus(HCI_CMD_REMOTE_NAME_REQ);
|
|
|
|
|
m_StateTempBD = pRemoteNameReq->bdaddr;
|
|
|
|
|
m_State = STATE_REMOTE_NAME_REQ;
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_REMOTE_NAME_REQ");
|
|
|
|
|
LOG(USB_HLE_LOG, "Input:");
|
|
|
|
|
LOG(USB_HLE_LOG, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_REMOTE_NAME_REQ");
|
|
|
|
|
LOG(WIIMOTE, "Input:");
|
|
|
|
|
LOG(WIIMOTE, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
pRemoteNameReq->bdaddr.b[0], pRemoteNameReq->bdaddr.b[1], pRemoteNameReq->bdaddr.b[2],
|
|
|
|
|
pRemoteNameReq->bdaddr.b[3], pRemoteNameReq->bdaddr.b[4], pRemoteNameReq->bdaddr.b[5]);
|
|
|
|
|
LOG(USB_HLE_LOG, " page_scan_rep_mode: %i", pRemoteNameReq->page_scan_rep_mode);
|
|
|
|
|
LOG(USB_HLE_LOG, " page_scan_mode: %i", pRemoteNameReq->page_scan_mode);
|
|
|
|
|
LOG(USB_HLE_LOG, " clock_offset: %i", pRemoteNameReq->clock_offset)
|
|
|
|
|
LOG(WIIMOTE, " page_scan_rep_mode: %i", pRemoteNameReq->page_scan_rep_mode);
|
|
|
|
|
LOG(WIIMOTE, " page_scan_mode: %i", pRemoteNameReq->page_scan_mode);
|
|
|
|
|
LOG(WIIMOTE, " clock_offset: %i", pRemoteNameReq->clock_offset)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandCreateCon(u8* _Input)
|
|
|
|
@ -1152,22 +1170,22 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandCreateCon(u8* _Input)
|
|
|
|
|
// command parameters
|
|
|
|
|
hci_create_con_cp* pCreateCon = (hci_create_con_cp*)_Input;
|
|
|
|
|
|
|
|
|
|
_dbg_assert_msg_(USB_HLE_LOG, m_State == STATE_NONE, "m_State != NONE");
|
|
|
|
|
_dbg_assert_msg_(WIIMOTE, m_State == STATE_NONE, "m_State != NONE");
|
|
|
|
|
m_State = STATE_CONNECTION_COMPLETE_EVENT;
|
|
|
|
|
m_StateTempBD = pCreateCon->bdaddr;
|
|
|
|
|
SendEventCommandStatus(HCI_CMD_CREATE_CON);
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_CREATE_CON");
|
|
|
|
|
LOG(USB_HLE_LOG, "Input:");
|
|
|
|
|
LOG(USB_HLE_LOG, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_CREATE_CON");
|
|
|
|
|
LOG(WIIMOTE, "Input:");
|
|
|
|
|
LOG(WIIMOTE, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
pCreateCon->bdaddr.b[0], pCreateCon->bdaddr.b[1], pCreateCon->bdaddr.b[2],
|
|
|
|
|
pCreateCon->bdaddr.b[3], pCreateCon->bdaddr.b[4], pCreateCon->bdaddr.b[5]);
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, " pkt_type: %i", pCreateCon->pkt_type);
|
|
|
|
|
LOG(USB_HLE_LOG, " page_scan_rep_mode: %i", pCreateCon->page_scan_rep_mode);
|
|
|
|
|
LOG(USB_HLE_LOG, " page_scan_mode: %i", pCreateCon->page_scan_mode);
|
|
|
|
|
LOG(USB_HLE_LOG, " clock_offset: %i", pCreateCon->clock_offset);
|
|
|
|
|
LOG(USB_HLE_LOG, " accept_role_switch: %i", pCreateCon->accept_role_switch);
|
|
|
|
|
LOG(WIIMOTE, " pkt_type: %i", pCreateCon->pkt_type);
|
|
|
|
|
LOG(WIIMOTE, " page_scan_rep_mode: %i", pCreateCon->page_scan_rep_mode);
|
|
|
|
|
LOG(WIIMOTE, " page_scan_mode: %i", pCreateCon->page_scan_mode);
|
|
|
|
|
LOG(WIIMOTE, " clock_offset: %i", pCreateCon->clock_offset);
|
|
|
|
|
LOG(WIIMOTE, " accept_role_switch: %i", pCreateCon->accept_role_switch);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandAcceptCon(u8* _Input)
|
|
|
|
@ -1177,12 +1195,12 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandAcceptCon(u8* _Input)
|
|
|
|
|
hci_accept_con_cp* pAcceptCon = (hci_accept_con_cp*)_Input;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_ACCEPT_CON");
|
|
|
|
|
LOG(USB_HLE_LOG, "Input:");
|
|
|
|
|
LOG(USB_HLE_LOG, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_ACCEPT_CON");
|
|
|
|
|
LOG(WIIMOTE, "Input:");
|
|
|
|
|
LOG(WIIMOTE, " bd: %02x:%02x:%02x:%02x:%02x:%02x",
|
|
|
|
|
pAcceptCon->bdaddr.b[0], pAcceptCon->bdaddr.b[1], pAcceptCon->bdaddr.b[2],
|
|
|
|
|
pAcceptCon->bdaddr.b[3], pAcceptCon->bdaddr.b[4], pAcceptCon->bdaddr.b[5]);
|
|
|
|
|
LOG(USB_HLE_LOG, " role: %i", pAcceptCon->role);
|
|
|
|
|
LOG(WIIMOTE, " role: %i", pAcceptCon->role);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadClockOffset(u8* _Input)
|
|
|
|
@ -1190,14 +1208,14 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadClockOffset(u8* _Input)
|
|
|
|
|
// command parameters
|
|
|
|
|
hci_read_clock_offset_cp* pReadClockOffset = (hci_read_clock_offset_cp*)_Input;
|
|
|
|
|
|
|
|
|
|
_dbg_assert_msg_(USB_HLE_LOG, m_State == STATE_NONE, "m_State != NONE");
|
|
|
|
|
_dbg_assert_msg_(WIIMOTE, m_State == STATE_NONE, "m_State != NONE");
|
|
|
|
|
m_State = STATE_READ_CLOCK_OFFSET;
|
|
|
|
|
m_StateTempConnectionHandle = pReadClockOffset->con_handle;
|
|
|
|
|
SendEventCommandStatus(HCI_CMD_READ_CLOCK_OFFSET);
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_READ_CLOCK_OFFSET");
|
|
|
|
|
LOG(USB_HLE_LOG, "Input:");
|
|
|
|
|
LOG(USB_HLE_LOG, " ConnectionHandle: 0x%02x", pReadClockOffset->con_handle);
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_READ_CLOCK_OFFSET");
|
|
|
|
|
LOG(WIIMOTE, "Input:");
|
|
|
|
|
LOG(WIIMOTE, " ConnectionHandle: 0x%02x", pReadClockOffset->con_handle);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadRemoteVerInfo(u8* _Input)
|
|
|
|
@ -1205,14 +1223,14 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadRemoteVerInfo(u8* _Input)
|
|
|
|
|
// command parameters
|
|
|
|
|
hci_read_remote_ver_info_cp* pReadRemoteVerInfo = (hci_read_remote_ver_info_cp*)_Input;
|
|
|
|
|
|
|
|
|
|
_dbg_assert_msg_(USB_HLE_LOG, m_State == STATE_NONE, "m_State != NONE (%i)", m_State);
|
|
|
|
|
_dbg_assert_msg_(WIIMOTE, m_State == STATE_NONE, "m_State != NONE (%i)", m_State);
|
|
|
|
|
m_State = STATE_READ_REMOTE_VER_INFO;
|
|
|
|
|
m_StateTempConnectionHandle = pReadRemoteVerInfo->con_handle;
|
|
|
|
|
SendEventCommandStatus(HCI_CMD_READ_REMOTE_VER_INFO);
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_READ_REMOTE_VER_INFO");
|
|
|
|
|
LOG(USB_HLE_LOG, "Input:");
|
|
|
|
|
LOG(USB_HLE_LOG, " ConnectionHandle: 0x%02x", pReadRemoteVerInfo->con_handle);
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_READ_REMOTE_VER_INFO");
|
|
|
|
|
LOG(WIIMOTE, "Input:");
|
|
|
|
|
LOG(WIIMOTE, " ConnectionHandle: 0x%02x", pReadRemoteVerInfo->con_handle);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadRemoteFeatures(u8* _Input)
|
|
|
|
@ -1220,14 +1238,14 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadRemoteFeatures(u8* _Input)
|
|
|
|
|
// command parameters
|
|
|
|
|
hci_read_remote_features_cp* pReadRemoteFeatures = (hci_read_remote_features_cp*)_Input;
|
|
|
|
|
|
|
|
|
|
_dbg_assert_msg_(USB_HLE_LOG, m_State == STATE_NONE, "m_State != NONE");
|
|
|
|
|
_dbg_assert_msg_(WIIMOTE, m_State == STATE_NONE, "m_State != NONE");
|
|
|
|
|
m_State = STATE_READ_REMOTE_FEATURES;
|
|
|
|
|
m_StateTempConnectionHandle = pReadRemoteFeatures->con_handle;
|
|
|
|
|
SendEventCommandStatus(HCI_CMD_READ_REMOTE_FEATURES);
|
|
|
|
|
|
|
|
|
|
LOG(USB_HLE_LOG, "Command: HCI_CMD_READ_REMOTE_FEATURES");
|
|
|
|
|
LOG(USB_HLE_LOG, "Input:");
|
|
|
|
|
LOG(USB_HLE_LOG, " ConnectionHandle: 0x%02x", pReadRemoteFeatures->con_handle);
|
|
|
|
|
LOG(WIIMOTE, "Command: HCI_CMD_READ_REMOTE_FEATURES");
|
|
|
|
|
LOG(WIIMOTE, "Input:");
|
|
|
|
|
LOG(WIIMOTE, " ConnectionHandle: 0x%02x", pReadRemoteFeatures->con_handle);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CWII_IPC_HLE_WiiMote* CWII_IPC_HLE_Device_usb_oh1_57e_305::AccessWiiMote(const bdaddr_t& _rAddr)
|
|
|
|
|