ns: rewrite IReadOnlyApplicationRecordInterface

This commit is contained in:
Liam 2024-02-17 12:22:16 -05:00
parent c31ac45332
commit 786fc512e2
5 changed files with 63 additions and 45 deletions

View file

@ -765,6 +765,8 @@ add_library(core STATIC
hle/service/ns/pdm_qry.h
hle/service/ns/platform_service_manager.cpp
hle/service/ns/platform_service_manager.h
hle/service/ns/read_only_application_record_interface.cpp
hle/service/ns/read_only_application_record_interface.h
hle/service/nvdrv/core/container.cpp
hle/service/nvdrv/core/container.h
hle/service/nvdrv/core/heap_mapper.cpp

View file

@ -24,6 +24,7 @@
#include "core/hle/service/ns/ns_results.h"
#include "core/hle/service/ns/pdm_qry.h"
#include "core/hle/service/ns/platform_service_manager.h"
#include "core/hle/service/ns/read_only_application_record_interface.h"
#include "core/hle/service/server_manager.h"
#include "core/hle/service/set/settings_server.h"
@ -468,40 +469,6 @@ Result IApplicationManagerInterface::ConvertApplicationLanguageToLanguageCode(
return ResultSuccess;
}
IReadOnlyApplicationRecordInterface::IReadOnlyApplicationRecordInterface(Core::System& system_)
: ServiceFramework{system_, "IReadOnlyApplicationRecordInterface"} {
static const FunctionInfo functions[] = {
{0, &IReadOnlyApplicationRecordInterface::HasApplicationRecord, "HasApplicationRecord"},
{1, nullptr, "NotifyApplicationFailure"},
{2, &IReadOnlyApplicationRecordInterface::IsDataCorruptedResult, "IsDataCorruptedResult"},
};
// clang-format on
RegisterHandlers(functions);
}
IReadOnlyApplicationRecordInterface::~IReadOnlyApplicationRecordInterface() = default;
void IReadOnlyApplicationRecordInterface::HasApplicationRecord(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const u64 program_id = rp.PopRaw<u64>();
LOG_WARNING(Service_NS, "(STUBBED) called, program_id={:X}", program_id);
IPC::ResponseBuilder rb{ctx, 3};
rb.Push(ResultSuccess);
rb.Push<u8>(1);
}
void IReadOnlyApplicationRecordInterface::IsDataCorruptedResult(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto result = rp.PopRaw<Result>();
LOG_WARNING(Service_NS, "(STUBBED) called, result={:#x}", result.GetInnerValue());
IPC::ResponseBuilder rb{ctx, 3};
rb.Push(ResultSuccess);
rb.Push<u8>(0);
}
IReadOnlyApplicationControlDataInterface::IReadOnlyApplicationControlDataInterface(
Core::System& system_)
: ServiceFramework{system_, "IReadOnlyApplicationControlDataInterface"} {

View file

@ -32,17 +32,6 @@ private:
void ConvertApplicationLanguageToLanguageCode(HLERequestContext& ctx);
};
class IReadOnlyApplicationRecordInterface final
: public ServiceFramework<IReadOnlyApplicationRecordInterface> {
public:
explicit IReadOnlyApplicationRecordInterface(Core::System& system_);
~IReadOnlyApplicationRecordInterface() override;
private:
void HasApplicationRecord(HLERequestContext& ctx);
void IsDataCorruptedResult(HLERequestContext& ctx);
};
class IReadOnlyApplicationControlDataInterface final
: public ServiceFramework<IReadOnlyApplicationControlDataInterface> {
public:

View file

@ -0,0 +1,38 @@
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "core/hle/service/cmif_serialization.h"
#include "core/hle/service/ns/read_only_application_record_interface.h"
namespace Service::NS {
IReadOnlyApplicationRecordInterface::IReadOnlyApplicationRecordInterface(Core::System& system_)
: ServiceFramework{system_, "IReadOnlyApplicationRecordInterface"} {
static const FunctionInfo functions[] = {
{0, D<&IReadOnlyApplicationRecordInterface::HasApplicationRecord>, "HasApplicationRecord"},
{1, nullptr, "NotifyApplicationFailure"},
{2, D<&IReadOnlyApplicationRecordInterface::IsDataCorruptedResult>,
"IsDataCorruptedResult"},
};
// clang-format on
RegisterHandlers(functions);
}
IReadOnlyApplicationRecordInterface::~IReadOnlyApplicationRecordInterface() = default;
Result IReadOnlyApplicationRecordInterface::HasApplicationRecord(
Out<bool> out_has_application_record, u64 program_id) {
LOG_WARNING(Service_NS, "(STUBBED) called, program_id={:016X}", program_id);
*out_has_application_record = true;
R_SUCCEED();
}
Result IReadOnlyApplicationRecordInterface::IsDataCorruptedResult(
Out<bool> out_is_data_corrupted_result, Result result) {
LOG_WARNING(Service_NS, "(STUBBED) called, result={:#x}", result.GetInnerValue());
*out_is_data_corrupted_result = false;
R_SUCCEED();
}
} // namespace Service::NS

View file

@ -0,0 +1,22 @@
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "core/hle/service/cmif_types.h"
#include "core/hle/service/service.h"
namespace Service::NS {
class IReadOnlyApplicationRecordInterface final
: public ServiceFramework<IReadOnlyApplicationRecordInterface> {
public:
explicit IReadOnlyApplicationRecordInterface(Core::System& system_);
~IReadOnlyApplicationRecordInterface() override;
private:
Result HasApplicationRecord(Out<bool> out_has_application_record, u64 program_id);
Result IsDataCorruptedResult(Out<bool> out_is_data_corrupted_result, Result result);
};
} // namespace Service::NS