From 66f91b434631ee8b8447faf2c75d6406f4f7a69b Mon Sep 17 00:00:00 2001 From: bunnei Date: Thu, 7 Aug 2014 20:27:11 -0400 Subject: [PATCH 1/3] SVC: Fixed typo with MapMemoryBlock DEBUG_LOG call. --- src/core/hle/svc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 328d048bd..19f717bd2 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -56,7 +56,7 @@ Result ControlMemory(u32* out_addr, u32 operation, u32 addr0, u32 addr1, u32 siz /// Maps a memory block to specified address Result MapMemoryBlock(Handle handle, u32 addr, u32 permissions, u32 other_permissions) { - DEBUG_LOG(SVC, "called memblock=0x08X, addr=0x%08X, mypermissions=0x%08X, otherpermission=%d", + DEBUG_LOG(SVC, "called memblock=0x%08X, addr=0x%08X, mypermissions=0x%08X, otherpermission=%d", handle, addr, permissions, other_permissions); Kernel::MemoryPermission permissions_type = static_cast(permissions); From 552287498afa50d755168749caa95095d9d301fa Mon Sep 17 00:00:00 2001 From: bunnei Date: Thu, 7 Aug 2014 20:27:56 -0400 Subject: [PATCH 2/3] HID: Implemented HID_User::GetIPCHandles service function. --- src/core/hle/service/hid.cpp | 44 ++++++++++++++++++++++++++++++++---- 1 file 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)); } From 091f6cf55b43cca5913079d0ab7226ff72515ec7 Mon Sep 17 00:00:00 2001 From: bunnei Date: Thu, 7 Aug 2014 20:33:59 -0400 Subject: [PATCH 3/3] HID: Added new function entries from 3dbrew to FunctionTable. HID: Fix typo with DisableGyroscopeLow command. --- src/core/hle/service/hid.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/core/hle/service/hid.cpp b/src/core/hle/service/hid.cpp index 3730b117a..4e470795f 100644 --- a/src/core/hle/service/hid.cpp +++ b/src/core/hle/service/hid.cpp @@ -46,10 +46,15 @@ void GetIPCHandles(Service::Interface* self) { const Interface::FunctionInfo FunctionTable[] = { {0x000A0000, GetIPCHandles, "GetIPCHandles"}, + {0x000B0000, nullptr, "StartAnalogStickCalibration"}, + {0x000E0000, nullptr, "GetAnalogStickCalibrateParam"}, {0x00110000, nullptr, "EnableAccelerometer"}, + {0x00120000, nullptr, "DisableAccelerometer"}, {0x00130000, nullptr, "EnableGyroscopeLow"}, + {0x00140000, nullptr, "DisableGyroscopeLow"}, {0x00150000, nullptr, "GetGyroscopeLowRawToDpsCoefficient"}, {0x00160000, nullptr, "GetGyroscopeLowCalibrateParam"}, + {0x00170000, nullptr, "GetSoundVolume"}, }; ////////////////////////////////////////////////////////////////////////////////////////////////////