module.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // Copyright 2018 yuzu emulator team
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <random>
  6. #include "core/hle/service/service.h"
  7. namespace Core {
  8. class System;
  9. }
  10. namespace Service::SPL {
  11. class Module final {
  12. public:
  13. class Interface : public ServiceFramework<Interface> {
  14. public:
  15. explicit Interface(Core::System& system_, std::shared_ptr<Module> module_,
  16. const char* name);
  17. ~Interface() override;
  18. // General
  19. void GetConfig(Kernel::HLERequestContext& ctx);
  20. void ModularExponentiate(Kernel::HLERequestContext& ctx);
  21. void SetConfig(Kernel::HLERequestContext& ctx);
  22. void GenerateRandomBytes(Kernel::HLERequestContext& ctx);
  23. void IsDevelopment(Kernel::HLERequestContext& ctx);
  24. void SetBootReason(Kernel::HLERequestContext& ctx);
  25. void GetBootReason(Kernel::HLERequestContext& ctx);
  26. protected:
  27. std::shared_ptr<Module> module;
  28. private:
  29. std::mt19937 rng;
  30. };
  31. };
  32. /// Registers all SPL services with the specified service manager.
  33. void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system);
  34. } // namespace Service::SPL