9 changed files with 187 additions and 54 deletions
-
6src/core/CMakeLists.txt
-
34src/core/hle/service/am/global_state_controller.cpp
-
16src/core/hle/service/am/global_state_controller.h
-
52src/core/hle/service/am/service/cradle_firmware_updater.cpp
-
37src/core/hle/service/am/service/cradle_firmware_updater.h
-
61src/core/hle/service/am/service/global_state_controller.cpp
-
31src/core/hle/service/am/service/global_state_controller.h
-
2src/core/hle/service/am/service/library_applet_proxy.cpp
-
2src/core/hle/service/am/service/system_applet_proxy.cpp
@ -1,34 +0,0 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|||
|
|||
#include "core/hle/service/am/global_state_controller.h"
|
|||
#include "core/hle/service/ipc_helpers.h"
|
|||
|
|||
namespace Service::AM { |
|||
|
|||
IGlobalStateController::IGlobalStateController(Core::System& system_) |
|||
: ServiceFramework{system_, "IGlobalStateController"} { |
|||
// clang-format off
|
|||
static const FunctionInfo functions[] = { |
|||
{0, nullptr, "RequestToEnterSleep"}, |
|||
{1, nullptr, "EnterSleep"}, |
|||
{2, nullptr, "StartSleepSequence"}, |
|||
{3, nullptr, "StartShutdownSequence"}, |
|||
{4, nullptr, "StartRebootSequence"}, |
|||
{9, nullptr, "IsAutoPowerDownRequested"}, |
|||
{10, nullptr, "LoadAndApplyIdlePolicySettings"}, |
|||
{11, nullptr, "NotifyCecSettingsChanged"}, |
|||
{12, nullptr, "SetDefaultHomeButtonLongPressTime"}, |
|||
{13, nullptr, "UpdateDefaultDisplayResolution"}, |
|||
{14, nullptr, "ShouldSleepOnBoot"}, |
|||
{15, nullptr, "GetHdcpAuthenticationFailedEvent"}, |
|||
{30, nullptr, "OpenCradleFirmwareUpdater"}, |
|||
}; |
|||
// clang-format on
|
|||
|
|||
RegisterHandlers(functions); |
|||
} |
|||
|
|||
IGlobalStateController::~IGlobalStateController() = default; |
|||
|
|||
} // namespace Service::AM
|
|||
@ -1,16 +0,0 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project |
|||
// SPDX-License-Identifier: GPL-2.0-or-later |
|||
|
|||
#pragma once |
|||
|
|||
#include "core/hle/service/service.h" |
|||
|
|||
namespace Service::AM { |
|||
|
|||
class IGlobalStateController final : public ServiceFramework<IGlobalStateController> { |
|||
public: |
|||
explicit IGlobalStateController(Core::System& system_); |
|||
~IGlobalStateController() override; |
|||
}; |
|||
|
|||
} // namespace Service::AM |
|||
@ -0,0 +1,52 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|||
|
|||
#include "core/hle/service/am/service/cradle_firmware_updater.h"
|
|||
#include "core/hle/service/cmif_serialization.h"
|
|||
|
|||
namespace Service::AM { |
|||
|
|||
ICradleFirmwareUpdater::ICradleFirmwareUpdater(Core::System& system_) |
|||
: ServiceFramework{system_, "ICradleFirmwareUpdater"}, |
|||
m_context{system, "ICradleFirmwareUpdater"}, m_cradle_device_info_event{m_context} { |
|||
// clang-format off
|
|||
static const FunctionInfo functions[] = { |
|||
{0, D<&ICradleFirmwareUpdater::StartUpdate>, "StartUpdate"}, |
|||
{1, D<&ICradleFirmwareUpdater::FinishUpdate>, "FinishUpdate"}, |
|||
{2, D<&ICradleFirmwareUpdater::GetCradleDeviceInfo>, "GetCradleDeviceInfo"}, |
|||
{3, D<&ICradleFirmwareUpdater::GetCradleDeviceInfoChangeEvent>, "GetCradleDeviceInfoChangeEvent"}, |
|||
{4, nullptr, "GetUpdateProgressInfo"}, |
|||
{5, nullptr, "GetLastInternalResult"}, |
|||
|
|||
}; |
|||
// clang-format on
|
|||
|
|||
RegisterHandlers(functions); |
|||
} |
|||
|
|||
ICradleFirmwareUpdater::~ICradleFirmwareUpdater() = default; |
|||
|
|||
Result ICradleFirmwareUpdater::StartUpdate() { |
|||
LOG_WARNING(Service_AM, "(STUBBED) called"); |
|||
R_SUCCEED(); |
|||
} |
|||
|
|||
Result ICradleFirmwareUpdater::FinishUpdate() { |
|||
LOG_WARNING(Service_AM, "(STUBBED) called"); |
|||
R_SUCCEED(); |
|||
} |
|||
|
|||
Result ICradleFirmwareUpdater::GetCradleDeviceInfo(Out<CradleDeviceInfo> out_cradle_device_info) { |
|||
LOG_WARNING(Service_AM, "(STUBBED) called"); |
|||
*out_cradle_device_info = {}; |
|||
R_SUCCEED(); |
|||
} |
|||
|
|||
Result ICradleFirmwareUpdater::GetCradleDeviceInfoChangeEvent( |
|||
OutCopyHandle<Kernel::KReadableEvent> out_event) { |
|||
LOG_WARNING(Service_AM, "(STUBBED) called"); |
|||
*out_event = m_cradle_device_info_event.GetHandle(); |
|||
R_SUCCEED(); |
|||
} |
|||
|
|||
} // namespace Service::AM
|
|||
@ -0,0 +1,37 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project |
|||
// SPDX-License-Identifier: GPL-2.0-or-later |
|||
|
|||
#pragma once |
|||
|
|||
#include "core/hle/service/cmif_types.h" |
|||
#include "core/hle/service/kernel_helpers.h" |
|||
#include "core/hle/service/os/event.h" |
|||
#include "core/hle/service/service.h" |
|||
|
|||
namespace Service::AM { |
|||
|
|||
struct CradleDeviceInfo { |
|||
bool unknown0; |
|||
bool unknown1; |
|||
bool unknown2; |
|||
u64 unknown3; |
|||
}; |
|||
static_assert(sizeof(CradleDeviceInfo) == 0x10, "CradleDeviceInfo has incorrect size"); |
|||
|
|||
class ICradleFirmwareUpdater final : public ServiceFramework<ICradleFirmwareUpdater> { |
|||
public: |
|||
explicit ICradleFirmwareUpdater(Core::System& system_); |
|||
~ICradleFirmwareUpdater() override; |
|||
|
|||
private: |
|||
Result StartUpdate(); |
|||
Result FinishUpdate(); |
|||
Result GetCradleDeviceInfo(Out<CradleDeviceInfo> out_cradle_device_info); |
|||
Result GetCradleDeviceInfoChangeEvent(OutCopyHandle<Kernel::KReadableEvent> out_event); |
|||
|
|||
private: |
|||
KernelHelpers::ServiceContext m_context; |
|||
Event m_cradle_device_info_event; |
|||
}; |
|||
|
|||
} // namespace Service::AM |
|||
@ -0,0 +1,61 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|||
|
|||
#include "core/hle/service/am/service/cradle_firmware_updater.h"
|
|||
#include "core/hle/service/am/service/global_state_controller.h"
|
|||
#include "core/hle/service/cmif_serialization.h"
|
|||
|
|||
namespace Service::AM { |
|||
|
|||
IGlobalStateController::IGlobalStateController(Core::System& system_) |
|||
: ServiceFramework{system_, "IGlobalStateController"}, |
|||
m_context{system_, "IGlobalStateController"}, m_hdcp_authentication_failed_event{m_context} { |
|||
// clang-format off
|
|||
static const FunctionInfo functions[] = { |
|||
{0, nullptr, "RequestToEnterSleep"}, |
|||
{1, nullptr, "EnterSleep"}, |
|||
{2, nullptr, "StartSleepSequence"}, |
|||
{3, nullptr, "StartShutdownSequence"}, |
|||
{4, nullptr, "StartRebootSequence"}, |
|||
{9, nullptr, "IsAutoPowerDownRequested"}, |
|||
{10, D<&IGlobalStateController::LoadAndApplyIdlePolicySettings>, "LoadAndApplyIdlePolicySettings"}, |
|||
{11, nullptr, "NotifyCecSettingsChanged"}, |
|||
{12, nullptr, "SetDefaultHomeButtonLongPressTime"}, |
|||
{13, nullptr, "UpdateDefaultDisplayResolution"}, |
|||
{14, D<&IGlobalStateController::ShouldSleepOnBoot>, "ShouldSleepOnBoot"}, |
|||
{15, D<&IGlobalStateController::GetHdcpAuthenticationFailedEvent>, "GetHdcpAuthenticationFailedEvent"}, |
|||
{30, D<&IGlobalStateController::OpenCradleFirmwareUpdater>, "OpenCradleFirmwareUpdater"}, |
|||
}; |
|||
// clang-format on
|
|||
|
|||
RegisterHandlers(functions); |
|||
} |
|||
|
|||
IGlobalStateController::~IGlobalStateController() = default; |
|||
|
|||
Result IGlobalStateController::LoadAndApplyIdlePolicySettings() { |
|||
LOG_WARNING(Service_AM, "(STUBBED) called"); |
|||
R_SUCCEED(); |
|||
} |
|||
|
|||
Result IGlobalStateController::ShouldSleepOnBoot(Out<bool> out_should_sleep_on_boot) { |
|||
LOG_INFO(Service_AM, "called"); |
|||
*out_should_sleep_on_boot = false; |
|||
R_SUCCEED(); |
|||
} |
|||
|
|||
Result IGlobalStateController::GetHdcpAuthenticationFailedEvent( |
|||
OutCopyHandle<Kernel::KReadableEvent> out_event) { |
|||
LOG_INFO(Service_AM, "called"); |
|||
*out_event = m_hdcp_authentication_failed_event.GetHandle(); |
|||
R_SUCCEED(); |
|||
} |
|||
|
|||
Result IGlobalStateController::OpenCradleFirmwareUpdater( |
|||
Out<SharedPointer<ICradleFirmwareUpdater>> out_cradle_firmware_updater) { |
|||
LOG_INFO(Service_AM, "called"); |
|||
*out_cradle_firmware_updater = std::make_shared<ICradleFirmwareUpdater>(system); |
|||
R_SUCCEED(); |
|||
} |
|||
|
|||
} // namespace Service::AM
|
|||
@ -0,0 +1,31 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project |
|||
// SPDX-License-Identifier: GPL-2.0-or-later |
|||
|
|||
#pragma once |
|||
|
|||
#include "core/hle/service/cmif_types.h" |
|||
#include "core/hle/service/kernel_helpers.h" |
|||
#include "core/hle/service/os/event.h" |
|||
#include "core/hle/service/service.h" |
|||
|
|||
namespace Service::AM { |
|||
|
|||
class ICradleFirmwareUpdater; |
|||
|
|||
class IGlobalStateController final : public ServiceFramework<IGlobalStateController> { |
|||
public: |
|||
explicit IGlobalStateController(Core::System& system_); |
|||
~IGlobalStateController() override; |
|||
|
|||
private: |
|||
Result LoadAndApplyIdlePolicySettings(); |
|||
Result ShouldSleepOnBoot(Out<bool> out_should_sleep_on_boot); |
|||
Result GetHdcpAuthenticationFailedEvent(OutCopyHandle<Kernel::KReadableEvent> out_event); |
|||
Result OpenCradleFirmwareUpdater( |
|||
Out<SharedPointer<ICradleFirmwareUpdater>> out_cradle_firmware_updater); |
|||
|
|||
KernelHelpers::ServiceContext m_context; |
|||
Event m_hdcp_authentication_failed_event; |
|||
}; |
|||
|
|||
} // namespace Service::AM |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue