Wiimote: added ACL connection setup.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@438 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
53cdd29228
commit
f96d19a1fb
Binary file not shown.
|
@ -313,11 +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.
|
||||
if(m_DelayedEvent != EVENT_NONE && m_pHCIBuffer) {
|
||||
switch(m_DelayedEvent) {
|
||||
case EVENT_REQUEST_CONNECTION:
|
||||
SendEventRequestConnection();
|
||||
scan_enable = 0;
|
||||
break;
|
||||
case EVENT_CONNECTION_COMPLETE:
|
||||
SendEventConnectionComplete();
|
||||
break;
|
||||
default:
|
||||
PanicAlert("Unknown Event in USBDev");
|
||||
}
|
||||
m_DelayedEvent = EVENT_NONE;
|
||||
|
||||
u32 Addr = m_pHCIBuffer->m_Address;
|
||||
delete m_pHCIBuffer;
|
||||
|
@ -728,6 +735,10 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::ExecuteHCICommandMessage(const SHCICom
|
|||
CommandReadRemoteFeatures(pInput);
|
||||
break;
|
||||
|
||||
case HCI_CMD_WRITE_LINK_POLICY_SETTINGS:
|
||||
CommandWriteLinkPolicy(pInput);
|
||||
break;
|
||||
|
||||
//
|
||||
// --- default ---
|
||||
//
|
||||
|
@ -984,6 +995,7 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWriteScanEnable(u8* _Input)
|
|||
LOG(WIIMOTE, "write:");
|
||||
LOG(WIIMOTE, " scan_enable: %s", Scanning[pWriteScanEnable->scan_enable]);
|
||||
|
||||
SetDelayedEvent(EVENT_REQUEST_CONNECTION);
|
||||
}
|
||||
|
||||
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWriteInquiryMode(u8* _Input)
|
||||
|
@ -1190,10 +1202,13 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandCreateCon(u8* _Input)
|
|||
|
||||
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandAcceptCon(u8* _Input)
|
||||
{
|
||||
#ifdef LOGGING
|
||||
// command parameters
|
||||
hci_accept_con_cp* pAcceptCon = (hci_accept_con_cp*)_Input;
|
||||
#endif
|
||||
|
||||
_dbg_assert_msg_(WIIMOTE, m_State == STATE_NONE, "m_State != NONE");
|
||||
m_State = STATE_CONNECTION_COMPLETE_EVENT;
|
||||
m_StateTempBD = pAcceptCon->bdaddr;
|
||||
SendEventCommandStatus(HCI_CMD_ACCEPT_CON);
|
||||
|
||||
LOG(WIIMOTE, "Command: HCI_CMD_ACCEPT_CON");
|
||||
LOG(WIIMOTE, "Input:");
|
||||
|
@ -1203,6 +1218,14 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandAcceptCon(u8* _Input)
|
|||
LOG(WIIMOTE, " role: %i", pAcceptCon->role);
|
||||
}
|
||||
|
||||
void CWII_IPC_HLE_Device_usb_oh1_57e_305::SetDelayedEvent(EDelayedEvent e)
|
||||
{
|
||||
if(m_DelayedEvent != EVENT_NONE) {
|
||||
PanicAlert("WIIMOTE: Double delayed events!");
|
||||
}
|
||||
m_DelayedEvent = e;
|
||||
}
|
||||
|
||||
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadClockOffset(u8* _Input)
|
||||
{
|
||||
// command parameters
|
||||
|
@ -1245,9 +1268,23 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadRemoteFeatures(u8* _Input)
|
|||
|
||||
LOG(WIIMOTE, "Command: HCI_CMD_READ_REMOTE_FEATURES");
|
||||
LOG(WIIMOTE, "Input:");
|
||||
LOG(WIIMOTE, " ConnectionHandle: 0x%02x", pReadRemoteFeatures->con_handle);
|
||||
LOG(WIIMOTE, " ConnectionHandle: 0x%04x", pReadRemoteFeatures->con_handle);
|
||||
}
|
||||
|
||||
void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandWriteLinkPolicy(u8* _Input)
|
||||
{
|
||||
// command parameters
|
||||
hci_write_link_policy_settings_cp* pLinkPolicy = (hci_write_link_policy_settings_cp*)_Input;
|
||||
|
||||
SendEventCommandStatus(HCI_CMD_WRITE_LINK_POLICY_SETTINGS);
|
||||
|
||||
LOG(WIIMOTE, "Command: HCI_CMD_WRITE_LINK_POLICY_SETTINGS");
|
||||
LOG(WIIMOTE, "Input:");
|
||||
LOG(WIIMOTE, " ConnectionHandle: 0x%04x", pLinkPolicy->con_handle);
|
||||
LOG(WIIMOTE, " Policy: 0x%04x", pLinkPolicy->settings);
|
||||
}
|
||||
|
||||
|
||||
CWII_IPC_HLE_WiiMote* CWII_IPC_HLE_Device_usb_oh1_57e_305::AccessWiiMote(const bdaddr_t& _rAddr)
|
||||
{
|
||||
for (size_t i=0; i<m_WiiMotes.size(); i++)
|
||||
|
|
|
@ -143,7 +143,7 @@ private:
|
|||
void CommandReadClockOffset(u8* _Input);
|
||||
void CommandReadRemoteVerInfo(u8* _Input);
|
||||
void CommandReadRemoteFeatures(u8* _Input);
|
||||
|
||||
void CommandWriteLinkPolicy(u8* _Input);
|
||||
|
||||
void SendToDevice(u16 _ConnectionHandle, u8* _pData, u32 _Size);
|
||||
|
||||
|
@ -164,6 +164,17 @@ private:
|
|||
bdaddr_t m_StateTempBD;
|
||||
u16 m_StateTempConnectionHandle;
|
||||
|
||||
enum EDelayedEvent
|
||||
{
|
||||
EVENT_NONE,
|
||||
EVENT_REQUEST_CONNECTION,
|
||||
EVENT_CONNECTION_COMPLETE
|
||||
};
|
||||
|
||||
EDelayedEvent m_DelayedEvent;
|
||||
|
||||
void SetDelayedEvent(EDelayedEvent e);
|
||||
|
||||
bdaddr_t m_ControllerBD;
|
||||
u8 m_ClassOfDevice[HCI_CLASS_SIZE];
|
||||
char m_LocalName[HCI_UNIT_NAME_SIZE];
|
||||
|
|
Loading…
Reference in New Issue