mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-31 07:59:02 -05:00 
			
		
		
		
	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:
		
							
								
								
									
										65
									
								
								src/core/hle/service/am/applets/stub_applet.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								src/core/hle/service/am/applets/stub_applet.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -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 | ||||
							
								
								
									
										31
									
								
								src/core/hle/service/am/applets/stub_applet.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								src/core/hle/service/am/applets/stub_applet.h
									
									
									
									
									
										Normal file
									
								
							| @@ -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
	
	Block a user
	 Zach Hilman
					Zach Hilman