diff --git a/include/services/frd.hpp b/include/services/frd.hpp index 7e56b83e..65eb7041 100644 --- a/include/services/frd.hpp +++ b/include/services/frd.hpp @@ -25,6 +25,7 @@ class FRDService { void attachToEventNotification(u32 messagePointer); void getFriendAttributeFlags(u32 messagePointer); void getFriendKeyList(u32 messagePointer); + void getFriendPresence(u32 messagePointer); void getFriendProfile(u32 messagePointer); void getMyFriendKey(u32 messagePointer); void getMyMii(u32 messagePointer); diff --git a/src/core/services/frd.cpp b/src/core/services/frd.cpp index 9ac7049b..d4a439df 100644 --- a/src/core/services/frd.cpp +++ b/src/core/services/frd.cpp @@ -18,6 +18,7 @@ namespace FRDCommands { GetMyScreenName = 0x00090000, GetMyMii = 0x000A0000, GetFriendKeyList = 0x00110080, + GetFriendPresence = 0x00120042, GetFriendProfile = 0x00150042, GetFriendAttributeFlags = 0x00170042, UpdateGameModeDescription = 0x001D0002, @@ -32,6 +33,7 @@ void FRDService::handleSyncRequest(u32 messagePointer) { case FRDCommands::AttachToEventNotification: attachToEventNotification(messagePointer); break; case FRDCommands::GetFriendAttributeFlags: getFriendAttributeFlags(messagePointer); break; case FRDCommands::GetFriendKeyList: getFriendKeyList(messagePointer); break; + case FRDCommands::GetFriendPresence: getFriendPresence(messagePointer); break; case FRDCommands::GetFriendProfile: getFriendProfile(messagePointer); break; case FRDCommands::GetMyFriendKey: getMyFriendKey(messagePointer); break; case FRDCommands::GetMyMii: getMyMii(messagePointer); break; @@ -135,6 +137,14 @@ void FRDService::getMyPresence(u32 messagePointer) { mem.write32(messagePointer + 4, Result::Success); } +void FRDService::getFriendPresence(u32 messagePointer) { + Helpers::warn("FRD::GetFriendPresence (stubbed)"); + + // TODO: Implement and document this, + mem.write32(messagePointer, IPC::responseHeader(0x12, 1, 0)); + mem.write32(messagePointer + 4, Result::Success); +} + void FRDService::getMyProfile(u32 messagePointer) { mem.write32(messagePointer, IPC::responseHeader(0x7, 3, 0)); // Not sure if the header here has the correct # of responses? mem.write32(messagePointer + 4, Result::Success);