end of progress day 2
This commit is contained in:
parent
e6f30ed8ee
commit
c45078844c
|
@ -8,6 +8,7 @@
|
|||
#include "core/hle/service/hid/hid_result.h"
|
||||
#include "core/hle/service/hid/hid_server.h"
|
||||
#include "core/hle/service/hid/hid_types.h"
|
||||
#include "core/hle/service/hid/hid_util.h"
|
||||
#include "core/hle/service/hid/resource_manager.h"
|
||||
#include "core/hle/service/hid/resource_manager/debug_pad.h"
|
||||
#include "core/hle/service/hid/resource_manager/gesture.h"
|
||||
|
@ -1457,14 +1458,13 @@ void IHidServer::SetNpadJoyAssignmentModeSingle(HLERequestContext& ctx) {
|
|||
|
||||
const auto parameters{rp.PopRaw<Parameters>()};
|
||||
|
||||
|
||||
LOG_INFO(Service_HID, "called, npad_id={}, applet_resource_user_id={}, npad_joy_device_type={}",
|
||||
parameters.npad_id, parameters.applet_resource_user_id,
|
||||
parameters.npad_joy_device_type);
|
||||
|
||||
const auto npad = GetResourceManager()->GetNpad();
|
||||
npad->SetNpadJoyAssignmentModeSingle(
|
||||
parameters.applet_resource_user_id, parameters.npad_id, parameters.npad_joy_device_type);
|
||||
npad->SetNpadJoyAssignmentModeSingle(parameters.applet_resource_user_id, parameters.npad_id,
|
||||
parameters.npad_joy_device_type);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(ResultSuccess);
|
||||
|
@ -1485,8 +1485,7 @@ void IHidServer::SetNpadJoyAssignmentModeDual(HLERequestContext& ctx) {
|
|||
parameters.applet_resource_user_id);
|
||||
|
||||
const auto npad = GetResourceManager()->GetNpad();
|
||||
npad->SetNpadJoyAssignmentModeDual(parameters.applet_resource_user_id,
|
||||
parameters.npad_id);
|
||||
npad->SetNpadJoyAssignmentModeDual(parameters.applet_resource_user_id, parameters.npad_id);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(ResultSuccess);
|
||||
|
@ -1509,17 +1508,234 @@ void IHidServer::MergeSingleJoyAsDualJoy(HLERequestContext& ctx) {
|
|||
rb.Push(result);
|
||||
}
|
||||
|
||||
void IHidServer::StartLrAssignmentMode(HLERequestContext& ctx) {}
|
||||
void IHidServer::StopLrAssignmentMode(HLERequestContext& ctx) {}
|
||||
void IHidServer::SetNpadHandheldActivationMode(HLERequestContext& ctx) {}
|
||||
void IHidServer::GetNpadHandheldActivationMode(HLERequestContext& ctx) {}
|
||||
void IHidServer::SwapNpadAssignment(HLERequestContext& ctx) {}
|
||||
void IHidServer::IsUnintendedHomeButtonInputProtectionEnabled(HLERequestContext& ctx) {}
|
||||
void IHidServer::EnableUnintendedHomeButtonInputProtection(HLERequestContext& ctx) {}
|
||||
void IHidServer::SetNpadJoyAssignmentModeSingleWithDestination(HLERequestContext& ctx) {}
|
||||
void IHidServer::SetNpadAnalogStickUseCenterClamp(HLERequestContext& ctx) {}
|
||||
void IHidServer::SetNpadCaptureButtonAssignment(HLERequestContext& ctx) {}
|
||||
void IHidServer::ClearNpadCaptureButtonAssignment(HLERequestContext& ctx) {}
|
||||
void IHidServer::StartLrAssignmentMode(HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp{ctx};
|
||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||
|
||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
|
||||
|
||||
GetResourceManager()->GetNpad()->StartLrAssignmentMode(applet_resource_user_id);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(ResultSuccess);
|
||||
}
|
||||
|
||||
void IHidServer::StopLrAssignmentMode(HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp{ctx};
|
||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||
|
||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
|
||||
|
||||
GetResourceManager()->GetNpad()->StopLrAssignmentMode(applet_resource_user_id);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(ResultSuccess);
|
||||
}
|
||||
|
||||
void IHidServer::SetNpadHandheldActivationMode(HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp{ctx};
|
||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||
const auto activation_mode{rp.PopEnum<NpadHandheldActivationMode>()};
|
||||
|
||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}, activation_mode={}",
|
||||
applet_resource_user_id, activation_mode);
|
||||
|
||||
if (activation_mode >= NpadHandheldActivationMode::MaxActivationMode) {
|
||||
// Console should crash here
|
||||
ASSERT_MSG("Activation mode should be always None, Single or Dual");
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(ResultSuccess);
|
||||
return;
|
||||
}
|
||||
|
||||
const auto npad = GetResourceManager()->GetNpad();
|
||||
const auto result =
|
||||
npad->SetNpadHandheldActivationMode(applet_resource_user_id, activation_mode);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(ResultSuccess);
|
||||
}
|
||||
|
||||
void IHidServer::GetNpadHandheldActivationMode(HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp{ctx};
|
||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||
|
||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
|
||||
|
||||
NpadHandheldActivationMode activation_mode{};
|
||||
const auto npad = GetResourceManager()->GetNpad();
|
||||
const auto result =
|
||||
npad->GetNpadHandheldActivationMode(applet_resource_user_id, activation_mode);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 4};
|
||||
rb.Push(result);
|
||||
rb.PushEnum(activation_mode);
|
||||
}
|
||||
|
||||
void IHidServer::SwapNpadAssignment(HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp{ctx};
|
||||
const auto npad_id_1{rp.PopEnum<NpadIdType>()};
|
||||
const auto npad_id_2{rp.PopEnum<NpadIdType>()};
|
||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||
|
||||
LOG_DEBUG(Service_HID, "called, npad_id_1={}, npad_id_2={}, applet_resource_user_id={}",
|
||||
npad_id_1, npad_id_2, applet_resource_user_id);
|
||||
|
||||
const auto npad = GetResourceManager()->GetNpad();
|
||||
const auto result = npad->SwapNpadAssignment(applet_resource_user_id, npad_id_1, npad_id_2);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(result);
|
||||
}
|
||||
|
||||
void IHidServer::IsUnintendedHomeButtonInputProtectionEnabled(HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp{ctx};
|
||||
struct Parameters {
|
||||
NpadIdType npad_id;
|
||||
INSERT_PADDING_WORDS_NOINIT(1);
|
||||
u64 applet_resource_user_id;
|
||||
};
|
||||
static_assert(sizeof(Parameters) == 0x10, "Parameters has incorrect size.");
|
||||
|
||||
const auto parameters{rp.PopRaw<Parameters>()};
|
||||
|
||||
LOG_WARNING(Service_HID, "(STUBBED) called, npad_id={}, applet_resource_user_id={}",
|
||||
parameters.npad_id, parameters.applet_resource_user_id);
|
||||
|
||||
if (!IsNpadIdValid(parameters.npad_id)) {
|
||||
IPC::ResponseBuilder rb{ctx, 3};
|
||||
rb.Push(ResultInvalidNpadId);
|
||||
return;
|
||||
}
|
||||
|
||||
bool is_enabled{};
|
||||
const auto npad = GetResourceManager()->GetNpad();
|
||||
const auto result = npad->IsUnintendedHomeButtonInputProtectionEnabled(
|
||||
is_enabled, parameters.applet_resource_user_id, parameters.npad_id);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 3};
|
||||
rb.Push(result);
|
||||
rb.Push<u8>(is_enabled);
|
||||
}
|
||||
|
||||
void IHidServer::EnableUnintendedHomeButtonInputProtection(HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp{ctx};
|
||||
struct Parameters {
|
||||
bool is_enabled;
|
||||
INSERT_PADDING_BYTES_NOINIT(3);
|
||||
NpadIdType npad_id;
|
||||
u64 applet_resource_user_id;
|
||||
};
|
||||
static_assert(sizeof(Parameters) == 0x10, "Parameters has incorrect size.");
|
||||
|
||||
const auto parameters{rp.PopRaw<Parameters>()};
|
||||
|
||||
LOG_WARNING(Service_HID,
|
||||
"(STUBBED) called, is_enabled={}, npad_id={}, applet_resource_user_id={}",
|
||||
parameters.is_enabled, parameters.npad_id, parameters.applet_resource_user_id);
|
||||
|
||||
if (!IsNpadIdValid(parameters.npad_id)) {
|
||||
IPC::ResponseBuilder rb{ctx, 3};
|
||||
rb.Push(ResultInvalidNpadId);
|
||||
return;
|
||||
}
|
||||
|
||||
const auto npad = GetResourceManager()->GetNpad();
|
||||
const auto result = npad->EnableUnintendedHomeButtonInputProtection(
|
||||
parameters.applet_resource_user_id, parameters.npad_id, parameters.is_enabled);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(result);
|
||||
}
|
||||
|
||||
void IHidServer::SetNpadJoyAssignmentModeSingleWithDestination(HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp{ctx};
|
||||
struct Parameters {
|
||||
NpadIdType npad_id;
|
||||
INSERT_PADDING_WORDS_NOINIT(1);
|
||||
u64 applet_resource_user_id;
|
||||
NpadJoyDeviceType npad_joy_device_type;
|
||||
};
|
||||
static_assert(sizeof(Parameters) == 0x18, "Parameters has incorrect size.");
|
||||
|
||||
const auto parameters{rp.PopRaw<Parameters>()};
|
||||
|
||||
LOG_INFO(Service_HID, "called, npad_id={}, applet_resource_user_id={}, npad_joy_device_type={}",
|
||||
parameters.npad_id, parameters.applet_resource_user_id,
|
||||
parameters.npad_joy_device_type);
|
||||
|
||||
NpadIdType new_npad_id{};
|
||||
const auto npad = GetResourceManager()->GetNpad();
|
||||
const auto is_reassigned = npad->SetNpadJoyAssignmentModeSingleWithDestination(
|
||||
new_npad_id, parameters.applet_resource_user_id, parameters.npad_id,
|
||||
parameters.npad_joy_device_type);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 4};
|
||||
rb.Push(ResultSuccess);
|
||||
rb.Push(is_reassigned);
|
||||
rb.PushEnum(new_npad_id);
|
||||
}
|
||||
|
||||
void IHidServer::SetNpadAnalogStickUseCenterClamp(HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp{ctx};
|
||||
struct Parameters {
|
||||
bool analog_stick_use_center_clamp;
|
||||
INSERT_PADDING_BYTES_NOINIT(7);
|
||||
u64 applet_resource_user_id;
|
||||
};
|
||||
static_assert(sizeof(Parameters) == 0x10, "Parameters has incorrect size.");
|
||||
|
||||
const auto parameters{rp.PopRaw<Parameters>()};
|
||||
|
||||
LOG_WARNING(Service_HID,
|
||||
"(STUBBED) called, analog_stick_use_center_clamp={}, applet_resource_user_id={}",
|
||||
parameters.analog_stick_use_center_clamp, parameters.applet_resource_user_id);
|
||||
|
||||
GetResourceManager()->GetNpad()->SetNpadAnalogStickUseCenterClamp(
|
||||
parameters.applet_resource_user_id, parameters.analog_stick_use_center_clamp);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(ResultSuccess);
|
||||
}
|
||||
|
||||
void IHidServer::SetNpadCaptureButtonAssignment(HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp{ctx};
|
||||
struct Parameters {
|
||||
NpadStyleSet npad_styleset;
|
||||
INSERT_PADDING_WORDS_NOINIT(1);
|
||||
u64 applet_resource_user_id;
|
||||
NpadButton button;
|
||||
};
|
||||
static_assert(sizeof(Parameters) == 0x18, "Parameters has incorrect size.");
|
||||
|
||||
const auto parameters{rp.PopRaw<Parameters>()};
|
||||
|
||||
LOG_WARNING(Service_HID,
|
||||
"(STUBBED) called, npad_styleset={}, applet_resource_user_id={}, button={}",
|
||||
parameters.npad_styleset, parameters.applet_resource_user_id, parameters.button);
|
||||
|
||||
const auto npad = GetResourceManager()->GetNpad();
|
||||
const auto result = npad->SetNpadCaptureButtonAssignment(
|
||||
parameters.applet_resource_user_id, parameters.npad_styleset, parameters.button);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(result);
|
||||
}
|
||||
|
||||
void IHidServer::ClearNpadCaptureButtonAssignment(HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp{ctx};
|
||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||
|
||||
LOG_WARNING(Service_HID, "(STUBBED) called, applet_resource_user_id={}",
|
||||
applet_resource_user_id);
|
||||
|
||||
const auto npad = GetResourceManager()->GetNpad();
|
||||
const auto result = npad->ClearNpadCaptureButtonAssignment(parameters.applet_resource_user_id);
|
||||
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(result);
|
||||
}
|
||||
|
||||
void IHidServer::GetVibrationDeviceInfo(HLERequestContext& ctx) {}
|
||||
void IHidServer::SendVibrationValue(HLERequestContext& ctx) {}
|
||||
void IHidServer::GetActualVibrationValue(HLERequestContext& ctx) {}
|
||||
|
|
|
@ -309,6 +309,14 @@ enum class NpadJoyAssignmentMode : u32 {
|
|||
Single = 1,
|
||||
};
|
||||
|
||||
// This is nn::hid::NpadHandheldActivationMode
|
||||
enum class NpadHandheldActivationMode : u64 {
|
||||
Dual = 0,
|
||||
Single = 1,
|
||||
None = 2,
|
||||
MaxActivationMode = 3,
|
||||
};
|
||||
|
||||
// This is nn::hid::NpadStyleTag
|
||||
struct NpadStyleTag {
|
||||
union {
|
||||
|
|
|
@ -67,7 +67,11 @@ namespace Service::HID {
|
|||
return player_memory;
|
||||
}*/
|
||||
|
||||
ResourceManager::ResourceManager(Core::System& system_) {
|
||||
ResourceManager::ResourceManager(Core::System& system_) {}
|
||||
|
||||
ResourceManager::~ResourceManager() = default;
|
||||
|
||||
void ResourceManager::Initialize() {
|
||||
debug_pad = std::make_shared<DebugPad>();
|
||||
gesture = std::make_shared<Gesture>();
|
||||
keyboard = std::make_shared<Keyboard>();
|
||||
|
@ -78,10 +82,6 @@ ResourceManager::ResourceManager(Core::System& system_) {
|
|||
touch_screen = std::make_shared<TouchScreen>();
|
||||
}
|
||||
|
||||
ResourceManager::~ResourceManager() = default;
|
||||
|
||||
void ResourceManager::Initialize() {}
|
||||
|
||||
std::shared_ptr<DebugPad> ResourceManager::GetDebugPad() {
|
||||
return debug_pad;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue