| 
									
										
										
										
											2022-04-23 04:59:50 -04:00
										 |  |  | // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
 | 
					
						
							|  |  |  | // SPDX-License-Identifier: GPL-2.0-or-later
 | 
					
						
							| 
									
										
										
										
											2015-01-18 15:07:48 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-05 18:39:18 -06:00
										 |  |  | #include "core/hle/kernel/k_process.h"
 | 
					
						
							|  |  |  | #include "core/hle/kernel/kernel.h"
 | 
					
						
							| 
									
										
										
										
											2016-09-20 23:52:38 -07:00
										 |  |  | #include "core/hle/service/hid/hid.h"
 | 
					
						
							| 
									
										
										
										
											2023-11-14 21:34:27 -06:00
										 |  |  | #include "core/hle/service/hid/hid_debug_server.h"
 | 
					
						
							|  |  |  | #include "core/hle/service/hid/hid_server.h"
 | 
					
						
							|  |  |  | #include "core/hle/service/hid/hid_system_server.h"
 | 
					
						
							| 
									
										
										
										
											2021-05-02 18:41:03 -05:00
										 |  |  | #include "core/hle/service/hid/hidbus.h"
 | 
					
						
							| 
									
										
										
										
											2018-07-26 08:39:25 -04:00
										 |  |  | #include "core/hle/service/hid/irs.h"
 | 
					
						
							| 
									
										
										
										
											2018-07-26 08:50:32 -04:00
										 |  |  | #include "core/hle/service/hid/xcd.h"
 | 
					
						
							| 
									
										
										
										
											2023-02-18 16:26:48 -05:00
										 |  |  | #include "core/hle/service/server_manager.h"
 | 
					
						
							| 
									
										
										
										
											2024-01-04 20:37:43 -06:00
										 |  |  | #include "hid_core/resource_manager.h"
 | 
					
						
							|  |  |  | #include "hid_core/resources/hid_firmware_settings.h"
 | 
					
						
							| 
									
										
										
										
											2015-03-09 00:14:59 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-14 21:34:27 -06:00
										 |  |  | namespace Service::HID { | 
					
						
							| 
									
										
										
										
											2018-07-26 08:56:16 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-18 16:26:48 -05:00
										 |  |  | void LoopProcess(Core::System& system) { | 
					
						
							|  |  |  |     auto server_manager = std::make_unique<ServerManager>(system); | 
					
						
							| 
									
										
										
										
											2024-01-08 20:31:48 +01:00
										 |  |  |     std::shared_ptr<ResourceManager> resource_manager = std::make_shared<ResourceManager>(system); | 
					
						
							| 
									
										
										
										
											2023-11-16 17:58:05 -06:00
										 |  |  |     std::shared_ptr<HidFirmwareSettings> firmware_settings = | 
					
						
							| 
									
										
										
										
											2024-01-14 21:04:02 -06:00
										 |  |  |         std::make_shared<HidFirmwareSettings>(system); | 
					
						
							| 
									
										
										
										
											2023-11-14 21:34:27 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-02 17:12:16 -05:00
										 |  |  |     // TODO: Remove this hack when am is emulated properly.
 | 
					
						
							|  |  |  |     resource_manager->Initialize(); | 
					
						
							|  |  |  |     resource_manager->RegisterAppletResourceUserId(system.ApplicationProcess()->GetProcessId(), | 
					
						
							|  |  |  |                                                    true); | 
					
						
							| 
									
										
										
										
											2024-01-10 22:06:54 -06:00
										 |  |  |     resource_manager->SetAruidValidForVibration(system.ApplicationProcess()->GetProcessId(), true); | 
					
						
							| 
									
										
										
										
											2023-12-05 18:39:18 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-16 17:58:05 -06:00
										 |  |  |     server_manager->RegisterNamedService( | 
					
						
							| 
									
										
										
										
											2024-01-08 20:31:48 +01:00
										 |  |  |         "hid", std::make_shared<IHidServer>(system, resource_manager, firmware_settings)); | 
					
						
							| 
									
										
										
										
											2023-11-14 21:34:27 -06:00
										 |  |  |     server_manager->RegisterNamedService( | 
					
						
							| 
									
										
										
										
											2024-01-08 20:31:48 +01:00
										 |  |  |         "hid:dbg", std::make_shared<IHidDebugServer>(system, resource_manager)); | 
					
						
							| 
									
										
										
										
											2023-11-14 21:34:27 -06:00
										 |  |  |     server_manager->RegisterNamedService( | 
					
						
							| 
									
										
										
										
											2024-01-22 23:30:34 -06:00
										 |  |  |         "hid:sys", std::make_shared<IHidSystemServer>(system, resource_manager, firmware_settings)); | 
					
						
							| 
									
										
										
										
											2018-07-26 08:56:16 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-18 16:26:48 -05:00
										 |  |  |     server_manager->RegisterNamedService("hidbus", std::make_shared<HidBus>(system)); | 
					
						
							| 
									
										
										
										
											2018-07-26 08:56:16 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-14 21:34:27 -06:00
										 |  |  |     server_manager->RegisterNamedService("irs", std::make_shared<IRS::IRS>(system)); | 
					
						
							|  |  |  |     server_manager->RegisterNamedService("irs:sys", std::make_shared<IRS::IRS_SYS>(system)); | 
					
						
							| 
									
										
										
										
											2023-02-18 16:26:48 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     server_manager->RegisterNamedService("xcd:sys", std::make_shared<XCD_SYS>(system)); | 
					
						
							| 
									
										
										
										
											2023-11-14 21:34:27 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-18 16:26:48 -05:00
										 |  |  |     system.RunServer(std::move(server_manager)); | 
					
						
							| 
									
										
										
										
											2018-01-14 21:24:50 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-19 21:41:44 -04:00
										 |  |  | } // namespace Service::HID
 |