Browse Source
Merge pull request #1770 from DarkLordZach/applet-stub
Merge pull request #1770 from DarkLordZach/applet-stub
applets: Add StubApplet and use it as fallback when AppletId is not implementednce_cpp
committed by
GitHub
4 changed files with 102 additions and 4 deletions
-
2src/core/CMakeLists.txt
-
10src/core/hle/service/am/am.cpp
-
70src/core/hle/service/am/applets/stub_applet.cpp
-
24src/core/hle/service/am/applets/stub_applet.h
@ -0,0 +1,70 @@ |
|||
// Copyright 2018 yuzu emulator team
|
|||
// Licensed under GPLv2 or any later version
|
|||
// Refer to the license.txt file included.
|
|||
|
|||
#include <string>
|
|||
|
|||
#include "common/hex_util.h"
|
|||
#include "common/logging/log.h"
|
|||
#include "core/hle/result.h"
|
|||
#include "core/hle/service/am/am.h"
|
|||
#include "core/hle/service/am/applets/stub_applet.h"
|
|||
|
|||
namespace Service::AM::Applets { |
|||
|
|||
static void LogCurrentStorage(AppletDataBroker& broker, std::string prefix) { |
|||
std::unique_ptr<IStorage> storage = broker.PopNormalDataToApplet(); |
|||
for (; storage != nullptr; storage = broker.PopNormalDataToApplet()) { |
|||
const auto data = storage->GetData(); |
|||
LOG_INFO(Service_AM, |
|||
"called (STUBBED), during {} recieved normal data with size={:08X}, data={}", |
|||
prefix, data.size(), Common::HexVectorToString(data)); |
|||
} |
|||
|
|||
storage = broker.PopInteractiveDataToApplet(); |
|||
for (; storage != nullptr; storage = broker.PopInteractiveDataToApplet()) { |
|||
const auto data = storage->GetData(); |
|||
LOG_INFO(Service_AM, |
|||
"called (STUBBED), during {} recieved interactive data with size={:08X}, data={}", |
|||
prefix, data.size(), Common::HexVectorToString(data)); |
|||
} |
|||
} |
|||
|
|||
StubApplet::StubApplet() = default; |
|||
|
|||
StubApplet::~StubApplet() = default; |
|||
|
|||
void StubApplet::Initialize() { |
|||
LOG_WARNING(Service_AM, "called (STUBBED)"); |
|||
Applet::Initialize(); |
|||
LogCurrentStorage(broker, "Initialize"); |
|||
} |
|||
|
|||
bool StubApplet::TransactionComplete() const { |
|||
LOG_WARNING(Service_AM, "called (STUBBED)"); |
|||
return true; |
|||
} |
|||
|
|||
ResultCode StubApplet::GetStatus() const { |
|||
LOG_WARNING(Service_AM, "called (STUBBED)"); |
|||
return RESULT_SUCCESS; |
|||
} |
|||
|
|||
void StubApplet::ExecuteInteractive() { |
|||
LOG_WARNING(Service_AM, "called (STUBBED)"); |
|||
LogCurrentStorage(broker, "ExecuteInteractive"); |
|||
|
|||
broker.PushNormalDataFromApplet(IStorage{std::vector<u8>(0x1000)}); |
|||
broker.PushInteractiveDataFromApplet(IStorage{std::vector<u8>(0x1000)}); |
|||
broker.SignalStateChanged(); |
|||
} |
|||
|
|||
void StubApplet::Execute() { |
|||
LOG_WARNING(Service_AM, "called (STUBBED)"); |
|||
LogCurrentStorage(broker, "Execute"); |
|||
|
|||
broker.PushNormalDataFromApplet(IStorage{std::vector<u8>(0x1000)}); |
|||
broker.PushInteractiveDataFromApplet(IStorage{std::vector<u8>(0x1000)}); |
|||
broker.SignalStateChanged(); |
|||
} |
|||
} // namespace Service::AM::Applets
|
|||
@ -0,0 +1,24 @@ |
|||
// 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/am/applets/applets.h" |
|||
|
|||
namespace Service::AM::Applets { |
|||
|
|||
class StubApplet final : public Applet { |
|||
public: |
|||
StubApplet(); |
|||
~StubApplet() override; |
|||
|
|||
void Initialize() override; |
|||
|
|||
bool TransactionComplete() const override; |
|||
ResultCode GetStatus() const override; |
|||
void ExecuteInteractive() override; |
|||
void Execute() override; |
|||
}; |
|||
|
|||
} // namespace Service::AM::Applets |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue