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 7342c3cd10
commit f9b1e20d52
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{};
};
};