diff options
| author | Zach Hilman <zachhilman@gmail.com> | 2018-10-20 17:22:15 -0400 | 
|---|---|---|
| committer | Zach Hilman <zachhilman@gmail.com> | 2018-10-20 18:01:07 -0400 | 
| commit | 3b8c0f8885c9e590f4317d8de51ea3d669ccdfcd (patch) | |
| tree | 61b10c6249df5732518963b66ad75d0ac13fb3b8 | |
| parent | 8dc7db7e33ff47700d0d08c9d20f0b47a0b9622b (diff) | |
service: Add skeleton for psm service
Seems to be the power controller. Listed in switchbrew under the category PTM services.
| -rw-r--r-- | src/common/logging/log.h | 1 | ||||
| -rw-r--r-- | src/core/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/core/hle/service/ptm/psm.cpp | 48 | ||||
| -rw-r--r-- | src/core/hle/service/ptm/psm.h | 22 | ||||
| -rw-r--r-- | src/core/hle/service/service.cpp | 2 | 
5 files changed, 75 insertions, 0 deletions
| diff --git a/src/common/logging/log.h b/src/common/logging/log.h index abbd056ee..c9161155a 100644 --- a/src/common/logging/log.h +++ b/src/common/logging/log.h @@ -91,6 +91,7 @@ enum class Class : ClassType {      Service_PM,        ///< The PM service      Service_PREPO,     ///< The PREPO (Play report) service      Service_PSC,       ///< The PSC service +    Service_PSM,       ///< The PSM service      Service_SET,       ///< The SET (Settings) service      Service_SM,        ///< The SM (Service manager) service      Service_SPL,       ///< The SPL service diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 4755ec822..5efc382ba 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -327,6 +327,8 @@ add_library(core STATIC      hle/service/prepo/prepo.h      hle/service/psc/psc.cpp      hle/service/psc/psc.h +    hle/service/ptm/psm.cpp +    hle/service/ptm/psm.h      hle/service/service.cpp      hle/service/service.h      hle/service/set/set.cpp diff --git a/src/core/hle/service/ptm/psm.cpp b/src/core/hle/service/ptm/psm.cpp new file mode 100644 index 000000000..f6186b809 --- /dev/null +++ b/src/core/hle/service/ptm/psm.cpp @@ -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 diff --git a/src/core/hle/service/ptm/psm.h b/src/core/hle/service/ptm/psm.h new file mode 100644 index 000000000..21955aa22 --- /dev/null +++ b/src/core/hle/service/ptm/psm.h @@ -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 diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index a225cb4cb..fdd65cc68 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp @@ -57,6 +57,7 @@  #include "core/hle/service/pm/pm.h"  #include "core/hle/service/prepo/prepo.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/set/settings.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);      PM::InstallInterfaces(*sm);      PSC::InstallInterfaces(*sm); +    PSM::InstallInterfaces(*sm);      Set::InstallInterfaces(*sm);      Sockets::InstallInterfaces(*sm);      SPL::InstallInterfaces(*sm); | 
