Merge pull request #156 from mailwl/nifm
Service/nifm: add nifm:a, nifm:s and nifm:u services
This commit is contained in:
		| @@ -114,6 +114,14 @@ add_library(core STATIC | |||||||
|     hle/service/hid/hid.h |     hle/service/hid/hid.h | ||||||
|     hle/service/lm/lm.cpp |     hle/service/lm/lm.cpp | ||||||
|     hle/service/lm/lm.h |     hle/service/lm/lm.h | ||||||
|  |     hle/service/nifm/nifm.cpp | ||||||
|  |     hle/service/nifm/nifm.h | ||||||
|  |     hle/service/nifm/nifm_a.cpp | ||||||
|  |     hle/service/nifm/nifm_a.h | ||||||
|  |     hle/service/nifm/nifm_s.cpp | ||||||
|  |     hle/service/nifm/nifm_s.h | ||||||
|  |     hle/service/nifm/nifm_u.cpp | ||||||
|  |     hle/service/nifm/nifm_u.h | ||||||
|     hle/service/nvdrv/devices/nvdevice.h |     hle/service/nvdrv/devices/nvdevice.h | ||||||
|     hle/service/nvdrv/devices/nvdisp_disp0.cpp |     hle/service/nvdrv/devices/nvdisp_disp0.cpp | ||||||
|     hle/service/nvdrv/devices/nvdisp_disp0.h |     hle/service/nvdrv/devices/nvdisp_disp0.h | ||||||
|   | |||||||
							
								
								
									
										161
									
								
								src/core/hle/service/nifm/nifm.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								src/core/hle/service/nifm/nifm.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,161 @@ | |||||||
|  | // Copyright 2018 yuzu emulator team | ||||||
|  | // Licensed under GPLv2 or any later version | ||||||
|  | // Refer to the license.txt file included. | ||||||
|  |  | ||||||
|  | #include "core/hle/ipc_helpers.h" | ||||||
|  | #include "core/hle/service/nifm/nifm.h" | ||||||
|  | #include "core/hle/service/nifm/nifm_a.h" | ||||||
|  | #include "core/hle/service/nifm/nifm_s.h" | ||||||
|  | #include "core/hle/service/nifm/nifm_u.h" | ||||||
|  |  | ||||||
|  | namespace Service { | ||||||
|  | namespace NIFM { | ||||||
|  |  | ||||||
|  | class IScanRequest final : public ServiceFramework<IScanRequest> { | ||||||
|  | public: | ||||||
|  |     explicit IScanRequest() : ServiceFramework("IScanRequest") { | ||||||
|  |         static const FunctionInfo functions[] = { | ||||||
|  |             {0, nullptr, "Submit"}, | ||||||
|  |             {1, nullptr, "IsProcessing"}, | ||||||
|  |             {2, nullptr, "GetResult"}, | ||||||
|  |             {3, nullptr, "GetSystemEventReadableHandle"}, | ||||||
|  |         }; | ||||||
|  |         RegisterHandlers(functions); | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | class IRequest final : public ServiceFramework<IRequest> { | ||||||
|  | public: | ||||||
|  |     explicit IRequest() : ServiceFramework("IRequest") { | ||||||
|  |         static const FunctionInfo functions[] = { | ||||||
|  |             {0, nullptr, "GetRequestState"}, | ||||||
|  |             {1, nullptr, "GetResult"}, | ||||||
|  |             {2, nullptr, "GetSystemEventReadableHandles"}, | ||||||
|  |             {3, nullptr, "Cancel"}, | ||||||
|  |             {4, nullptr, "Submit"}, | ||||||
|  |             {5, nullptr, "SetRequirement"}, | ||||||
|  |             {6, nullptr, "SetRequirementPreset"}, | ||||||
|  |             {8, nullptr, "SetPriority"}, | ||||||
|  |             {9, nullptr, "SetNetworkProfileId"}, | ||||||
|  |             {10, nullptr, "SetRejectable"}, | ||||||
|  |             {11, nullptr, "SetConnectionConfirmationOption"}, | ||||||
|  |             {12, nullptr, "SetPersistent"}, | ||||||
|  |             {13, nullptr, "SetInstant"}, | ||||||
|  |             {14, nullptr, "SetSustainable"}, | ||||||
|  |             {15, nullptr, "SetRawPriority"}, | ||||||
|  |             {16, nullptr, "SetGreedy"}, | ||||||
|  |             {17, nullptr, "SetSharable"}, | ||||||
|  |             {18, nullptr, "SetRequirementByRevision"}, | ||||||
|  |             {19, nullptr, "GetRequirement"}, | ||||||
|  |             {20, nullptr, "GetRevision"}, | ||||||
|  |             {21, nullptr, "GetAppletInfo"}, | ||||||
|  |             {22, nullptr, "GetAdditionalInfo"}, | ||||||
|  |             {23, nullptr, "SetKeptInSleep"}, | ||||||
|  |             {24, nullptr, "RegisterSocketDescriptor"}, | ||||||
|  |             {25, nullptr, "UnregisterSocketDescriptor"}, | ||||||
|  |         }; | ||||||
|  |         RegisterHandlers(functions); | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | class INetworkProfile final : public ServiceFramework<INetworkProfile> { | ||||||
|  | public: | ||||||
|  |     explicit INetworkProfile() : ServiceFramework("INetworkProfile") { | ||||||
|  |         static const FunctionInfo functions[] = { | ||||||
|  |             {0, nullptr, "Update"}, | ||||||
|  |             {1, nullptr, "PersistOld"}, | ||||||
|  |             {2, nullptr, "Persist"}, | ||||||
|  |         }; | ||||||
|  |         RegisterHandlers(functions); | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | IGeneralService::IGeneralService() : ServiceFramework("IGeneralService") { | ||||||
|  |     static const FunctionInfo functions[] = { | ||||||
|  |         {1, &IGeneralService::GetClientId, "GetClientId"}, | ||||||
|  |         {2, &IGeneralService::CreateScanRequest, "CreateScanRequest"}, | ||||||
|  |         {4, &IGeneralService::CreateRequest, "CreateRequest"}, | ||||||
|  |         {6, nullptr, "GetCurrentNetworkProfile"}, | ||||||
|  |         {7, nullptr, "EnumerateNetworkInterfaces"}, | ||||||
|  |         {8, nullptr, "GetNetworkProfile"}, | ||||||
|  |         {9, nullptr, "SetNetworkProfile"}, | ||||||
|  |         {10, &IGeneralService::RemoveNetworkProfile, "RemoveNetworkProfile"}, | ||||||
|  |         {11, nullptr, "GetScanDataOld"}, | ||||||
|  |         {12, nullptr, "GetCurrentIpAddress"}, | ||||||
|  |         {13, nullptr, "GetCurrentAccessPointOld"}, | ||||||
|  |         {14, &IGeneralService::CreateTemporaryNetworkProfile, "CreateTemporaryNetworkProfile"}, | ||||||
|  |         {15, nullptr, "GetCurrentIpConfigInfo"}, | ||||||
|  |         {16, nullptr, "SetWirelessCommunicationEnabled"}, | ||||||
|  |         {17, nullptr, "IsWirelessCommunicationEnabled"}, | ||||||
|  |         {18, nullptr, "GetInternetConnectionStatus"}, | ||||||
|  |         {19, nullptr, "SetEthernetCommunicationEnabled"}, | ||||||
|  |         {20, nullptr, "IsEthernetCommunicationEnabled"}, | ||||||
|  |         {21, nullptr, "IsAnyInternetRequestAccepted"}, | ||||||
|  |         {22, nullptr, "IsAnyForegroundRequestAccepted"}, | ||||||
|  |         {23, nullptr, "PutToSleep"}, | ||||||
|  |         {24, nullptr, "WakeUp"}, | ||||||
|  |         {25, nullptr, "GetSsidListVersion"}, | ||||||
|  |         {26, nullptr, "SetExclusiveClient"}, | ||||||
|  |         {27, nullptr, "GetDefaultIpSetting"}, | ||||||
|  |         {28, nullptr, "SetDefaultIpSetting"}, | ||||||
|  |         {29, nullptr, "SetWirelessCommunicationEnabledForTest"}, | ||||||
|  |         {30, nullptr, "SetEthernetCommunicationEnabledForTest"}, | ||||||
|  |         {31, nullptr, "GetTelemetorySystemEventReadableHandle"}, | ||||||
|  |         {32, nullptr, "GetTelemetryInfo"}, | ||||||
|  |         {33, nullptr, "ConfirmSystemAvailability"}, | ||||||
|  |         {34, nullptr, "SetBackgroundRequestEnabled"}, | ||||||
|  |         {35, nullptr, "GetScanData"}, | ||||||
|  |         {36, nullptr, "GetCurrentAccessPoint"}, | ||||||
|  |         {37, nullptr, "Shutdown"}, | ||||||
|  |     }; | ||||||
|  |     RegisterHandlers(functions); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void IGeneralService::GetClientId(Kernel::HLERequestContext& ctx) { | ||||||
|  |     LOG_WARNING(Service, "(STUBBED) called"); | ||||||
|  |     IPC::ResponseBuilder rb{ctx, 4}; | ||||||
|  |     rb.Push(RESULT_SUCCESS); | ||||||
|  |     rb.Push<u64>(0); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void IGeneralService::CreateScanRequest(Kernel::HLERequestContext& ctx) { | ||||||
|  |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|  |  | ||||||
|  |     rb.Push(RESULT_SUCCESS); | ||||||
|  |     rb.PushIpcInterface<IScanRequest>(); | ||||||
|  |  | ||||||
|  |     LOG_DEBUG(Service, "called"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void IGeneralService::CreateRequest(Kernel::HLERequestContext& ctx) { | ||||||
|  |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|  |  | ||||||
|  |     rb.Push(RESULT_SUCCESS); | ||||||
|  |     rb.PushIpcInterface<IRequest>(); | ||||||
|  |  | ||||||
|  |     LOG_DEBUG(Service, "called"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void IGeneralService::RemoveNetworkProfile(Kernel::HLERequestContext& ctx) { | ||||||
|  |     LOG_WARNING(Service, "(STUBBED) called"); | ||||||
|  |     IPC::ResponseBuilder rb{ctx, 2}; | ||||||
|  |     rb.Push(RESULT_SUCCESS); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void IGeneralService::CreateTemporaryNetworkProfile(Kernel::HLERequestContext& ctx) { | ||||||
|  |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|  |  | ||||||
|  |     rb.Push(RESULT_SUCCESS); | ||||||
|  |     rb.PushIpcInterface<INetworkProfile>(); | ||||||
|  |  | ||||||
|  |     LOG_DEBUG(Service, "called"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void InstallInterfaces(SM::ServiceManager& service_manager) { | ||||||
|  |     std::make_shared<NIFM_A>()->InstallAsService(service_manager); | ||||||
|  |     std::make_shared<NIFM_S>()->InstallAsService(service_manager); | ||||||
|  |     std::make_shared<NIFM_U>()->InstallAsService(service_manager); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | } // namespace NIFM | ||||||
|  | } // namespace Service | ||||||
							
								
								
									
										27
									
								
								src/core/hle/service/nifm/nifm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/core/hle/service/nifm/nifm.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | // Copyright 2018 yuzu emulator team | ||||||
|  | // Licensed under GPLv2 or any later version | ||||||
|  | // Refer to the license.txt file included. | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
|  |  | ||||||
|  | #include "core/hle/service/service.h" | ||||||
|  |  | ||||||
|  | namespace Service { | ||||||
|  | namespace NIFM { | ||||||
|  |  | ||||||
|  | class IGeneralService final : public ServiceFramework<IGeneralService> { | ||||||
|  | public: | ||||||
|  |     IGeneralService(); | ||||||
|  |  | ||||||
|  | private: | ||||||
|  |     void GetClientId(Kernel::HLERequestContext& ctx); | ||||||
|  |     void CreateScanRequest(Kernel::HLERequestContext& ctx); | ||||||
|  |     void CreateRequest(Kernel::HLERequestContext& ctx); | ||||||
|  |     void RemoveNetworkProfile(Kernel::HLERequestContext& ctx); | ||||||
|  |     void CreateTemporaryNetworkProfile(Kernel::HLERequestContext& ctx); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | void InstallInterfaces(SM::ServiceManager& service_manager); | ||||||
|  |  | ||||||
|  | } // namespace NIFM | ||||||
|  | } // namespace Service | ||||||
							
								
								
									
										36
									
								
								src/core/hle/service/nifm/nifm_a.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								src/core/hle/service/nifm/nifm_a.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | // Copyright 2018 yuzu emulator team | ||||||
|  | // Licensed under GPLv2 or any later version | ||||||
|  | // Refer to the license.txt file included. | ||||||
|  |  | ||||||
|  | #include "common/logging/log.h" | ||||||
|  | #include "core/hle/ipc_helpers.h" | ||||||
|  | #include "core/hle/service/nifm/nifm.h" | ||||||
|  | #include "core/hle/service/nifm/nifm_a.h" | ||||||
|  |  | ||||||
|  | namespace Service { | ||||||
|  | namespace NIFM { | ||||||
|  |  | ||||||
|  | void NIFM_A::CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) { | ||||||
|  |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|  |     rb.Push(RESULT_SUCCESS); | ||||||
|  |     rb.PushIpcInterface<IGeneralService>(); | ||||||
|  |     LOG_DEBUG(Service, "called"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void NIFM_A::CreateGeneralService(Kernel::HLERequestContext& ctx) { | ||||||
|  |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|  |     rb.Push(RESULT_SUCCESS); | ||||||
|  |     rb.PushIpcInterface<IGeneralService>(); | ||||||
|  |     LOG_DEBUG(Service, "called"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | NIFM_A::NIFM_A() : ServiceFramework("nifm:a") { | ||||||
|  |     static const FunctionInfo functions[] = { | ||||||
|  |         {4, &NIFM_A::CreateGeneralServiceOld, "CreateGeneralServiceOld"}, | ||||||
|  |         {5, &NIFM_A::CreateGeneralService, "CreateGeneralService"}, | ||||||
|  |     }; | ||||||
|  |     RegisterHandlers(functions); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | } // namespace NIFM | ||||||
|  | } // namespace Service | ||||||
							
								
								
									
										24
									
								
								src/core/hle/service/nifm/nifm_a.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/core/hle/service/nifm/nifm_a.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | // Copyright 2018 yuzu emulator team | ||||||
|  | // Licensed under GPLv2 or any later version | ||||||
|  | // Refer to the license.txt file included. | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
|  |  | ||||||
|  | #include "core/hle/kernel/hle_ipc.h" | ||||||
|  | #include "core/hle/service/service.h" | ||||||
|  |  | ||||||
|  | namespace Service { | ||||||
|  | namespace NIFM { | ||||||
|  |  | ||||||
|  | class NIFM_A final : public ServiceFramework<NIFM_A> { | ||||||
|  | public: | ||||||
|  |     NIFM_A(); | ||||||
|  |     ~NIFM_A() = default; | ||||||
|  |  | ||||||
|  | private: | ||||||
|  |     void CreateGeneralServiceOld(Kernel::HLERequestContext& ctx); | ||||||
|  |     void CreateGeneralService(Kernel::HLERequestContext& ctx); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | } // namespace NIFM | ||||||
|  | } // namespace Service | ||||||
							
								
								
									
										36
									
								
								src/core/hle/service/nifm/nifm_s.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								src/core/hle/service/nifm/nifm_s.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | // Copyright 2018 yuzu emulator team | ||||||
|  | // Licensed under GPLv2 or any later version | ||||||
|  | // Refer to the license.txt file included. | ||||||
|  |  | ||||||
|  | #include "common/logging/log.h" | ||||||
|  | #include "core/hle/ipc_helpers.h" | ||||||
|  | #include "core/hle/service/nifm/nifm.h" | ||||||
|  | #include "core/hle/service/nifm/nifm_s.h" | ||||||
|  |  | ||||||
|  | namespace Service { | ||||||
|  | namespace NIFM { | ||||||
|  |  | ||||||
|  | void NIFM_S::CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) { | ||||||
|  |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|  |     rb.Push(RESULT_SUCCESS); | ||||||
|  |     rb.PushIpcInterface<IGeneralService>(); | ||||||
|  |     LOG_DEBUG(Service, "called"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void NIFM_S::CreateGeneralService(Kernel::HLERequestContext& ctx) { | ||||||
|  |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|  |     rb.Push(RESULT_SUCCESS); | ||||||
|  |     rb.PushIpcInterface<IGeneralService>(); | ||||||
|  |     LOG_DEBUG(Service, "called"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | NIFM_S::NIFM_S() : ServiceFramework("nifm:s") { | ||||||
|  |     static const FunctionInfo functions[] = { | ||||||
|  |         {4, &NIFM_S::CreateGeneralServiceOld, "CreateGeneralServiceOld"}, | ||||||
|  |         {5, &NIFM_S::CreateGeneralService, "CreateGeneralService"}, | ||||||
|  |     }; | ||||||
|  |     RegisterHandlers(functions); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | } // namespace NIFM | ||||||
|  | } // namespace Service | ||||||
							
								
								
									
										24
									
								
								src/core/hle/service/nifm/nifm_s.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/core/hle/service/nifm/nifm_s.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | // Copyright 2018 yuzu emulator team | ||||||
|  | // Licensed under GPLv2 or any later version | ||||||
|  | // Refer to the license.txt file included. | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
|  |  | ||||||
|  | #include "core/hle/kernel/hle_ipc.h" | ||||||
|  | #include "core/hle/service/service.h" | ||||||
|  |  | ||||||
|  | namespace Service { | ||||||
|  | namespace NIFM { | ||||||
|  |  | ||||||
|  | class NIFM_S final : public ServiceFramework<NIFM_S> { | ||||||
|  | public: | ||||||
|  |     NIFM_S(); | ||||||
|  |     ~NIFM_S() = default; | ||||||
|  |  | ||||||
|  | private: | ||||||
|  |     void CreateGeneralServiceOld(Kernel::HLERequestContext& ctx); | ||||||
|  |     void CreateGeneralService(Kernel::HLERequestContext& ctx); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | } // namespace NIFM | ||||||
|  | } // namespace Service | ||||||
							
								
								
									
										36
									
								
								src/core/hle/service/nifm/nifm_u.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								src/core/hle/service/nifm/nifm_u.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | // Copyright 2018 yuzu emulator team | ||||||
|  | // Licensed under GPLv2 or any later version | ||||||
|  | // Refer to the license.txt file included. | ||||||
|  |  | ||||||
|  | #include "common/logging/log.h" | ||||||
|  | #include "core/hle/ipc_helpers.h" | ||||||
|  | #include "core/hle/service/nifm/nifm.h" | ||||||
|  | #include "core/hle/service/nifm/nifm_u.h" | ||||||
|  |  | ||||||
|  | namespace Service { | ||||||
|  | namespace NIFM { | ||||||
|  |  | ||||||
|  | void NIFM_U::CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) { | ||||||
|  |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|  |     rb.Push(RESULT_SUCCESS); | ||||||
|  |     rb.PushIpcInterface<IGeneralService>(); | ||||||
|  |     LOG_DEBUG(Service, "called"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void NIFM_U::CreateGeneralService(Kernel::HLERequestContext& ctx) { | ||||||
|  |     IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||||
|  |     rb.Push(RESULT_SUCCESS); | ||||||
|  |     rb.PushIpcInterface<IGeneralService>(); | ||||||
|  |     LOG_DEBUG(Service, "called"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | NIFM_U::NIFM_U() : ServiceFramework("nifm:u") { | ||||||
|  |     static const FunctionInfo functions[] = { | ||||||
|  |         {4, &NIFM_U::CreateGeneralServiceOld, "CreateGeneralServiceOld"}, | ||||||
|  |         {5, &NIFM_U::CreateGeneralService, "CreateGeneralService"}, | ||||||
|  |     }; | ||||||
|  |     RegisterHandlers(functions); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | } // namespace NIFM | ||||||
|  | } // namespace Service | ||||||
							
								
								
									
										24
									
								
								src/core/hle/service/nifm/nifm_u.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/core/hle/service/nifm/nifm_u.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | // Copyright 2018 yuzu emulator team | ||||||
|  | // Licensed under GPLv2 or any later version | ||||||
|  | // Refer to the license.txt file included. | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
|  |  | ||||||
|  | #include "core/hle/kernel/hle_ipc.h" | ||||||
|  | #include "core/hle/service/service.h" | ||||||
|  |  | ||||||
|  | namespace Service { | ||||||
|  | namespace NIFM { | ||||||
|  |  | ||||||
|  | class NIFM_U final : public ServiceFramework<NIFM_U> { | ||||||
|  | public: | ||||||
|  |     NIFM_U(); | ||||||
|  |     ~NIFM_U() = default; | ||||||
|  |  | ||||||
|  | private: | ||||||
|  |     void CreateGeneralServiceOld(Kernel::HLERequestContext& ctx); | ||||||
|  |     void CreateGeneralService(Kernel::HLERequestContext& ctx); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | } // namespace NIFM | ||||||
|  | } // namespace Service | ||||||
| @@ -22,6 +22,7 @@ | |||||||
| #include "core/hle/service/filesystem/filesystem.h" | #include "core/hle/service/filesystem/filesystem.h" | ||||||
| #include "core/hle/service/hid/hid.h" | #include "core/hle/service/hid/hid.h" | ||||||
| #include "core/hle/service/lm/lm.h" | #include "core/hle/service/lm/lm.h" | ||||||
|  | #include "core/hle/service/nifm/nifm.h" | ||||||
| #include "core/hle/service/nvdrv/nvdrv.h" | #include "core/hle/service/nvdrv/nvdrv.h" | ||||||
| #include "core/hle/service/pctl/pctl.h" | #include "core/hle/service/pctl/pctl.h" | ||||||
| #include "core/hle/service/service.h" | #include "core/hle/service/service.h" | ||||||
| @@ -180,6 +181,7 @@ void Init() { | |||||||
|     FileSystem::InstallInterfaces(*SM::g_service_manager); |     FileSystem::InstallInterfaces(*SM::g_service_manager); | ||||||
|     HID::InstallInterfaces(*SM::g_service_manager); |     HID::InstallInterfaces(*SM::g_service_manager); | ||||||
|     LM::InstallInterfaces(*SM::g_service_manager); |     LM::InstallInterfaces(*SM::g_service_manager); | ||||||
|  |     NIFM::InstallInterfaces(*SM::g_service_manager); | ||||||
|     Nvidia::InstallInterfaces(*SM::g_service_manager); |     Nvidia::InstallInterfaces(*SM::g_service_manager); | ||||||
|     PCTL::InstallInterfaces(*SM::g_service_manager); |     PCTL::InstallInterfaces(*SM::g_service_manager); | ||||||
|     Sockets::InstallInterfaces(*SM::g_service_manager); |     Sockets::InstallInterfaces(*SM::g_service_manager); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user