diff options
| author | 2018-02-02 14:31:27 +0300 | |
|---|---|---|
| committer | 2018-02-03 18:09:51 +0300 | |
| commit | f67a8d87a0d5e2b0b95289af91ea4478b6adbb6f (patch) | |
| tree | b9448ff3ac4263fec4302432222da935f3ab3f65 /src | |
| parent | Service/am: Add AppletAE service (#153) (diff) | |
| download | yuzu-f67a8d87a0d5e2b0b95289af91ea4478b6adbb6f.tar.gz yuzu-f67a8d87a0d5e2b0b95289af91ea4478b6adbb6f.tar.xz yuzu-f67a8d87a0d5e2b0b95289af91ea4478b6adbb6f.zip | |
Service:nifm: add nifm:a, nifm:s and nifm:u services
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/CMakeLists.txt | 8 | ||||
| -rw-r--r-- | src/core/hle/service/nifm/nifm.cpp | 161 | ||||
| -rw-r--r-- | src/core/hle/service/nifm/nifm.h | 27 | ||||
| -rw-r--r-- | src/core/hle/service/nifm/nifm_a.cpp | 36 | ||||
| -rw-r--r-- | src/core/hle/service/nifm/nifm_a.h | 24 | ||||
| -rw-r--r-- | src/core/hle/service/nifm/nifm_s.cpp | 36 | ||||
| -rw-r--r-- | src/core/hle/service/nifm/nifm_s.h | 24 | ||||
| -rw-r--r-- | src/core/hle/service/nifm/nifm_u.cpp | 36 | ||||
| -rw-r--r-- | src/core/hle/service/nifm/nifm_u.h | 24 | ||||
| -rw-r--r-- | src/core/hle/service/service.cpp | 2 |
10 files changed, 378 insertions, 0 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 848b17b18..951bc37b5 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt | |||
| @@ -114,6 +114,14 @@ add_library(core STATIC | |||
| 114 | hle/service/hid/hid.h | 114 | hle/service/hid/hid.h |
| 115 | hle/service/lm/lm.cpp | 115 | hle/service/lm/lm.cpp |
| 116 | hle/service/lm/lm.h | 116 | hle/service/lm/lm.h |
| 117 | hle/service/nifm/nifm.cpp | ||
| 118 | hle/service/nifm/nifm.h | ||
| 119 | hle/service/nifm/nifm_a.cpp | ||
| 120 | hle/service/nifm/nifm_a.h | ||
| 121 | hle/service/nifm/nifm_s.cpp | ||
| 122 | hle/service/nifm/nifm_s.h | ||
| 123 | hle/service/nifm/nifm_u.cpp | ||
| 124 | hle/service/nifm/nifm_u.h | ||
| 117 | hle/service/nvdrv/devices/nvdevice.h | 125 | hle/service/nvdrv/devices/nvdevice.h |
| 118 | hle/service/nvdrv/devices/nvdisp_disp0.cpp | 126 | hle/service/nvdrv/devices/nvdisp_disp0.cpp |
| 119 | hle/service/nvdrv/devices/nvdisp_disp0.h | 127 | hle/service/nvdrv/devices/nvdisp_disp0.h |
diff --git a/src/core/hle/service/nifm/nifm.cpp b/src/core/hle/service/nifm/nifm.cpp new file mode 100644 index 000000000..f91571eb4 --- /dev/null +++ b/src/core/hle/service/nifm/nifm.cpp | |||
| @@ -0,0 +1,161 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include "core/hle/ipc_helpers.h" | ||
| 6 | #include "core/hle/service/nifm/nifm.h" | ||
| 7 | #include "core/hle/service/nifm/nifm_a.h" | ||
| 8 | #include "core/hle/service/nifm/nifm_s.h" | ||
| 9 | #include "core/hle/service/nifm/nifm_u.h" | ||
| 10 | |||
| 11 | namespace Service { | ||
| 12 | namespace NIFM { | ||
| 13 | |||
| 14 | class IScanRequest final : public ServiceFramework<IScanRequest> { | ||
| 15 | public: | ||
| 16 | explicit IScanRequest() : ServiceFramework("IScanRequest") { | ||
| 17 | static const FunctionInfo functions[] = { | ||
| 18 | {0, nullptr, "Submit"}, | ||
| 19 | {1, nullptr, "IsProcessing"}, | ||
| 20 | {2, nullptr, "GetResult"}, | ||
| 21 | {3, nullptr, "GetSystemEventReadableHandle"}, | ||
| 22 | }; | ||
| 23 | RegisterHandlers(functions); | ||
| 24 | } | ||
| 25 | }; | ||
| 26 | |||
| 27 | class IRequest final : public ServiceFramework<IRequest> { | ||
| 28 | public: | ||
| 29 | explicit IRequest() : ServiceFramework("IRequest") { | ||
| 30 | static const FunctionInfo functions[] = { | ||
| 31 | {0, nullptr, "GetRequestState"}, | ||
| 32 | {1, nullptr, "GetResult"}, | ||
| 33 | {2, nullptr, "GetSystemEventReadableHandles"}, | ||
| 34 | {3, nullptr, "Cancel"}, | ||
| 35 | {4, nullptr, "Submit"}, | ||
| 36 | {5, nullptr, "SetRequirement"}, | ||
| 37 | {6, nullptr, "SetRequirementPreset"}, | ||
| 38 | {8, nullptr, "SetPriority"}, | ||
| 39 | {9, nullptr, "SetNetworkProfileId"}, | ||
| 40 | {10, nullptr, "SetRejectable"}, | ||
| 41 | {11, nullptr, "SetConnectionConfirmationOption"}, | ||
| 42 | {12, nullptr, "SetPersistent"}, | ||
| 43 | {13, nullptr, "SetInstant"}, | ||
| 44 | {14, nullptr, "SetSustainable"}, | ||
| 45 | {15, nullptr, "SetRawPriority"}, | ||
| 46 | {16, nullptr, "SetGreedy"}, | ||
| 47 | {17, nullptr, "SetSharable"}, | ||
| 48 | {18, nullptr, "SetRequirementByRevision"}, | ||
| 49 | {19, nullptr, "GetRequirement"}, | ||
| 50 | {20, nullptr, "GetRevision"}, | ||
| 51 | {21, nullptr, "GetAppletInfo"}, | ||
| 52 | {22, nullptr, "GetAdditionalInfo"}, | ||
| 53 | {23, nullptr, "SetKeptInSleep"}, | ||
| 54 | {24, nullptr, "RegisterSocketDescriptor"}, | ||
| 55 | {25, nullptr, "UnregisterSocketDescriptor"}, | ||
| 56 | }; | ||
| 57 | RegisterHandlers(functions); | ||
| 58 | } | ||
| 59 | }; | ||
| 60 | |||
| 61 | class INetworkProfile final : public ServiceFramework<INetworkProfile> { | ||
| 62 | public: | ||
| 63 | explicit INetworkProfile() : ServiceFramework("INetworkProfile") { | ||
| 64 | static const FunctionInfo functions[] = { | ||
| 65 | {0, nullptr, "Update"}, | ||
| 66 | {1, nullptr, "PersistOld"}, | ||
| 67 | {2, nullptr, "Persist"}, | ||
| 68 | }; | ||
| 69 | RegisterHandlers(functions); | ||
| 70 | } | ||
| 71 | }; | ||
| 72 | |||
| 73 | IGeneralService::IGeneralService() : ServiceFramework("IGeneralService") { | ||
| 74 | static const FunctionInfo functions[] = { | ||
| 75 | {1, &IGeneralService::GetClientId, "GetClientId"}, | ||
| 76 | {2, &IGeneralService::CreateScanRequest, "CreateScanRequest"}, | ||
| 77 | {4, &IGeneralService::CreateRequest, "CreateRequest"}, | ||
| 78 | {6, nullptr, "GetCurrentNetworkProfile"}, | ||
| 79 | {7, nullptr, "EnumerateNetworkInterfaces"}, | ||
| 80 | {8, nullptr, "GetNetworkProfile"}, | ||
| 81 | {9, nullptr, "SetNetworkProfile"}, | ||
| 82 | {10, &IGeneralService::RemoveNetworkProfile, "RemoveNetworkProfile"}, | ||
| 83 | {11, nullptr, "GetScanDataOld"}, | ||
| 84 | {12, nullptr, "GetCurrentIpAddress"}, | ||
| 85 | {13, nullptr, "GetCurrentAccessPointOld"}, | ||
| 86 | {14, &IGeneralService::CreateTemporaryNetworkProfile, "CreateTemporaryNetworkProfile"}, | ||
| 87 | {15, nullptr, "GetCurrentIpConfigInfo"}, | ||
| 88 | {16, nullptr, "SetWirelessCommunicationEnabled"}, | ||
| 89 | {17, nullptr, "IsWirelessCommunicationEnabled"}, | ||
| 90 | {18, nullptr, "GetInternetConnectionStatus"}, | ||
| 91 | {19, nullptr, "SetEthernetCommunicationEnabled"}, | ||
| 92 | {20, nullptr, "IsEthernetCommunicationEnabled"}, | ||
| 93 | {21, nullptr, "IsAnyInternetRequestAccepted"}, | ||
| 94 | {22, nullptr, "IsAnyForegroundRequestAccepted"}, | ||
| 95 | {23, nullptr, "PutToSleep"}, | ||
| 96 | {24, nullptr, "WakeUp"}, | ||
| 97 | {25, nullptr, "GetSsidListVersion"}, | ||
| 98 | {26, nullptr, "SetExclusiveClient"}, | ||
| 99 | {27, nullptr, "GetDefaultIpSetting"}, | ||
| 100 | {28, nullptr, "SetDefaultIpSetting"}, | ||
| 101 | {29, nullptr, "SetWirelessCommunicationEnabledForTest"}, | ||
| 102 | {30, nullptr, "SetEthernetCommunicationEnabledForTest"}, | ||
| 103 | {31, nullptr, "GetTelemetorySystemEventReadableHandle"}, | ||
| 104 | {32, nullptr, "GetTelemetryInfo"}, | ||
| 105 | {33, nullptr, "ConfirmSystemAvailability"}, | ||
| 106 | {34, nullptr, "SetBackgroundRequestEnabled"}, | ||
| 107 | {35, nullptr, "GetScanData"}, | ||
| 108 | {36, nullptr, "GetCurrentAccessPoint"}, | ||
| 109 | {37, nullptr, "Shutdown"}, | ||
| 110 | }; | ||
| 111 | RegisterHandlers(functions); | ||
| 112 | } | ||
| 113 | |||
| 114 | void IGeneralService::GetClientId(Kernel::HLERequestContext& ctx) { | ||
| 115 | LOG_WARNING(Service, "(STUBBED) called"); | ||
| 116 | IPC::ResponseBuilder rb{ctx, 4}; | ||
| 117 | rb.Push(RESULT_SUCCESS); | ||
| 118 | rb.Push<u64>(0); | ||
| 119 | } | ||
| 120 | |||
| 121 | void IGeneralService::CreateScanRequest(Kernel::HLERequestContext& ctx) { | ||
| 122 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 123 | |||
| 124 | rb.Push(RESULT_SUCCESS); | ||
| 125 | rb.PushIpcInterface<IScanRequest>(); | ||
| 126 | |||
| 127 | LOG_DEBUG(Service, "called"); | ||
| 128 | } | ||
| 129 | |||
| 130 | void IGeneralService::CreateRequest(Kernel::HLERequestContext& ctx) { | ||
| 131 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 132 | |||
| 133 | rb.Push(RESULT_SUCCESS); | ||
| 134 | rb.PushIpcInterface<IRequest>(); | ||
| 135 | |||
| 136 | LOG_DEBUG(Service, "called"); | ||
| 137 | } | ||
| 138 | |||
| 139 | void IGeneralService::RemoveNetworkProfile(Kernel::HLERequestContext& ctx) { | ||
| 140 | LOG_WARNING(Service, "(STUBBED) called"); | ||
| 141 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 142 | rb.Push(RESULT_SUCCESS); | ||
| 143 | } | ||
| 144 | |||
| 145 | void IGeneralService::CreateTemporaryNetworkProfile(Kernel::HLERequestContext& ctx) { | ||
| 146 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 147 | |||
| 148 | rb.Push(RESULT_SUCCESS); | ||
| 149 | rb.PushIpcInterface<INetworkProfile>(); | ||
| 150 | |||
| 151 | LOG_DEBUG(Service, "called"); | ||
| 152 | } | ||
| 153 | |||
| 154 | void InstallInterfaces(SM::ServiceManager& service_manager) { | ||
| 155 | std::make_shared<NIFM_A>()->InstallAsService(service_manager); | ||
| 156 | std::make_shared<NIFM_S>()->InstallAsService(service_manager); | ||
| 157 | std::make_shared<NIFM_U>()->InstallAsService(service_manager); | ||
| 158 | } | ||
| 159 | |||
| 160 | } // namespace NIFM | ||
| 161 | } // namespace Service | ||
diff --git a/src/core/hle/service/nifm/nifm.h b/src/core/hle/service/nifm/nifm.h new file mode 100644 index 000000000..6edbfe4a4 --- /dev/null +++ b/src/core/hle/service/nifm/nifm.h | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "core/hle/service/service.h" | ||
| 8 | |||
| 9 | namespace Service { | ||
| 10 | namespace NIFM { | ||
| 11 | |||
| 12 | class IGeneralService final : public ServiceFramework<IGeneralService> { | ||
| 13 | public: | ||
| 14 | IGeneralService(); | ||
| 15 | |||
| 16 | private: | ||
| 17 | void GetClientId(Kernel::HLERequestContext& ctx); | ||
| 18 | void CreateScanRequest(Kernel::HLERequestContext& ctx); | ||
| 19 | void CreateRequest(Kernel::HLERequestContext& ctx); | ||
| 20 | void RemoveNetworkProfile(Kernel::HLERequestContext& ctx); | ||
| 21 | void CreateTemporaryNetworkProfile(Kernel::HLERequestContext& ctx); | ||
| 22 | }; | ||
| 23 | |||
| 24 | void InstallInterfaces(SM::ServiceManager& service_manager); | ||
| 25 | |||
| 26 | } // namespace NIFM | ||
| 27 | } // namespace Service | ||
diff --git a/src/core/hle/service/nifm/nifm_a.cpp b/src/core/hle/service/nifm/nifm_a.cpp new file mode 100644 index 000000000..3835a87bf --- /dev/null +++ b/src/core/hle/service/nifm/nifm_a.cpp | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include "common/logging/log.h" | ||
| 6 | #include "core/hle/ipc_helpers.h" | ||
| 7 | #include "core/hle/service/nifm/nifm.h" | ||
| 8 | #include "core/hle/service/nifm/nifm_a.h" | ||
| 9 | |||
| 10 | namespace Service { | ||
| 11 | namespace NIFM { | ||
| 12 | |||
| 13 | void NIFM_A::CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) { | ||
| 14 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 15 | rb.Push(RESULT_SUCCESS); | ||
| 16 | rb.PushIpcInterface<IGeneralService>(); | ||
| 17 | LOG_DEBUG(Service, "called"); | ||
| 18 | } | ||
| 19 | |||
| 20 | void NIFM_A::CreateGeneralService(Kernel::HLERequestContext& ctx) { | ||
| 21 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 22 | rb.Push(RESULT_SUCCESS); | ||
| 23 | rb.PushIpcInterface<IGeneralService>(); | ||
| 24 | LOG_DEBUG(Service, "called"); | ||
| 25 | } | ||
| 26 | |||
| 27 | NIFM_A::NIFM_A() : ServiceFramework("nifm:a") { | ||
| 28 | static const FunctionInfo functions[] = { | ||
| 29 | {4, &NIFM_A::CreateGeneralServiceOld, "CreateGeneralServiceOld"}, | ||
| 30 | {5, &NIFM_A::CreateGeneralService, "CreateGeneralService"}, | ||
| 31 | }; | ||
| 32 | RegisterHandlers(functions); | ||
| 33 | } | ||
| 34 | |||
| 35 | } // namespace NIFM | ||
| 36 | } // namespace Service | ||
diff --git a/src/core/hle/service/nifm/nifm_a.h b/src/core/hle/service/nifm/nifm_a.h new file mode 100644 index 000000000..06a92a93c --- /dev/null +++ b/src/core/hle/service/nifm/nifm_a.h | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "core/hle/kernel/hle_ipc.h" | ||
| 8 | #include "core/hle/service/service.h" | ||
| 9 | |||
| 10 | namespace Service { | ||
| 11 | namespace NIFM { | ||
| 12 | |||
| 13 | class NIFM_A final : public ServiceFramework<NIFM_A> { | ||
| 14 | public: | ||
| 15 | NIFM_A(); | ||
| 16 | ~NIFM_A() = default; | ||
| 17 | |||
| 18 | private: | ||
| 19 | void CreateGeneralServiceOld(Kernel::HLERequestContext& ctx); | ||
| 20 | void CreateGeneralService(Kernel::HLERequestContext& ctx); | ||
| 21 | }; | ||
| 22 | |||
| 23 | } // namespace NIFM | ||
| 24 | } // namespace Service | ||
diff --git a/src/core/hle/service/nifm/nifm_s.cpp b/src/core/hle/service/nifm/nifm_s.cpp new file mode 100644 index 000000000..cbb42891c --- /dev/null +++ b/src/core/hle/service/nifm/nifm_s.cpp | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include "common/logging/log.h" | ||
| 6 | #include "core/hle/ipc_helpers.h" | ||
| 7 | #include "core/hle/service/nifm/nifm.h" | ||
| 8 | #include "core/hle/service/nifm/nifm_s.h" | ||
| 9 | |||
| 10 | namespace Service { | ||
| 11 | namespace NIFM { | ||
| 12 | |||
| 13 | void NIFM_S::CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) { | ||
| 14 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 15 | rb.Push(RESULT_SUCCESS); | ||
| 16 | rb.PushIpcInterface<IGeneralService>(); | ||
| 17 | LOG_DEBUG(Service, "called"); | ||
| 18 | } | ||
| 19 | |||
| 20 | void NIFM_S::CreateGeneralService(Kernel::HLERequestContext& ctx) { | ||
| 21 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 22 | rb.Push(RESULT_SUCCESS); | ||
| 23 | rb.PushIpcInterface<IGeneralService>(); | ||
| 24 | LOG_DEBUG(Service, "called"); | ||
| 25 | } | ||
| 26 | |||
| 27 | NIFM_S::NIFM_S() : ServiceFramework("nifm:s") { | ||
| 28 | static const FunctionInfo functions[] = { | ||
| 29 | {4, &NIFM_S::CreateGeneralServiceOld, "CreateGeneralServiceOld"}, | ||
| 30 | {5, &NIFM_S::CreateGeneralService, "CreateGeneralService"}, | ||
| 31 | }; | ||
| 32 | RegisterHandlers(functions); | ||
| 33 | } | ||
| 34 | |||
| 35 | } // namespace NIFM | ||
| 36 | } // namespace Service | ||
diff --git a/src/core/hle/service/nifm/nifm_s.h b/src/core/hle/service/nifm/nifm_s.h new file mode 100644 index 000000000..d11a1ec29 --- /dev/null +++ b/src/core/hle/service/nifm/nifm_s.h | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "core/hle/kernel/hle_ipc.h" | ||
| 8 | #include "core/hle/service/service.h" | ||
| 9 | |||
| 10 | namespace Service { | ||
| 11 | namespace NIFM { | ||
| 12 | |||
| 13 | class NIFM_S final : public ServiceFramework<NIFM_S> { | ||
| 14 | public: | ||
| 15 | NIFM_S(); | ||
| 16 | ~NIFM_S() = default; | ||
| 17 | |||
| 18 | private: | ||
| 19 | void CreateGeneralServiceOld(Kernel::HLERequestContext& ctx); | ||
| 20 | void CreateGeneralService(Kernel::HLERequestContext& ctx); | ||
| 21 | }; | ||
| 22 | |||
| 23 | } // namespace NIFM | ||
| 24 | } // namespace Service | ||
diff --git a/src/core/hle/service/nifm/nifm_u.cpp b/src/core/hle/service/nifm/nifm_u.cpp new file mode 100644 index 000000000..c6de14744 --- /dev/null +++ b/src/core/hle/service/nifm/nifm_u.cpp | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include "common/logging/log.h" | ||
| 6 | #include "core/hle/ipc_helpers.h" | ||
| 7 | #include "core/hle/service/nifm/nifm.h" | ||
| 8 | #include "core/hle/service/nifm/nifm_u.h" | ||
| 9 | |||
| 10 | namespace Service { | ||
| 11 | namespace NIFM { | ||
| 12 | |||
| 13 | void NIFM_U::CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) { | ||
| 14 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 15 | rb.Push(RESULT_SUCCESS); | ||
| 16 | rb.PushIpcInterface<IGeneralService>(); | ||
| 17 | LOG_DEBUG(Service, "called"); | ||
| 18 | } | ||
| 19 | |||
| 20 | void NIFM_U::CreateGeneralService(Kernel::HLERequestContext& ctx) { | ||
| 21 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 22 | rb.Push(RESULT_SUCCESS); | ||
| 23 | rb.PushIpcInterface<IGeneralService>(); | ||
| 24 | LOG_DEBUG(Service, "called"); | ||
| 25 | } | ||
| 26 | |||
| 27 | NIFM_U::NIFM_U() : ServiceFramework("nifm:u") { | ||
| 28 | static const FunctionInfo functions[] = { | ||
| 29 | {4, &NIFM_U::CreateGeneralServiceOld, "CreateGeneralServiceOld"}, | ||
| 30 | {5, &NIFM_U::CreateGeneralService, "CreateGeneralService"}, | ||
| 31 | }; | ||
| 32 | RegisterHandlers(functions); | ||
| 33 | } | ||
| 34 | |||
| 35 | } // namespace NIFM | ||
| 36 | } // namespace Service | ||
diff --git a/src/core/hle/service/nifm/nifm_u.h b/src/core/hle/service/nifm/nifm_u.h new file mode 100644 index 000000000..da40b604f --- /dev/null +++ b/src/core/hle/service/nifm/nifm_u.h | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "core/hle/kernel/hle_ipc.h" | ||
| 8 | #include "core/hle/service/service.h" | ||
| 9 | |||
| 10 | namespace Service { | ||
| 11 | namespace NIFM { | ||
| 12 | |||
| 13 | class NIFM_U final : public ServiceFramework<NIFM_U> { | ||
| 14 | public: | ||
| 15 | NIFM_U(); | ||
| 16 | ~NIFM_U() = default; | ||
| 17 | |||
| 18 | private: | ||
| 19 | void CreateGeneralServiceOld(Kernel::HLERequestContext& ctx); | ||
| 20 | void CreateGeneralService(Kernel::HLERequestContext& ctx); | ||
| 21 | }; | ||
| 22 | |||
| 23 | } // namespace NIFM | ||
| 24 | } // namespace Service | ||
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index 294351b76..1dd04a12f 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | #include "core/hle/service/filesystem/filesystem.h" | 22 | #include "core/hle/service/filesystem/filesystem.h" |
| 23 | #include "core/hle/service/hid/hid.h" | 23 | #include "core/hle/service/hid/hid.h" |
| 24 | #include "core/hle/service/lm/lm.h" | 24 | #include "core/hle/service/lm/lm.h" |
| 25 | #include "core/hle/service/nifm/nifm.h" | ||
| 25 | #include "core/hle/service/nvdrv/nvdrv.h" | 26 | #include "core/hle/service/nvdrv/nvdrv.h" |
| 26 | #include "core/hle/service/pctl/pctl.h" | 27 | #include "core/hle/service/pctl/pctl.h" |
| 27 | #include "core/hle/service/service.h" | 28 | #include "core/hle/service/service.h" |
| @@ -180,6 +181,7 @@ void Init() { | |||
| 180 | FileSystem::InstallInterfaces(*SM::g_service_manager); | 181 | FileSystem::InstallInterfaces(*SM::g_service_manager); |
| 181 | HID::InstallInterfaces(*SM::g_service_manager); | 182 | HID::InstallInterfaces(*SM::g_service_manager); |
| 182 | LM::InstallInterfaces(*SM::g_service_manager); | 183 | LM::InstallInterfaces(*SM::g_service_manager); |
| 184 | NIFM::InstallInterfaces(*SM::g_service_manager); | ||
| 183 | Nvidia::InstallInterfaces(*SM::g_service_manager); | 185 | Nvidia::InstallInterfaces(*SM::g_service_manager); |
| 184 | PCTL::InstallInterfaces(*SM::g_service_manager); | 186 | PCTL::InstallInterfaces(*SM::g_service_manager); |
| 185 | Sockets::InstallInterfaces(*SM::g_service_manager); | 187 | Sockets::InstallInterfaces(*SM::g_service_manager); |