// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include "core/hle/service/service.h" #include "core/hle/service/spl/spl_results.h" #include "core/hle/service/spl/spl_types.h" namespace Core { class System; } namespace Service::SPL { class Module final { public: class Interface : public ServiceFramework { public: explicit Interface(Core::System& system_, std::shared_ptr module_, const char* name); ~Interface() override; // General void GetConfig(Kernel::HLERequestContext& ctx); void ModularExponentiate(Kernel::HLERequestContext& ctx); void SetConfig(Kernel::HLERequestContext& ctx); void GenerateRandomBytes(Kernel::HLERequestContext& ctx); void IsDevelopment(Kernel::HLERequestContext& ctx); void SetBootReason(Kernel::HLERequestContext& ctx); void GetBootReason(Kernel::HLERequestContext& ctx); protected: std::shared_ptr module; private: ResultVal GetConfigImpl(ConfigItem config_item) const; std::mt19937 rng; }; }; /// Registers all SPL services with the specified service manager. void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system); } // namespace Service::SPL