Browse Source
core/pdm: Stub QueryPlayStatisticsByApplicationIdAndUserAccountId
core/pdm: Stub QueryPlayStatisticsByApplicationIdAndUserAccountId
Used in checkpoint homebrewnce_cpp
4 changed files with 107 additions and 0 deletions
-
2src/core/CMakeLists.txt
-
3src/core/hle/service/ns/ns.cpp
-
69src/core/hle/service/ns/pdm_qry.cpp
-
33src/core/hle/service/ns/pdm_qry.h
@ -0,0 +1,69 @@ |
|||
// Copyright 2021 yuzu Emulator Project
|
|||
// Licensed under GPLv2 or any later version
|
|||
// Refer to the license.txt file included
|
|||
|
|||
#include <memory>
|
|||
|
|||
#include "common/logging/log.h"
|
|||
#include "common/uuid.h"
|
|||
#include "core/hle/ipc_helpers.h"
|
|||
#include "core/hle/service/ns/pdm_qry.h"
|
|||
#include "core/hle/service/service.h"
|
|||
#include "core/hle/service/sm/sm.h"
|
|||
|
|||
namespace Service::NS { |
|||
|
|||
PDM_QRY::PDM_QRY(Core::System& system_) : ServiceFramework{system_, "pdm:qry"} { |
|||
// clang-format off
|
|||
static const FunctionInfo functions[] = { |
|||
{0, nullptr, "QueryAppletEvent"}, |
|||
{1, nullptr, "QueryPlayStatistics"}, |
|||
{2, nullptr, "QueryPlayStatisticsByUserAccountId"}, |
|||
{3, nullptr, "QueryPlayStatisticsByNetworkServiceAccountId"}, |
|||
{4, nullptr, "QueryPlayStatisticsByApplicationId"}, |
|||
{5, &PDM_QRY::QueryPlayStatisticsByApplicationIdAndUserAccountId, "QueryPlayStatisticsByApplicationIdAndUserAccountId"}, |
|||
{6, nullptr, "QueryPlayStatisticsByApplicationIdAndNetworkServiceAccountId"}, |
|||
{7, nullptr, "QueryLastPlayTimeV0"}, |
|||
{8, nullptr, "QueryPlayEvent"}, |
|||
{9, nullptr, "GetAvailablePlayEventRange"}, |
|||
{10, nullptr, "QueryAccountEvent"}, |
|||
{11, nullptr, "QueryAccountPlayEvent"}, |
|||
{12, nullptr, "GetAvailableAccountPlayEventRange"}, |
|||
{13, nullptr, "QueryApplicationPlayStatisticsForSystemV0"}, |
|||
{14, nullptr, "QueryRecentlyPlayedApplication"}, |
|||
{15, nullptr, "GetRecentlyPlayedApplicationUpdateEvent"}, |
|||
{16, nullptr, "QueryApplicationPlayStatisticsByUserAccountIdForSystemV0"}, |
|||
{17, nullptr, "QueryLastPlayTime"}, |
|||
{18, nullptr, "QueryApplicationPlayStatisticsForSystem"}, |
|||
{19, nullptr, "QueryApplicationPlayStatisticsByUserAccountIdForSystem"}, |
|||
}; |
|||
// clang-format on
|
|||
|
|||
RegisterHandlers(functions); |
|||
} |
|||
|
|||
PDM_QRY::~PDM_QRY() = default; |
|||
|
|||
void PDM_QRY::QueryPlayStatisticsByApplicationIdAndUserAccountId(Kernel::HLERequestContext& ctx) { |
|||
IPC::RequestParser rp{ctx}; |
|||
const auto unknown = rp.Pop<bool>(); |
|||
rp.Pop<u8>(); // Padding
|
|||
const auto application_id = rp.Pop<u64>(); |
|||
const auto user_account_uid = rp.PopRaw<Common::UUID>(); |
|||
|
|||
// TODO(German77): Read statistics of the game
|
|||
PlayStatistics statistics{ |
|||
.application_id = application_id, |
|||
.total_launches = 1, |
|||
}; |
|||
|
|||
LOG_WARNING(Service_NS, |
|||
"(STUBBED) called. unknown={}. application_id=0x{:016X}, user_account_uid=0x{}", |
|||
unknown, application_id, user_account_uid.Format()); |
|||
|
|||
IPC::ResponseBuilder rb{ctx, 12}; |
|||
rb.Push(ResultSuccess); |
|||
rb.PushRaw(statistics); |
|||
} |
|||
|
|||
} // namespace Service::NS
|
|||
@ -0,0 +1,33 @@ |
|||
// Copyright 2021 yuzu Emulator Project |
|||
// Licensed under GPLv2 or any later version |
|||
// Refer to the license.txt file included |
|||
|
|||
#pragma once |
|||
|
|||
#include "core/hle/service/service.h" |
|||
|
|||
namespace Service::NS { |
|||
|
|||
struct PlayStatistics { |
|||
u64 application_id{}; |
|||
u32 first_entry_index{}; |
|||
u32 first_timestamp_user{}; |
|||
u32 first_timestamp_network{}; |
|||
u32 last_entry_index{}; |
|||
u32 last_timestamp_user{}; |
|||
u32 last_timestamp_network{}; |
|||
u32 play_time_in_minutes{}; |
|||
u32 total_launches{}; |
|||
}; |
|||
static_assert(sizeof(PlayStatistics) == 0x28, "PlayStatistics is an invalid size"); |
|||
|
|||
class PDM_QRY final : public ServiceFramework<PDM_QRY> { |
|||
public: |
|||
explicit PDM_QRY(Core::System& system_); |
|||
~PDM_QRY() override; |
|||
|
|||
private: |
|||
void QueryPlayStatisticsByApplicationIdAndUserAccountId(Kernel::HLERequestContext& ctx); |
|||
}; |
|||
|
|||
} // namespace Service::NS |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue