diff options
Diffstat (limited to 'src/core/hle/service')
| -rw-r--r-- | src/core/hle/service/ptm/psm.cpp | 71 | ||||
| -rw-r--r-- | src/core/hle/service/ptm/psm.h | 15 | ||||
| -rw-r--r-- | src/core/hle/service/service.cpp | 2 | 
3 files changed, 88 insertions, 0 deletions
diff --git a/src/core/hle/service/ptm/psm.cpp b/src/core/hle/service/ptm/psm.cpp new file mode 100644 index 000000000..c2d5fda94 --- /dev/null +++ b/src/core/hle/service/ptm/psm.cpp @@ -0,0 +1,71 @@ +// 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 { + +constexpr u32 BATTERY_FULLY_CHARGED = 100;    // 100% Full +constexpr u32 BATTERY_CURRENTLY_CHARGING = 1; // Plugged into an official dock + +class PSM final : public ServiceFramework<PSM> { +public: +    explicit PSM() : ServiceFramework{"psm"} { +        // clang-format off +        static const FunctionInfo functions[] = { +            {0, &PSM::GetBatteryChargePercentage, "GetBatteryChargePercentage"}, +            {1, &PSM::GetChargerType, "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() override = default; + +private: +    void GetBatteryChargePercentage(Kernel::HLERequestContext& ctx) { +        LOG_WARNING(Service_PSM, "(STUBBED) called"); + +        IPC::ResponseBuilder rb{ctx, 3}; +        rb.Push(RESULT_SUCCESS); +        rb.Push<u32>(BATTERY_FULLY_CHARGED); +    } + +    void GetChargerType(Kernel::HLERequestContext& ctx) { +        LOG_WARNING(Service_PSM, "(STUBBED) called"); + +        IPC::ResponseBuilder rb{ctx, 3}; +        rb.Push(RESULT_SUCCESS); +        rb.Push<u32>(BATTERY_CURRENTLY_CHARGING); +    } +}; + +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..a286793ae --- /dev/null +++ b/src/core/hle/service/ptm/psm.h @@ -0,0 +1,15 @@ +// Copyright 2018 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +namespace Service::SM { +class ServiceManager; +} + +namespace Service::PSM { + +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 dd6c6d3b3..a4cf45267 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp @@ -58,6 +58,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" @@ -246,6 +247,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);  | 
