service: Add skeleton for psm service

Seems to be the power controller. Listed in switchbrew under the category PTM services.
This commit is contained in:
Zach Hilman 2018-10-20 17:22:15 -04:00
parent 8dc7db7e33
commit 3b8c0f8885
5 changed files with 75 additions and 0 deletions

View File

@ -91,6 +91,7 @@ enum class Class : ClassType {
Service_PM, ///< The PM service Service_PM, ///< The PM service
Service_PREPO, ///< The PREPO (Play report) service Service_PREPO, ///< The PREPO (Play report) service
Service_PSC, ///< The PSC service Service_PSC, ///< The PSC service
Service_PSM, ///< The PSM service
Service_SET, ///< The SET (Settings) service Service_SET, ///< The SET (Settings) service
Service_SM, ///< The SM (Service manager) service Service_SM, ///< The SM (Service manager) service
Service_SPL, ///< The SPL service Service_SPL, ///< The SPL service

View File

@ -327,6 +327,8 @@ add_library(core STATIC
hle/service/prepo/prepo.h hle/service/prepo/prepo.h
hle/service/psc/psc.cpp hle/service/psc/psc.cpp
hle/service/psc/psc.h hle/service/psc/psc.h
hle/service/ptm/psm.cpp
hle/service/ptm/psm.h
hle/service/service.cpp hle/service/service.cpp
hle/service/service.h hle/service/service.h
hle/service/set/set.cpp hle/service/set/set.cpp

View File

@ -0,0 +1,48 @@
// Copyright 2018 yuzu emulator team
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include <memory>
#include "common/logging/log.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/service/ptm/psm.h"
#include "core/hle/service/service.h"
#include "core/hle/service/sm/sm.h"
namespace Service::PSM {
PSM::PSM() : ServiceFramework{"psm"} {
// clang-format off
static const FunctionInfo functions[] = {
{0, nullptr, "GetBatteryChargePercentage"},
{1, nullptr, "GetChargerType"},
{2, nullptr, "EnableBatteryCharging"},
{3, nullptr, "DisableBatteryCharging"},
{4, nullptr, "IsBatteryChargingEnabled"},
{5, nullptr, "AcquireControllerPowerSupply"},
{6, nullptr, "ReleaseControllerPowerSupply"},
{7, nullptr, "OpenSession"},
{8, nullptr, "EnableEnoughPowerChargeEmulation"},
{9, nullptr, "DisableEnoughPowerChargeEmulation"},
{10, nullptr, "EnableFastBatteryCharging"},
{11, nullptr, "DisableFastBatteryCharging"},
{12, nullptr, "GetBatteryVoltageState"},
{13, nullptr, "GetRawBatteryChargePercentage"},
{14, nullptr, "IsEnoughPowerSupplied"},
{15, nullptr, "GetBatteryAgePercentage"},
{16, nullptr, "GetBatteryChargeInfoEvent"},
{17, nullptr, "GetBatteryChargeInfoFields"},
};
// clang-format on
RegisterHandlers(functions);
}
PSM::~PSM() = default;
void InstallInterfaces(SM::ServiceManager& sm) {
std::make_shared<PSM>()->InstallAsService(sm);
}
} // namespace Service::PSM

View File

@ -0,0 +1,22 @@
// 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"
namespace Service::SM {
class ServiceManager;
}
namespace Service::PSM {
class PSM final : public ServiceFramework<PSM> {
public:
explicit PSM();
~PSM() override;
};
void InstallInterfaces(SM::ServiceManager& sm);
} // namespace Service::PSM

View File

@ -57,6 +57,7 @@
#include "core/hle/service/pm/pm.h" #include "core/hle/service/pm/pm.h"
#include "core/hle/service/prepo/prepo.h" #include "core/hle/service/prepo/prepo.h"
#include "core/hle/service/psc/psc.h" #include "core/hle/service/psc/psc.h"
#include "core/hle/service/ptm/psm.h"
#include "core/hle/service/service.h" #include "core/hle/service/service.h"
#include "core/hle/service/set/settings.h" #include "core/hle/service/set/settings.h"
#include "core/hle/service/sm/sm.h" #include "core/hle/service/sm/sm.h"
@ -244,6 +245,7 @@ void Init(std::shared_ptr<SM::ServiceManager>& sm, FileSys::VfsFilesystem& vfs)
PlayReport::InstallInterfaces(*sm); PlayReport::InstallInterfaces(*sm);
PM::InstallInterfaces(*sm); PM::InstallInterfaces(*sm);
PSC::InstallInterfaces(*sm); PSC::InstallInterfaces(*sm);
PSM::InstallInterfaces(*sm);
Set::InstallInterfaces(*sm); Set::InstallInterfaces(*sm);
Sockets::InstallInterfaces(*sm); Sockets::InstallInterfaces(*sm);
SPL::InstallInterfaces(*sm); SPL::InstallInterfaces(*sm);