summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/hle/service/am/am.cpp16
-rw-r--r--src/core/hle/service/am/am.h2
-rw-r--r--src/core/hle/service/hid/controllers/touchscreen.h14
-rw-r--r--src/core/hle/service/hid/hid.cpp14
-rw-r--r--src/core/hle/service/hid/hid.h1
5 files changed, 44 insertions, 3 deletions
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index a538f82e3..c3ac73131 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -1270,7 +1270,8 @@ void ILibraryAppletCreator::CreateHandleStorage(Kernel::HLERequestContext& ctx)
1270IApplicationFunctions::IApplicationFunctions(Core::System& system_) 1270IApplicationFunctions::IApplicationFunctions(Core::System& system_)
1271 : ServiceFramework{system_, "IApplicationFunctions"}, gpu_error_detected_event{system.Kernel()}, 1271 : ServiceFramework{system_, "IApplicationFunctions"}, gpu_error_detected_event{system.Kernel()},
1272 friend_invitation_storage_channel_event{system.Kernel()}, 1272 friend_invitation_storage_channel_event{system.Kernel()},
1273 health_warning_disappeared_system_event{system.Kernel()} { 1273 notification_storage_channel_event{system.Kernel()}, health_warning_disappeared_system_event{
1274 system.Kernel()} {
1274 // clang-format off 1275 // clang-format off
1275 static const FunctionInfo functions[] = { 1276 static const FunctionInfo functions[] = {
1276 {1, &IApplicationFunctions::PopLaunchParameter, "PopLaunchParameter"}, 1277 {1, &IApplicationFunctions::PopLaunchParameter, "PopLaunchParameter"},
@@ -1322,7 +1323,7 @@ IApplicationFunctions::IApplicationFunctions(Core::System& system_)
1322 {131, nullptr, "SetDelayTimeToAbortOnGpuError"}, 1323 {131, nullptr, "SetDelayTimeToAbortOnGpuError"},
1323 {140, &IApplicationFunctions::GetFriendInvitationStorageChannelEvent, "GetFriendInvitationStorageChannelEvent"}, 1324 {140, &IApplicationFunctions::GetFriendInvitationStorageChannelEvent, "GetFriendInvitationStorageChannelEvent"},
1324 {141, &IApplicationFunctions::TryPopFromFriendInvitationStorageChannel, "TryPopFromFriendInvitationStorageChannel"}, 1325 {141, &IApplicationFunctions::TryPopFromFriendInvitationStorageChannel, "TryPopFromFriendInvitationStorageChannel"},
1325 {150, nullptr, "GetNotificationStorageChannelEvent"}, 1326 {150, &IApplicationFunctions::GetNotificationStorageChannelEvent, "GetNotificationStorageChannelEvent"},
1326 {151, nullptr, "TryPopFromNotificationStorageChannel"}, 1327 {151, nullptr, "TryPopFromNotificationStorageChannel"},
1327 {160, &IApplicationFunctions::GetHealthWarningDisappearedSystemEvent, "GetHealthWarningDisappearedSystemEvent"}, 1328 {160, &IApplicationFunctions::GetHealthWarningDisappearedSystemEvent, "GetHealthWarningDisappearedSystemEvent"},
1328 {170, nullptr, "SetHdcpAuthenticationActivated"}, 1329 {170, nullptr, "SetHdcpAuthenticationActivated"},
@@ -1340,11 +1341,14 @@ IApplicationFunctions::IApplicationFunctions(Core::System& system_)
1340 1341
1341 Kernel::KAutoObject::Create(std::addressof(gpu_error_detected_event)); 1342 Kernel::KAutoObject::Create(std::addressof(gpu_error_detected_event));
1342 Kernel::KAutoObject::Create(std::addressof(friend_invitation_storage_channel_event)); 1343 Kernel::KAutoObject::Create(std::addressof(friend_invitation_storage_channel_event));
1344 Kernel::KAutoObject::Create(std::addressof(notification_storage_channel_event));
1343 Kernel::KAutoObject::Create(std::addressof(health_warning_disappeared_system_event)); 1345 Kernel::KAutoObject::Create(std::addressof(health_warning_disappeared_system_event));
1344 1346
1345 gpu_error_detected_event.Initialize("IApplicationFunctions:GpuErrorDetectedSystemEvent"); 1347 gpu_error_detected_event.Initialize("IApplicationFunctions:GpuErrorDetectedSystemEvent");
1346 friend_invitation_storage_channel_event.Initialize( 1348 friend_invitation_storage_channel_event.Initialize(
1347 "IApplicationFunctions:FriendInvitationStorageChannelEvent"); 1349 "IApplicationFunctions:FriendInvitationStorageChannelEvent");
1350 notification_storage_channel_event.Initialize(
1351 "IApplicationFunctions:NotificationStorageChannelEvent");
1348 health_warning_disappeared_system_event.Initialize( 1352 health_warning_disappeared_system_event.Initialize(
1349 "IApplicationFunctions:HealthWarningDisappearedSystemEvent"); 1353 "IApplicationFunctions:HealthWarningDisappearedSystemEvent");
1350} 1354}
@@ -1762,6 +1766,14 @@ void IApplicationFunctions::TryPopFromFriendInvitationStorageChannel(
1762 rb.Push(ERR_NO_DATA_IN_CHANNEL); 1766 rb.Push(ERR_NO_DATA_IN_CHANNEL);
1763} 1767}
1764 1768
1769void IApplicationFunctions::GetNotificationStorageChannelEvent(Kernel::HLERequestContext& ctx) {
1770 LOG_DEBUG(Service_AM, "called");
1771
1772 IPC::ResponseBuilder rb{ctx, 2, 1};
1773 rb.Push(ResultSuccess);
1774 rb.PushCopyObjects(notification_storage_channel_event.GetReadableEvent());
1775}
1776
1765void IApplicationFunctions::GetHealthWarningDisappearedSystemEvent(Kernel::HLERequestContext& ctx) { 1777void IApplicationFunctions::GetHealthWarningDisappearedSystemEvent(Kernel::HLERequestContext& ctx) {
1766 LOG_DEBUG(Service_AM, "called"); 1778 LOG_DEBUG(Service_AM, "called");
1767 1779
diff --git a/src/core/hle/service/am/am.h b/src/core/hle/service/am/am.h
index 184030a8e..c13aa5787 100644
--- a/src/core/hle/service/am/am.h
+++ b/src/core/hle/service/am/am.h
@@ -295,6 +295,7 @@ private:
295 void GetGpuErrorDetectedSystemEvent(Kernel::HLERequestContext& ctx); 295 void GetGpuErrorDetectedSystemEvent(Kernel::HLERequestContext& ctx);
296 void GetFriendInvitationStorageChannelEvent(Kernel::HLERequestContext& ctx); 296 void GetFriendInvitationStorageChannelEvent(Kernel::HLERequestContext& ctx);
297 void TryPopFromFriendInvitationStorageChannel(Kernel::HLERequestContext& ctx); 297 void TryPopFromFriendInvitationStorageChannel(Kernel::HLERequestContext& ctx);
298 void GetNotificationStorageChannelEvent(Kernel::HLERequestContext& ctx);
298 void GetHealthWarningDisappearedSystemEvent(Kernel::HLERequestContext& ctx); 299 void GetHealthWarningDisappearedSystemEvent(Kernel::HLERequestContext& ctx);
299 300
300 bool launch_popped_application_specific = false; 301 bool launch_popped_application_specific = false;
@@ -302,6 +303,7 @@ private:
302 s32 previous_program_index{-1}; 303 s32 previous_program_index{-1};
303 Kernel::KEvent gpu_error_detected_event; 304 Kernel::KEvent gpu_error_detected_event;
304 Kernel::KEvent friend_invitation_storage_channel_event; 305 Kernel::KEvent friend_invitation_storage_channel_event;
306 Kernel::KEvent notification_storage_channel_event;
305 Kernel::KEvent health_warning_disappeared_system_event; 307 Kernel::KEvent health_warning_disappeared_system_event;
306}; 308};
307 309
diff --git a/src/core/hle/service/hid/controllers/touchscreen.h b/src/core/hle/service/hid/controllers/touchscreen.h
index ef2becefd..8e9b40c0a 100644
--- a/src/core/hle/service/hid/controllers/touchscreen.h
+++ b/src/core/hle/service/hid/controllers/touchscreen.h
@@ -15,6 +15,20 @@
15namespace Service::HID { 15namespace Service::HID {
16class Controller_Touchscreen final : public ControllerBase { 16class Controller_Touchscreen final : public ControllerBase {
17public: 17public:
18 enum class TouchScreenModeForNx : u8 {
19 UseSystemSetting,
20 Finger,
21 Heat2,
22 };
23
24 struct TouchScreenConfigurationForNx {
25 TouchScreenModeForNx mode;
26 INSERT_PADDING_BYTES_NOINIT(0x7);
27 INSERT_PADDING_BYTES_NOINIT(0xF); // Reserved
28 };
29 static_assert(sizeof(TouchScreenConfigurationForNx) == 0x17,
30 "TouchScreenConfigurationForNx is an invalid size");
31
18 explicit Controller_Touchscreen(Core::System& system_); 32 explicit Controller_Touchscreen(Core::System& system_);
19 ~Controller_Touchscreen() override; 33 ~Controller_Touchscreen() override;
20 34
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp
index b8b80570d..a1707a72a 100644
--- a/src/core/hle/service/hid/hid.cpp
+++ b/src/core/hle/service/hid/hid.cpp
@@ -331,7 +331,7 @@ Hid::Hid(Core::System& system_)
331 {529, nullptr, "SetDisallowedPalmaConnection"}, 331 {529, nullptr, "SetDisallowedPalmaConnection"},
332 {1000, &Hid::SetNpadCommunicationMode, "SetNpadCommunicationMode"}, 332 {1000, &Hid::SetNpadCommunicationMode, "SetNpadCommunicationMode"},
333 {1001, &Hid::GetNpadCommunicationMode, "GetNpadCommunicationMode"}, 333 {1001, &Hid::GetNpadCommunicationMode, "GetNpadCommunicationMode"},
334 {1002, nullptr, "SetTouchScreenConfiguration"}, 334 {1002, &Hid::SetTouchScreenConfiguration, "SetTouchScreenConfiguration"},
335 {1003, nullptr, "IsFirmwareUpdateNeededForNotification"}, 335 {1003, nullptr, "IsFirmwareUpdateNeededForNotification"},
336 {2000, nullptr, "ActivateDigitizer"}, 336 {2000, nullptr, "ActivateDigitizer"},
337 }; 337 };
@@ -1631,6 +1631,18 @@ void Hid::GetNpadCommunicationMode(Kernel::HLERequestContext& ctx) {
1631 .GetNpadCommunicationMode()); 1631 .GetNpadCommunicationMode());
1632} 1632}
1633 1633
1634void Hid::SetTouchScreenConfiguration(Kernel::HLERequestContext& ctx) {
1635 IPC::RequestParser rp{ctx};
1636 const auto touchscreen_mode{rp.PopRaw<Controller_Touchscreen::TouchScreenConfigurationForNx>()};
1637 const auto applet_resource_user_id{rp.Pop<u64>()};
1638
1639 LOG_WARNING(Service_HID, "(STUBBED) called, touchscreen_mode={}, applet_resource_user_id={}",
1640 touchscreen_mode.mode, applet_resource_user_id);
1641
1642 IPC::ResponseBuilder rb{ctx, 2};
1643 rb.Push(ResultSuccess);
1644}
1645
1634class HidDbg final : public ServiceFramework<HidDbg> { 1646class HidDbg final : public ServiceFramework<HidDbg> {
1635public: 1647public:
1636 explicit HidDbg(Core::System& system_) : ServiceFramework{system_, "hid:dbg"} { 1648 explicit HidDbg(Core::System& system_) : ServiceFramework{system_, "hid:dbg"} {
diff --git a/src/core/hle/service/hid/hid.h b/src/core/hle/service/hid/hid.h
index 9c5c7f252..b1fe75e94 100644
--- a/src/core/hle/service/hid/hid.h
+++ b/src/core/hle/service/hid/hid.h
@@ -159,6 +159,7 @@ private:
159 void SetPalmaBoostMode(Kernel::HLERequestContext& ctx); 159 void SetPalmaBoostMode(Kernel::HLERequestContext& ctx);
160 void SetNpadCommunicationMode(Kernel::HLERequestContext& ctx); 160 void SetNpadCommunicationMode(Kernel::HLERequestContext& ctx);
161 void GetNpadCommunicationMode(Kernel::HLERequestContext& ctx); 161 void GetNpadCommunicationMode(Kernel::HLERequestContext& ctx);
162 void SetTouchScreenConfiguration(Kernel::HLERequestContext& ctx);
162 163
163 enum class VibrationDeviceType : u32 { 164 enum class VibrationDeviceType : u32 {
164 Unknown = 0, 165 Unknown = 0,