diff options
| -rw-r--r-- | src/core/hle/service/am/am.cpp | 16 | ||||
| -rw-r--r-- | src/core/hle/service/am/am.h | 2 | ||||
| -rw-r--r-- | src/core/hle/service/hid/controllers/touchscreen.h | 14 | ||||
| -rw-r--r-- | src/core/hle/service/hid/hid.cpp | 14 | ||||
| -rw-r--r-- | src/core/hle/service/hid/hid.h | 1 |
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) | |||
| 1270 | IApplicationFunctions::IApplicationFunctions(Core::System& system_) | 1270 | IApplicationFunctions::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 | ||
| 1769 | void 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 | |||
| 1765 | void IApplicationFunctions::GetHealthWarningDisappearedSystemEvent(Kernel::HLERequestContext& ctx) { | 1777 | void 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 @@ | |||
| 15 | namespace Service::HID { | 15 | namespace Service::HID { |
| 16 | class Controller_Touchscreen final : public ControllerBase { | 16 | class Controller_Touchscreen final : public ControllerBase { |
| 17 | public: | 17 | public: |
| 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 | ||
| 1634 | void 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 | |||
| 1634 | class HidDbg final : public ServiceFramework<HidDbg> { | 1646 | class HidDbg final : public ServiceFramework<HidDbg> { |
| 1635 | public: | 1647 | public: |
| 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, |