| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- // Copyright 2018 yuzu emulator team
- // Licensed under GPLv2 or any later version
- // Refer to the license.txt file included.
- #include <memory>
- #include "core/file_sys/romfs_factory.h"
- #include "core/hle/ipc_helpers.h"
- #include "core/hle/service/ncm/ncm.h"
- #include "core/hle/service/service.h"
- #include "core/hle/service/sm/sm.h"
- namespace Service::NCM {
- class ILocationResolver final : public ServiceFramework<ILocationResolver> {
- public:
- explicit ILocationResolver(FileSys::StorageId id)
- : ServiceFramework{"ILocationResolver"}, storage(id) {
- // clang-format off
- static const FunctionInfo functions[] = {
- {0, nullptr, "ResolveProgramPath"},
- {1, nullptr, "RedirectProgramPath"},
- {2, nullptr, "ResolveApplicationControlPath"},
- {3, nullptr, "ResolveApplicationHtmlDocumentPath"},
- {4, nullptr, "ResolveDataPath"},
- {5, nullptr, "RedirectApplicationControlPath"},
- {6, nullptr, "RedirectApplicationHtmlDocumentPath"},
- {7, nullptr, "ResolveApplicationLegalInformationPath"},
- {8, nullptr, "RedirectApplicationLegalInformationPath"},
- {9, nullptr, "Refresh"},
- {10, nullptr, "RedirectApplicationProgramPath"},
- {11, nullptr, "ClearApplicationRedirection"},
- {12, nullptr, "EraseProgramRedirection"},
- {13, nullptr, "EraseApplicationControlRedirection"},
- {14, nullptr, "EraseApplicationHtmlDocumentRedirection"},
- {15, nullptr, "EraseApplicationLegalInformationRedirection"},
- {16, nullptr, "ResolveProgramPathForDebug"},
- {17, nullptr, "RedirectProgramPathForDebug"},
- {18, nullptr, "RedirectApplicationProgramPathForDebug"},
- {19, nullptr, "EraseProgramRedirectionForDebug"},
- };
- // clang-format on
- RegisterHandlers(functions);
- }
- private:
- FileSys::StorageId storage;
- };
- class IRegisteredLocationResolver final : public ServiceFramework<IRegisteredLocationResolver> {
- public:
- explicit IRegisteredLocationResolver() : ServiceFramework{"IRegisteredLocationResolver"} {
- // clang-format off
- static const FunctionInfo functions[] = {
- {0, nullptr, "ResolveProgramPath"},
- {1, nullptr, "RegisterProgramPath"},
- {2, nullptr, "UnregisterProgramPath"},
- {3, nullptr, "RedirectProgramPath"},
- {4, nullptr, "ResolveHtmlDocumentPath"},
- {5, nullptr, "RegisterHtmlDocumentPath"},
- {6, nullptr, "UnregisterHtmlDocumentPath"},
- {7, nullptr, "RedirectHtmlDocumentPath"},
- {8, nullptr, "Refresh"},
- {9, nullptr, "RefreshExcluding"},
- };
- // clang-format on
- RegisterHandlers(functions);
- }
- };
- class IAddOnContentLocationResolver final : public ServiceFramework<IAddOnContentLocationResolver> {
- public:
- explicit IAddOnContentLocationResolver() : ServiceFramework{"IAddOnContentLocationResolver"} {
- // clang-format off
- static const FunctionInfo functions[] = {
- {0, nullptr, "ResolveAddOnContentPath"},
- {1, nullptr, "RegisterAddOnContentStorage"},
- {2, nullptr, "UnregisterAllAddOnContentPath"},
- {3, nullptr, "RefreshApplicationAddOnContent"},
- {4, nullptr, "UnregisterApplicationAddOnContent"},
- };
- // clang-format on
- RegisterHandlers(functions);
- }
- };
- class LR final : public ServiceFramework<LR> {
- public:
- explicit LR() : ServiceFramework{"lr"} {
- // clang-format off
- static const FunctionInfo functions[] = {
- {0, nullptr, "OpenLocationResolver"},
- {1, nullptr, "OpenRegisteredLocationResolver"},
- {2, nullptr, "RefreshLocationResolver"},
- {3, nullptr, "OpenAddOnContentLocationResolver"},
- };
- // clang-format on
- RegisterHandlers(functions);
- }
- };
- class NCM final : public ServiceFramework<NCM> {
- public:
- explicit NCM() : ServiceFramework{"ncm"} {
- // clang-format off
- static const FunctionInfo functions[] = {
- {0, nullptr, "CreateContentStorage"},
- {1, nullptr, "CreateContentMetaDatabase"},
- {2, nullptr, "VerifyContentStorage"},
- {3, nullptr, "VerifyContentMetaDatabase"},
- {4, nullptr, "OpenContentStorage"},
- {5, nullptr, "OpenContentMetaDatabase"},
- {6, nullptr, "CloseContentStorageForcibly"},
- {7, nullptr, "CloseContentMetaDatabaseForcibly"},
- {8, nullptr, "CleanupContentMetaDatabase"},
- {9, nullptr, "ActivateContentStorage"},
- {10, nullptr, "InactivateContentStorage"},
- {11, nullptr, "ActivateContentMetaDatabase"},
- {12, nullptr, "InactivateContentMetaDatabase"},
- {13, nullptr, "InvalidateRightsIdCache"},
- {14, nullptr, "GetMemoryReport"},
- };
- // clang-format on
- RegisterHandlers(functions);
- }
- };
- void InstallInterfaces(SM::ServiceManager& sm) {
- std::make_shared<LR>()->InstallAsService(sm);
- std::make_shared<NCM>()->InstallAsService(sm);
- }
- } // namespace Service::NCM
|