mirror of
https://github.com/yuzu-emu/yuzu.git
synced 2024-07-04 23:31:19 +01:00
ns: rewrite IReadOnlyApplicationRecordInterface
This commit is contained in:
parent
c31ac45332
commit
786fc512e2
5 changed files with 63 additions and 45 deletions
|
@ -765,6 +765,8 @@ add_library(core STATIC
|
||||||
hle/service/ns/pdm_qry.h
|
hle/service/ns/pdm_qry.h
|
||||||
hle/service/ns/platform_service_manager.cpp
|
hle/service/ns/platform_service_manager.cpp
|
||||||
hle/service/ns/platform_service_manager.h
|
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.cpp
|
||||||
hle/service/nvdrv/core/container.h
|
hle/service/nvdrv/core/container.h
|
||||||
hle/service/nvdrv/core/heap_mapper.cpp
|
hle/service/nvdrv/core/heap_mapper.cpp
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "core/hle/service/ns/ns_results.h"
|
#include "core/hle/service/ns/ns_results.h"
|
||||||
#include "core/hle/service/ns/pdm_qry.h"
|
#include "core/hle/service/ns/pdm_qry.h"
|
||||||
#include "core/hle/service/ns/platform_service_manager.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/server_manager.h"
|
||||||
#include "core/hle/service/set/settings_server.h"
|
#include "core/hle/service/set/settings_server.h"
|
||||||
|
|
||||||
|
@ -468,40 +469,6 @@ Result IApplicationManagerInterface::ConvertApplicationLanguageToLanguageCode(
|
||||||
return ResultSuccess;
|
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(
|
IReadOnlyApplicationControlDataInterface::IReadOnlyApplicationControlDataInterface(
|
||||||
Core::System& system_)
|
Core::System& system_)
|
||||||
: ServiceFramework{system_, "IReadOnlyApplicationControlDataInterface"} {
|
: ServiceFramework{system_, "IReadOnlyApplicationControlDataInterface"} {
|
||||||
|
|
|
@ -32,17 +32,6 @@ private:
|
||||||
void ConvertApplicationLanguageToLanguageCode(HLERequestContext& ctx);
|
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
|
class IReadOnlyApplicationControlDataInterface final
|
||||||
: public ServiceFramework<IReadOnlyApplicationControlDataInterface> {
|
: public ServiceFramework<IReadOnlyApplicationControlDataInterface> {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in a new issue