pctl: Rework how pctl works to be more accurate

Introduces the usage of compatibilities to allow it the module to be closer to how it works on hardware.
This commit is contained in:
Chloe Marcec
2021-03-27 02:03:18 +11:00
parent 65774084fd
commit e9a1f29e93
6 changed files with 254 additions and 32 deletions

View File

@ -4,6 +4,7 @@
#pragma once
#include "common/common_funcs.h"
#include "core/hle/service/service.h"
namespace Core {
@ -12,12 +13,23 @@ class System;
namespace Service::PCTL {
enum class Capability : s32 {
None = 0x0,
Application = 1 << 0,
SnsPost = 1 << 1,
Recovery = 1 << 6,
Status = 1 << 8,
SteroVision = 1 << 9,
System = 1 << 15,
};
DECLARE_ENUM_FLAG_OPERATORS(Capability);
class Module final {
public:
class Interface : public ServiceFramework<Interface> {
public:
explicit Interface(Core::System& system_, std::shared_ptr<Module> module_,
const char* name);
explicit Interface(Core::System& system_, std::shared_ptr<Module> module_, const char* name,
Capability capability);
~Interface() override;
void CreateService(Kernel::HLERequestContext& ctx);
@ -25,6 +37,9 @@ public:
protected:
std::shared_ptr<Module> module;
private:
Capability capability{};
};
};