diff options
author | bunnei <bunneidev@gmail.com> | 2014-08-08 02:27:56 +0200 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2014-08-08 02:27:56 +0200 |
commit | 552287498afa50d755168749caa95095d9d301fa (patch) | |
tree | 41d5c8778e63e5e0bb837b5f99e943532d251b01 /src | |
parent | SVC: Fixed typo with MapMemoryBlock DEBUG_LOG call. (diff) | |
download | yuzu-552287498afa50d755168749caa95095d9d301fa.tar yuzu-552287498afa50d755168749caa95095d9d301fa.tar.gz yuzu-552287498afa50d755168749caa95095d9d301fa.tar.bz2 yuzu-552287498afa50d755168749caa95095d9d301fa.tar.lz yuzu-552287498afa50d755168749caa95095d9d301fa.tar.xz yuzu-552287498afa50d755168749caa95095d9d301fa.tar.zst yuzu-552287498afa50d755168749caa95095d9d301fa.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/core/hle/service/hid.cpp | 44 |
1 files changed, 39 insertions, 5 deletions
diff --git a/src/core/hle/service/hid.cpp b/src/core/hle/service/hid.cpp index ab78f47d7..3730b117a 100644 --- a/src/core/hle/service/hid.cpp +++ b/src/core/hle/service/hid.cpp @@ -5,6 +5,8 @@ #include "common/log.h" #include "core/hle/hle.h" +#include "core/hle/kernel/event.h" +#include "core/hle/kernel/shared_memory.h" #include "core/hle/service/hid.h" //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -12,18 +14,50 @@ namespace HID_User { +Handle g_shared_mem = 0; ///< Handle to shared memory region designated to HID_User service + +/** + * HID_User::GetIPCHandles service function + * Inputs: + * None + * Outputs: + * 1 : Result of function, 0 on success, otherwise error code + * 2 : Unused + * 3 : Handle to HID_User shared memory + * 4 : Event signaled by HID_User + * 5 : Event signaled by HID_User + * 6 : Event signaled by HID_User + * 7 : Gyroscope event + * 8 : Event signaled by HID_User + */ +void GetIPCHandles(Service::Interface* self) { + u32* cmd_buff = Service::GetCommandBuffer(); + + cmd_buff[1] = 0; // No error + cmd_buff[3] = g_shared_mem; + cmd_buff[4] = Kernel::CreateEvent(RESETTYPE_ONESHOT, "HID_User:EventA"); + cmd_buff[5] = Kernel::CreateEvent(RESETTYPE_ONESHOT, "HID_User:EventB"); + cmd_buff[6] = Kernel::CreateEvent(RESETTYPE_ONESHOT, "HID_User:EventC"); + cmd_buff[7] = Kernel::CreateEvent(RESETTYPE_ONESHOT, "HID_User:EventGyroscope"); + cmd_buff[8] = Kernel::CreateEvent(RESETTYPE_ONESHOT, "HID_User:EventD"); + + DEBUG_LOG(KERNEL, "called"); +} + const Interface::FunctionInfo FunctionTable[] = { - {0x000A0000, nullptr, "GetIPCHandles"}, - {0x00110000, nullptr, "EnableAccelerometer"}, - {0x00130000, nullptr, "EnableGyroscopeLow"}, - {0x00150000, nullptr, "GetGyroscopeLowRawToDpsCoefficient"}, - {0x00160000, nullptr, "GetGyroscopeLowCalibrateParam"}, + {0x000A0000, GetIPCHandles, "GetIPCHandles"}, + {0x00110000, nullptr, "EnableAccelerometer"}, + {0x00130000, nullptr, "EnableGyroscopeLow"}, + {0x00150000, nullptr, "GetGyroscopeLowRawToDpsCoefficient"}, + {0x00160000, nullptr, "GetGyroscopeLowCalibrateParam"}, }; //////////////////////////////////////////////////////////////////////////////////////////////////// // Interface class Interface::Interface() { + g_shared_mem = Kernel::CreateSharedMemory("HID_User:SharedMem"); // Create shared memory object + Register(FunctionTable, ARRAY_SIZE(FunctionTable)); } |