From 77fb6d8f0a3515ba691e61454bb0c8bd0d85a65e Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Sun, 24 Sep 2023 18:09:33 +0300 Subject: [PATCH] Add FRD::IsOnline --- include/services/frd.hpp | 1 + src/core/services/frd.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/include/services/frd.hpp b/include/services/frd.hpp index 46a6e272..f7a42369 100644 --- a/include/services/frd.hpp +++ b/include/services/frd.hpp @@ -32,6 +32,7 @@ class FRDService { void getMyProfile(u32 messagePointer); void getMyScreenName(u32 messsagePointer); void hasLoggedIn(u32 messagePointer); + void isOnline(u32 messagePointer); void logout(u32 messagePointer); void setClientSDKVersion(u32 messagePointer); void setNotificationMask(u32 messagePointer); diff --git a/src/core/services/frd.cpp b/src/core/services/frd.cpp index fecb3322..5871270e 100644 --- a/src/core/services/frd.cpp +++ b/src/core/services/frd.cpp @@ -8,6 +8,7 @@ namespace FRDCommands { enum : u32 { HasLoggedIn = 0x00010000, + IsOnline = 0x00020000, AttachToEventNotification = 0x00200002, SetNotificationMask = 0x00210040, SetClientSdkVersion = 0x00320042, @@ -41,6 +42,7 @@ void FRDService::handleSyncRequest(u32 messagePointer, FRDService::Type type) { case FRDCommands::GetMyProfile: getMyProfile(messagePointer); break; case FRDCommands::GetMyScreenName: getMyScreenName(messagePointer); break; case FRDCommands::HasLoggedIn: hasLoggedIn(messagePointer); break; + case FRDCommands::IsOnline: isOnline(messagePointer); break; case FRDCommands::Logout: logout(messagePointer); break; case FRDCommands::SetClientSdkVersion: setClientSDKVersion(messagePointer); break; case FRDCommands::SetNotificationMask: setNotificationMask(messagePointer); break; @@ -209,6 +211,15 @@ void FRDService::hasLoggedIn(u32 messagePointer) { mem.write8(messagePointer + 8, loggedIn ? 1 : 0); } +void FRDService::isOnline(u32 messagePointer) { + log("FRD::IsOnline\n"); + + mem.write32(messagePointer, IPC::responseHeader(0x2, 2, 0)); + mem.write32(messagePointer + 4, Result::Success); + // TODO: When is this 0? + mem.write8(messagePointer + 8, 1); +} + void FRDService::logout(u32 messagePointer) { log("FRD::Logout\n"); loggedIn = false;