mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	ns: rewrite IReadOnlyApplicationRecordInterface
This commit is contained in:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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"} {
 | 
			
		||||
 
 | 
			
		||||
@@ -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:
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
		Reference in New Issue
	
	Block a user