mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	psc: move IPmControl, IPmModule, IPmService
This commit is contained in:
		@@ -891,6 +891,12 @@ add_library(core STATIC
 | 
			
		||||
    hle/service/pm/pm.h
 | 
			
		||||
    hle/service/prepo/prepo.cpp
 | 
			
		||||
    hle/service/prepo/prepo.h
 | 
			
		||||
    hle/service/psc/pm_control.cpp
 | 
			
		||||
    hle/service/psc/pm_control.h
 | 
			
		||||
    hle/service/psc/pm_module.cpp
 | 
			
		||||
    hle/service/psc/pm_module.h
 | 
			
		||||
    hle/service/psc/pm_service.cpp
 | 
			
		||||
    hle/service/psc/pm_service.h
 | 
			
		||||
    hle/service/psc/psc.cpp
 | 
			
		||||
    hle/service/psc/psc.h
 | 
			
		||||
    hle/service/psc/time/alarms.cpp
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								src/core/hle/service/psc/pm_control.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/core/hle/service/psc/pm_control.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
 | 
			
		||||
#include "core/hle/service/psc/pm_control.h"
 | 
			
		||||
 | 
			
		||||
namespace Service::PSC {
 | 
			
		||||
 | 
			
		||||
IPmControl::IPmControl(Core::System& system_) : ServiceFramework{system_, "psc:c"} {
 | 
			
		||||
    // clang-format off
 | 
			
		||||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        {0, nullptr, "Initialize"},
 | 
			
		||||
        {1, nullptr, "DispatchRequest"},
 | 
			
		||||
        {2, nullptr, "GetResult"},
 | 
			
		||||
        {3, nullptr, "GetState"},
 | 
			
		||||
        {4, nullptr, "Cancel"},
 | 
			
		||||
        {5, nullptr, "PrintModuleInformation"},
 | 
			
		||||
        {6, nullptr, "GetModuleInformation"},
 | 
			
		||||
        {10, nullptr, "AcquireStateLock"},
 | 
			
		||||
        {11, nullptr, "HasStateLock"},
 | 
			
		||||
    };
 | 
			
		||||
    // clang-format on
 | 
			
		||||
 | 
			
		||||
    RegisterHandlers(functions);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
IPmControl::~IPmControl() = default;
 | 
			
		||||
 | 
			
		||||
} // namespace Service::PSC
 | 
			
		||||
							
								
								
									
										16
									
								
								src/core/hle/service/psc/pm_control.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/core/hle/service/psc/pm_control.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include "core/hle/service/service.h"
 | 
			
		||||
 | 
			
		||||
namespace Service::PSC {
 | 
			
		||||
 | 
			
		||||
class IPmControl final : public ServiceFramework<IPmControl> {
 | 
			
		||||
public:
 | 
			
		||||
    explicit IPmControl(Core::System& system_);
 | 
			
		||||
    ~IPmControl() override;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace Service::PSC
 | 
			
		||||
							
								
								
									
										24
									
								
								src/core/hle/service/psc/pm_module.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/core/hle/service/psc/pm_module.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
 | 
			
		||||
#include "core/hle/service/psc/pm_module.h"
 | 
			
		||||
 | 
			
		||||
namespace Service::PSC {
 | 
			
		||||
 | 
			
		||||
IPmModule::IPmModule(Core::System& system_) : ServiceFramework{system_, "IPmModule"} {
 | 
			
		||||
    // clang-format off
 | 
			
		||||
        static const FunctionInfo functions[] = {
 | 
			
		||||
            {0, nullptr, "Initialize"},
 | 
			
		||||
            {1, nullptr, "GetRequest"},
 | 
			
		||||
            {2, nullptr, "Acknowledge"},
 | 
			
		||||
            {3, nullptr, "Finalize"},
 | 
			
		||||
            {4, nullptr, "AcknowledgeEx"},
 | 
			
		||||
        };
 | 
			
		||||
    // clang-format on
 | 
			
		||||
 | 
			
		||||
    RegisterHandlers(functions);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
IPmModule::~IPmModule() = default;
 | 
			
		||||
 | 
			
		||||
} // namespace Service::PSC
 | 
			
		||||
							
								
								
									
										16
									
								
								src/core/hle/service/psc/pm_module.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/core/hle/service/psc/pm_module.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include "core/hle/service/service.h"
 | 
			
		||||
 | 
			
		||||
namespace Service::PSC {
 | 
			
		||||
 | 
			
		||||
class IPmModule final : public ServiceFramework<IPmModule> {
 | 
			
		||||
public:
 | 
			
		||||
    explicit IPmModule(Core::System& system_);
 | 
			
		||||
    ~IPmModule() override;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace Service::PSC
 | 
			
		||||
							
								
								
									
										30
									
								
								src/core/hle/service/psc/pm_service.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/core/hle/service/psc/pm_service.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
 | 
			
		||||
#include "core/hle/service/ipc_helpers.h"
 | 
			
		||||
#include "core/hle/service/psc/pm_module.h"
 | 
			
		||||
#include "core/hle/service/psc/pm_service.h"
 | 
			
		||||
 | 
			
		||||
namespace Service::PSC {
 | 
			
		||||
 | 
			
		||||
IPmService::IPmService(Core::System& system_) : ServiceFramework{system_, "psc:m"} {
 | 
			
		||||
    // clang-format off
 | 
			
		||||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        {0, &IPmService::GetPmModule, "GetPmModule"},
 | 
			
		||||
    };
 | 
			
		||||
    // clang-format on
 | 
			
		||||
 | 
			
		||||
    RegisterHandlers(functions);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
IPmService::~IPmService() = default;
 | 
			
		||||
 | 
			
		||||
void IPmService::GetPmModule(HLERequestContext& ctx) {
 | 
			
		||||
    LOG_DEBUG(Service_PSC, "called");
 | 
			
		||||
 | 
			
		||||
    IPC::ResponseBuilder rb{ctx, 2, 0, 1};
 | 
			
		||||
    rb.Push(ResultSuccess);
 | 
			
		||||
    rb.PushIpcInterface<IPmModule>(system);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace Service::PSC
 | 
			
		||||
							
								
								
									
										19
									
								
								src/core/hle/service/psc/pm_service.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/core/hle/service/psc/pm_service.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include "core/hle/service/service.h"
 | 
			
		||||
 | 
			
		||||
namespace Service::PSC {
 | 
			
		||||
 | 
			
		||||
class IPmService final : public ServiceFramework<IPmService> {
 | 
			
		||||
public:
 | 
			
		||||
    explicit IPmService(Core::System& system_);
 | 
			
		||||
    ~IPmService() override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    void GetPmModule(HLERequestContext& ctx);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace Service::PSC
 | 
			
		||||
@@ -1,11 +1,8 @@
 | 
			
		||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
 | 
			
		||||
#include <memory>
 | 
			
		||||
 | 
			
		||||
#include "common/logging/log.h"
 | 
			
		||||
#include "core/core.h"
 | 
			
		||||
#include "core/hle/service/ipc_helpers.h"
 | 
			
		||||
#include "core/hle/service/psc/pm_control.h"
 | 
			
		||||
#include "core/hle/service/psc/pm_service.h"
 | 
			
		||||
#include "core/hle/service/psc/psc.h"
 | 
			
		||||
#include "core/hle/service/psc/time/manager.h"
 | 
			
		||||
#include "core/hle/service/psc/time/power_state_service.h"
 | 
			
		||||
@@ -15,66 +12,6 @@
 | 
			
		||||
 | 
			
		||||
namespace Service::PSC {
 | 
			
		||||
 | 
			
		||||
class IPmControl final : public ServiceFramework<IPmControl> {
 | 
			
		||||
public:
 | 
			
		||||
    explicit IPmControl(Core::System& system_) : ServiceFramework{system_, "psc:c"} {
 | 
			
		||||
        // clang-format off
 | 
			
		||||
        static const FunctionInfo functions[] = {
 | 
			
		||||
            {0, nullptr, "Initialize"},
 | 
			
		||||
            {1, nullptr, "DispatchRequest"},
 | 
			
		||||
            {2, nullptr, "GetResult"},
 | 
			
		||||
            {3, nullptr, "GetState"},
 | 
			
		||||
            {4, nullptr, "Cancel"},
 | 
			
		||||
            {5, nullptr, "PrintModuleInformation"},
 | 
			
		||||
            {6, nullptr, "GetModuleInformation"},
 | 
			
		||||
            {10, nullptr, "AcquireStateLock"},
 | 
			
		||||
            {11, nullptr, "HasStateLock"},
 | 
			
		||||
        };
 | 
			
		||||
        // clang-format on
 | 
			
		||||
 | 
			
		||||
        RegisterHandlers(functions);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class IPmModule final : public ServiceFramework<IPmModule> {
 | 
			
		||||
public:
 | 
			
		||||
    explicit IPmModule(Core::System& system_) : ServiceFramework{system_, "IPmModule"} {
 | 
			
		||||
        // clang-format off
 | 
			
		||||
        static const FunctionInfo functions[] = {
 | 
			
		||||
            {0, nullptr, "Initialize"},
 | 
			
		||||
            {1, nullptr, "GetRequest"},
 | 
			
		||||
            {2, nullptr, "Acknowledge"},
 | 
			
		||||
            {3, nullptr, "Finalize"},
 | 
			
		||||
            {4, nullptr, "AcknowledgeEx"},
 | 
			
		||||
        };
 | 
			
		||||
        // clang-format on
 | 
			
		||||
 | 
			
		||||
        RegisterHandlers(functions);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class IPmService final : public ServiceFramework<IPmService> {
 | 
			
		||||
public:
 | 
			
		||||
    explicit IPmService(Core::System& system_) : ServiceFramework{system_, "psc:m"} {
 | 
			
		||||
        // clang-format off
 | 
			
		||||
        static const FunctionInfo functions[] = {
 | 
			
		||||
            {0, &IPmService::GetPmModule, "GetPmModule"},
 | 
			
		||||
        };
 | 
			
		||||
        // clang-format on
 | 
			
		||||
 | 
			
		||||
        RegisterHandlers(functions);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    void GetPmModule(HLERequestContext& ctx) {
 | 
			
		||||
        LOG_DEBUG(Service_PSC, "called");
 | 
			
		||||
 | 
			
		||||
        IPC::ResponseBuilder rb{ctx, 2, 0, 1};
 | 
			
		||||
        rb.Push(ResultSuccess);
 | 
			
		||||
        rb.PushIpcInterface<IPmModule>(system);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void LoopProcess(Core::System& system) {
 | 
			
		||||
    auto server_manager = std::make_unique<ServerManager>(system);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,10 +7,6 @@ namespace Core {
 | 
			
		||||
class System;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace Service::SM {
 | 
			
		||||
class ServiceManager;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace Service::PSC {
 | 
			
		||||
 | 
			
		||||
void LoopProcess(Core::System& system);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user