| 979 | // Main controller support |
| 980 | |
| 981 | void Xbox360Peripheral::PadConnect(void) |
| 982 | { |
| 983 | PadDisconnect(); |
| 984 | if (controllerType == XboxOriginal) { |
| 985 | padHandler = new XboxOriginalControllerClass; |
| 986 | } else if (controllerType == XboxOne) { |
| 987 | padHandler = new XboxOneControllerClass; |
| 988 | } else if (controllerType == XboxOnePretend360) { |
| 989 | padHandler = new XboxOnePretend360Class; |
| 990 | } else if (controllerType == Xbox360Pretend360) { |
| 991 | padHandler = new Xbox360Pretend360Class; |
| 992 | } else { |
| 993 | padHandler = new Xbox360ControllerClass; |
| 994 | } |
| 995 | if (padHandler != NULL) |
| 996 | { |
| 997 | const OSString *keys[] = { |
| 998 | OSString::withCString(kIOSerialDeviceType), |
| 999 | OSString::withCString("IOCFPlugInTypes"), |
| 1000 | OSString::withCString("IOKitDebug"), |
| 1001 | }; |
| 1002 | const OSObject *objects[] = { |
| 1003 | OSNumber::withNumber((unsigned long long)1, 32), |
| 1004 | getProperty("IOCFPlugInTypes"), |
| 1005 | OSNumber::withNumber((unsigned long long)65535, 32), |
| 1006 | }; |
| 1007 | OSDictionary *dictionary = OSDictionary::withObjects(objects, keys, sizeof(keys) / sizeof(keys[0])); |
| 1008 | if (padHandler->init(dictionary)) |
| 1009 | { |
| 1010 | padHandler->attach(this); |
| 1011 | padHandler->start(this); |
| 1012 | } |
| 1013 | else |
| 1014 | { |
| 1015 | padHandler->release(); |
| 1016 | padHandler = NULL; |
| 1017 | } |
| 1018 | } |
| 1019 | } |
| 1020 | |
| 1021 | void Xbox360Peripheral::PadDisconnect(void) |
| 1022 | { |