Merge pull request #1022 from bunnei/fix-splat
Several Friend service fixes
This commit is contained in:
commit
a921d22545
2 changed files with 103 additions and 2 deletions
|
@ -71,6 +71,14 @@ ResultCode ServerSession::HandleDomainSyncRequest(Kernel::HLERequestContext& con
|
||||||
const u32 object_id{context.GetDomainMessageHeader()->object_id};
|
const u32 object_id{context.GetDomainMessageHeader()->object_id};
|
||||||
switch (domain_message_header->command) {
|
switch (domain_message_header->command) {
|
||||||
case IPC::DomainMessageHeader::CommandType::SendMessage:
|
case IPC::DomainMessageHeader::CommandType::SendMessage:
|
||||||
|
if (object_id > domain_request_handlers.size()) {
|
||||||
|
LOG_CRITICAL(IPC,
|
||||||
|
"object_id {} is too big! This probably means a recent service call "
|
||||||
|
"to {} needed to return a new interface!",
|
||||||
|
object_id, name);
|
||||||
|
UNREACHABLE();
|
||||||
|
return RESULT_SUCCESS; // Ignore error if asserts are off
|
||||||
|
}
|
||||||
return domain_request_handlers[object_id - 1]->HandleSyncRequest(context);
|
return domain_request_handlers[object_id - 1]->HandleSyncRequest(context);
|
||||||
|
|
||||||
case IPC::DomainMessageHeader::CommandType::CloseVirtualHandle: {
|
case IPC::DomainMessageHeader::CommandType::CloseVirtualHandle: {
|
||||||
|
|
|
@ -9,10 +9,103 @@
|
||||||
|
|
||||||
namespace Service::Friend {
|
namespace Service::Friend {
|
||||||
|
|
||||||
|
class IFriendService final : public ServiceFramework<IFriendService> {
|
||||||
|
public:
|
||||||
|
IFriendService() : ServiceFramework("IFriendService") {
|
||||||
|
static const FunctionInfo functions[] = {
|
||||||
|
{0, nullptr, "GetCompletionEvent"},
|
||||||
|
{1, nullptr, "Cancel"},
|
||||||
|
{10100, nullptr, "GetFriendListIds"},
|
||||||
|
{10101, nullptr, "GetFriendList"},
|
||||||
|
{10102, nullptr, "UpdateFriendInfo"},
|
||||||
|
{10110, nullptr, "GetFriendProfileImage"},
|
||||||
|
{10200, nullptr, "SendFriendRequestForApplication"},
|
||||||
|
{10211, nullptr, "AddFacedFriendRequestForApplication"},
|
||||||
|
{10400, nullptr, "GetBlockedUserListIds"},
|
||||||
|
{10500, nullptr, "GetProfileList"},
|
||||||
|
{10600, nullptr, "DeclareOpenOnlinePlaySession"},
|
||||||
|
{10601, &IFriendService::DeclareCloseOnlinePlaySession,
|
||||||
|
"DeclareCloseOnlinePlaySession"},
|
||||||
|
{10610, nullptr, "UpdateUserPresence"},
|
||||||
|
{10700, nullptr, "GetPlayHistoryRegistrationKey"},
|
||||||
|
{10701, nullptr, "GetPlayHistoryRegistrationKeyWithNetworkServiceAccountId"},
|
||||||
|
{10702, nullptr, "AddPlayHistory"},
|
||||||
|
{11000, nullptr, "GetProfileImageUrl"},
|
||||||
|
{20100, nullptr, "GetFriendCount"},
|
||||||
|
{20101, nullptr, "GetNewlyFriendCount"},
|
||||||
|
{20102, nullptr, "GetFriendDetailedInfo"},
|
||||||
|
{20103, nullptr, "SyncFriendList"},
|
||||||
|
{20104, nullptr, "RequestSyncFriendList"},
|
||||||
|
{20110, nullptr, "LoadFriendSetting"},
|
||||||
|
{20200, nullptr, "GetReceivedFriendRequestCount"},
|
||||||
|
{20201, nullptr, "GetFriendRequestList"},
|
||||||
|
{20300, nullptr, "GetFriendCandidateList"},
|
||||||
|
{20301, nullptr, "GetNintendoNetworkIdInfo"},
|
||||||
|
{20302, nullptr, "GetSnsAccountLinkage"},
|
||||||
|
{20303, nullptr, "GetSnsAccountProfile"},
|
||||||
|
{20304, nullptr, "GetSnsAccountFriendList"},
|
||||||
|
{20400, nullptr, "GetBlockedUserList"},
|
||||||
|
{20401, nullptr, "SyncBlockedUserList"},
|
||||||
|
{20500, nullptr, "GetProfileExtraList"},
|
||||||
|
{20501, nullptr, "GetRelationship"},
|
||||||
|
{20600, nullptr, "GetUserPresenceView"},
|
||||||
|
{20700, nullptr, "GetPlayHistoryList"},
|
||||||
|
{20701, nullptr, "GetPlayHistoryStatistics"},
|
||||||
|
{20800, nullptr, "LoadUserSetting"},
|
||||||
|
{20801, nullptr, "SyncUserSetting"},
|
||||||
|
{20900, nullptr, "RequestListSummaryOverlayNotification"},
|
||||||
|
{21000, nullptr, "GetExternalApplicationCatalog"},
|
||||||
|
{30100, nullptr, "DropFriendNewlyFlags"},
|
||||||
|
{30101, nullptr, "DeleteFriend"},
|
||||||
|
{30110, nullptr, "DropFriendNewlyFlag"},
|
||||||
|
{30120, nullptr, "ChangeFriendFavoriteFlag"},
|
||||||
|
{30121, nullptr, "ChangeFriendOnlineNotificationFlag"},
|
||||||
|
{30200, nullptr, "SendFriendRequest"},
|
||||||
|
{30201, nullptr, "SendFriendRequestWithApplicationInfo"},
|
||||||
|
{30202, nullptr, "CancelFriendRequest"},
|
||||||
|
{30203, nullptr, "AcceptFriendRequest"},
|
||||||
|
{30204, nullptr, "RejectFriendRequest"},
|
||||||
|
{30205, nullptr, "ReadFriendRequest"},
|
||||||
|
{30210, nullptr, "GetFacedFriendRequestRegistrationKey"},
|
||||||
|
{30211, nullptr, "AddFacedFriendRequest"},
|
||||||
|
{30212, nullptr, "CancelFacedFriendRequest"},
|
||||||
|
{30213, nullptr, "GetFacedFriendRequestProfileImage"},
|
||||||
|
{30214, nullptr, "GetFacedFriendRequestProfileImageFromPath"},
|
||||||
|
{30215, nullptr, "SendFriendRequestWithExternalApplicationCatalogId"},
|
||||||
|
{30216, nullptr, "ResendFacedFriendRequest"},
|
||||||
|
{30217, nullptr, "SendFriendRequestWithNintendoNetworkIdInfo"},
|
||||||
|
{30300, nullptr, "GetSnsAccountLinkPageUrl"},
|
||||||
|
{30301, nullptr, "UnlinkSnsAccount"},
|
||||||
|
{30400, nullptr, "BlockUser"},
|
||||||
|
{30401, nullptr, "BlockUserWithApplicationInfo"},
|
||||||
|
{30402, nullptr, "UnblockUser"},
|
||||||
|
{30500, nullptr, "GetProfileExtraFromFriendCode"},
|
||||||
|
{30700, nullptr, "DeletePlayHistory"},
|
||||||
|
{30810, nullptr, "ChangePresencePermission"},
|
||||||
|
{30811, nullptr, "ChangeFriendRequestReception"},
|
||||||
|
{30812, nullptr, "ChangePlayLogPermission"},
|
||||||
|
{30820, nullptr, "IssueFriendCode"},
|
||||||
|
{30830, nullptr, "ClearPlayLog"},
|
||||||
|
{49900, nullptr, "DeleteNetworkServiceAccountCache"},
|
||||||
|
};
|
||||||
|
|
||||||
|
RegisterHandlers(functions);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
void DeclareCloseOnlinePlaySession(Kernel::HLERequestContext& ctx) {
|
||||||
|
// Stub used by Splatoon 2
|
||||||
|
LOG_WARNING(Service_ACC, "(STUBBED) called");
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void Module::Interface::CreateFriendService(Kernel::HLERequestContext& ctx) {
|
void Module::Interface::CreateFriendService(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
LOG_WARNING(Service_Friend, "(STUBBED) called");
|
rb.PushIpcInterface<IFriendService>();
|
||||||
|
LOG_DEBUG(Service_ACC, "called");
|
||||||
}
|
}
|
||||||
|
|
||||||
Module::Interface::Interface(std::shared_ptr<Module> module, const char* name)
|
Module::Interface::Interface(std::shared_ptr<Module> module, const char* name)
|
||||||
|
|
Loading…
Reference in a new issue