mirror of
https://github.com/yuzu-emu/yuzu.git
synced 2024-09-06 16:19:20 +02:00
Merge pull request #6992 from german77/brains
hid/am: Stub SetTouchScreenConfiguration and implement GetNotificationStorageChannelEvent
This commit is contained in:
commit
3428232bca
@ -1270,7 +1270,8 @@ void ILibraryAppletCreator::CreateHandleStorage(Kernel::HLERequestContext& ctx)
|
|||||||
IApplicationFunctions::IApplicationFunctions(Core::System& system_)
|
IApplicationFunctions::IApplicationFunctions(Core::System& system_)
|
||||||
: ServiceFramework{system_, "IApplicationFunctions"}, gpu_error_detected_event{system.Kernel()},
|
: ServiceFramework{system_, "IApplicationFunctions"}, gpu_error_detected_event{system.Kernel()},
|
||||||
friend_invitation_storage_channel_event{system.Kernel()},
|
friend_invitation_storage_channel_event{system.Kernel()},
|
||||||
health_warning_disappeared_system_event{system.Kernel()} {
|
notification_storage_channel_event{system.Kernel()}, health_warning_disappeared_system_event{
|
||||||
|
system.Kernel()} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{1, &IApplicationFunctions::PopLaunchParameter, "PopLaunchParameter"},
|
{1, &IApplicationFunctions::PopLaunchParameter, "PopLaunchParameter"},
|
||||||
@ -1322,7 +1323,7 @@ IApplicationFunctions::IApplicationFunctions(Core::System& system_)
|
|||||||
{131, nullptr, "SetDelayTimeToAbortOnGpuError"},
|
{131, nullptr, "SetDelayTimeToAbortOnGpuError"},
|
||||||
{140, &IApplicationFunctions::GetFriendInvitationStorageChannelEvent, "GetFriendInvitationStorageChannelEvent"},
|
{140, &IApplicationFunctions::GetFriendInvitationStorageChannelEvent, "GetFriendInvitationStorageChannelEvent"},
|
||||||
{141, &IApplicationFunctions::TryPopFromFriendInvitationStorageChannel, "TryPopFromFriendInvitationStorageChannel"},
|
{141, &IApplicationFunctions::TryPopFromFriendInvitationStorageChannel, "TryPopFromFriendInvitationStorageChannel"},
|
||||||
{150, nullptr, "GetNotificationStorageChannelEvent"},
|
{150, &IApplicationFunctions::GetNotificationStorageChannelEvent, "GetNotificationStorageChannelEvent"},
|
||||||
{151, nullptr, "TryPopFromNotificationStorageChannel"},
|
{151, nullptr, "TryPopFromNotificationStorageChannel"},
|
||||||
{160, &IApplicationFunctions::GetHealthWarningDisappearedSystemEvent, "GetHealthWarningDisappearedSystemEvent"},
|
{160, &IApplicationFunctions::GetHealthWarningDisappearedSystemEvent, "GetHealthWarningDisappearedSystemEvent"},
|
||||||
{170, nullptr, "SetHdcpAuthenticationActivated"},
|
{170, nullptr, "SetHdcpAuthenticationActivated"},
|
||||||
@ -1340,11 +1341,14 @@ IApplicationFunctions::IApplicationFunctions(Core::System& system_)
|
|||||||
|
|
||||||
Kernel::KAutoObject::Create(std::addressof(gpu_error_detected_event));
|
Kernel::KAutoObject::Create(std::addressof(gpu_error_detected_event));
|
||||||
Kernel::KAutoObject::Create(std::addressof(friend_invitation_storage_channel_event));
|
Kernel::KAutoObject::Create(std::addressof(friend_invitation_storage_channel_event));
|
||||||
|
Kernel::KAutoObject::Create(std::addressof(notification_storage_channel_event));
|
||||||
Kernel::KAutoObject::Create(std::addressof(health_warning_disappeared_system_event));
|
Kernel::KAutoObject::Create(std::addressof(health_warning_disappeared_system_event));
|
||||||
|
|
||||||
gpu_error_detected_event.Initialize("IApplicationFunctions:GpuErrorDetectedSystemEvent");
|
gpu_error_detected_event.Initialize("IApplicationFunctions:GpuErrorDetectedSystemEvent");
|
||||||
friend_invitation_storage_channel_event.Initialize(
|
friend_invitation_storage_channel_event.Initialize(
|
||||||
"IApplicationFunctions:FriendInvitationStorageChannelEvent");
|
"IApplicationFunctions:FriendInvitationStorageChannelEvent");
|
||||||
|
notification_storage_channel_event.Initialize(
|
||||||
|
"IApplicationFunctions:NotificationStorageChannelEvent");
|
||||||
health_warning_disappeared_system_event.Initialize(
|
health_warning_disappeared_system_event.Initialize(
|
||||||
"IApplicationFunctions:HealthWarningDisappearedSystemEvent");
|
"IApplicationFunctions:HealthWarningDisappearedSystemEvent");
|
||||||
}
|
}
|
||||||
@ -1762,6 +1766,14 @@ void IApplicationFunctions::TryPopFromFriendInvitationStorageChannel(
|
|||||||
rb.Push(ERR_NO_DATA_IN_CHANNEL);
|
rb.Push(ERR_NO_DATA_IN_CHANNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void IApplicationFunctions::GetNotificationStorageChannelEvent(Kernel::HLERequestContext& ctx) {
|
||||||
|
LOG_DEBUG(Service_AM, "called");
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2, 1};
|
||||||
|
rb.Push(ResultSuccess);
|
||||||
|
rb.PushCopyObjects(notification_storage_channel_event.GetReadableEvent());
|
||||||
|
}
|
||||||
|
|
||||||
void IApplicationFunctions::GetHealthWarningDisappearedSystemEvent(Kernel::HLERequestContext& ctx) {
|
void IApplicationFunctions::GetHealthWarningDisappearedSystemEvent(Kernel::HLERequestContext& ctx) {
|
||||||
LOG_DEBUG(Service_AM, "called");
|
LOG_DEBUG(Service_AM, "called");
|
||||||
|
|
||||||
|
@ -295,6 +295,7 @@ private:
|
|||||||
void GetGpuErrorDetectedSystemEvent(Kernel::HLERequestContext& ctx);
|
void GetGpuErrorDetectedSystemEvent(Kernel::HLERequestContext& ctx);
|
||||||
void GetFriendInvitationStorageChannelEvent(Kernel::HLERequestContext& ctx);
|
void GetFriendInvitationStorageChannelEvent(Kernel::HLERequestContext& ctx);
|
||||||
void TryPopFromFriendInvitationStorageChannel(Kernel::HLERequestContext& ctx);
|
void TryPopFromFriendInvitationStorageChannel(Kernel::HLERequestContext& ctx);
|
||||||
|
void GetNotificationStorageChannelEvent(Kernel::HLERequestContext& ctx);
|
||||||
void GetHealthWarningDisappearedSystemEvent(Kernel::HLERequestContext& ctx);
|
void GetHealthWarningDisappearedSystemEvent(Kernel::HLERequestContext& ctx);
|
||||||
|
|
||||||
bool launch_popped_application_specific = false;
|
bool launch_popped_application_specific = false;
|
||||||
@ -302,6 +303,7 @@ private:
|
|||||||
s32 previous_program_index{-1};
|
s32 previous_program_index{-1};
|
||||||
Kernel::KEvent gpu_error_detected_event;
|
Kernel::KEvent gpu_error_detected_event;
|
||||||
Kernel::KEvent friend_invitation_storage_channel_event;
|
Kernel::KEvent friend_invitation_storage_channel_event;
|
||||||
|
Kernel::KEvent notification_storage_channel_event;
|
||||||
Kernel::KEvent health_warning_disappeared_system_event;
|
Kernel::KEvent health_warning_disappeared_system_event;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -15,6 +15,20 @@
|
|||||||
namespace Service::HID {
|
namespace Service::HID {
|
||||||
class Controller_Touchscreen final : public ControllerBase {
|
class Controller_Touchscreen final : public ControllerBase {
|
||||||
public:
|
public:
|
||||||
|
enum class TouchScreenModeForNx : u8 {
|
||||||
|
UseSystemSetting,
|
||||||
|
Finger,
|
||||||
|
Heat2,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TouchScreenConfigurationForNx {
|
||||||
|
TouchScreenModeForNx mode;
|
||||||
|
INSERT_PADDING_BYTES_NOINIT(0x7);
|
||||||
|
INSERT_PADDING_BYTES_NOINIT(0xF); // Reserved
|
||||||
|
};
|
||||||
|
static_assert(sizeof(TouchScreenConfigurationForNx) == 0x17,
|
||||||
|
"TouchScreenConfigurationForNx is an invalid size");
|
||||||
|
|
||||||
explicit Controller_Touchscreen(Core::System& system_);
|
explicit Controller_Touchscreen(Core::System& system_);
|
||||||
~Controller_Touchscreen() override;
|
~Controller_Touchscreen() override;
|
||||||
|
|
||||||
|
@ -331,7 +331,7 @@ Hid::Hid(Core::System& system_)
|
|||||||
{529, nullptr, "SetDisallowedPalmaConnection"},
|
{529, nullptr, "SetDisallowedPalmaConnection"},
|
||||||
{1000, &Hid::SetNpadCommunicationMode, "SetNpadCommunicationMode"},
|
{1000, &Hid::SetNpadCommunicationMode, "SetNpadCommunicationMode"},
|
||||||
{1001, &Hid::GetNpadCommunicationMode, "GetNpadCommunicationMode"},
|
{1001, &Hid::GetNpadCommunicationMode, "GetNpadCommunicationMode"},
|
||||||
{1002, nullptr, "SetTouchScreenConfiguration"},
|
{1002, &Hid::SetTouchScreenConfiguration, "SetTouchScreenConfiguration"},
|
||||||
{1003, nullptr, "IsFirmwareUpdateNeededForNotification"},
|
{1003, nullptr, "IsFirmwareUpdateNeededForNotification"},
|
||||||
{2000, nullptr, "ActivateDigitizer"},
|
{2000, nullptr, "ActivateDigitizer"},
|
||||||
};
|
};
|
||||||
@ -1631,6 +1631,18 @@ void Hid::GetNpadCommunicationMode(Kernel::HLERequestContext& ctx) {
|
|||||||
.GetNpadCommunicationMode());
|
.GetNpadCommunicationMode());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Hid::SetTouchScreenConfiguration(Kernel::HLERequestContext& ctx) {
|
||||||
|
IPC::RequestParser rp{ctx};
|
||||||
|
const auto touchscreen_mode{rp.PopRaw<Controller_Touchscreen::TouchScreenConfigurationForNx>()};
|
||||||
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
LOG_WARNING(Service_HID, "(STUBBED) called, touchscreen_mode={}, applet_resource_user_id={}",
|
||||||
|
touchscreen_mode.mode, applet_resource_user_id);
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
|
rb.Push(ResultSuccess);
|
||||||
|
}
|
||||||
|
|
||||||
class HidDbg final : public ServiceFramework<HidDbg> {
|
class HidDbg final : public ServiceFramework<HidDbg> {
|
||||||
public:
|
public:
|
||||||
explicit HidDbg(Core::System& system_) : ServiceFramework{system_, "hid:dbg"} {
|
explicit HidDbg(Core::System& system_) : ServiceFramework{system_, "hid:dbg"} {
|
||||||
|
@ -159,6 +159,7 @@ private:
|
|||||||
void SetPalmaBoostMode(Kernel::HLERequestContext& ctx);
|
void SetPalmaBoostMode(Kernel::HLERequestContext& ctx);
|
||||||
void SetNpadCommunicationMode(Kernel::HLERequestContext& ctx);
|
void SetNpadCommunicationMode(Kernel::HLERequestContext& ctx);
|
||||||
void GetNpadCommunicationMode(Kernel::HLERequestContext& ctx);
|
void GetNpadCommunicationMode(Kernel::HLERequestContext& ctx);
|
||||||
|
void SetTouchScreenConfiguration(Kernel::HLERequestContext& ctx);
|
||||||
|
|
||||||
enum class VibrationDeviceType : u32 {
|
enum class VibrationDeviceType : u32 {
|
||||||
Unknown = 0,
|
Unknown = 0,
|
||||||
|
Loading…
Reference in New Issue
Block a user