mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-04-07 22:55:40 +12:00
Make HID::GetIPCHandles fail to skip hidInit
This commit is contained in:
parent
340e0c9266
commit
083a0d04d7
3 changed files with 14 additions and 3 deletions
|
@ -7,6 +7,9 @@ class HIDService {
|
|||
Handle handle = KernelHandles::HID;
|
||||
Memory& mem;
|
||||
|
||||
// Service commands
|
||||
void getIPCHandles(u32 messagePointer);
|
||||
|
||||
public:
|
||||
HIDService(Memory& mem) : mem(mem) {}
|
||||
void reset();
|
||||
|
|
|
@ -2,13 +2,14 @@
|
|||
|
||||
namespace HIDCommands {
|
||||
enum : u32 {
|
||||
|
||||
GetIPCHandles = 0x000A0000
|
||||
};
|
||||
}
|
||||
|
||||
namespace Result {
|
||||
enum : u32 {
|
||||
Success = 0,
|
||||
Failure = 0xFFFFFFFF
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -17,6 +18,13 @@ void HIDService::reset() {}
|
|||
void HIDService::handleSyncRequest(u32 messagePointer) {
|
||||
const u32 command = mem.read32(messagePointer);
|
||||
switch (command) {
|
||||
case HIDCommands::GetIPCHandles: getIPCHandles(messagePointer); break;
|
||||
default: Helpers::panic("HID service requested. Command: %08X\n", command);
|
||||
}
|
||||
}
|
||||
|
||||
void HIDService::getIPCHandles(u32 messagePointer) {
|
||||
printf("HID: getIPCHandles (Failure)\n");
|
||||
mem.write32(messagePointer + 4, Result::Failure); // Result code
|
||||
mem.write32(messagePointer + 8, 0x14000000); // Translation descriptor
|
||||
}
|
|
@ -64,7 +64,7 @@ void ServiceManager::getServiceHandle(u32 messagePointer) {
|
|||
if (service == "APT:S") {
|
||||
handle = KernelHandles::APT;
|
||||
} else if (service == "hid:USER") {
|
||||
handle = KernelHandles::HID;
|
||||
handle = KernelHandles::HID;
|
||||
} else {
|
||||
Helpers::panic("srv: GetServiceHandle with unknown service %s", service.c_str());
|
||||
}
|
||||
|
@ -77,6 +77,6 @@ void ServiceManager::sendCommandToService(u32 messagePointer, Handle handle) {
|
|||
switch (handle) {
|
||||
case KernelHandles::APT: apt.handleSyncRequest(messagePointer); break;
|
||||
case KernelHandles::HID: hid.handleSyncRequest(messagePointer); break;
|
||||
default: Helpers::panic("Sent IPC message to unknown service %08X\n", handle);
|
||||
default: Helpers::panic("Sent IPC message to unknown service %08X\n Command: %08X", handle, mem.read32(messagePointer));
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue