Ver Fonte

psm: Stub GetChargerType

Used by LovePotion Lua Homebrew. Stubbed as connected to official Nintendo Switch dock.
Zach Hilman há 7 anos atrás
pai
commit
314a948373
2 ficheiros alterados com 27 adições e 24 exclusões
  1. 27 14
      src/core/hle/service/ptm/psm.cpp
  2. 0 10
      src/core/hle/service/ptm/psm.h

+ 27 - 14
src/core/hle/service/ptm/psm.cpp

@@ -12,13 +12,16 @@
 
 
 namespace Service::PSM {
 namespace Service::PSM {
 
 
-constexpr u32 BATTERY_FULLY_CHARGED = 100; // 100% Full
+constexpr u32 BATTERY_FULLY_CHARGED = 100;    // 100% Full
+constexpr u32 BATTERY_CURRENTLY_CHARGING = 1; // Plugged into an official dock
 
 
-PSM::PSM() : ServiceFramework{"psm"} {
-    // clang-format off
+class PSM final : public ServiceFramework<PSM> {
+public:
+    explicit PSM() : ServiceFramework{"psm"} {
+        // clang-format off
         static const FunctionInfo functions[] = {
         static const FunctionInfo functions[] = {
             {0, &PSM::GetBatteryChargePercentage, "GetBatteryChargePercentage"},
             {0, &PSM::GetBatteryChargePercentage, "GetBatteryChargePercentage"},
-            {1, nullptr, "GetChargerType"},
+            {1, &PSM::GetChargerType, "GetChargerType"},
             {2, nullptr, "EnableBatteryCharging"},
             {2, nullptr, "EnableBatteryCharging"},
             {3, nullptr, "DisableBatteryCharging"},
             {3, nullptr, "DisableBatteryCharging"},
             {4, nullptr, "IsBatteryChargingEnabled"},
             {4, nullptr, "IsBatteryChargingEnabled"},
@@ -36,20 +39,30 @@ PSM::PSM() : ServiceFramework{"psm"} {
             {16, nullptr, "GetBatteryChargeInfoEvent"},
             {16, nullptr, "GetBatteryChargeInfoEvent"},
             {17, nullptr, "GetBatteryChargeInfoFields"},
             {17, nullptr, "GetBatteryChargeInfoFields"},
         };
         };
-    // clang-format on
+        // clang-format on
 
 
-    RegisterHandlers(functions);
-}
+        RegisterHandlers(functions);
+    }
 
 
-PSM::~PSM() = default;
+    ~PSM() override = default;
 
 
-void PSM::GetBatteryChargePercentage(Kernel::HLERequestContext& ctx) {
-    LOG_WARNING(Service_PSM, "(STUBBED) called");
+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);
-}
+        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) {
 void InstallInterfaces(SM::ServiceManager& sm) {
     std::make_shared<PSM>()->InstallAsService(sm);
     std::make_shared<PSM>()->InstallAsService(sm);

+ 0 - 10
src/core/hle/service/ptm/psm.h

@@ -3,7 +3,6 @@
 // Refer to the license.txt file included.
 // Refer to the license.txt file included.
 
 
 #pragma once
 #pragma once
-#include "core/hle/service/service.h"
 
 
 namespace Service::SM {
 namespace Service::SM {
 class ServiceManager;
 class ServiceManager;
@@ -11,15 +10,6 @@ class ServiceManager;
 
 
 namespace Service::PSM {
 namespace Service::PSM {
 
 
-class PSM final : public ServiceFramework<PSM> {
-public:
-    explicit PSM();
-    ~PSM() override;
-
-private:
-    void GetBatteryChargePercentage(Kernel::HLERequestContext& ctx);
-};
-
 void InstallInterfaces(SM::ServiceManager& sm);
 void InstallInterfaces(SM::ServiceManager& sm);
 
 
 } // namespace Service::PSM
 } // namespace Service::PSM