// Copyright 2018 yuzu emulator team // Licensed under GPLv2 or any later version // Refer to the license.txt file included. #pragma once #include "core/hle/service/service.h" #include "core/hle/service/set/set.h" namespace Service::NS { class IAccountProxyInterface final : public ServiceFramework { public: explicit IAccountProxyInterface(); }; class IApplicationManagerInterface final : public ServiceFramework { public: explicit IApplicationManagerInterface(); ResultVal GetApplicationDesiredLanguage(u32 supported_languages); ResultVal ConvertApplicationLanguageToLanguageCode(u8 application_language); private: void GetApplicationControlData(Kernel::HLERequestContext& ctx); void GetApplicationDesiredLanguage(Kernel::HLERequestContext& ctx); void ConvertApplicationLanguageToLanguageCode(Kernel::HLERequestContext& ctx); }; class IApplicationVersionInterface final : public ServiceFramework { public: explicit IApplicationVersionInterface(); }; class IContentManagerInterface final : public ServiceFramework { public: explicit IContentManagerInterface(); }; class IDocumentInterface final : public ServiceFramework { public: explicit IDocumentInterface(); }; class IDownloadTaskInterface final : public ServiceFramework { public: explicit IDownloadTaskInterface(); }; class IECommerceInterface final : public ServiceFramework { public: explicit IECommerceInterface(); }; class IFactoryResetInterface final : public ServiceFramework { public: explicit IFactoryResetInterface(); }; class NS final : public ServiceFramework { public: explicit NS(const char* name); std::shared_ptr GetApplicationManagerInterface(); private: template void PushInterface(Kernel::HLERequestContext& ctx) { LOG_DEBUG(Service_NS, "called"); IPC::ResponseBuilder rb{ctx, 2, 0, 1}; rb.Push(RESULT_SUCCESS); rb.PushIpcInterface(); } template std::shared_ptr GetInterface() { static_assert(std::is_base_of_v, "Not a base of ServiceFrameworkBase"); return std::make_shared(); } }; /// Registers all NS services with the specified service manager. void InstallInterfaces(SM::ServiceManager& service_manager); } // namespace Service::NS