mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-02 02:52:30 +02:00
WiiremoteReal for Mac: Find Wiimotes by name.
The decided way to find Wii Remotes is by their bluetooth name, so this patch introduces common code to identify if a given string is a valid Wiimote name. On Mac, when scanning bluetooth, consult the function with all found bluetooth devices.
This commit is contained in:
parent
93b78d7139
commit
d3361494ce
@ -127,11 +127,6 @@ int FindWiimotes(Wiimote **wm, int max_wiimotes)
|
|||||||
bti = [[IOBluetoothDeviceInquiry alloc] init];
|
bti = [[IOBluetoothDeviceInquiry alloc] init];
|
||||||
[bti setDelegate: sbt];
|
[bti setDelegate: sbt];
|
||||||
[bti setInquiryLength: 5];
|
[bti setInquiryLength: 5];
|
||||||
[bti setSearchCriteria: kBluetoothServiceClassMajorAny
|
|
||||||
majorDeviceClass: kBluetoothDeviceClassMajorPeripheral
|
|
||||||
minorDeviceClass: kBluetoothDeviceClassMinorPeripheral2Joystick
|
|
||||||
];
|
|
||||||
[bti setUpdateNewDeviceNames: NO];
|
|
||||||
|
|
||||||
if ([bti start] == kIOReturnSuccess)
|
if ([bti start] == kIOReturnSuccess)
|
||||||
[bti retain];
|
[bti retain];
|
||||||
@ -149,6 +144,9 @@ int FindWiimotes(Wiimote **wm, int max_wiimotes)
|
|||||||
en = [[bti foundDevices] objectEnumerator];
|
en = [[bti foundDevices] objectEnumerator];
|
||||||
for (int i = 0; i < found_devices; i++)
|
for (int i = 0; i < found_devices; i++)
|
||||||
{
|
{
|
||||||
|
IOBluetoothDevice *dev = [en nextObject];
|
||||||
|
if (!IsValidBluetoothName([[dev name] UTF8String]))
|
||||||
|
continue;
|
||||||
// Find an unused slot
|
// Find an unused slot
|
||||||
for (int k = 0; k < MAX_WIIMOTES; k++) {
|
for (int k = 0; k < MAX_WIIMOTES; k++) {
|
||||||
if (wm[k] != NULL ||
|
if (wm[k] != NULL ||
|
||||||
@ -156,7 +154,7 @@ int FindWiimotes(Wiimote **wm, int max_wiimotes)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
wm[k] = new Wiimote(k);
|
wm[k] = new Wiimote(k);
|
||||||
wm[k]->btd = [en nextObject];
|
wm[k]->btd = dev;
|
||||||
found_wiimotes++;
|
found_wiimotes++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -512,4 +512,19 @@ void StateChange(EMUSTATE_CHANGE newState)
|
|||||||
// TODO: disable/enable auto reporting, maybe
|
// TODO: disable/enable auto reporting, maybe
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define ARRAYSIZE(_arr) (sizeof(_arr)/(sizeof(_arr[0])))
|
||||||
|
|
||||||
|
bool IsValidBluetoothName(const char* name) {
|
||||||
|
static const char* kValidWiiRemoteBluetoothNames[] = {
|
||||||
|
"Nintendo RVL-CNT-01",
|
||||||
|
"Nintendo RVL-CNT-01-TR",
|
||||||
|
"Nintendo RVL-WBC-01",
|
||||||
|
};
|
||||||
|
for (size_t i = 0; i < ARRAYSIZE(kValidWiiRemoteBluetoothNames); i++)
|
||||||
|
if (strcmp(name, kValidWiiRemoteBluetoothNames[i]) == 0)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}; // end of namespace
|
}; // end of namespace
|
||||||
|
@ -113,6 +113,8 @@ void StateChange(EMUSTATE_CHANGE newState);
|
|||||||
|
|
||||||
int FindWiimotes(Wiimote** wm, int max_wiimotes);
|
int FindWiimotes(Wiimote** wm, int max_wiimotes);
|
||||||
|
|
||||||
|
bool IsValidBluetoothName(const char* name);
|
||||||
|
|
||||||
}; // WiimoteReal
|
}; // WiimoteReal
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user