mirror of https://git.suyu.dev/suyu/suyu
Service:nifm: add nifm:a, nifm:s and nifm:u services
This commit is contained in:
parent
1a8f5bfb8e
commit
f67a8d87a0
|
@ -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
|
||||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue