|
|
|
@ -2368,7 +2368,7 @@ void Hid::GetNpadCommunicationMode(HLERequestContext& ctx) {
|
|
|
|
|
|
|
|
|
|
void Hid::SetTouchScreenConfiguration(HLERequestContext& ctx) {
|
|
|
|
|
IPC::RequestParser rp{ctx};
|
|
|
|
|
const auto touchscreen_mode{rp.PopRaw<Controller_Touchscreen::TouchScreenConfigurationForNx>()};
|
|
|
|
|
const auto touchscreen_mode{rp.PopRaw<Core::HID::TouchScreenConfigurationForNx>()};
|
|
|
|
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
|
|
|
|
|
|
|
|
|
LOG_WARNING(Service_HID, "(STUBBED) called, touchscreen_mode={}, applet_resource_user_id={}",
|
|
|
|
@ -2543,7 +2543,8 @@ public:
|
|
|
|
|
|
|
|
|
|
class HidSys final : public ServiceFramework<HidSys> {
|
|
|
|
|
public:
|
|
|
|
|
explicit HidSys(Core::System& system_) : ServiceFramework{system_, "hid:sys"} {
|
|
|
|
|
explicit HidSys(Core::System& system_)
|
|
|
|
|
: ServiceFramework{system_, "hid:sys"}, service_context{system_, "hid:sys"} {
|
|
|
|
|
// clang-format off
|
|
|
|
|
static const FunctionInfo functions[] = {
|
|
|
|
|
{31, nullptr, "SendKeyboardLockKeyEvent"},
|
|
|
|
@ -2568,7 +2569,7 @@ public:
|
|
|
|
|
{303, &HidSys::ApplyNpadSystemCommonPolicy, "ApplyNpadSystemCommonPolicy"},
|
|
|
|
|
{304, nullptr, "EnableAssigningSingleOnSlSrPress"},
|
|
|
|
|
{305, nullptr, "DisableAssigningSingleOnSlSrPress"},
|
|
|
|
|
{306, nullptr, "GetLastActiveNpad"},
|
|
|
|
|
{306, &HidSys::GetLastActiveNpad, "GetLastActiveNpad"},
|
|
|
|
|
{307, nullptr, "GetNpadSystemExtStyle"},
|
|
|
|
|
{308, nullptr, "ApplyNpadSystemCommonPolicyFull"},
|
|
|
|
|
{309, nullptr, "GetNpadFullKeyGripColor"},
|
|
|
|
@ -2624,7 +2625,7 @@ public:
|
|
|
|
|
{700, nullptr, "ActivateUniquePad"},
|
|
|
|
|
{702, nullptr, "AcquireUniquePadConnectionEventHandle"},
|
|
|
|
|
{703, nullptr, "GetUniquePadIds"},
|
|
|
|
|
{751, nullptr, "AcquireJoyDetachOnBluetoothOffEventHandle"},
|
|
|
|
|
{751, &HidSys::AcquireJoyDetachOnBluetoothOffEventHandle, "AcquireJoyDetachOnBluetoothOffEventHandle"},
|
|
|
|
|
{800, nullptr, "ListSixAxisSensorHandles"},
|
|
|
|
|
{801, nullptr, "IsSixAxisSensorUserCalibrationSupported"},
|
|
|
|
|
{802, nullptr, "ResetSixAxisSensorCalibrationValues"},
|
|
|
|
@ -2650,7 +2651,7 @@ public:
|
|
|
|
|
{830, nullptr, "SetNotificationLedPattern"},
|
|
|
|
|
{831, nullptr, "SetNotificationLedPatternWithTimeout"},
|
|
|
|
|
{832, nullptr, "PrepareHidsForNotificationWake"},
|
|
|
|
|
{850, nullptr, "IsUsbFullKeyControllerEnabled"},
|
|
|
|
|
{850, &HidSys::IsUsbFullKeyControllerEnabled, "IsUsbFullKeyControllerEnabled"},
|
|
|
|
|
{851, nullptr, "EnableUsbFullKeyController"},
|
|
|
|
|
{852, nullptr, "IsUsbConnected"},
|
|
|
|
|
{870, nullptr, "IsHandheldButtonPressedOnConsoleMode"},
|
|
|
|
@ -2682,7 +2683,7 @@ public:
|
|
|
|
|
{1150, nullptr, "SetTouchScreenMagnification"},
|
|
|
|
|
{1151, nullptr, "GetTouchScreenFirmwareVersion"},
|
|
|
|
|
{1152, nullptr, "SetTouchScreenDefaultConfiguration"},
|
|
|
|
|
{1153, nullptr, "GetTouchScreenDefaultConfiguration"},
|
|
|
|
|
{1153, &HidSys::GetTouchScreenDefaultConfiguration, "GetTouchScreenDefaultConfiguration"},
|
|
|
|
|
{1154, nullptr, "IsFirmwareAvailableForNotification"},
|
|
|
|
|
{1155, nullptr, "SetForceHandheldStyleVibration"},
|
|
|
|
|
{1156, nullptr, "SendConnectionTriggerWithoutTimeoutEvent"},
|
|
|
|
@ -2749,6 +2750,8 @@ public:
|
|
|
|
|
// clang-format on
|
|
|
|
|
|
|
|
|
|
RegisterHandlers(functions);
|
|
|
|
|
|
|
|
|
|
joy_detach_event = service_context.CreateEvent("HidSys::JoyDetachEvent");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
@ -2760,17 +2763,66 @@ private:
|
|
|
|
|
rb.Push(ResultSuccess);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GetLastActiveNpad(HLERequestContext& ctx) {
|
|
|
|
|
LOG_DEBUG(Service_HID, "(STUBBED) called");
|
|
|
|
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 3};
|
|
|
|
|
rb.Push(ResultSuccess);
|
|
|
|
|
rb.PushEnum(Core::HID::NpadIdType::Handheld);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GetUniquePadsFromNpad(HLERequestContext& ctx) {
|
|
|
|
|
IPC::RequestParser rp{ctx};
|
|
|
|
|
const auto npad_id_type{rp.PopEnum<Core::HID::NpadIdType>()};
|
|
|
|
|
|
|
|
|
|
const s64 total_entries = 0;
|
|
|
|
|
LOG_WARNING(Service_HID, "(STUBBED) called, npad_id_type={}", npad_id_type);
|
|
|
|
|
|
|
|
|
|
const std::vector<Core::HID::UniquePadId> unique_pads{};
|
|
|
|
|
|
|
|
|
|
ctx.WriteBuffer(unique_pads);
|
|
|
|
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 3};
|
|
|
|
|
rb.Push(ResultSuccess);
|
|
|
|
|
rb.Push(total_entries);
|
|
|
|
|
rb.Push(static_cast<u32>(unique_pads.size()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void AcquireJoyDetachOnBluetoothOffEventHandle(HLERequestContext& ctx) {
|
|
|
|
|
LOG_INFO(Service_AM, "called");
|
|
|
|
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 1};
|
|
|
|
|
rb.Push(ResultSuccess);
|
|
|
|
|
rb.PushCopyObjects(joy_detach_event->GetReadableEvent());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void IsUsbFullKeyControllerEnabled(HLERequestContext& ctx) {
|
|
|
|
|
const bool is_enabled = false;
|
|
|
|
|
|
|
|
|
|
LOG_WARNING(Service_HID, "(STUBBED) called, is_enabled={}", is_enabled);
|
|
|
|
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 3};
|
|
|
|
|
rb.Push(ResultSuccess);
|
|
|
|
|
rb.Push(is_enabled);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GetTouchScreenDefaultConfiguration(HLERequestContext& ctx) {
|
|
|
|
|
LOG_WARNING(Service_HID, "(STUBBED) called");
|
|
|
|
|
|
|
|
|
|
Core::HID::TouchScreenConfigurationForNx touchscreen_config{
|
|
|
|
|
.mode = Core::HID::TouchScreenModeForNx::Finger,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (touchscreen_config.mode != Core::HID::TouchScreenModeForNx::Heat2 &&
|
|
|
|
|
touchscreen_config.mode != Core::HID::TouchScreenModeForNx::Finger) {
|
|
|
|
|
touchscreen_config.mode = Core::HID::TouchScreenModeForNx::UseSystemSetting;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 6};
|
|
|
|
|
rb.Push(ResultSuccess);
|
|
|
|
|
rb.PushRaw(touchscreen_config);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Kernel::KEvent* joy_detach_event;
|
|
|
|
|
KernelHelpers::ServiceContext service_context;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
void LoopProcess(Core::System& system) {
|
|
|
|
|