summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorLéo Lam <leo@innovatetechnologi.es>2018-06-10 14:35:41 +0200
committerGitHub <noreply@github.com>2018-06-10 14:35:41 +0200
commitfca6d80740686ada552a8931df0337c5db6c07be (patch)
treefbd33520a4aba124e43c5c7ad021c13c5c3a2473 /Source/Core
parent6da3c4a6d0ddd2472e574930f00a753f275df80a (diff)
parent647da59679f6cac4176afe283efc9dee496f64a5 (diff)
Merge pull request #7101 from lioncash/ios
WiimoteDevice: Minor changes
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/IOS/USB/Bluetooth/BTEmu.cpp4
-rw-r--r--Source/Core/Core/IOS/USB/Bluetooth/BTEmu.h2
-rw-r--r--Source/Core/Core/IOS/USB/Bluetooth/WiimoteDevice.cpp83
-rw-r--r--Source/Core/Core/IOS/USB/Bluetooth/WiimoteDevice.h37
4 files changed, 60 insertions, 66 deletions
diff --git a/Source/Core/Core/IOS/USB/Bluetooth/BTEmu.cpp b/Source/Core/Core/IOS/USB/Bluetooth/BTEmu.cpp
index df33bd99b0..7fe2ea235c 100644
--- a/Source/Core/Core/IOS/USB/Bluetooth/BTEmu.cpp
+++ b/Source/Core/Core/IOS/USB/Bluetooth/BTEmu.cpp
@@ -339,7 +339,7 @@ void BluetoothEmu::Update()
// Create ACL connection
if (m_HCIEndpoint && (m_ScanEnable & HCI_PAGE_SCAN_ENABLE))
{
- for (auto& wiimote : m_WiiMotes)
+ for (const auto& wiimote : m_WiiMotes)
{
if (wiimote.EventPagingChanged(m_ScanEnable))
SendEventRequestConnection(wiimote);
@@ -524,7 +524,7 @@ bool BluetoothEmu::SendEventConnectionComplete(const bdaddr_t& _bd)
}
// This is called from Update() after ScanEnable has been enabled.
-bool BluetoothEmu::SendEventRequestConnection(WiimoteDevice& _rWiiMote)
+bool BluetoothEmu::SendEventRequestConnection(const WiimoteDevice& _rWiiMote)
{
SQueuedEvent Event(sizeof(SHCIEventRequestConnection), 0);
diff --git a/Source/Core/Core/IOS/USB/Bluetooth/BTEmu.h b/Source/Core/Core/IOS/USB/Bluetooth/BTEmu.h
index 19463e72c0..f695cfb4a1 100644
--- a/Source/Core/Core/IOS/USB/Bluetooth/BTEmu.h
+++ b/Source/Core/Core/IOS/USB/Bluetooth/BTEmu.h
@@ -112,7 +112,7 @@ private:
bool SendEventInquiryResponse();
bool SendEventInquiryComplete();
bool SendEventRemoteNameReq(const bdaddr_t& _bd);
- bool SendEventRequestConnection(WiimoteDevice& _rWiiMote);
+ bool SendEventRequestConnection(const WiimoteDevice& _rWiiMote);
bool SendEventConnectionComplete(const bdaddr_t& _bd);
bool SendEventReadClockOffsetComplete(u16 _connectionHandle);
bool SendEventConPacketTypeChange(u16 _connectionHandle, u16 _packetType);
diff --git a/Source/Core/Core/IOS/USB/Bluetooth/WiimoteDevice.cpp b/Source/Core/Core/IOS/USB/Bluetooth/WiimoteDevice.cpp
index 3ea20a85b3..7225656fc5 100644
--- a/Source/Core/Core/IOS/USB/Bluetooth/WiimoteDevice.cpp
+++ b/Source/Core/Core/IOS/USB/Bluetooth/WiimoteDevice.cpp
@@ -56,7 +56,7 @@ WiimoteDevice::WiimoteDevice(Device::BluetoothEmu* host, int number, bdaddr_t bd
{
INFO_LOG(IOS_WIIMOTE, "Wiimote: #%i Constructed", number);
- m_ConnectionState = (ready) ? CONN_READY : CONN_INACTIVE;
+ m_ConnectionState = ready ? ConnectionState::Ready : ConnectionState::Inactive;
m_ConnectionHandle = 0x100 + number;
memset(m_LinkKey, 0xA0 + number, HCI_KEY_SIZE);
@@ -96,14 +96,14 @@ void WiimoteDevice::DoState(PointerWrap& p)
p.Do(m_ConnectionState);
- p.Do(m_HIDControlChannel_Connected);
- p.Do(m_HIDControlChannel_ConnectedWait);
- p.Do(m_HIDControlChannel_Config);
- p.Do(m_HIDControlChannel_ConfigWait);
- p.Do(m_HIDInterruptChannel_Connected);
- p.Do(m_HIDInterruptChannel_ConnectedWait);
- p.Do(m_HIDInterruptChannel_Config);
- p.Do(m_HIDInterruptChannel_ConfigWait);
+ p.Do(m_hid_control_channel.connected);
+ p.Do(m_hid_control_channel.connected_wait);
+ p.Do(m_hid_control_channel.config);
+ p.Do(m_hid_control_channel.config_wait);
+ p.Do(m_hid_interrupt_channel.connected);
+ p.Do(m_hid_interrupt_channel.connected_wait);
+ p.Do(m_hid_interrupt_channel.config);
+ p.Do(m_hid_interrupt_channel.config_wait);
p.Do(m_BD);
p.Do(m_ConnectionHandle);
@@ -130,55 +130,55 @@ void WiimoteDevice::DoState(PointerWrap& p)
bool WiimoteDevice::LinkChannel()
{
- if (m_ConnectionState != CONN_LINKING)
+ if (m_ConnectionState != ConnectionState::Linking)
return false;
// try to connect L2CAP_PSM_HID_CNTL
- if (!m_HIDControlChannel_Connected)
+ if (!m_hid_control_channel.connected)
{
- if (m_HIDControlChannel_ConnectedWait)
+ if (m_hid_control_channel.connected_wait)
return false;
- m_HIDControlChannel_ConnectedWait = true;
+ m_hid_control_channel.connected_wait = true;
SendConnectionRequest(0x0040, L2CAP_PSM_HID_CNTL);
return true;
}
// try to config L2CAP_PSM_HID_CNTL
- if (!m_HIDControlChannel_Config)
+ if (!m_hid_control_channel.config)
{
- if (m_HIDControlChannel_ConfigWait)
+ if (m_hid_control_channel.config_wait)
return false;
- m_HIDControlChannel_ConfigWait = true;
+ m_hid_control_channel.config_wait = true;
SendConfigurationRequest(0x0040);
return true;
}
// try to connect L2CAP_PSM_HID_INTR
- if (!m_HIDInterruptChannel_Connected)
+ if (!m_hid_interrupt_channel.connected)
{
- if (m_HIDInterruptChannel_ConnectedWait)
+ if (m_hid_interrupt_channel.connected_wait)
return false;
- m_HIDInterruptChannel_ConnectedWait = true;
+ m_hid_interrupt_channel.connected_wait = true;
SendConnectionRequest(0x0041, L2CAP_PSM_HID_INTR);
return true;
}
// try to config L2CAP_PSM_HID_INTR
- if (!m_HIDInterruptChannel_Config)
+ if (!m_hid_interrupt_channel.config)
{
- if (m_HIDInterruptChannel_ConfigWait)
+ if (m_hid_interrupt_channel.config_wait)
return false;
- m_HIDInterruptChannel_ConfigWait = true;
+ m_hid_interrupt_channel.config_wait = true;
SendConfigurationRequest(0x0041);
return true;
}
DEBUG_LOG(IOS_WIIMOTE, "ConnectionState CONN_LINKING -> CONN_COMPLETE");
- m_ConnectionState = CONN_COMPLETE;
+ m_ConnectionState = ConnectionState::Complete;
return false;
}
@@ -195,9 +195,9 @@ bool WiimoteDevice::LinkChannel()
//
void WiimoteDevice::Activate(bool ready)
{
- if (ready && (m_ConnectionState == CONN_INACTIVE))
+ if (ready && (m_ConnectionState == ConnectionState::Inactive))
{
- m_ConnectionState = CONN_READY;
+ m_ConnectionState = ConnectionState::Ready;
}
else if (!ready)
{
@@ -209,7 +209,7 @@ void WiimoteDevice::Activate(bool ready)
void WiimoteDevice::EventConnectionAccepted()
{
DEBUG_LOG(IOS_WIIMOTE, "ConnectionState %x -> CONN_LINKING", m_ConnectionState);
- m_ConnectionState = CONN_LINKING;
+ m_ConnectionState = ConnectionState::Linking;
}
void WiimoteDevice::EventDisconnect()
@@ -217,30 +217,21 @@ void WiimoteDevice::EventDisconnect()
// Send disconnect message to plugin
Wiimote::ControlChannel(m_ConnectionHandle & 0xFF, 99, nullptr, 0);
- m_ConnectionState = CONN_INACTIVE;
+ m_ConnectionState = ConnectionState::Inactive;
// Clear channel flags
ResetChannels();
}
-bool WiimoteDevice::EventPagingChanged(u8 _pageMode)
+bool WiimoteDevice::EventPagingChanged(u8 page_mode) const
{
- if ((m_ConnectionState == CONN_READY) && (_pageMode & HCI_PAGE_SCAN_ENABLE))
- return true;
-
- return false;
+ return (m_ConnectionState == ConnectionState::Ready) && (page_mode & HCI_PAGE_SCAN_ENABLE);
}
void WiimoteDevice::ResetChannels()
{
// reset connection process
- m_HIDControlChannel_Connected = false;
- m_HIDControlChannel_Config = false;
- m_HIDInterruptChannel_Connected = false;
- m_HIDInterruptChannel_Config = false;
- m_HIDControlChannel_ConnectedWait = false;
- m_HIDControlChannel_ConfigWait = false;
- m_HIDInterruptChannel_ConnectedWait = false;
- m_HIDInterruptChannel_ConfigWait = false;
+ m_hid_control_channel = {};
+ m_hid_interrupt_channel = {};
}
//
@@ -425,9 +416,9 @@ void WiimoteDevice::ReceiveConnectionResponse(u8 _Ident, u8* _pData, u32 _Size)
// update state machine
if (rChannel.PSM == L2CAP_PSM_HID_CNTL)
- m_HIDControlChannel_Connected = true;
+ m_hid_control_channel.connected = true;
else if (rChannel.PSM == L2CAP_PSM_HID_INTR)
- m_HIDInterruptChannel_Connected = true;
+ m_hid_interrupt_channel.connected = true;
}
void WiimoteDevice::ReceiveConfigurationReq(u8 _Ident, u8* _pData, u32 _Size)
@@ -501,9 +492,9 @@ void WiimoteDevice::ReceiveConfigurationReq(u8 _Ident, u8* _pData, u32 _Size)
// update state machine
if (rChannel.PSM == L2CAP_PSM_HID_CNTL)
- m_HIDControlChannel_Connected = true;
+ m_hid_control_channel.connected = true;
else if (rChannel.PSM == L2CAP_PSM_HID_INTR)
- m_HIDInterruptChannel_Connected = true;
+ m_hid_interrupt_channel.connected = true;
}
void WiimoteDevice::ReceiveConfigurationResponse(u8 _Ident, u8* _pData, u32 _Size)
@@ -521,9 +512,9 @@ void WiimoteDevice::ReceiveConfigurationResponse(u8 _Ident, u8* _pData, u32 _Siz
SChannel& rChannel = m_Channel[rsp->scid];
if (rChannel.PSM == L2CAP_PSM_HID_CNTL)
- m_HIDControlChannel_Config = true;
+ m_hid_control_channel.config = true;
else if (rChannel.PSM == L2CAP_PSM_HID_INTR)
- m_HIDInterruptChannel_Config = true;
+ m_hid_interrupt_channel.config = true;
}
void WiimoteDevice::ReceiveDisconnectionReq(u8 _Ident, u8* _pData, u32 _Size)
diff --git a/Source/Core/Core/IOS/USB/Bluetooth/WiimoteDevice.h b/Source/Core/Core/IOS/USB/Bluetooth/WiimoteDevice.h
index 439b01dae6..43b2acaacb 100644
--- a/Source/Core/Core/IOS/USB/Bluetooth/WiimoteDevice.h
+++ b/Source/Core/Core/IOS/USB/Bluetooth/WiimoteDevice.h
@@ -30,8 +30,8 @@ public:
// ugly Host handling....
// we really have to clean all this code
- bool IsConnected() const { return m_ConnectionState == CONN_COMPLETE; }
- bool IsInactive() const { return m_ConnectionState == CONN_INACTIVE; }
+ bool IsConnected() const { return m_ConnectionState == ConnectionState::Complete; }
+ bool IsInactive() const { return m_ConnectionState == ConnectionState::Inactive; }
bool LinkChannel();
void ResetChannels();
void Activate(bool ready);
@@ -40,7 +40,7 @@ public:
void EventConnectionAccepted();
void EventDisconnect();
- bool EventPagingChanged(u8 _pageMode);
+ bool EventPagingChanged(u8 page_mode) const;
const bdaddr_t& GetBD() const { return m_BD; }
const uint8_t* GetClass() const { return uclass; }
@@ -53,23 +53,26 @@ public:
const u8* GetLinkKey() const { return m_LinkKey; }
private:
- enum ConnectionState
+ enum class ConnectionState
{
- CONN_INACTIVE = -1,
- CONN_READY,
- CONN_LINKING,
- CONN_COMPLETE
+ Inactive = -1,
+ Ready,
+ Linking,
+ Complete
};
+
+ struct HIDChannelState
+ {
+ bool connected = false;
+ bool connected_wait = false;
+ bool config = false;
+ bool config_wait = false;
+ };
+
ConnectionState m_ConnectionState;
- bool m_HIDControlChannel_Connected = false;
- bool m_HIDControlChannel_ConnectedWait = false;
- bool m_HIDControlChannel_Config = false;
- bool m_HIDControlChannel_ConfigWait = false;
- bool m_HIDInterruptChannel_Connected = false;
- bool m_HIDInterruptChannel_ConnectedWait = false;
- bool m_HIDInterruptChannel_Config = false;
- bool m_HIDInterruptChannel_ConfigWait = false;
+ HIDChannelState m_hid_control_channel;
+ HIDChannelState m_hid_interrupt_channel;
// STATE_TO_SAVE
bdaddr_t m_BD;
@@ -95,7 +98,7 @@ private:
typedef std::map<u32, SChannel> CChannelMap;
CChannelMap m_Channel;
- bool DoesChannelExist(u16 _SCID) { return m_Channel.find(_SCID) != m_Channel.end(); }
+ bool DoesChannelExist(u16 scid) const { return m_Channel.find(scid) != m_Channel.end(); }
void SendCommandToACL(u8 _Ident, u8 _Code, u8 _CommandLength, u8* _pCommandData);
void SignalChannel(u8* _pData, u32 _Size);