mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	Merge pull request #161 from bunnei/service-improvements
Many service improvements
This commit is contained in:
		
						commit
						35517ca92c
					
				| @ -32,14 +32,20 @@ namespace Log { | |||||||
|     CLS(Kernel)                                                                                    \ |     CLS(Kernel)                                                                                    \ | ||||||
|     SUB(Kernel, SVC)                                                                               \ |     SUB(Kernel, SVC)                                                                               \ | ||||||
|     CLS(Service)                                                                                   \ |     CLS(Service)                                                                                   \ | ||||||
|     SUB(Service, SM)                                                                               \ |     SUB(Service, ACC)                                                                              \ | ||||||
|     SUB(Service, FS)                                                                               \ |  | ||||||
|     SUB(Service, GSP)                                                                              \ |  | ||||||
|     SUB(Service, CFG)                                                                              \ |  | ||||||
|     SUB(Service, DSP)                                                                              \ |  | ||||||
|     SUB(Service, HID)                                                                              \ |  | ||||||
|     SUB(Service, NVDRV)                                                                            \ |  | ||||||
|     SUB(Service, Audio)                                                                            \ |     SUB(Service, Audio)                                                                            \ | ||||||
|  |     SUB(Service, AM)                                                                               \ | ||||||
|  |     SUB(Service, APM)                                                                              \ | ||||||
|  |     SUB(Service, FS)                                                                               \ | ||||||
|  |     SUB(Service, HID)                                                                              \ | ||||||
|  |     SUB(Service, LM)                                                                               \ | ||||||
|  |     SUB(Service, NIFM)                                                                             \ | ||||||
|  |     SUB(Service, NVDRV)                                                                            \ | ||||||
|  |     SUB(Service, PCTL)                                                                             \ | ||||||
|  |     SUB(Service, SET)                                                                              \ | ||||||
|  |     SUB(Service, SM)                                                                               \ | ||||||
|  |     SUB(Service, Time)                                                                             \ | ||||||
|  |     SUB(Service, VI)                                                                               \ | ||||||
|     CLS(HW)                                                                                        \ |     CLS(HW)                                                                                        \ | ||||||
|     SUB(HW, Memory)                                                                                \ |     SUB(HW, Memory)                                                                                \ | ||||||
|     SUB(HW, LCD)                                                                                   \ |     SUB(HW, LCD)                                                                                   \ | ||||||
|  | |||||||
| @ -49,14 +49,20 @@ enum class Class : ClassType { | |||||||
|     Kernel_SVC,        ///< Kernel system calls
 |     Kernel_SVC,        ///< Kernel system calls
 | ||||||
|     Service,           ///< HLE implementation of system services. Each major service
 |     Service,           ///< HLE implementation of system services. Each major service
 | ||||||
|                        ///  should have its own subclass.
 |                        ///  should have its own subclass.
 | ||||||
|     Service_SM,        ///< The SRV (Service Directory) implementation
 |     Service_ACC,       ///< The ACC (Accounts) service
 | ||||||
|     Service_FS,        ///< The FS (Filesystem) service implementation
 |     Service_AM,        ///< The AM (Applet manager) service
 | ||||||
|     Service_GSP,       ///< The GSP (GPU control) service
 |     Service_APM,       ///< The APM (Performance) service
 | ||||||
|     Service_CFG,       ///< The CFG (Configuration) service
 |  | ||||||
|     Service_DSP,       ///< The DSP (DSP control) service
 |  | ||||||
|     Service_HID,       ///< The HID (Human interface device) service
 |  | ||||||
|     Service_NVDRV,     ///< The NVDRV (Nvidia driver) service
 |  | ||||||
|     Service_Audio,     ///< The Audio (Audio control) service
 |     Service_Audio,     ///< The Audio (Audio control) service
 | ||||||
|  |     Service_FS,        ///< The FS (Filesystem) service
 | ||||||
|  |     Service_HID,       ///< The HID (Human interface device) service
 | ||||||
|  |     Service_LM,        ///< The LM (Logger) service
 | ||||||
|  |     Service_NIFM,      ///< The NIFM (Network interface) service
 | ||||||
|  |     Service_NVDRV,     ///< The NVDRV (Nvidia driver) service
 | ||||||
|  |     Service_PCTL,      ///< The PCTL (Parental control) service
 | ||||||
|  |     Service_SET,       ///< The SET (Settings) service
 | ||||||
|  |     Service_SM,        ///< The SM (Service manager) service
 | ||||||
|  |     Service_Time,      ///< The time service
 | ||||||
|  |     Service_VI,        ///< The VI (Video interface) service
 | ||||||
|     HW,                ///< Low-level hardware emulation
 |     HW,                ///< Low-level hardware emulation
 | ||||||
|     HW_Memory,         ///< Memory-map and address translation
 |     HW_Memory,         ///< Memory-map and address translation
 | ||||||
|     HW_LCD,            ///< LCD register emulation
 |     HW_LCD,            ///< LCD register emulation
 | ||||||
|  | |||||||
| @ -20,7 +20,7 @@ public: | |||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     void GetBase(Kernel::HLERequestContext& ctx) { |     void GetBase(Kernel::HLERequestContext& ctx) { | ||||||
|         LOG_WARNING(Service, "(STUBBED) called"); |         LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||||||
|         ProfileBase profile_base{}; |         ProfileBase profile_base{}; | ||||||
|         IPC::ResponseBuilder rb{ctx, 16}; |         IPC::ResponseBuilder rb{ctx, 16}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
| @ -40,14 +40,14 @@ public: | |||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     void CheckAvailability(Kernel::HLERequestContext& ctx) { |     void CheckAvailability(Kernel::HLERequestContext& ctx) { | ||||||
|         LOG_WARNING(Service, "(STUBBED) called"); |         LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||||||
|         IPC::ResponseBuilder rb{ctx, 3}; |         IPC::ResponseBuilder rb{ctx, 3}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.Push(true); // TODO: Check when this is supposed to return true and when not
 |         rb.Push(true); // TODO: Check when this is supposed to return true and when not
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetAccountId(Kernel::HLERequestContext& ctx) { |     void GetAccountId(Kernel::HLERequestContext& ctx) { | ||||||
|         LOG_WARNING(Service, "(STUBBED) called"); |         LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||||||
|         IPC::ResponseBuilder rb{ctx, 4}; |         IPC::ResponseBuilder rb{ctx, 4}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.Push<u64>(0x12345678ABCDEF); |         rb.Push<u64>(0x12345678ABCDEF); | ||||||
| @ -55,7 +55,7 @@ private: | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| void ACC_U0::GetUserExistence(Kernel::HLERequestContext& ctx) { | void ACC_U0::GetUserExistence(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||||||
|     IPC::ResponseBuilder rb{ctx, 3}; |     IPC::ResponseBuilder rb{ctx, 3}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.Push(true); // TODO: Check when this is supposed to return true and when not
 |     rb.Push(true); // TODO: Check when this is supposed to return true and when not
 | ||||||
| @ -65,11 +65,11 @@ void ACC_U0::GetProfile(Kernel::HLERequestContext& ctx) { | |||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<IProfile>(); |     rb.PushIpcInterface<IProfile>(); | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_ACC, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ACC_U0::InitializeApplicationInfo(Kernel::HLERequestContext& ctx) { | void ACC_U0::InitializeApplicationInfo(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||||||
|     IPC::ResponseBuilder rb{ctx, 2}; |     IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
| } | } | ||||||
| @ -78,12 +78,21 @@ void ACC_U0::GetBaasAccountManagerForApplication(Kernel::HLERequestContext& ctx) | |||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<IManagerForApplication>(); |     rb.PushIpcInterface<IManagerForApplication>(); | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_ACC, "called"); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void ACC_U0::GetLastOpenedUser(Kernel::HLERequestContext& ctx) { | ||||||
|  |     LOG_WARNING(Service_ACC, "(STUBBED) called"); | ||||||
|  |     IPC::ResponseBuilder rb{ctx, 6}; | ||||||
|  |     rb.Push(RESULT_SUCCESS); | ||||||
|  |     rb.Push<u64>(0x0); | ||||||
|  |     rb.Push<u64>(0x0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ACC_U0::ACC_U0() : ServiceFramework("acc:u0") { | ACC_U0::ACC_U0() : ServiceFramework("acc:u0") { | ||||||
|     static const FunctionInfo functions[] = { |     static const FunctionInfo functions[] = { | ||||||
|         {1, &ACC_U0::GetUserExistence, "GetUserExistence"}, |         {1, &ACC_U0::GetUserExistence, "GetUserExistence"}, | ||||||
|  |         {4, &ACC_U0::GetLastOpenedUser, "GetLastOpenedUser"}, | ||||||
|         {5, &ACC_U0::GetProfile, "GetProfile"}, |         {5, &ACC_U0::GetProfile, "GetProfile"}, | ||||||
|         {100, &ACC_U0::InitializeApplicationInfo, "InitializeApplicationInfo"}, |         {100, &ACC_U0::InitializeApplicationInfo, "InitializeApplicationInfo"}, | ||||||
|         {101, &ACC_U0::GetBaasAccountManagerForApplication, "GetBaasAccountManagerForApplication"}, |         {101, &ACC_U0::GetBaasAccountManagerForApplication, "GetBaasAccountManagerForApplication"}, | ||||||
|  | |||||||
| @ -28,6 +28,7 @@ public: | |||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     void GetUserExistence(Kernel::HLERequestContext& ctx); |     void GetUserExistence(Kernel::HLERequestContext& ctx); | ||||||
|  |     void GetLastOpenedUser(Kernel::HLERequestContext& ctx); | ||||||
|     void GetProfile(Kernel::HLERequestContext& ctx); |     void GetProfile(Kernel::HLERequestContext& ctx); | ||||||
|     void InitializeApplicationInfo(Kernel::HLERequestContext& ctx); |     void InitializeApplicationInfo(Kernel::HLERequestContext& ctx); | ||||||
|     void GetBaasAccountManagerForApplication(Kernel::HLERequestContext& ctx); |     void GetBaasAccountManagerForApplication(Kernel::HLERequestContext& ctx); | ||||||
|  | |||||||
| @ -22,14 +22,14 @@ IWindowController::IWindowController() : ServiceFramework("IWindowController") { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IWindowController::GetAppletResourceUserId(Kernel::HLERequestContext& ctx) { | void IWindowController::GetAppletResourceUserId(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||||
|     IPC::ResponseBuilder rb{ctx, 4}; |     IPC::ResponseBuilder rb{ctx, 4}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.Push<u64>(0); |     rb.Push<u64>(0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IWindowController::AcquireForegroundRights(Kernel::HLERequestContext& ctx) { | void IWindowController::AcquireForegroundRights(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||||
|     IPC::ResponseBuilder rb{ctx, 2}; |     IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
| } | } | ||||||
| @ -73,14 +73,14 @@ void ISelfController::SetFocusHandlingMode(Kernel::HLERequestContext& ctx) { | |||||||
|     IPC::ResponseBuilder rb{ctx, 2}; |     IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ISelfController::SetRestartMessageEnabled(Kernel::HLERequestContext& ctx) { | void ISelfController::SetRestartMessageEnabled(Kernel::HLERequestContext& ctx) { | ||||||
|     IPC::ResponseBuilder rb{ctx, 2}; |     IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ISelfController::SetPerformanceModeChangedNotification(Kernel::HLERequestContext& ctx) { | void ISelfController::SetPerformanceModeChangedNotification(Kernel::HLERequestContext& ctx) { | ||||||
| @ -91,7 +91,7 @@ void ISelfController::SetPerformanceModeChangedNotification(Kernel::HLERequestCo | |||||||
|     IPC::ResponseBuilder rb{ctx, 2}; |     IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called flag=%u", static_cast<u32>(flag)); |     LOG_WARNING(Service_AM, "(STUBBED) called flag=%u", static_cast<u32>(flag)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ISelfController::SetOperationModeChangedNotification(Kernel::HLERequestContext& ctx) { | void ISelfController::SetOperationModeChangedNotification(Kernel::HLERequestContext& ctx) { | ||||||
| @ -102,7 +102,7 @@ void ISelfController::SetOperationModeChangedNotification(Kernel::HLERequestCont | |||||||
|     IPC::ResponseBuilder rb{ctx, 2}; |     IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called flag=%u", static_cast<u32>(flag)); |     LOG_WARNING(Service_AM, "(STUBBED) called flag=%u", static_cast<u32>(flag)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ISelfController::SetOutOfFocusSuspendingEnabled(Kernel::HLERequestContext& ctx) { | void ISelfController::SetOutOfFocusSuspendingEnabled(Kernel::HLERequestContext& ctx) { | ||||||
| @ -115,21 +115,21 @@ void ISelfController::SetOutOfFocusSuspendingEnabled(Kernel::HLERequestContext& | |||||||
|     IPC::ResponseBuilder rb{ctx, 2}; |     IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called enabled=%u", static_cast<u32>(enabled)); |     LOG_WARNING(Service_AM, "(STUBBED) called enabled=%u", static_cast<u32>(enabled)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ISelfController::LockExit(Kernel::HLERequestContext& ctx) { | void ISelfController::LockExit(Kernel::HLERequestContext& ctx) { | ||||||
|     IPC::ResponseBuilder rb{ctx, 2}; |     IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ISelfController::UnlockExit(Kernel::HLERequestContext& ctx) { | void ISelfController::UnlockExit(Kernel::HLERequestContext& ctx) { | ||||||
|     IPC::ResponseBuilder rb{ctx, 2}; |     IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ISelfController::CreateManagedDisplayLayer(Kernel::HLERequestContext& ctx) { | void ISelfController::CreateManagedDisplayLayer(Kernel::HLERequestContext& ctx) { | ||||||
| @ -142,7 +142,7 @@ void ISelfController::CreateManagedDisplayLayer(Kernel::HLERequestContext& ctx) | |||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.Push(layer_id); |     rb.Push(layer_id); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ICommonStateGetter::ICommonStateGetter() : ServiceFramework("ICommonStateGetter") { | ICommonStateGetter::ICommonStateGetter() : ServiceFramework("ICommonStateGetter") { | ||||||
| @ -165,7 +165,7 @@ void ICommonStateGetter::GetEventHandle(Kernel::HLERequestContext& ctx) { | |||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushCopyObjects(event); |     rb.PushCopyObjects(event); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ICommonStateGetter::ReceiveMessage(Kernel::HLERequestContext& ctx) { | void ICommonStateGetter::ReceiveMessage(Kernel::HLERequestContext& ctx) { | ||||||
| @ -173,7 +173,7 @@ void ICommonStateGetter::ReceiveMessage(Kernel::HLERequestContext& ctx) { | |||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.Push<u32>(15); |     rb.Push<u32>(15); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ICommonStateGetter::GetCurrentFocusState(Kernel::HLERequestContext& ctx) { | void ICommonStateGetter::GetCurrentFocusState(Kernel::HLERequestContext& ctx) { | ||||||
| @ -181,7 +181,7 @@ void ICommonStateGetter::GetCurrentFocusState(Kernel::HLERequestContext& ctx) { | |||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.Push(static_cast<u8>(FocusState::InFocus)); |     rb.Push(static_cast<u8>(FocusState::InFocus)); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ICommonStateGetter::GetOperationMode(Kernel::HLERequestContext& ctx) { | void ICommonStateGetter::GetOperationMode(Kernel::HLERequestContext& ctx) { | ||||||
| @ -189,7 +189,7 @@ void ICommonStateGetter::GetOperationMode(Kernel::HLERequestContext& ctx) { | |||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.Push(static_cast<u8>(OperationMode::Handheld)); |     rb.Push(static_cast<u8>(OperationMode::Handheld)); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ICommonStateGetter::GetPerformanceMode(Kernel::HLERequestContext& ctx) { | void ICommonStateGetter::GetPerformanceMode(Kernel::HLERequestContext& ctx) { | ||||||
| @ -197,7 +197,7 @@ void ICommonStateGetter::GetPerformanceMode(Kernel::HLERequestContext& ctx) { | |||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.Push(static_cast<u32>(APM::PerformanceMode::Handheld)); |     rb.Push(static_cast<u32>(APM::PerformanceMode::Handheld)); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ILibraryAppletCreator::ILibraryAppletCreator() : ServiceFramework("ILibraryAppletCreator") {} | ILibraryAppletCreator::ILibraryAppletCreator() : ServiceFramework("ILibraryAppletCreator") {} | ||||||
| @ -222,7 +222,7 @@ private: | |||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.Push(static_cast<u64>(buffer.size())); |         rb.Push(static_cast<u64>(buffer.size())); | ||||||
| 
 | 
 | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void Read(Kernel::HLERequestContext& ctx) { |     void Read(Kernel::HLERequestContext& ctx) { | ||||||
| @ -240,7 +240,7 @@ private: | |||||||
| 
 | 
 | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
| 
 | 
 | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| @ -263,7 +263,7 @@ private: | |||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<AM::IStorageAccessor>(buffer); |         rb.PushIpcInterface<AM::IStorageAccessor>(buffer); | ||||||
| 
 | 
 | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| @ -296,7 +296,7 @@ void IApplicationFunctions::PopLaunchParameter(Kernel::HLERequestContext& ctx) { | |||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<AM::IStorage>(buffer); |     rb.PushIpcInterface<AM::IStorage>(buffer); | ||||||
| 
 | 
 | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_AM, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IApplicationFunctions::SetTerminateResult(Kernel::HLERequestContext& ctx) { | void IApplicationFunctions::SetTerminateResult(Kernel::HLERequestContext& ctx) { | ||||||
| @ -309,27 +309,27 @@ void IApplicationFunctions::SetTerminateResult(Kernel::HLERequestContext& ctx) { | |||||||
|     IPC::ResponseBuilder rb{ctx, 2}; |     IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called, result=0x%08X", result); |     LOG_WARNING(Service_AM, "(STUBBED) called, result=0x%08X", result); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IApplicationFunctions::GetDesiredLanguage(Kernel::HLERequestContext& ctx) { | void IApplicationFunctions::GetDesiredLanguage(Kernel::HLERequestContext& ctx) { | ||||||
|     IPC::ResponseBuilder rb{ctx, 4}; |     IPC::ResponseBuilder rb{ctx, 4}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.Push<u64>(SystemLanguage::English); |     rb.Push<u64>(SystemLanguage::English); | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IApplicationFunctions::InitializeGamePlayRecording(Kernel::HLERequestContext& ctx) { | void IApplicationFunctions::InitializeGamePlayRecording(Kernel::HLERequestContext& ctx) { | ||||||
|     IPC::ResponseBuilder rb{ctx, 2}; |     IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IApplicationFunctions::SetGamePlayRecordingState(Kernel::HLERequestContext& ctx) { | void IApplicationFunctions::SetGamePlayRecordingState(Kernel::HLERequestContext& ctx) { | ||||||
|     IPC::ResponseBuilder rb{ctx, 2}; |     IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IApplicationFunctions::NotifyRunning(Kernel::HLERequestContext& ctx) { | void IApplicationFunctions::NotifyRunning(Kernel::HLERequestContext& ctx) { | ||||||
| @ -337,7 +337,7 @@ void IApplicationFunctions::NotifyRunning(Kernel::HLERequestContext& ctx) { | |||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.Push<u8>(0); // Unknown, seems to be ignored by official processes
 |     rb.Push<u8>(0); // Unknown, seems to be ignored by official processes
 | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_AM, "(STUBBED) called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void InstallInterfaces(SM::ServiceManager& service_manager, | void InstallInterfaces(SM::ServiceManager& service_manager, | ||||||
|  | |||||||
| @ -33,56 +33,56 @@ private: | |||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<ICommonStateGetter>(); |         rb.PushIpcInterface<ICommonStateGetter>(); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetSelfController(Kernel::HLERequestContext& ctx) { |     void GetSelfController(Kernel::HLERequestContext& ctx) { | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<ISelfController>(nvflinger); |         rb.PushIpcInterface<ISelfController>(nvflinger); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetWindowController(Kernel::HLERequestContext& ctx) { |     void GetWindowController(Kernel::HLERequestContext& ctx) { | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<IWindowController>(); |         rb.PushIpcInterface<IWindowController>(); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetAudioController(Kernel::HLERequestContext& ctx) { |     void GetAudioController(Kernel::HLERequestContext& ctx) { | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<IAudioController>(); |         rb.PushIpcInterface<IAudioController>(); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetDisplayController(Kernel::HLERequestContext& ctx) { |     void GetDisplayController(Kernel::HLERequestContext& ctx) { | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<IDisplayController>(); |         rb.PushIpcInterface<IDisplayController>(); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetDebugFunctions(Kernel::HLERequestContext& ctx) { |     void GetDebugFunctions(Kernel::HLERequestContext& ctx) { | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<IDebugFunctions>(); |         rb.PushIpcInterface<IDebugFunctions>(); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetLibraryAppletCreator(Kernel::HLERequestContext& ctx) { |     void GetLibraryAppletCreator(Kernel::HLERequestContext& ctx) { | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<ILibraryAppletCreator>(); |         rb.PushIpcInterface<ILibraryAppletCreator>(); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetApplicationFunctions(Kernel::HLERequestContext& ctx) { |     void GetApplicationFunctions(Kernel::HLERequestContext& ctx) { | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<IApplicationFunctions>(); |         rb.PushIpcInterface<IApplicationFunctions>(); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     std::shared_ptr<NVFlinger::NVFlinger> nvflinger; |     std::shared_ptr<NVFlinger::NVFlinger> nvflinger; | ||||||
| @ -92,7 +92,7 @@ void AppletAE::OpenLibraryAppletProxyOld(Kernel::HLERequestContext& ctx) { | |||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<ILibraryAppletProxy>(nvflinger); |     rb.PushIpcInterface<ILibraryAppletProxy>(nvflinger); | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_AM, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| AppletAE::AppletAE(std::shared_ptr<NVFlinger::NVFlinger> nvflinger) | AppletAE::AppletAE(std::shared_ptr<NVFlinger::NVFlinger> nvflinger) | ||||||
|  | |||||||
| @ -33,56 +33,56 @@ private: | |||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<IAudioController>(); |         rb.PushIpcInterface<IAudioController>(); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetDisplayController(Kernel::HLERequestContext& ctx) { |     void GetDisplayController(Kernel::HLERequestContext& ctx) { | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<IDisplayController>(); |         rb.PushIpcInterface<IDisplayController>(); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetDebugFunctions(Kernel::HLERequestContext& ctx) { |     void GetDebugFunctions(Kernel::HLERequestContext& ctx) { | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<IDebugFunctions>(); |         rb.PushIpcInterface<IDebugFunctions>(); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetWindowController(Kernel::HLERequestContext& ctx) { |     void GetWindowController(Kernel::HLERequestContext& ctx) { | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<IWindowController>(); |         rb.PushIpcInterface<IWindowController>(); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetSelfController(Kernel::HLERequestContext& ctx) { |     void GetSelfController(Kernel::HLERequestContext& ctx) { | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<ISelfController>(nvflinger); |         rb.PushIpcInterface<ISelfController>(nvflinger); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetCommonStateGetter(Kernel::HLERequestContext& ctx) { |     void GetCommonStateGetter(Kernel::HLERequestContext& ctx) { | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<ICommonStateGetter>(); |         rb.PushIpcInterface<ICommonStateGetter>(); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetLibraryAppletCreator(Kernel::HLERequestContext& ctx) { |     void GetLibraryAppletCreator(Kernel::HLERequestContext& ctx) { | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<ILibraryAppletCreator>(); |         rb.PushIpcInterface<ILibraryAppletCreator>(); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetApplicationFunctions(Kernel::HLERequestContext& ctx) { |     void GetApplicationFunctions(Kernel::HLERequestContext& ctx) { | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<IApplicationFunctions>(); |         rb.PushIpcInterface<IApplicationFunctions>(); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_AM, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     std::shared_ptr<NVFlinger::NVFlinger> nvflinger; |     std::shared_ptr<NVFlinger::NVFlinger> nvflinger; | ||||||
| @ -92,7 +92,7 @@ void AppletOE::OpenApplicationProxy(Kernel::HLERequestContext& ctx) { | |||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<IApplicationProxy>(nvflinger); |     rb.PushIpcInterface<IApplicationProxy>(nvflinger); | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_AM, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| AppletOE::AppletOE(std::shared_ptr<NVFlinger::NVFlinger> nvflinger) | AppletOE::AppletOE(std::shared_ptr<NVFlinger::NVFlinger> nvflinger) | ||||||
|  | |||||||
| @ -33,7 +33,8 @@ private: | |||||||
|         IPC::ResponseBuilder rb{ctx, 2}; |         IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
| 
 | 
 | ||||||
|         LOG_WARNING(Service, "(STUBBED) called mode=%u config=%u", static_cast<u32>(mode), config); |         LOG_WARNING(Service_APM, "(STUBBED) called mode=%u config=%u", static_cast<u32>(mode), | ||||||
|  |                     config); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetPerformanceConfiguration(Kernel::HLERequestContext& ctx) { |     void GetPerformanceConfiguration(Kernel::HLERequestContext& ctx) { | ||||||
| @ -45,7 +46,7 @@ private: | |||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.Push<u32>(0); // Performance configuration
 |         rb.Push<u32>(0); // Performance configuration
 | ||||||
| 
 | 
 | ||||||
|         LOG_WARNING(Service, "(STUBBED) called mode=%u", static_cast<u32>(mode)); |         LOG_WARNING(Service_APM, "(STUBBED) called mode=%u", static_cast<u32>(mode)); | ||||||
|     } |     } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -49,7 +49,7 @@ private: | |||||||
|         IPC::ResponseBuilder rb{ctx, 2, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushCopyObjects(shared_mem); |         rb.PushCopyObjects(shared_mem); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_HID, "called"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void LoadInputDevices() { |     void LoadInputDevices() { | ||||||
| @ -151,11 +151,37 @@ private: | |||||||
|         buttons; |         buttons; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | class IActiveVibrationDeviceList final : public ServiceFramework<IActiveVibrationDeviceList> { | ||||||
|  | public: | ||||||
|  |     IActiveVibrationDeviceList() : ServiceFramework("IActiveVibrationDeviceList") { | ||||||
|  |         static const FunctionInfo functions[] = { | ||||||
|  |             {0, &IActiveVibrationDeviceList::ActivateVibrationDevice, "ActivateVibrationDevice"}, | ||||||
|  |         }; | ||||||
|  |         RegisterHandlers(functions); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|  |     void ActivateVibrationDevice(Kernel::HLERequestContext& ctx) { | ||||||
|  |         IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|  |         rb.Push(RESULT_SUCCESS); | ||||||
|  |         LOG_WARNING(Service_HID, "(STUBBED) called"); | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| class Hid final : public ServiceFramework<Hid> { | class Hid final : public ServiceFramework<Hid> { | ||||||
| public: | public: | ||||||
|     Hid() : ServiceFramework("hid") { |     Hid() : ServiceFramework("hid") { | ||||||
|         static const FunctionInfo functions[] = { |         static const FunctionInfo functions[] = { | ||||||
|             {0x00000000, &Hid::CreateAppletResource, "CreateAppletResource"}, |             {0, &Hid::CreateAppletResource, "CreateAppletResource"}, | ||||||
|  |             {1, &Hid::ActivateDebugPad, "ActivateDebugPad"}, | ||||||
|  |             {11, nullptr, "ActivateTouchScreen"}, | ||||||
|  |             {66, &Hid::StartSixAxisSensor, "StartSixAxisSensor"}, | ||||||
|  |             {100, &Hid::SetSupportedNpadStyleSet, "SetSupportedNpadStyleSet"}, | ||||||
|  |             {102, &Hid::SetSupportedNpadIdType, "SetSupportedNpadIdType"}, | ||||||
|  |             {103, &Hid::ActivateNpad, "ActivateNpad"}, | ||||||
|  |             {120, nullptr, "SetNpadJoyHoldType"}, | ||||||
|  |             {124, nullptr, "SetNpadJoyAssignmentModeDual"}, | ||||||
|  |             {203, &Hid::CreateActiveVibrationDeviceList, "CreateActiveVibrationDeviceList"}, | ||||||
|         }; |         }; | ||||||
|         RegisterHandlers(functions); |         RegisterHandlers(functions); | ||||||
|     } |     } | ||||||
| @ -172,7 +198,44 @@ private: | |||||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushIpcInterface<IAppletResource>(applet_resource); |         rb.PushIpcInterface<IAppletResource>(applet_resource); | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_HID, "called"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void ActivateDebugPad(Kernel::HLERequestContext& ctx) { | ||||||
|  |         IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|  |         rb.Push(RESULT_SUCCESS); | ||||||
|  |         LOG_WARNING(Service_HID, "(STUBBED) called"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void StartSixAxisSensor(Kernel::HLERequestContext& ctx) { | ||||||
|  |         IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|  |         rb.Push(RESULT_SUCCESS); | ||||||
|  |         LOG_WARNING(Service_HID, "(STUBBED) called"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void SetSupportedNpadStyleSet(Kernel::HLERequestContext& ctx) { | ||||||
|  |         IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|  |         rb.Push(RESULT_SUCCESS); | ||||||
|  |         LOG_WARNING(Service_HID, "(STUBBED) called"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void SetSupportedNpadIdType(Kernel::HLERequestContext& ctx) { | ||||||
|  |         IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|  |         rb.Push(RESULT_SUCCESS); | ||||||
|  |         LOG_WARNING(Service_HID, "(STUBBED) called"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void ActivateNpad(Kernel::HLERequestContext& ctx) { | ||||||
|  |         IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|  |         rb.Push(RESULT_SUCCESS); | ||||||
|  |         LOG_WARNING(Service_HID, "(STUBBED) called"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void CreateActiveVibrationDeviceList(Kernel::HLERequestContext& ctx) { | ||||||
|  |         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|  |         rb.Push(RESULT_SUCCESS); | ||||||
|  |         rb.PushIpcInterface<IActiveVibrationDeviceList>(); | ||||||
|  |         LOG_DEBUG(Service_HID, "called"); | ||||||
|     } |     } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -76,7 +76,7 @@ private: | |||||||
|         addr += sizeof(MessageHeader); |         addr += sizeof(MessageHeader); | ||||||
| 
 | 
 | ||||||
|         if (!header.IsSingleMessage()) { |         if (!header.IsSingleMessage()) { | ||||||
|             LOG_WARNING(Service, "Multi message logs are unimplemeneted"); |             LOG_WARNING(Service_LM, "Multi message logs are unimplemeneted"); | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -125,7 +125,7 @@ private: | |||||||
|         if (line) { |         if (line) { | ||||||
|             output += std::to_string(line) + ':'; |             output += std::to_string(line) + ':'; | ||||||
|         } |         } | ||||||
|         if (output.back() == ':') { |         if (output.length() > 0 && output.back() == ':') { | ||||||
|             output += ' '; |             output += ' '; | ||||||
|         } |         } | ||||||
|         output += message; |         output += message; | ||||||
| @ -150,7 +150,7 @@ void LM::Initialize(Kernel::HLERequestContext& ctx) { | |||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<Logger>(); |     rb.PushIpcInterface<Logger>(); | ||||||
| 
 | 
 | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_LM, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| LM::LM() : ServiceFramework("lm") { | LM::LM() : ServiceFramework("lm") { | ||||||
|  | |||||||
| @ -112,7 +112,7 @@ IGeneralService::IGeneralService() : ServiceFramework("IGeneralService") { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IGeneralService::GetClientId(Kernel::HLERequestContext& ctx) { | void IGeneralService::GetClientId(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_NIFM, "(STUBBED) called"); | ||||||
|     IPC::ResponseBuilder rb{ctx, 4}; |     IPC::ResponseBuilder rb{ctx, 4}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.Push<u64>(0); |     rb.Push<u64>(0); | ||||||
| @ -124,7 +124,7 @@ void IGeneralService::CreateScanRequest(Kernel::HLERequestContext& ctx) { | |||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<IScanRequest>(); |     rb.PushIpcInterface<IScanRequest>(); | ||||||
| 
 | 
 | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_NIFM, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IGeneralService::CreateRequest(Kernel::HLERequestContext& ctx) { | void IGeneralService::CreateRequest(Kernel::HLERequestContext& ctx) { | ||||||
| @ -133,11 +133,11 @@ void IGeneralService::CreateRequest(Kernel::HLERequestContext& ctx) { | |||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<IRequest>(); |     rb.PushIpcInterface<IRequest>(); | ||||||
| 
 | 
 | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_NIFM, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IGeneralService::RemoveNetworkProfile(Kernel::HLERequestContext& ctx) { | void IGeneralService::RemoveNetworkProfile(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_NIFM, "(STUBBED) called"); | ||||||
|     IPC::ResponseBuilder rb{ctx, 2}; |     IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
| } | } | ||||||
| @ -148,7 +148,7 @@ void IGeneralService::CreateTemporaryNetworkProfile(Kernel::HLERequestContext& c | |||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<INetworkProfile>(); |     rb.PushIpcInterface<INetworkProfile>(); | ||||||
| 
 | 
 | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_NIFM, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void InstallInterfaces(SM::ServiceManager& service_manager) { | void InstallInterfaces(SM::ServiceManager& service_manager) { | ||||||
|  | |||||||
| @ -14,14 +14,14 @@ void NIFM_A::CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) { | |||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<IGeneralService>(); |     rb.PushIpcInterface<IGeneralService>(); | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_NIFM, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void NIFM_A::CreateGeneralService(Kernel::HLERequestContext& ctx) { | void NIFM_A::CreateGeneralService(Kernel::HLERequestContext& ctx) { | ||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<IGeneralService>(); |     rb.PushIpcInterface<IGeneralService>(); | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_NIFM, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| NIFM_A::NIFM_A() : ServiceFramework("nifm:a") { | NIFM_A::NIFM_A() : ServiceFramework("nifm:a") { | ||||||
|  | |||||||
| @ -14,14 +14,14 @@ void NIFM_S::CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) { | |||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<IGeneralService>(); |     rb.PushIpcInterface<IGeneralService>(); | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_NIFM, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void NIFM_S::CreateGeneralService(Kernel::HLERequestContext& ctx) { | void NIFM_S::CreateGeneralService(Kernel::HLERequestContext& ctx) { | ||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<IGeneralService>(); |     rb.PushIpcInterface<IGeneralService>(); | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_NIFM, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| NIFM_S::NIFM_S() : ServiceFramework("nifm:s") { | NIFM_S::NIFM_S() : ServiceFramework("nifm:s") { | ||||||
|  | |||||||
| @ -14,14 +14,14 @@ void NIFM_U::CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) { | |||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<IGeneralService>(); |     rb.PushIpcInterface<IGeneralService>(); | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_NIFM, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void NIFM_U::CreateGeneralService(Kernel::HLERequestContext& ctx) { | void NIFM_U::CreateGeneralService(Kernel::HLERequestContext& ctx) { | ||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<IGeneralService>(); |     rb.PushIpcInterface<IGeneralService>(); | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_NIFM, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| NIFM_U::NIFM_U() : ServiceFramework("nifm:u") { | NIFM_U::NIFM_U() : ServiceFramework("nifm:u") { | ||||||
|  | |||||||
| @ -52,7 +52,7 @@ u32 nvmap::IocCreate(const std::vector<u8>& input, std::vector<u8>& output) { | |||||||
|     u32 handle = next_handle++; |     u32 handle = next_handle++; | ||||||
|     handles[handle] = std::move(object); |     handles[handle] = std::move(object); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) size 0x%08X", params.size); |     LOG_WARNING(Service_NVDRV, "(STUBBED) size 0x%08X", params.size); | ||||||
| 
 | 
 | ||||||
|     params.handle = handle; |     params.handle = handle; | ||||||
| 
 | 
 | ||||||
| @ -74,7 +74,7 @@ u32 nvmap::IocAlloc(const std::vector<u8>& input, std::vector<u8>& output) { | |||||||
|     object->addr = params.addr; |     object->addr = params.addr; | ||||||
|     object->status = Object::Status::Allocated; |     object->status = Object::Status::Allocated; | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) Allocated address 0x%llx", params.addr); |     LOG_WARNING(Service_NVDRV, "(STUBBED) Allocated address 0x%llx", params.addr); | ||||||
| 
 | 
 | ||||||
|     std::memcpy(output.data(), ¶ms, sizeof(params)); |     std::memcpy(output.data(), ¶ms, sizeof(params)); | ||||||
|     return 0; |     return 0; | ||||||
| @ -84,7 +84,7 @@ u32 nvmap::IocGetId(const std::vector<u8>& input, std::vector<u8>& output) { | |||||||
|     IocGetIdParams params; |     IocGetIdParams params; | ||||||
|     std::memcpy(¶ms, input.data(), sizeof(params)); |     std::memcpy(¶ms, input.data(), sizeof(params)); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "called"); |     LOG_WARNING(Service_NVDRV, "called"); | ||||||
| 
 | 
 | ||||||
|     auto itr = handles.find(params.handle); |     auto itr = handles.find(params.handle); | ||||||
|     ASSERT(itr != handles.end()); |     ASSERT(itr != handles.end()); | ||||||
| @ -99,7 +99,7 @@ u32 nvmap::IocFromId(const std::vector<u8>& input, std::vector<u8>& output) { | |||||||
|     IocFromIdParams params; |     IocFromIdParams params; | ||||||
|     std::memcpy(¶ms, input.data(), sizeof(params)); |     std::memcpy(¶ms, input.data(), sizeof(params)); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_NVDRV, "(STUBBED) called"); | ||||||
| 
 | 
 | ||||||
|     auto itr = std::find_if(handles.begin(), handles.end(), |     auto itr = std::find_if(handles.begin(), handles.end(), | ||||||
|                             [&](const auto& entry) { return entry.second->id == params.id; }); |                             [&](const auto& entry) { return entry.second->id == params.id; }); | ||||||
| @ -121,7 +121,7 @@ u32 nvmap::IocParam(const std::vector<u8>& input, std::vector<u8>& output) { | |||||||
|     IocParamParams params; |     IocParamParams params; | ||||||
|     std::memcpy(¶ms, input.data(), sizeof(params)); |     std::memcpy(¶ms, input.data(), sizeof(params)); | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called type=%u", params.type); |     LOG_WARNING(Service_NVDRV, "(STUBBED) called type=%u", params.type); | ||||||
| 
 | 
 | ||||||
|     auto itr = handles.find(params.handle); |     auto itr = handles.find(params.handle); | ||||||
|     ASSERT(itr != handles.end()); |     ASSERT(itr != handles.end()); | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ namespace Service { | |||||||
| namespace Nvidia { | namespace Nvidia { | ||||||
| 
 | 
 | ||||||
| void NVDRV::Open(Kernel::HLERequestContext& ctx) { | void NVDRV::Open(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_NVDRV, "(STUBBED) called"); | ||||||
| 
 | 
 | ||||||
|     auto buffer = ctx.BufferDescriptorA()[0]; |     auto buffer = ctx.BufferDescriptorA()[0]; | ||||||
| 
 | 
 | ||||||
| @ -25,7 +25,7 @@ void NVDRV::Open(Kernel::HLERequestContext& ctx) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void NVDRV::Ioctl(Kernel::HLERequestContext& ctx) { | void NVDRV::Ioctl(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_NVDRV, "(STUBBED) called"); | ||||||
| 
 | 
 | ||||||
|     IPC::RequestParser rp{ctx}; |     IPC::RequestParser rp{ctx}; | ||||||
|     u32 fd = rp.Pop<u32>(); |     u32 fd = rp.Pop<u32>(); | ||||||
| @ -49,7 +49,7 @@ void NVDRV::Ioctl(Kernel::HLERequestContext& ctx) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void NVDRV::Close(Kernel::HLERequestContext& ctx) { | void NVDRV::Close(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_NVDRV, "(STUBBED) called"); | ||||||
| 
 | 
 | ||||||
|     IPC::RequestParser rp{ctx}; |     IPC::RequestParser rp{ctx}; | ||||||
|     u32 fd = rp.Pop<u32>(); |     u32 fd = rp.Pop<u32>(); | ||||||
| @ -61,7 +61,7 @@ void NVDRV::Close(Kernel::HLERequestContext& ctx) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void NVDRV::Initialize(Kernel::HLERequestContext& ctx) { | void NVDRV::Initialize(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_NVDRV, "(STUBBED) called"); | ||||||
|     IPC::ResponseBuilder rb{ctx, 3}; |     IPC::ResponseBuilder rb{ctx, 3}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.Push<u32>(0); |     rb.Push<u32>(0); | ||||||
| @ -71,7 +71,7 @@ void NVDRV::SetClientPID(Kernel::HLERequestContext& ctx) { | |||||||
|     IPC::RequestParser rp{ctx}; |     IPC::RequestParser rp{ctx}; | ||||||
|     pid = rp.Pop<u64>(); |     pid = rp.Pop<u64>(); | ||||||
| 
 | 
 | ||||||
|     LOG_INFO(Service, "called, pid=0x%lx", pid); |     LOG_INFO(Service_NVDRV, "called, pid=0x%lx", pid); | ||||||
|     IPC::ResponseBuilder rb{ctx, 3}; |     IPC::ResponseBuilder rb{ctx, 3}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.Push<u32>(0); |     rb.Push<u32>(0); | ||||||
|  | |||||||
| @ -14,6 +14,7 @@ namespace NVFlinger { | |||||||
| 
 | 
 | ||||||
| BufferQueue::BufferQueue(u32 id, u64 layer_id) : id(id), layer_id(layer_id) { | BufferQueue::BufferQueue(u32 id, u64 layer_id) : id(id), layer_id(layer_id) { | ||||||
|     native_handle = Kernel::Event::Create(Kernel::ResetType::OneShot, "BufferQueue NativeHandle"); |     native_handle = Kernel::Event::Create(Kernel::ResetType::OneShot, "BufferQueue NativeHandle"); | ||||||
|  |     native_handle->Signal(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void BufferQueue::SetPreallocatedBuffer(u32 slot, IGBPBuffer& igbp_buffer) { | void BufferQueue::SetPreallocatedBuffer(u32 slot, IGBPBuffer& igbp_buffer) { | ||||||
|  | |||||||
| @ -18,7 +18,7 @@ void PCTL_A::GetService(Kernel::HLERequestContext& ctx) { | |||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<IParentalControlService>(); |     rb.PushIpcInterface<IParentalControlService>(); | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_PCTL, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| PCTL_A::PCTL_A() : ServiceFramework("pctl:a") { | PCTL_A::PCTL_A() : ServiceFramework("pctl:a") { | ||||||
|  | |||||||
| @ -13,18 +13,19 @@ namespace Service { | |||||||
| namespace Set { | namespace Set { | ||||||
| 
 | 
 | ||||||
| void SET::GetAvailableLanguageCodes(Kernel::HLERequestContext& ctx) { | void SET::GetAvailableLanguageCodes(Kernel::HLERequestContext& ctx) { | ||||||
|  |     IPC::RequestParser rp{ctx}; | ||||||
|  |     u32 id = rp.Pop<u32>(); | ||||||
|     constexpr std::array<u8, 13> lang_codes{}; |     constexpr std::array<u8, 13> lang_codes{}; | ||||||
| 
 | 
 | ||||||
|     const auto& output_buffer = ctx.BufferDescriptorC()[0]; |     const auto& output_buffer = ctx.BufferDescriptorC()[0]; | ||||||
| 
 | 
 | ||||||
|     Memory::WriteBlock(output_buffer.Address(), lang_codes.data(), lang_codes.size()); |     Memory::WriteBlock(output_buffer.Address(), lang_codes.data(), lang_codes.size()); | ||||||
| 
 | 
 | ||||||
|     IPC::ResponseBuilder rb{ctx, 4}; |     IPC::ResponseBuilder rb{ctx, 2}; | ||||||
| 
 | 
 | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.Push(static_cast<u64>(lang_codes.size())); |  | ||||||
| 
 | 
 | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_SET, "(STUBBED) called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| SET::SET(const char* name) : ServiceFramework(name) { | SET::SET(const char* name) : ServiceFramework(name) { | ||||||
|  | |||||||
| @ -29,14 +29,14 @@ private: | |||||||
|         const s64 time_since_epoch{std::chrono::duration_cast<std::chrono::seconds>( |         const s64 time_since_epoch{std::chrono::duration_cast<std::chrono::seconds>( | ||||||
|                                        std::chrono::system_clock::now().time_since_epoch()) |                                        std::chrono::system_clock::now().time_since_epoch()) | ||||||
|                                        .count()}; |                                        .count()}; | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_Time, "called"); | ||||||
|         IPC::ResponseBuilder rb{ctx, 4}; |         IPC::ResponseBuilder rb{ctx, 4}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.Push<u64>(time_since_epoch); |         rb.Push<u64>(time_since_epoch); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetSystemClockContext(Kernel::HLERequestContext& ctx) { |     void GetSystemClockContext(Kernel::HLERequestContext& ctx) { | ||||||
|         LOG_WARNING(Service, "(STUBBED) called"); |         LOG_WARNING(Service_Time, "(STUBBED) called"); | ||||||
|         SystemClockContext system_clock_ontext{}; |         SystemClockContext system_clock_ontext{}; | ||||||
|         IPC::ResponseBuilder rb{ctx, (sizeof(SystemClockContext) / 4) + 2}; |         IPC::ResponseBuilder rb{ctx, (sizeof(SystemClockContext) / 4) + 2}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
| @ -55,7 +55,7 @@ public: | |||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     void GetCurrentTimePoint(Kernel::HLERequestContext& ctx) { |     void GetCurrentTimePoint(Kernel::HLERequestContext& ctx) { | ||||||
|         LOG_DEBUG(Service, "called"); |         LOG_DEBUG(Service_Time, "called"); | ||||||
|         SteadyClockTimePoint steady_clock_time_point{cyclesToMs(CoreTiming::GetTicks()) / 1000}; |         SteadyClockTimePoint steady_clock_time_point{cyclesToMs(CoreTiming::GetTicks()) / 1000}; | ||||||
|         IPC::ResponseBuilder rb{ctx, (sizeof(SteadyClockTimePoint) / 4) + 2}; |         IPC::ResponseBuilder rb{ctx, (sizeof(SteadyClockTimePoint) / 4) + 2}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
| @ -76,7 +76,7 @@ public: | |||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     void GetDeviceLocationName(Kernel::HLERequestContext& ctx) { |     void GetDeviceLocationName(Kernel::HLERequestContext& ctx) { | ||||||
|         LOG_WARNING(Service, "(STUBBED) called"); |         LOG_WARNING(Service_Time, "(STUBBED) called"); | ||||||
|         LocationName location_name{}; |         LocationName location_name{}; | ||||||
|         IPC::ResponseBuilder rb{ctx, (sizeof(LocationName) / 4) + 2}; |         IPC::ResponseBuilder rb{ctx, (sizeof(LocationName) / 4) + 2}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
| @ -84,7 +84,7 @@ private: | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void GetTotalLocationNameCount(Kernel::HLERequestContext& ctx) { |     void GetTotalLocationNameCount(Kernel::HLERequestContext& ctx) { | ||||||
|         LOG_WARNING(Service, "(STUBBED) called"); |         LOG_WARNING(Service_Time, "(STUBBED) called"); | ||||||
|         IPC::ResponseBuilder rb{ctx, 3}; |         IPC::ResponseBuilder rb{ctx, 3}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.Push<u32>(0); |         rb.Push<u32>(0); | ||||||
| @ -94,7 +94,7 @@ private: | |||||||
|         IPC::RequestParser rp{ctx}; |         IPC::RequestParser rp{ctx}; | ||||||
|         u64 posix_time = rp.Pop<u64>(); |         u64 posix_time = rp.Pop<u64>(); | ||||||
| 
 | 
 | ||||||
|         LOG_WARNING(Service, "(STUBBED) called, posix_time=0x%016llX", posix_time); |         LOG_WARNING(Service_Time, "(STUBBED) called, posix_time=0x%016llX", posix_time); | ||||||
| 
 | 
 | ||||||
|         CalendarTime calendar_time{2018, 1, 1, 0, 0, 0}; |         CalendarTime calendar_time{2018, 1, 1, 0, 0, 0}; | ||||||
|         CalendarAdditionalInfo additional_info{}; |         CalendarAdditionalInfo additional_info{}; | ||||||
| @ -109,28 +109,28 @@ void Module::Interface::GetStandardUserSystemClock(Kernel::HLERequestContext& ct | |||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<ISystemClock>(); |     rb.PushIpcInterface<ISystemClock>(); | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_Time, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Module::Interface::GetStandardNetworkSystemClock(Kernel::HLERequestContext& ctx) { | void Module::Interface::GetStandardNetworkSystemClock(Kernel::HLERequestContext& ctx) { | ||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<ISystemClock>(); |     rb.PushIpcInterface<ISystemClock>(); | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_Time, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Module::Interface::GetStandardSteadyClock(Kernel::HLERequestContext& ctx) { | void Module::Interface::GetStandardSteadyClock(Kernel::HLERequestContext& ctx) { | ||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<ISteadyClock>(); |     rb.PushIpcInterface<ISteadyClock>(); | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_Time, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Module::Interface::GetTimeZoneService(Kernel::HLERequestContext& ctx) { | void Module::Interface::GetTimeZoneService(Kernel::HLERequestContext& ctx) { | ||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|     rb.PushIpcInterface<ITimeZoneService>(); |     rb.PushIpcInterface<ITimeZoneService>(); | ||||||
|     LOG_DEBUG(Service, "called"); |     LOG_DEBUG(Service_Time, "called"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Module::Interface::Interface(std::shared_ptr<Module> time, const char* name) | Module::Interface::Interface(std::shared_ptr<Module> time, const char* name) | ||||||
|  | |||||||
| @ -429,7 +429,7 @@ private: | |||||||
|         auto& output_buffer = ctx.BufferDescriptorB()[0]; |         auto& output_buffer = ctx.BufferDescriptorB()[0]; | ||||||
| 
 | 
 | ||||||
|         auto buffer_queue = nv_flinger->GetBufferQueue(id); |         auto buffer_queue = nv_flinger->GetBufferQueue(id); | ||||||
| 
 |         LOG_WARNING(Service_VI, "(STUBBED) called, transaction=%x", transaction); | ||||||
|         if (transaction == TransactionId::Connect) { |         if (transaction == TransactionId::Connect) { | ||||||
|             IGBPConnectRequestParcel request{input_data}; |             IGBPConnectRequestParcel request{input_data}; | ||||||
|             IGBPConnectResponseParcel response{1280, 720}; |             IGBPConnectResponseParcel response{1280, 720}; | ||||||
| @ -487,7 +487,6 @@ private: | |||||||
|             ASSERT_MSG(false, "Unimplemented"); |             ASSERT_MSG(false, "Unimplemented"); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         LOG_WARNING(Service, "(STUBBED) called"); |  | ||||||
|         IPC::ResponseBuilder rb{ctx, 2}; |         IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|     } |     } | ||||||
| @ -498,7 +497,7 @@ private: | |||||||
|         s32 addval = rp.PopRaw<s32>(); |         s32 addval = rp.PopRaw<s32>(); | ||||||
|         u32 type = rp.Pop<u32>(); |         u32 type = rp.Pop<u32>(); | ||||||
| 
 | 
 | ||||||
|         LOG_WARNING(Service, "(STUBBED) called id=%u, addval=%08X, type=%08X", id, addval, type); |         LOG_WARNING(Service_VI, "(STUBBED) called id=%u, addval=%08X, type=%08X", id, addval, type); | ||||||
|         IPC::ResponseBuilder rb{ctx, 2}; |         IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|     } |     } | ||||||
| @ -512,7 +511,7 @@ private: | |||||||
| 
 | 
 | ||||||
|         // TODO(Subv): Find out what this actually is.
 |         // TODO(Subv): Find out what this actually is.
 | ||||||
| 
 | 
 | ||||||
|         LOG_WARNING(Service, "(STUBBED) called id=%u, unknown=%08X", id, unknown); |         LOG_WARNING(Service_VI, "(STUBBED) called id=%u, unknown=%08X", id, unknown); | ||||||
|         IPC::ResponseBuilder rb{ctx, 2, 1}; |         IPC::ResponseBuilder rb{ctx, 2, 1}; | ||||||
|         rb.Push(RESULT_SUCCESS); |         rb.Push(RESULT_SUCCESS); | ||||||
|         rb.PushCopyObjects(buffer_queue->GetNativeHandle()); |         rb.PushCopyObjects(buffer_queue->GetNativeHandle()); | ||||||
| @ -534,7 +533,7 @@ public: | |||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     void SetLayerZ(Kernel::HLERequestContext& ctx) { |     void SetLayerZ(Kernel::HLERequestContext& ctx) { | ||||||
|         LOG_WARNING(Service, "(STUBBED) called"); |         LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
|         IPC::RequestParser rp{ctx}; |         IPC::RequestParser rp{ctx}; | ||||||
|         u64 layer_id = rp.Pop<u64>(); |         u64 layer_id = rp.Pop<u64>(); | ||||||
|         u64 z_value = rp.Pop<u64>(); |         u64 z_value = rp.Pop<u64>(); | ||||||
| @ -560,7 +559,7 @@ public: | |||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     void CloseDisplay(Kernel::HLERequestContext& ctx) { |     void CloseDisplay(Kernel::HLERequestContext& ctx) { | ||||||
|         LOG_WARNING(Service, "(STUBBED) called"); |         LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
|         IPC::RequestParser rp{ctx}; |         IPC::RequestParser rp{ctx}; | ||||||
|         u64 display = rp.Pop<u64>(); |         u64 display = rp.Pop<u64>(); | ||||||
| 
 | 
 | ||||||
| @ -569,7 +568,7 @@ private: | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void CreateManagedLayer(Kernel::HLERequestContext& ctx) { |     void CreateManagedLayer(Kernel::HLERequestContext& ctx) { | ||||||
|         LOG_WARNING(Service, "(STUBBED) called"); |         LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
|         IPC::RequestParser rp{ctx}; |         IPC::RequestParser rp{ctx}; | ||||||
|         u32 unknown = rp.Pop<u32>(); |         u32 unknown = rp.Pop<u32>(); | ||||||
|         rp.Skip(1, false); |         rp.Skip(1, false); | ||||||
| @ -584,7 +583,7 @@ private: | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void AddToLayerStack(Kernel::HLERequestContext& ctx) { |     void AddToLayerStack(Kernel::HLERequestContext& ctx) { | ||||||
|         LOG_WARNING(Service, "(STUBBED) called"); |         LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
|         IPC::RequestParser rp{ctx}; |         IPC::RequestParser rp{ctx}; | ||||||
|         u32 stack = rp.Pop<u32>(); |         u32 stack = rp.Pop<u32>(); | ||||||
|         u64 layer_id = rp.Pop<u64>(); |         u64 layer_id = rp.Pop<u64>(); | ||||||
| @ -597,7 +596,7 @@ private: | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| void IApplicationDisplayService::GetRelayService(Kernel::HLERequestContext& ctx) { | void IApplicationDisplayService::GetRelayService(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
| 
 | 
 | ||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
| @ -605,7 +604,7 @@ void IApplicationDisplayService::GetRelayService(Kernel::HLERequestContext& ctx) | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IApplicationDisplayService::GetSystemDisplayService(Kernel::HLERequestContext& ctx) { | void IApplicationDisplayService::GetSystemDisplayService(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
| 
 | 
 | ||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
| @ -613,7 +612,7 @@ void IApplicationDisplayService::GetSystemDisplayService(Kernel::HLERequestConte | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IApplicationDisplayService::GetManagerDisplayService(Kernel::HLERequestContext& ctx) { | void IApplicationDisplayService::GetManagerDisplayService(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
| 
 | 
 | ||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
| @ -622,7 +621,7 @@ void IApplicationDisplayService::GetManagerDisplayService(Kernel::HLERequestCont | |||||||
| 
 | 
 | ||||||
| void IApplicationDisplayService::GetIndirectDisplayTransactionService( | void IApplicationDisplayService::GetIndirectDisplayTransactionService( | ||||||
|     Kernel::HLERequestContext& ctx) { |     Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
| 
 | 
 | ||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
| @ -630,7 +629,7 @@ void IApplicationDisplayService::GetIndirectDisplayTransactionService( | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IApplicationDisplayService::OpenDisplay(Kernel::HLERequestContext& ctx) { | void IApplicationDisplayService::OpenDisplay(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
|     IPC::RequestParser rp{ctx}; |     IPC::RequestParser rp{ctx}; | ||||||
|     auto name_buf = rp.PopRaw<std::array<u8, 0x40>>(); |     auto name_buf = rp.PopRaw<std::array<u8, 0x40>>(); | ||||||
|     auto end = std::find(name_buf.begin(), name_buf.end(), '\0'); |     auto end = std::find(name_buf.begin(), name_buf.end(), '\0'); | ||||||
| @ -645,7 +644,7 @@ void IApplicationDisplayService::OpenDisplay(Kernel::HLERequestContext& ctx) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IApplicationDisplayService::CloseDisplay(Kernel::HLERequestContext& ctx) { | void IApplicationDisplayService::CloseDisplay(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
|     IPC::RequestParser rp{ctx}; |     IPC::RequestParser rp{ctx}; | ||||||
|     u64 display_id = rp.Pop<u64>(); |     u64 display_id = rp.Pop<u64>(); | ||||||
| 
 | 
 | ||||||
| @ -654,7 +653,7 @@ void IApplicationDisplayService::CloseDisplay(Kernel::HLERequestContext& ctx) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IApplicationDisplayService::OpenLayer(Kernel::HLERequestContext& ctx) { | void IApplicationDisplayService::OpenLayer(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
|     IPC::RequestParser rp{ctx}; |     IPC::RequestParser rp{ctx}; | ||||||
|     auto name_buf = rp.PopRaw<std::array<u8, 0x40>>(); |     auto name_buf = rp.PopRaw<std::array<u8, 0x40>>(); | ||||||
|     auto end = std::find(name_buf.begin(), name_buf.end(), '\0'); |     auto end = std::find(name_buf.begin(), name_buf.end(), '\0'); | ||||||
| @ -704,7 +703,7 @@ void IApplicationDisplayService::CreateStrayLayer(Kernel::HLERequestContext& ctx | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IApplicationDisplayService::DestroyStrayLayer(Kernel::HLERequestContext& ctx) { | void IApplicationDisplayService::DestroyStrayLayer(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
| 
 | 
 | ||||||
|     IPC::RequestParser rp{ctx}; |     IPC::RequestParser rp{ctx}; | ||||||
|     u64 layer_id = rp.Pop<u64>(); |     u64 layer_id = rp.Pop<u64>(); | ||||||
| @ -714,7 +713,7 @@ void IApplicationDisplayService::DestroyStrayLayer(Kernel::HLERequestContext& ct | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IApplicationDisplayService::SetLayerScalingMode(Kernel::HLERequestContext& ctx) { | void IApplicationDisplayService::SetLayerScalingMode(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
|     IPC::RequestParser rp{ctx}; |     IPC::RequestParser rp{ctx}; | ||||||
|     u32 scaling_mode = rp.Pop<u32>(); |     u32 scaling_mode = rp.Pop<u32>(); | ||||||
|     u64 unknown = rp.Pop<u64>(); |     u64 unknown = rp.Pop<u64>(); | ||||||
| @ -724,7 +723,7 @@ void IApplicationDisplayService::SetLayerScalingMode(Kernel::HLERequestContext& | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void IApplicationDisplayService::GetDisplayVsyncEvent(Kernel::HLERequestContext& ctx) { | void IApplicationDisplayService::GetDisplayVsyncEvent(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
|     IPC::RequestParser rp{ctx}; |     IPC::RequestParser rp{ctx}; | ||||||
|     u64 display_id = rp.Pop<u64>(); |     u64 display_id = rp.Pop<u64>(); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ namespace Service { | |||||||
| namespace VI { | namespace VI { | ||||||
| 
 | 
 | ||||||
| void VI_M::GetDisplayService(Kernel::HLERequestContext& ctx) { | void VI_M::GetDisplayService(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
| 
 | 
 | ||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ namespace Service { | |||||||
| namespace VI { | namespace VI { | ||||||
| 
 | 
 | ||||||
| void VI_S::GetDisplayService(Kernel::HLERequestContext& ctx) { | void VI_S::GetDisplayService(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
| 
 | 
 | ||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ namespace Service { | |||||||
| namespace VI { | namespace VI { | ||||||
| 
 | 
 | ||||||
| void VI_U::GetDisplayService(Kernel::HLERequestContext& ctx) { | void VI_U::GetDisplayService(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_WARNING(Service, "(STUBBED) called"); |     LOG_WARNING(Service_VI, "(STUBBED) called"); | ||||||
| 
 | 
 | ||||||
|     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|     rb.Push(RESULT_SUCCESS); |     rb.Push(RESULT_SUCCESS); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 bunnei
						bunnei