forked from eden-emu/eden
		
	Services: Stubbed APM::OpenSession and the ISession interface.
# Conflicts: # src/core/hle/service/am/applet_oe.cpp # src/core/hle/service/apm/apm.cpp
This commit is contained in:
		
							parent
							
								
									279e546493
								
							
						
					
					
						commit
						02b6fc7330
					
				
					 3 changed files with 53 additions and 2 deletions
				
			
		|  | @ -6,6 +6,7 @@ | |||
| #include "core/hle/ipc_helpers.h" | ||||
| #include "core/hle/kernel/event.h" | ||||
| #include "core/hle/service/am/applet_oe.h" | ||||
| #include "core/hle/service/apm/apm.h" | ||||
| 
 | ||||
| namespace Service { | ||||
| namespace AM { | ||||
|  | @ -184,7 +185,7 @@ private: | |||
|     void GetOperationMode(Kernel::HLERequestContext& ctx) { | ||||
|         IPC::RequestBuilder rb{ctx, 3}; | ||||
|         rb.Push(RESULT_SUCCESS); | ||||
|         rb.Push(static_cast<u8>(OperationMode::Handheld)); | ||||
|         rb.Push(static_cast<u32>(APM::PerformanceMode::Handheld)); | ||||
| 
 | ||||
|         LOG_WARNING(Service, "(STUBBED) called"); | ||||
|     } | ||||
|  |  | |||
|  | @ -13,12 +13,54 @@ void InstallInterfaces(SM::ServiceManager& service_manager) { | |||
|     std::make_shared<APM>()->InstallAsService(service_manager); | ||||
| } | ||||
| 
 | ||||
| class ISession final : public ServiceFramework<ISession> { | ||||
| public: | ||||
|     ISession() : ServiceFramework("ISession") { | ||||
|         static const FunctionInfo functions[] = { | ||||
|             {0, &ISession::SetPerformanceConfiguration, "SetPerformanceConfiguration"}, | ||||
|             {1, &ISession::GetPerformanceConfiguration, "GetPerformanceConfiguration"}, | ||||
|         }; | ||||
|         RegisterHandlers(functions); | ||||
|     } | ||||
| 
 | ||||
| private: | ||||
|     void SetPerformanceConfiguration(Kernel::HLERequestContext& ctx) { | ||||
|         IPC::RequestParser rp{ctx}; | ||||
| 
 | ||||
|         auto mode = static_cast<PerformanceMode>(rp.Pop<u32>()); | ||||
|         u32 config = rp.Pop<u32>(); | ||||
| 
 | ||||
|         IPC::RequestBuilder rb{ctx, 2}; | ||||
|         rb.Push(RESULT_SUCCESS); | ||||
| 
 | ||||
|         LOG_WARNING(Service, "(STUBBED) called mode=%u config=%u", static_cast<u32>(mode), config); | ||||
|     } | ||||
| 
 | ||||
|     void GetPerformanceConfiguration(Kernel::HLERequestContext& ctx) { | ||||
|         IPC::RequestParser rp{ctx}; | ||||
| 
 | ||||
|         auto mode = static_cast<PerformanceMode>(rp.Pop<u32>()); | ||||
| 
 | ||||
|         IPC::RequestBuilder rb{ctx, 3}; | ||||
|         rb.Push(RESULT_SUCCESS); | ||||
|         rb.Push<u32>(0); // Performance configuration
 | ||||
| 
 | ||||
|         LOG_WARNING(Service, "(STUBBED) called mode=%u", static_cast<u32>(mode)); | ||||
|     } | ||||
| }; | ||||
| 
 | ||||
| APM::APM() : ServiceFramework("apm") { | ||||
|     static const FunctionInfo functions[] = { | ||||
|         {0x00000000, nullptr, "OpenSession"}, {0x00000001, nullptr, "GetPerformanceMode"}, | ||||
|         {0x00000000, &APM::OpenSession, "OpenSession"}, {0x00000001, nullptr, "GetPerformanceMode"}, | ||||
|     }; | ||||
|     RegisterHandlers(functions); | ||||
| } | ||||
| 
 | ||||
| void APM::OpenSession(Kernel::HLERequestContext& ctx) { | ||||
|     IPC::RequestBuilder rb{ctx, 2, 0, 0, 1}; | ||||
|     rb.Push(RESULT_SUCCESS); | ||||
|     rb.PushIpcInterface<ISession>(); | ||||
| } | ||||
| 
 | ||||
| } // namespace APM
 | ||||
| } // namespace Service
 | ||||
|  |  | |||
|  | @ -9,10 +9,18 @@ | |||
| namespace Service { | ||||
| namespace APM { | ||||
| 
 | ||||
| enum class PerformanceMode : u8 { | ||||
|     Handheld = 0, | ||||
|     Docked = 1, | ||||
| }; | ||||
| 
 | ||||
| class APM final : public ServiceFramework<APM> { | ||||
| public: | ||||
|     APM(); | ||||
|     ~APM() = default; | ||||
| 
 | ||||
| private: | ||||
|     void OpenSession(Kernel::HLERequestContext& ctx); | ||||
| }; | ||||
| 
 | ||||
| /// Registers all AM services with the specified service manager.
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Subv
						Subv