[HID] Implement some extra service calls. [CFG] Add language checking.

This commit is contained in:
wheremyfoodat 2022-10-11 23:32:40 +03:00
parent 2a4709dcfa
commit d395fcd3cc
6 changed files with 86 additions and 6 deletions

View file

@ -2,7 +2,9 @@
namespace HIDCommands {
enum : u32 {
GetIPCHandles = 0x000A0000
GetIPCHandles = 0x000A0000,
EnableAccelerometer = 0x00110000,
EnableGyroscopeLow = 0x00130000
};
}
@ -15,16 +17,32 @@ namespace Result {
void HIDService::reset() {
sharedMem = nullptr;
accelerometerEnabled = false;
gyroEnabled = false;
}
void HIDService::handleSyncRequest(u32 messagePointer) {
const u32 command = mem.read32(messagePointer);
switch (command) {
case HIDCommands::EnableAccelerometer: enableAccelerometer(messagePointer); break;
case HIDCommands::EnableGyroscopeLow: enableGyroscopeLow(messagePointer); break;
case HIDCommands::GetIPCHandles: getIPCHandles(messagePointer); break;
default: Helpers::panic("HID service requested. Command: %08X\n", command);
}
}
void HIDService::enableAccelerometer(u32 messagePointer) {
log("HID::EnableAccelerometer\n");
mem.write32(messagePointer + 4, Result::Success);
accelerometerEnabled = true;
}
void HIDService::enableGyroscopeLow(u32 messagePointer) {
log("HID::EnableGyroscopeLow\n");
mem.write32(messagePointer + 4, Result::Success);
gyroEnabled = true;
}
void HIDService::getIPCHandles(u32 messagePointer) {
log("HID::GetIPCHandles\n");
mem.write32(messagePointer + 4, Result::Success); // Result code