applets: Add StubApplet
This will log all data it receives, log all calls to its methods and push dummy data into both channels on execution.
This commit is contained in:
parent
ec38b4e883
commit
699900eed0
|
@ -156,6 +156,8 @@ add_library(core STATIC
|
||||||
hle/service/am/applets/applets.h
|
hle/service/am/applets/applets.h
|
||||||
hle/service/am/applets/software_keyboard.cpp
|
hle/service/am/applets/software_keyboard.cpp
|
||||||
hle/service/am/applets/software_keyboard.h
|
hle/service/am/applets/software_keyboard.h
|
||||||
|
hle/service/am/applets/stub_applet.cpp
|
||||||
|
hle/service/am/applets/stub_applet.h
|
||||||
hle/service/am/idle.cpp
|
hle/service/am/idle.cpp
|
||||||
hle/service/am/idle.h
|
hle/service/am/idle.h
|
||||||
hle/service/am/omm.cpp
|
hle/service/am/omm.cpp
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
// Copyright 2018 yuzu emulator team
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "common/hex_util.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,31 @@
|
||||||
|
// Copyright 2018 yuzu emulator team
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <array>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include "common/common_funcs.h"
|
||||||
|
#include "common/swap.h"
|
||||||
|
#include "core/hle/service/am/am.h"
|
||||||
|
#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
|
Reference in New Issue