summaryrefslogtreecommitdiffstats
path: root/src/core/hle
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle')
-rw-r--r--src/core/hle/service/grc/grc.cpp31
-rw-r--r--src/core/hle/service/grc/grc.h15
-rw-r--r--src/core/hle/service/hid/hid.cpp225
-rw-r--r--src/core/hle/service/hid/irs.cpp49
-rw-r--r--src/core/hle/service/hid/irs.h21
-rw-r--r--src/core/hle/service/hid/xcd.cpp37
-rw-r--r--src/core/hle/service/hid/xcd.h16
-rw-r--r--src/core/hle/service/ldn/ldn.cpp142
-rw-r--r--src/core/hle/service/ldn/ldn.h16
-rw-r--r--src/core/hle/service/lm/lm.cpp60
-rw-r--r--src/core/hle/service/lm/lm.h15
-rw-r--r--src/core/hle/service/nim/nim.cpp124
-rw-r--r--src/core/hle/service/nim/nim.h15
-rw-r--r--src/core/hle/service/service.cpp6
-rw-r--r--src/core/hle/service/sockets/bsd.cpp22
-rw-r--r--src/core/hle/service/sockets/bsd.h5
-rw-r--r--src/core/hle/service/sockets/ethc.cpp38
-rw-r--r--src/core/hle/service/sockets/ethc.h21
-rw-r--r--src/core/hle/service/sockets/sockets.cpp7
19 files changed, 825 insertions, 40 deletions
diff --git a/src/core/hle/service/grc/grc.cpp b/src/core/hle/service/grc/grc.cpp
new file mode 100644
index 000000000..24910ac6c
--- /dev/null
+++ b/src/core/hle/service/grc/grc.cpp
@@ -0,0 +1,31 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include <memory>
+
+#include "core/hle/service/grc/grc.h"
+#include "core/hle/service/service.h"
+#include "core/hle/service/sm/sm.h"
+
+namespace Service::GRC {
+
+class GRC final : public ServiceFramework<GRC> {
+public:
+ explicit GRC() : ServiceFramework{"grc:c"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {1, nullptr, "OpenContinuousRecorder"},
+ {2, nullptr, "OpenGameMovieTrimmer"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+ }
+};
+
+void InstallInterfaces(SM::ServiceManager& sm) {
+ std::make_shared<GRC>()->InstallAsService(sm);
+}
+
+} // namespace Service::GRC
diff --git a/src/core/hle/service/grc/grc.h b/src/core/hle/service/grc/grc.h
new file mode 100644
index 000000000..e0d29e70d
--- /dev/null
+++ b/src/core/hle/service/grc/grc.h
@@ -0,0 +1,15 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+namespace Service::SM {
+class ServiceManager;
+}
+
+namespace Service::GRC {
+
+void InstallInterfaces(SM::ServiceManager& sm);
+
+} // namespace Service::GRC
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp
index 9a02ba686..e4619a547 100644
--- a/src/core/hle/service/hid/hid.cpp
+++ b/src/core/hle/service/hid/hid.cpp
@@ -14,6 +14,8 @@
#include "core/hle/kernel/event.h"
#include "core/hle/kernel/shared_memory.h"
#include "core/hle/service/hid/hid.h"
+#include "core/hle/service/hid/irs.h"
+#include "core/hle/service/hid/xcd.h"
#include "core/hle/service/service.h"
namespace Service::HID {
@@ -555,10 +557,233 @@ private:
}
};
+class HidDbg final : public ServiceFramework<HidDbg> {
+public:
+ explicit HidDbg() : ServiceFramework{"hid:dbg"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "DeactivateDebugPad"},
+ {1, nullptr, "SetDebugPadAutoPilotState"},
+ {2, nullptr, "UnsetDebugPadAutoPilotState"},
+ {10, nullptr, "DeactivateTouchScreen"},
+ {11, nullptr, "SetTouchScreenAutoPilotState"},
+ {12, nullptr, "UnsetTouchScreenAutoPilotState"},
+ {20, nullptr, "DeactivateMouse"},
+ {21, nullptr, "SetMouseAutoPilotState"},
+ {22, nullptr, "UnsetMouseAutoPilotState"},
+ {30, nullptr, "DeactivateKeyboard"},
+ {31, nullptr, "SetKeyboardAutoPilotState"},
+ {32, nullptr, "UnsetKeyboardAutoPilotState"},
+ {50, nullptr, "DeactivateXpad"},
+ {51, nullptr, "SetXpadAutoPilotState"},
+ {52, nullptr, "UnsetXpadAutoPilotState"},
+ {60, nullptr, "DeactivateJoyXpad"},
+ {91, nullptr, "DeactivateGesture"},
+ {110, nullptr, "DeactivateHomeButton"},
+ {111, nullptr, "SetHomeButtonAutoPilotState"},
+ {112, nullptr, "UnsetHomeButtonAutoPilotState"},
+ {120, nullptr, "DeactivateSleepButton"},
+ {121, nullptr, "SetSleepButtonAutoPilotState"},
+ {122, nullptr, "UnsetSleepButtonAutoPilotState"},
+ {123, nullptr, "DeactivateInputDetector"},
+ {130, nullptr, "DeactivateCaptureButton"},
+ {131, nullptr, "SetCaptureButtonAutoPilotState"},
+ {132, nullptr, "UnsetCaptureButtonAutoPilotState"},
+ {133, nullptr, "SetShiftAccelerometerCalibrationValue"},
+ {134, nullptr, "GetShiftAccelerometerCalibrationValue"},
+ {135, nullptr, "SetShiftGyroscopeCalibrationValue"},
+ {136, nullptr, "GetShiftGyroscopeCalibrationValue"},
+ {140, nullptr, "DeactivateConsoleSixAxisSensor"},
+ {141, nullptr, "GetConsoleSixAxisSensorSamplingFrequency"},
+ {142, nullptr, "DeactivateSevenSixAxisSensor"},
+ {201, nullptr, "ActivateFirmwareUpdate"},
+ {202, nullptr, "DeactivateFirmwareUpdate"},
+ {203, nullptr, "StartFirmwareUpdate"},
+ {204, nullptr, "GetFirmwareUpdateStage"},
+ {205, nullptr, "GetFirmwareVersion"},
+ {206, nullptr, "GetDestinationFirmwareVersion"},
+ {207, nullptr, "DiscardFirmwareInfoCacheForRevert"},
+ {208, nullptr, "StartFirmwareUpdateForRevert"},
+ {209, nullptr, "GetAvailableFirmwareVersionForRevert"},
+ {210, nullptr, "IsFirmwareUpdatingDevice"},
+ {221, nullptr, "UpdateControllerColor"},
+ {222, nullptr, "ConnectUsbPadsAsync"},
+ {223, nullptr, "DisconnectUsbPadsAsync"},
+ {224, nullptr, "UpdateDesignInfo"},
+ {225, nullptr, "GetUniquePadDriverState"},
+ {226, nullptr, "GetSixAxisSensorDriverStates"},
+ {301, nullptr, "GetAbstractedPadHandles"},
+ {302, nullptr, "GetAbstractedPadState"},
+ {303, nullptr, "GetAbstractedPadsState"},
+ {321, nullptr, "SetAutoPilotVirtualPadState"},
+ {322, nullptr, "UnsetAutoPilotVirtualPadState"},
+ {323, nullptr, "UnsetAllAutoPilotVirtualPadState"},
+ {350, nullptr, "AddRegisteredDevice"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+ }
+};
+
+class HidSys final : public ServiceFramework<HidSys> {
+public:
+ explicit HidSys() : ServiceFramework{"hid:sys"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {31, nullptr, "SendKeyboardLockKeyEvent"},
+ {101, nullptr, "AcquireHomeButtonEventHandle"},
+ {111, nullptr, "ActivateHomeButton"},
+ {121, nullptr, "AcquireSleepButtonEventHandle"},
+ {131, nullptr, "ActivateSleepButton"},
+ {141, nullptr, "AcquireCaptureButtonEventHandle"},
+ {151, nullptr, "ActivateCaptureButton"},
+ {210, nullptr, "AcquireNfcDeviceUpdateEventHandle"},
+ {211, nullptr, "GetNpadsWithNfc"},
+ {212, nullptr, "AcquireNfcActivateEventHandle"},
+ {213, nullptr, "ActivateNfc"},
+ {214, nullptr, "GetXcdHandleForNpadWithNfc"},
+ {215, nullptr, "IsNfcActivated"},
+ {230, nullptr, "AcquireIrSensorEventHandle"},
+ {231, nullptr, "ActivateIrSensor"},
+ {301, nullptr, "ActivateNpadSystem"},
+ {303, nullptr, "ApplyNpadSystemCommonPolicy"},
+ {304, nullptr, "EnableAssigningSingleOnSlSrPress"},
+ {305, nullptr, "DisableAssigningSingleOnSlSrPress"},
+ {306, nullptr, "GetLastActiveNpad"},
+ {307, nullptr, "GetNpadSystemExtStyle"},
+ {308, nullptr, "ApplyNpadSystemCommonPolicyFull"},
+ {309, nullptr, "GetNpadFullKeyGripColor"},
+ {311, nullptr, "SetNpadPlayerLedBlinkingDevice"},
+ {321, nullptr, "GetUniquePadsFromNpad"},
+ {322, nullptr, "GetIrSensorState"},
+ {323, nullptr, "GetXcdHandleForNpadWithIrSensor"},
+ {500, nullptr, "SetAppletResourceUserId"},
+ {501, nullptr, "RegisterAppletResourceUserId"},
+ {502, nullptr, "UnregisterAppletResourceUserId"},
+ {503, nullptr, "EnableAppletToGetInput"},
+ {504, nullptr, "SetAruidValidForVibration"},
+ {505, nullptr, "EnableAppletToGetSixAxisSensor"},
+ {510, nullptr, "SetVibrationMasterVolume"},
+ {511, nullptr, "GetVibrationMasterVolume"},
+ {512, nullptr, "BeginPermitVibrationSession"},
+ {513, nullptr, "EndPermitVibrationSession"},
+ {520, nullptr, "EnableHandheldHids"},
+ {521, nullptr, "DisableHandheldHids"},
+ {540, nullptr, "AcquirePlayReportControllerUsageUpdateEvent"},
+ {541, nullptr, "GetPlayReportControllerUsages"},
+ {542, nullptr, "AcquirePlayReportRegisteredDeviceUpdateEvent"},
+ {543, nullptr, "GetRegisteredDevicesOld"},
+ {544, nullptr, "AcquireConnectionTriggerTimeoutEvent"},
+ {545, nullptr, "SendConnectionTrigger"},
+ {546, nullptr, "AcquireDeviceRegisteredEventForControllerSupport"},
+ {547, nullptr, "GetAllowedBluetoothLinksCount"},
+ {548, nullptr, "GetRegisteredDevices"},
+ {700, nullptr, "ActivateUniquePad"},
+ {702, nullptr, "AcquireUniquePadConnectionEventHandle"},
+ {703, nullptr, "GetUniquePadIds"},
+ {751, nullptr, "AcquireJoyDetachOnBluetoothOffEventHandle"},
+ {800, nullptr, "ListSixAxisSensorHandles"},
+ {801, nullptr, "IsSixAxisSensorUserCalibrationSupported"},
+ {802, nullptr, "ResetSixAxisSensorCalibrationValues"},
+ {803, nullptr, "StartSixAxisSensorUserCalibration"},
+ {804, nullptr, "CancelSixAxisSensorUserCalibration"},
+ {805, nullptr, "GetUniquePadBluetoothAddress"},
+ {806, nullptr, "DisconnectUniquePad"},
+ {807, nullptr, "GetUniquePadType"},
+ {808, nullptr, "GetUniquePadInterface"},
+ {809, nullptr, "GetUniquePadSerialNumber"},
+ {810, nullptr, "GetUniquePadControllerNumber"},
+ {811, nullptr, "GetSixAxisSensorUserCalibrationStage"},
+ {821, nullptr, "StartAnalogStickManualCalibration"},
+ {822, nullptr, "RetryCurrentAnalogStickManualCalibrationStage"},
+ {823, nullptr, "CancelAnalogStickManualCalibration"},
+ {824, nullptr, "ResetAnalogStickManualCalibration"},
+ {825, nullptr, "GetAnalogStickState"},
+ {826, nullptr, "GetAnalogStickManualCalibrationStage"},
+ {827, nullptr, "IsAnalogStickButtonPressed"},
+ {828, nullptr, "IsAnalogStickInReleasePosition"},
+ {829, nullptr, "IsAnalogStickInCircumference"},
+ {850, nullptr, "IsUsbFullKeyControllerEnabled"},
+ {851, nullptr, "EnableUsbFullKeyController"},
+ {852, nullptr, "IsUsbConnected"},
+ {900, nullptr, "ActivateInputDetector"},
+ {901, nullptr, "NotifyInputDetector"},
+ {1000, nullptr, "InitializeFirmwareUpdate"},
+ {1001, nullptr, "GetFirmwareVersion"},
+ {1002, nullptr, "GetAvailableFirmwareVersion"},
+ {1003, nullptr, "IsFirmwareUpdateAvailable"},
+ {1004, nullptr, "CheckFirmwareUpdateRequired"},
+ {1005, nullptr, "StartFirmwareUpdate"},
+ {1006, nullptr, "AbortFirmwareUpdate"},
+ {1007, nullptr, "GetFirmwareUpdateState"},
+ {1008, nullptr, "ActivateAudioControl"},
+ {1009, nullptr, "AcquireAudioControlEventHandle"},
+ {1010, nullptr, "GetAudioControlStates"},
+ {1011, nullptr, "DeactivateAudioControl"},
+ {1050, nullptr, "IsSixAxisSensorAccurateUserCalibrationSupported"},
+ {1051, nullptr, "StartSixAxisSensorAccurateUserCalibration"},
+ {1052, nullptr, "CancelSixAxisSensorAccurateUserCalibration"},
+ {1053, nullptr, "GetSixAxisSensorAccurateUserCalibrationState"},
+ {1100, nullptr, "GetHidbusSystemServiceObject"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+ }
+};
+
+class HidTmp final : public ServiceFramework<HidTmp> {
+public:
+ explicit HidTmp() : ServiceFramework{"hid:tmp"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "GetConsoleSixAxisSensorCalibrationValues"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+ }
+};
+
+class HidBus final : public ServiceFramework<HidBus> {
+public:
+ explicit HidBus() : ServiceFramework{"hidbus"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {1, nullptr, "GetBusHandle"},
+ {2, nullptr, "IsExternalDeviceConnected"},
+ {3, nullptr, "Initialize"},
+ {4, nullptr, "Finalize"},
+ {5, nullptr, "EnableExternalDevice"},
+ {6, nullptr, "GetExternalDeviceId"},
+ {7, nullptr, "SendCommandAsync"},
+ {8, nullptr, "GetSendCommandAsynceResult"},
+ {9, nullptr, "SetEventForSendCommandAsycResult"},
+ {10, nullptr, "GetSharedMemoryHandle"},
+ {11, nullptr, "EnableJoyPollingReceiveMode"},
+ {12, nullptr, "DisableJoyPollingReceiveMode"},
+ {13, nullptr, "GetPollingData"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+ }
+};
+
void ReloadInputDevices() {}
void InstallInterfaces(SM::ServiceManager& service_manager) {
std::make_shared<Hid>()->InstallAsService(service_manager);
+ std::make_shared<HidBus>()->InstallAsService(service_manager);
+ std::make_shared<HidDbg>()->InstallAsService(service_manager);
+ std::make_shared<HidSys>()->InstallAsService(service_manager);
+ std::make_shared<HidTmp>()->InstallAsService(service_manager);
+
+ std::make_shared<IRS>()->InstallAsService(service_manager);
+ std::make_shared<IRS_SYS>()->InstallAsService(service_manager);
+
+ std::make_shared<XCD_SYS>()->InstallAsService(service_manager);
}
} // namespace Service::HID
diff --git a/src/core/hle/service/hid/irs.cpp b/src/core/hle/service/hid/irs.cpp
new file mode 100644
index 000000000..aaf311912
--- /dev/null
+++ b/src/core/hle/service/hid/irs.cpp
@@ -0,0 +1,49 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/service/hid/irs.h"
+
+namespace Service::HID {
+
+IRS::IRS() : ServiceFramework{"irs"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {302, nullptr, "ActivateIrsensor"},
+ {303, nullptr, "DeactivateIrsensor"},
+ {304, nullptr, "GetIrsensorSharedMemoryHandle"},
+ {305, nullptr, "StopImageProcessor"},
+ {306, nullptr, "RunMomentProcessor"},
+ {307, nullptr, "RunClusteringProcessor"},
+ {308, nullptr, "RunImageTransferProcessor"},
+ {309, nullptr, "GetImageTransferProcessorState"},
+ {310, nullptr, "RunTeraPluginProcessor"},
+ {311, nullptr, "GetNpadIrCameraHandle"},
+ {312, nullptr, "RunPointingProcessor"},
+ {313, nullptr, "SuspendImageProcessor"},
+ {314, nullptr, "CheckFirmwareVersion"},
+ {315, nullptr, "SetFunctionLevel"},
+ {316, nullptr, "RunImageTransferExProcessor"},
+ {317, nullptr, "RunIrLedProcessor"},
+ {318, nullptr, "StopImageProcessorAsync"},
+ {319, nullptr, "ActivateIrsensorWithFunctionLevel"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+}
+
+IRS_SYS::IRS_SYS() : ServiceFramework{"irs:sys"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {500, nullptr, "SetAppletResourceUserId"},
+ {501, nullptr, "RegisterAppletResourceUserId"},
+ {502, nullptr, "UnregisterAppletResourceUserId"},
+ {503, nullptr, "EnableAppletToGetInput"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+}
+
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/irs.h b/src/core/hle/service/hid/irs.h
new file mode 100644
index 000000000..a8be701c7
--- /dev/null
+++ b/src/core/hle/service/hid/irs.h
@@ -0,0 +1,21 @@
+// 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::HID {
+
+class IRS final : public ServiceFramework<IRS> {
+public:
+ explicit IRS();
+};
+
+class IRS_SYS final : public ServiceFramework<IRS_SYS> {
+public:
+ explicit IRS_SYS();
+};
+
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/xcd.cpp b/src/core/hle/service/hid/xcd.cpp
new file mode 100644
index 000000000..49f733f60
--- /dev/null
+++ b/src/core/hle/service/hid/xcd.cpp
@@ -0,0 +1,37 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/service/hid/xcd.h"
+
+namespace Service::HID {
+
+XCD_SYS::XCD_SYS() : ServiceFramework{"xcd:sys"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "GetDataFormat"},
+ {1, nullptr, "SetDataFormat"},
+ {2, nullptr, "GetMcuState"},
+ {3, nullptr, "SetMcuState"},
+ {4, nullptr, "GetMcuVersionForNfc"},
+ {5, nullptr, "CheckNfcDevicePower"},
+ {10, nullptr, "SetNfcEvent"},
+ {11, nullptr, "GetNfcInfo"},
+ {12, nullptr, "StartNfcDiscovery"},
+ {13, nullptr, "StopNfcDiscovery"},
+ {14, nullptr, "StartNtagRead"},
+ {15, nullptr, "StartNtagWrite"},
+ {16, nullptr, "SendNfcRawData"},
+ {17, nullptr, "RegisterMifareKey"},
+ {18, nullptr, "ClearMifareKey"},
+ {19, nullptr, "StartMifareRead"},
+ {20, nullptr, "StartMifareWrite"},
+ {101, nullptr, "GetAwakeTriggerReasonForLeftRail"},
+ {102, nullptr, "GetAwakeTriggerReasonForRightRail"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+}
+
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/xcd.h b/src/core/hle/service/hid/xcd.h
new file mode 100644
index 000000000..232a044df
--- /dev/null
+++ b/src/core/hle/service/hid/xcd.h
@@ -0,0 +1,16 @@
+// 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::HID {
+
+class XCD_SYS final : public ServiceFramework<XCD_SYS> {
+public:
+ explicit XCD_SYS();
+};
+
+} // namespace Service::HID
diff --git a/src/core/hle/service/ldn/ldn.cpp b/src/core/hle/service/ldn/ldn.cpp
new file mode 100644
index 000000000..167f2c66a
--- /dev/null
+++ b/src/core/hle/service/ldn/ldn.cpp
@@ -0,0 +1,142 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include <memory>
+
+#include "core/hle/ipc_helpers.h"
+#include "core/hle/result.h"
+#include "core/hle/service/ldn/ldn.h"
+#include "core/hle/service/sm/sm.h"
+
+namespace Service::LDN {
+
+class IMonitorService final : public ServiceFramework<IMonitorService> {
+public:
+ explicit IMonitorService() : ServiceFramework{"IMonitorService"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "GetStateForMonitor"},
+ {1, nullptr, "GetNetworkInfoForMonitor"},
+ {2, nullptr, "GetIpv4AddressForMonitor"},
+ {3, nullptr, "GetDisconnectReasonForMonitor"},
+ {4, nullptr, "GetSecurityParameterForMonitor"},
+ {5, nullptr, "GetNetworkConfigForMonitor"},
+ {100, nullptr, "InitializeMonitor"},
+ {101, nullptr, "FinalizeMonitor"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+ }
+};
+
+class LDNM final : public ServiceFramework<LDNM> {
+public:
+ explicit LDNM() : ServiceFramework{"ldn:m"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, &LDNM::CreateMonitorService, "CreateMonitorService"}
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+ }
+
+ void CreateMonitorService(Kernel::HLERequestContext& ctx) {
+ IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushIpcInterface<IMonitorService>();
+
+ LOG_DEBUG(Service_LDN, "called");
+ }
+};
+
+class ILocalCommunicationService final : public ServiceFramework<ILocalCommunicationService> {
+public:
+ explicit ILocalCommunicationService(const char* name) : ServiceFramework{name} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "GetState"},
+ {1, nullptr, "GetNetworkInfo"},
+ {2, nullptr, "GetIpv4Address"},
+ {3, nullptr, "GetDisconnectReason"},
+ {4, nullptr, "GetSecurityParameter"},
+ {5, nullptr, "GetNetworkConfig"},
+ {100, nullptr, "AttachStateChangeEvent"},
+ {101, nullptr, "GetNetworkInfoLatestUpdate"},
+ {102, nullptr, "Scan"},
+ {103, nullptr, "ScanPrivate"},
+ {200, nullptr, "OpenAccessPoint"},
+ {201, nullptr, "CloseAccessPoint"},
+ {202, nullptr, "CreateNetwork"},
+ {203, nullptr, "CreateNetworkPrivate"},
+ {204, nullptr, "DestroyNetwork"},
+ {205, nullptr, "Reject"},
+ {206, nullptr, "SetAdvertiseData"},
+ {207, nullptr, "SetStationAcceptPolicy"},
+ {208, nullptr, "AddAcceptFilterEntry"},
+ {209, nullptr, "ClearAcceptFilter"},
+ {300, nullptr, "OpenStation"},
+ {301, nullptr, "CloseStation"},
+ {302, nullptr, "Connect"},
+ {303, nullptr, "ConnectPrivate"},
+ {304, nullptr, "Disconnect"},
+ {400, nullptr, "InitializeSystem"},
+ {401, nullptr, "FinalizeSystem"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+ }
+};
+
+class LDNS final : public ServiceFramework<LDNS> {
+public:
+ explicit LDNS() : ServiceFramework{"ldn:s"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, &LDNS::CreateSystemLocalCommunicationService, "CreateSystemLocalCommunicationService"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+ }
+
+ void CreateSystemLocalCommunicationService(Kernel::HLERequestContext& ctx) {
+ IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushIpcInterface<ILocalCommunicationService>("ISystemLocalCommunicationService");
+
+ LOG_DEBUG(Service_LDN, "called");
+ }
+};
+
+class LDNU final : public ServiceFramework<LDNU> {
+public:
+ explicit LDNU() : ServiceFramework{"ldn:u"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, &LDNU::CreateUserLocalCommunicationService, "CreateUserLocalCommunicationService"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+ }
+
+ void CreateUserLocalCommunicationService(Kernel::HLERequestContext& ctx) {
+ IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushIpcInterface<ILocalCommunicationService>("IUserLocalCommunicationService");
+
+ LOG_DEBUG(Service_LDN, "called");
+ }
+};
+
+void InstallInterfaces(SM::ServiceManager& sm) {
+ std::make_shared<LDNM>()->InstallAsService(sm);
+ std::make_shared<LDNS>()->InstallAsService(sm);
+ std::make_shared<LDNU>()->InstallAsService(sm);
+}
+
+} // namespace Service::LDN
diff --git a/src/core/hle/service/ldn/ldn.h b/src/core/hle/service/ldn/ldn.h
new file mode 100644
index 000000000..6b2a3c2b2
--- /dev/null
+++ b/src/core/hle/service/ldn/ldn.h
@@ -0,0 +1,16 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+namespace Service::SM {
+class ServiceManager;
+}
+
+namespace Service::LDN {
+
+/// Registers all LDN services with the specified service manager.
+void InstallInterfaces(SM::ServiceManager& sm);
+
+} // namespace Service::LDN
diff --git a/src/core/hle/service/lm/lm.cpp b/src/core/hle/service/lm/lm.cpp
index e85a8bdb9..b497376d7 100644
--- a/src/core/hle/service/lm/lm.cpp
+++ b/src/core/hle/service/lm/lm.cpp
@@ -4,10 +4,12 @@
#include <sstream>
#include <string>
+
#include "common/logging/log.h"
#include "core/hle/ipc_helpers.h"
-#include "core/hle/kernel/client_session.h"
#include "core/hle/service/lm/lm.h"
+#include "core/hle/service/service.h"
+#include "core/memory.h"
namespace Service::LM {
@@ -15,13 +17,12 @@ class Logger final : public ServiceFramework<Logger> {
public:
Logger() : ServiceFramework("Logger") {
static const FunctionInfo functions[] = {
- {0x00000000, &Logger::Log, "Log"},
+ {0x00000000, &Logger::Initialize, "Initialize"},
+ {0x00000001, nullptr, "SetDestination"},
};
RegisterHandlers(functions);
}
- ~Logger() = default;
-
private:
struct MessageHeader {
enum Flags : u32_le {
@@ -66,13 +67,13 @@ private:
};
/**
- * LM::Log service function
+ * ILogger::Initialize service function
* Inputs:
* 0: 0x00000000
* Outputs:
* 0: ResultCode
*/
- void Log(Kernel::HLERequestContext& ctx) {
+ void Initialize(Kernel::HLERequestContext& ctx) {
// This function only succeeds - Get that out of the way
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(RESULT_SUCCESS);
@@ -162,30 +163,33 @@ private:
std::ostringstream log_stream;
};
-void InstallInterfaces(SM::ServiceManager& service_manager) {
- std::make_shared<LM>()->InstallAsService(service_manager);
-}
+class LM final : public ServiceFramework<LM> {
+public:
+ explicit LM() : ServiceFramework{"lm"} {
+ static const FunctionInfo functions[] = {
+ {0x00000000, &LM::OpenLogger, "OpenLogger"},
+ };
+ RegisterHandlers(functions);
+ }
-/**
- * LM::Initialize service function
- * Inputs:
- * 0: 0x00000000
- * Outputs:
- * 0: ResultCode
- */
-void LM::Initialize(Kernel::HLERequestContext& ctx) {
- IPC::ResponseBuilder rb{ctx, 2, 0, 1};
- rb.Push(RESULT_SUCCESS);
- rb.PushIpcInterface<Logger>();
-
- LOG_DEBUG(Service_LM, "called");
-}
+ /**
+ * LM::OpenLogger service function
+ * Inputs:
+ * 0: 0x00000000
+ * Outputs:
+ * 0: ResultCode
+ */
+ void OpenLogger(Kernel::HLERequestContext& ctx) {
+ IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushIpcInterface<Logger>();
-LM::LM() : ServiceFramework("lm") {
- static const FunctionInfo functions[] = {
- {0x00000000, &LM::Initialize, "Initialize"},
- };
- RegisterHandlers(functions);
+ LOG_DEBUG(Service_LM, "called");
+ }
+};
+
+void InstallInterfaces(SM::ServiceManager& service_manager) {
+ std::make_shared<LM>()->InstallAsService(service_manager);
}
} // namespace Service::LM
diff --git a/src/core/hle/service/lm/lm.h b/src/core/hle/service/lm/lm.h
index 63d6506fe..7806ae27b 100644
--- a/src/core/hle/service/lm/lm.h
+++ b/src/core/hle/service/lm/lm.h
@@ -4,21 +4,12 @@
#pragma once
-#include <vector>
-#include "core/hle/kernel/kernel.h"
-#include "core/hle/service/service.h"
+namespace Service::SM {
+class ServiceManager;
+}
namespace Service::LM {
-class LM final : public ServiceFramework<LM> {
-public:
- LM();
- ~LM() = default;
-
-private:
- void Initialize(Kernel::HLERequestContext& ctx);
-};
-
/// Registers all LM services with the specified service manager.
void InstallInterfaces(SM::ServiceManager& service_manager);
diff --git a/src/core/hle/service/nim/nim.cpp b/src/core/hle/service/nim/nim.cpp
new file mode 100644
index 000000000..bd05b0a70
--- /dev/null
+++ b/src/core/hle/service/nim/nim.cpp
@@ -0,0 +1,124 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/service/nim/nim.h"
+#include "core/hle/service/service.h"
+#include "core/hle/service/sm/sm.h"
+
+namespace Service::NIM {
+
+class NIM final : public ServiceFramework<NIM> {
+public:
+ explicit NIM() : ServiceFramework{"nim"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "CreateSystemUpdateTask"},
+ {1, nullptr, "DestroySystemUpdateTask"},
+ {2, nullptr, "ListSystemUpdateTask"},
+ {3, nullptr, "RequestSystemUpdateTaskRun"},
+ {4, nullptr, "GetSystemUpdateTaskInfo"},
+ {5, nullptr, "CommitSystemUpdateTask"},
+ {6, nullptr, "CreateNetworkInstallTask"},
+ {7, nullptr, "DestroyNetworkInstallTask"},
+ {8, nullptr, "ListNetworkInstallTask"},
+ {9, nullptr, "RequestNetworkInstallTaskRun"},
+ {10, nullptr, "GetNetworkInstallTaskInfo"},
+ {11, nullptr, "CommitNetworkInstallTask"},
+ {12, nullptr, "RequestLatestSystemUpdateMeta"},
+ {14, nullptr, "ListApplicationNetworkInstallTask"},
+ {15, nullptr, "ListNetworkInstallTaskContentMeta"},
+ {16, nullptr, "RequestLatestVersion"},
+ {17, nullptr, "SetNetworkInstallTaskAttribute"},
+ {18, nullptr, "AddNetworkInstallTaskContentMeta"},
+ {19, nullptr, "GetDownloadedSystemDataPath"},
+ {20, nullptr, "CalculateNetworkInstallTaskRequiredSize"},
+ {21, nullptr, "IsExFatDriverIncluded"},
+ {22, nullptr, "GetBackgroundDownloadStressTaskInfo"},
+ {23, nullptr, "RequestDeviceAuthenticationToken"},
+ {24, nullptr, "RequestGameCardRegistrationStatus"},
+ {25, nullptr, "RequestRegisterGameCard"},
+ {26, nullptr, "RequestRegisterNotificationToken"},
+ {27, nullptr, "RequestDownloadTaskList"},
+ {28, nullptr, "RequestApplicationControl"},
+ {29, nullptr, "RequestLatestApplicationControl"},
+ {30, nullptr, "RequestVersionList"},
+ {31, nullptr, "CreateApplyDeltaTask"},
+ {32, nullptr, "DestroyApplyDeltaTask"},
+ {33, nullptr, "ListApplicationApplyDeltaTask"},
+ {34, nullptr, "RequestApplyDeltaTaskRun"},
+ {35, nullptr, "GetApplyDeltaTaskInfo"},
+ {36, nullptr, "ListApplyDeltaTask"},
+ {37, nullptr, "CommitApplyDeltaTask"},
+ {38, nullptr, "CalculateApplyDeltaTaskRequiredSize"},
+ {39, nullptr, "PrepareShutdown"},
+ {40, nullptr, "ListApplyDeltaTask"},
+ {41, nullptr, "ClearNotEnoughSpaceStateOfApplyDeltaTask"},
+ {42, nullptr, "Unknown1"},
+ {43, nullptr, "Unknown2"},
+ {44, nullptr, "Unknown3"},
+ {45, nullptr, "Unknown4"},
+ {46, nullptr, "Unknown5"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+ }
+};
+
+class NIM_SHP final : public ServiceFramework<NIM_SHP> {
+public:
+ explicit NIM_SHP() : ServiceFramework{"nim:shp"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "RequestDeviceAuthenticationToken"},
+ {1, nullptr, "RequestCachedDeviceAuthenticationToken"},
+ {100, nullptr, "RequestRegisterDeviceAccount"},
+ {101, nullptr, "RequestUnregisterDeviceAccount"},
+ {102, nullptr, "RequestDeviceAccountStatus"},
+ {103, nullptr, "GetDeviceAccountInfo"},
+ {104, nullptr, "RequestDeviceRegistrationInfo"},
+ {105, nullptr, "RequestTransferDeviceAccount"},
+ {106, nullptr, "RequestSyncRegistration"},
+ {107, nullptr, "IsOwnDeviceId"},
+ {200, nullptr, "RequestRegisterNotificationToken"},
+ {300, nullptr, "RequestUnlinkDevice"},
+ {301, nullptr, "RequestUnlinkDeviceIntegrated"},
+ {302, nullptr, "RequestLinkDevice"},
+ {303, nullptr, "HasDeviceLink"},
+ {304, nullptr, "RequestUnlinkDeviceAll"},
+ {305, nullptr, "RequestCreateVirtualAccount"},
+ {306, nullptr, "RequestDeviceLinkStatus"},
+ {400, nullptr, "GetAccountByVirtualAccount"},
+ {500, nullptr, "RequestSyncTicket"},
+ {501, nullptr, "RequestDownloadTicket"},
+ {502, nullptr, "RequestDownloadTicketForPrepurchasedContents"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+ }
+};
+
+class NTC final : public ServiceFramework<NTC> {
+public:
+ explicit NTC() : ServiceFramework{"ntc"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "OpenEnsureNetworkClockAvailabilityService"},
+ {100, nullptr, "SuspendAutonomicTimeCorrection"},
+ {101, nullptr, "ResumeAutonomicTimeCorrection"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+ }
+};
+
+void InstallInterfaces(SM::ServiceManager& sm) {
+ std::make_shared<NIM>()->InstallAsService(sm);
+ std::make_shared<NIM_SHP>()->InstallAsService(sm);
+ std::make_shared<NTC>()->InstallAsService(sm);
+}
+
+} // namespace Service::NIM
diff --git a/src/core/hle/service/nim/nim.h b/src/core/hle/service/nim/nim.h
new file mode 100644
index 000000000..2a2a92df0
--- /dev/null
+++ b/src/core/hle/service/nim/nim.h
@@ -0,0 +1,15 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+namespace Service::SM {
+class ServiceManager;
+}
+
+namespace Service::NIM {
+
+void InstallInterfaces(SM::ServiceManager& sm);
+
+} // namespace Service::NIM
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index 482989ea7..8b84fd349 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -27,12 +27,15 @@
#include "core/hle/service/fatal/fatal.h"
#include "core/hle/service/filesystem/filesystem.h"
#include "core/hle/service/friend/friend.h"
+#include "core/hle/service/grc/grc.h"
#include "core/hle/service/hid/hid.h"
+#include "core/hle/service/ldn/ldn.h"
#include "core/hle/service/ldr/ldr.h"
#include "core/hle/service/lm/lm.h"
#include "core/hle/service/mm/mm_u.h"
#include "core/hle/service/nfp/nfp.h"
#include "core/hle/service/nifm/nifm.h"
+#include "core/hle/service/nim/nim.h"
#include "core/hle/service/ns/ns.h"
#include "core/hle/service/nvdrv/nvdrv.h"
#include "core/hle/service/pctl/pctl.h"
@@ -198,12 +201,15 @@ void Init(std::shared_ptr<SM::ServiceManager>& sm) {
Fatal::InstallInterfaces(*sm);
FileSystem::InstallInterfaces(*sm);
Friend::InstallInterfaces(*sm);
+ GRC::InstallInterfaces(*sm);
HID::InstallInterfaces(*sm);
+ LDN::InstallInterfaces(*sm);
LDR::InstallInterfaces(*sm);
LM::InstallInterfaces(*sm);
MM::InstallInterfaces(*sm);
NFP::InstallInterfaces(*sm);
NIFM::InstallInterfaces(*sm);
+ NIM::InstallInterfaces(*sm);
NS::InstallInterfaces(*sm);
Nvidia::InstallInterfaces(*sm);
PCTL::InstallInterfaces(*sm);
diff --git a/src/core/hle/service/sockets/bsd.cpp b/src/core/hle/service/sockets/bsd.cpp
index 6aa1e2511..3211a8346 100644
--- a/src/core/hle/service/sockets/bsd.cpp
+++ b/src/core/hle/service/sockets/bsd.cpp
@@ -109,4 +109,26 @@ BSD::BSD(const char* name) : ServiceFramework(name) {
RegisterHandlers(functions);
}
+BSDCFG::BSDCFG() : ServiceFramework{"bsdcfg"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "SetIfUp"},
+ {1, nullptr, "SetIfUpWithEvent"},
+ {2, nullptr, "CancelIf"},
+ {3, nullptr, "SetIfDown"},
+ {4, nullptr, "GetIfState"},
+ {5, nullptr, "DhcpRenew"},
+ {6, nullptr, "AddStaticArpEntry"},
+ {7, nullptr, "RemoveArpEntry"},
+ {8, nullptr, "LookupArpEntry"},
+ {9, nullptr, "LookupArpEntry2"},
+ {10, nullptr, "ClearArpEntries"},
+ {11, nullptr, "ClearArpEntries2"},
+ {12, nullptr, "PrintArpEntries"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+}
+
} // namespace Service::Sockets
diff --git a/src/core/hle/service/sockets/bsd.h b/src/core/hle/service/sockets/bsd.h
index a6b1ca7d0..c1da59b24 100644
--- a/src/core/hle/service/sockets/bsd.h
+++ b/src/core/hle/service/sockets/bsd.h
@@ -26,4 +26,9 @@ private:
u32 next_fd = 1;
};
+class BSDCFG final : public ServiceFramework<BSDCFG> {
+public:
+ explicit BSDCFG();
+};
+
} // namespace Service::Sockets
diff --git a/src/core/hle/service/sockets/ethc.cpp b/src/core/hle/service/sockets/ethc.cpp
new file mode 100644
index 000000000..d53c25eec
--- /dev/null
+++ b/src/core/hle/service/sockets/ethc.cpp
@@ -0,0 +1,38 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/service/sockets/ethc.h"
+
+namespace Service::Sockets {
+
+ETHC_C::ETHC_C() : ServiceFramework{"ethc:c"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "Initialize"},
+ {1, nullptr, "Cancel"},
+ {2, nullptr, "GetResult"},
+ {3, nullptr, "GetMediaList"},
+ {4, nullptr, "SetMediaType"},
+ {5, nullptr, "GetMediaType"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+}
+
+ETHC_I::ETHC_I() : ServiceFramework{"ethc:i"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "GetReadableHandle"},
+ {1, nullptr, "Cancel"},
+ {2, nullptr, "GetResult"},
+ {3, nullptr, "GetInterfaceList"},
+ {4, nullptr, "GetInterfaceCount"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+}
+
+} // namespace Service::Sockets
diff --git a/src/core/hle/service/sockets/ethc.h b/src/core/hle/service/sockets/ethc.h
new file mode 100644
index 000000000..9a3c88100
--- /dev/null
+++ b/src/core/hle/service/sockets/ethc.h
@@ -0,0 +1,21 @@
+// 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::Sockets {
+
+class ETHC_C final : public ServiceFramework<ETHC_C> {
+public:
+ explicit ETHC_C();
+};
+
+class ETHC_I final : public ServiceFramework<ETHC_I> {
+public:
+ explicit ETHC_I();
+};
+
+} // namespace Service::Sockets
diff --git a/src/core/hle/service/sockets/sockets.cpp b/src/core/hle/service/sockets/sockets.cpp
index 05bd10d35..08d2d306a 100644
--- a/src/core/hle/service/sockets/sockets.cpp
+++ b/src/core/hle/service/sockets/sockets.cpp
@@ -3,6 +3,7 @@
// Refer to the license.txt file included.
#include "core/hle/service/sockets/bsd.h"
+#include "core/hle/service/sockets/ethc.h"
#include "core/hle/service/sockets/nsd.h"
#include "core/hle/service/sockets/sfdnsres.h"
#include "core/hle/service/sockets/sockets.h"
@@ -12,8 +13,14 @@ namespace Service::Sockets {
void InstallInterfaces(SM::ServiceManager& service_manager) {
std::make_shared<BSD>("bsd:s")->InstallAsService(service_manager);
std::make_shared<BSD>("bsd:u")->InstallAsService(service_manager);
+ std::make_shared<BSDCFG>()->InstallAsService(service_manager);
+
+ std::make_shared<ETHC_C>()->InstallAsService(service_manager);
+ std::make_shared<ETHC_I>()->InstallAsService(service_manager);
+
std::make_shared<NSD>("nsd:a")->InstallAsService(service_manager);
std::make_shared<NSD>("nsd:u")->InstallAsService(service_manager);
+
std::make_shared<SFDNSRES>()->InstallAsService(service_manager);
}