2026-09-26 11:22:33

Signed-off-by: lizzie <lizzie@eden-emu.dev>
This commit is contained in:
lizzie
2026-09-26 11:22:33 +00:00
parent ea554e27ef
commit 9d403e7dba
43 changed files with 812 additions and 875 deletions
+320 -15
View File
@@ -16,6 +16,11 @@
#include "core/hle/service/server_manager.h"
#include "hid_core/resource_manager.h"
#include "hid_core/resources/hid_firmware_settings.h"
#include "core/hle/service/ipc_helpers.h"
#include "hid_core/hid_types.h"
#include "hid_core/resources/touch_screen/gesture.h"
#include "hid_core/resources/touch_screen/touch_screen.h"
#include "core/hle/service/cmif_serialization.h"
namespace Service::HID {
@@ -25,8 +30,8 @@ public:
: ServiceFramework{system_, "hid:tmp"} {}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, nullptr, "GetConsoleSixAxisSensorCalibrationValues"}
);
FunctionInfo{0, nullptr, "GetConsoleSixAxisSensorCalibrationValues"}
);
FunctionInfoBase const* FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
}
@@ -39,12 +44,12 @@ public:
: ServiceFramework{system_, "ahid:cd"} {}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, nullptr, "AcquireDevice"},
FunctionInfo{1, nullptr, "ReleaseDevice"},
FunctionInfo{2, nullptr, "GetCtrlSession"},
FunctionInfo{3, nullptr, "GetReadSession"},
FunctionInfo{4, nullptr, "GetWriteSession"}
);
FunctionInfo{0, nullptr, "AcquireDevice"},
FunctionInfo{1, nullptr, "ReleaseDevice"},
FunctionInfo{2, nullptr, "GetCtrlSession"},
FunctionInfo{3, nullptr, "GetReadSession"},
FunctionInfo{4, nullptr, "GetWriteSession"}
);
FunctionInfoBase const* FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
}
@@ -57,19 +62,319 @@ public:
: ServiceFramework{system_, "ahid:hdr"} {}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, nullptr, "GetDeviceEntries"},
FunctionInfo{1, nullptr, "GetDeviceList"},
FunctionInfo{2, nullptr, "GetDeviceParameters"},
FunctionInfo{3, nullptr, "AttachDevice"},
FunctionInfo{4, nullptr, "DetachDevice"},
FunctionInfo{5, nullptr, "SetDeviceFilter"}
);
FunctionInfo{0, nullptr, "GetDeviceEntries"},
FunctionInfo{1, nullptr, "GetDeviceList"},
FunctionInfo{2, nullptr, "GetDeviceParameters"},
FunctionInfo{3, nullptr, "AttachDevice"},
FunctionInfo{4, nullptr, "DetachDevice"},
FunctionInfo{5, nullptr, "SetDeviceFilter"}
);
FunctionInfoBase const* FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
}
~AHID_HDR() override = default;
};
class IHidDebugServer final : public ServiceFramework<IHidDebugServer> {
public:
explicit IHidDebugServer(Core::System& system_, std::shared_ptr<ResourceManager> resource,
std::shared_ptr<HidFirmwareSettings> settings)
: ServiceFramework{system_, "hid:dbg"}
, resource_manager{resource}
, firmware_settings{settings}
{}
~IHidDebugServer() override = default;
Result DeactivateTouchScreen() {
LOG_INFO(Service_HID, "called");
if (!firmware_settings->IsDeviceManaged()) {
R_RETURN(GetResourceManager()->GetTouchScreen()->Deactivate());
}
R_SUCCEED();
}
Result SetTouchScreenAutoPilotState(
InArray<TouchState, BufferAttr_HipcMapAlias> auto_pilot_buffer) {
AutoPilotState auto_pilot{};
auto_pilot.count =
static_cast<u64>((std::min)(auto_pilot_buffer.size(), auto_pilot.state.size()));
memcpy(auto_pilot.state.data(), auto_pilot_buffer.data(),
auto_pilot.count * sizeof(TouchState));
LOG_INFO(Service_HID, "called, auto_pilot_count={}", auto_pilot.count);
R_RETURN(GetResourceManager()->GetTouchScreen()->SetTouchScreenAutoPilotState(auto_pilot));
}
Result UnsetTouchScreenAutoPilotState() {
LOG_INFO(Service_HID, "called");
R_RETURN(GetResourceManager()->GetTouchScreen()->UnsetTouchScreenAutoPilotState());
}
Result GetTouchScreenConfiguration(
Out<Core::HID::TouchScreenConfigurationForNx> out_touchscreen_config,
ClientAppletResourceUserId aruid) {
LOG_INFO(Service_HID, "called, applet_resource_user_id={}", aruid.pid);
R_TRY(GetResourceManager()->GetTouchScreen()->GetTouchScreenConfiguration(
*out_touchscreen_config, aruid.pid));
if (out_touchscreen_config->mode != Core::HID::TouchScreenModeForNx::Heat2 &&
out_touchscreen_config->mode != Core::HID::TouchScreenModeForNx::Finger) {
out_touchscreen_config->mode = Core::HID::TouchScreenModeForNx::UseSystemSetting;
}
R_SUCCEED();
}
Result ProcessTouchScreenAutoTune() {
LOG_INFO(Service_HID, "called");
R_RETURN(GetResourceManager()->GetTouchScreen()->ProcessTouchScreenAutoTune());
}
Result ForceStopTouchScreenManagement() {
LOG_INFO(Service_HID, "called");
if (!firmware_settings->IsDeviceManaged()) {
R_SUCCEED();
}
auto touch_screen = GetResourceManager()->GetTouchScreen();
auto gesture = GetResourceManager()->GetGesture();
if (firmware_settings->IsTouchI2cManaged()) {
bool is_touch_active{};
bool is_gesture_active{};
R_TRY(touch_screen->IsActive(is_touch_active));
R_TRY(gesture->IsActive(is_gesture_active));
if (is_touch_active) {
R_TRY(touch_screen->Deactivate());
}
if (is_gesture_active) {
R_TRY(gesture->Deactivate());
}
}
R_SUCCEED();
}
Result ForceRestartTouchScreenManagement(u32 basic_gesture_id,
ClientAppletResourceUserId aruid) {
LOG_INFO(Service_HID, "called, basic_gesture_id={}, applet_resource_user_id={}",
basic_gesture_id, aruid.pid);
auto touch_screen = GetResourceManager()->GetTouchScreen();
auto gesture = GetResourceManager()->GetGesture();
if (firmware_settings->IsDeviceManaged() && firmware_settings->IsTouchI2cManaged()) {
R_TRY(gesture->Activate());
R_TRY(gesture->Activate(aruid.pid, basic_gesture_id));
R_TRY(touch_screen->Activate());
R_TRY(touch_screen->Activate(aruid.pid));
}
R_SUCCEED();
}
Result IsTouchScreenManaged(Out<bool> out_is_managed) {
LOG_INFO(Service_HID, "called");
bool is_touch_active{};
bool is_gesture_active{};
R_TRY(GetResourceManager()->GetTouchScreen()->IsActive(is_touch_active));
R_TRY(GetResourceManager()->GetGesture()->IsActive(is_gesture_active));
*out_is_managed = is_touch_active || is_gesture_active;
R_SUCCEED();
}
Result DeactivateGesture() {
LOG_INFO(Service_HID, "called");
if (!firmware_settings->IsDeviceManaged()) {
R_RETURN(GetResourceManager()->GetGesture()->Deactivate());
}
R_SUCCEED();
}
std::shared_ptr<ResourceManager> GetResourceManager() {
resource_manager->Initialize();
return resource_manager;
}
FunctionInfoBase const* FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, nullptr, "DeactivateDebugPad"},
FunctionInfo{1, nullptr, "SetDebugPadAutoPilotState"},
FunctionInfo{2, nullptr, "UnsetDebugPadAutoPilotState"},
FunctionInfo{10, C<&IHidDebugServer::DeactivateTouchScreen>, "DeactivateTouchScreen"},
FunctionInfo{11, C<&IHidDebugServer::SetTouchScreenAutoPilotState>, "SetTouchScreenAutoPilotState"},
FunctionInfo{12, C<&IHidDebugServer::UnsetTouchScreenAutoPilotState>, "UnsetTouchScreenAutoPilotState"},
FunctionInfo{13, C<&IHidDebugServer::GetTouchScreenConfiguration>, "GetTouchScreenConfiguration"},
FunctionInfo{14, C<&IHidDebugServer::ProcessTouchScreenAutoTune>, "ProcessTouchScreenAutoTune"},
FunctionInfo{15, C<&IHidDebugServer::ForceStopTouchScreenManagement>, "ForceStopTouchScreenManagement"},
FunctionInfo{16, C<&IHidDebugServer::ForceRestartTouchScreenManagement>, "ForceRestartTouchScreenManagement"},
FunctionInfo{17, C<&IHidDebugServer::IsTouchScreenManaged>, "IsTouchScreenManaged"},
FunctionInfo{20, nullptr, "DeactivateMouse"},
FunctionInfo{21, nullptr, "SetMouseAutoPilotState"},
FunctionInfo{22, nullptr, "UnsetMouseAutoPilotState"},
FunctionInfo{23, nullptr, "AddMouseSideWheelDelta"},
FunctionInfo{25, nullptr, "SetDebugMouseAutoPilotState"},
FunctionInfo{26, nullptr, "UnsetDebugMouseAutoPilotState"},
FunctionInfo{30, nullptr, "DeactivateKeyboard"},
FunctionInfo{31, nullptr, "SetKeyboardAutoPilotState"},
FunctionInfo{32, nullptr, "UnsetKeyboardAutoPilotState"},
FunctionInfo{50, nullptr, "DeactivateXpad"},
FunctionInfo{51, nullptr, "SetXpadAutoPilotState"},
FunctionInfo{52, nullptr, "UnsetXpadAutoPilotState"},
FunctionInfo{53, nullptr, "DeactivateJoyXpad"},
FunctionInfo{60, nullptr, "ClearNpadSystemCommonPolicy"},
FunctionInfo{61, nullptr, "DeactivateNpad"},
FunctionInfo{62, nullptr, "ForceDisconnectNpad"},
FunctionInfo{91, C<&IHidDebugServer::DeactivateGesture>, "DeactivateGesture"},
FunctionInfo{110, nullptr, "DeactivateHomeButton"},
FunctionInfo{111, nullptr, "SetHomeButtonAutoPilotState"},
FunctionInfo{112, nullptr, "UnsetHomeButtonAutoPilotState"},
FunctionInfo{120, nullptr, "DeactivateSleepButton"},
FunctionInfo{121, nullptr, "SetSleepButtonAutoPilotState"},
FunctionInfo{122, nullptr, "UnsetSleepButtonAutoPilotState"},
FunctionInfo{123, nullptr, "DeactivateInputDetector"},
FunctionInfo{130, nullptr, "DeactivateCaptureButton"},
FunctionInfo{131, nullptr, "SetCaptureButtonAutoPilotState"},
FunctionInfo{132, nullptr, "UnsetCaptureButtonAutoPilotState"},
FunctionInfo{133, nullptr, "SetShiftAccelerometerCalibrationValue"},
FunctionInfo{134, nullptr, "GetShiftAccelerometerCalibrationValue"},
FunctionInfo{135, nullptr, "SetShiftGyroscopeCalibrationValue"},
FunctionInfo{136, nullptr, "GetShiftGyroscopeCalibrationValue"},
FunctionInfo{140, nullptr, "DeactivateConsoleSixAxisSensor"},
FunctionInfo{141, nullptr, "GetConsoleSixAxisSensorSamplingFrequency"},
FunctionInfo{142, nullptr, "DeactivateSevenSixAxisSensor"},
FunctionInfo{143, nullptr, "GetConsoleSixAxisSensorCountStates"},
FunctionInfo{144, nullptr, "GetAccelerometerFsr"},
FunctionInfo{145, nullptr, "SetAccelerometerFsr"},
FunctionInfo{146, nullptr, "GetAccelerometerOdr"},
FunctionInfo{147, nullptr, "SetAccelerometerOdr"},
FunctionInfo{148, nullptr, "GetGyroscopeFsr"},
FunctionInfo{149, nullptr, "SetGyroscopeFsr"},
FunctionInfo{150, nullptr, "GetGyroscopeOdr"},
FunctionInfo{151, nullptr, "SetGyroscopeOdr"},
FunctionInfo{152, nullptr, "GetWhoAmI"},
FunctionInfo{201, nullptr, "ActivateFirmwareUpdate"},
FunctionInfo{202, nullptr, "DeactivateFirmwareUpdate"},
FunctionInfo{203, nullptr, "StartFirmwareUpdate"},
FunctionInfo{204, nullptr, "GetFirmwareUpdateStage"},
FunctionInfo{205, nullptr, "GetFirmwareVersion"},
FunctionInfo{206, nullptr, "GetDestinationFirmwareVersion"},
FunctionInfo{207, nullptr, "DiscardFirmwareInfoCacheForRevert"},
FunctionInfo{208, nullptr, "StartFirmwareUpdateForRevert"},
FunctionInfo{209, nullptr, "GetAvailableFirmwareVersionForRevert"},
FunctionInfo{210, nullptr, "IsFirmwareUpdatingDevice"},
FunctionInfo{211, nullptr, "StartFirmwareUpdateIndividual"},
FunctionInfo{212, nullptr, "GetDetailFirmwareVersion"}, // 19.0.0+
FunctionInfo{215, nullptr, "SetUsbFirmwareForceUpdateEnabled"},
FunctionInfo{216, nullptr, "SetAllKuinaDevicesToFirmwareUpdateMode"},
FunctionInfo{221, nullptr, "UpdateControllerColor"},
FunctionInfo{222, nullptr, "ConnectUsbPadsAsync"},
FunctionInfo{223, nullptr, "DisconnectUsbPadsAsync"},
FunctionInfo{224, nullptr, "UpdateDesignInfo"},
FunctionInfo{225, nullptr, "GetUniquePadDriverState"},
FunctionInfo{226, nullptr, "GetSixAxisSensorDriverStates"},
FunctionInfo{227, nullptr, "GetRxPacketHistory"},
FunctionInfo{228, nullptr, "AcquireOperationEventHandle"},
FunctionInfo{229, nullptr, "ReadSerialFlash"},
FunctionInfo{230, nullptr, "WriteSerialFlash"},
FunctionInfo{231, nullptr, "GetOperationResult"},
FunctionInfo{232, nullptr, "EnableShipmentMode"},
FunctionInfo{233, nullptr, "ClearPairingInfo"},
FunctionInfo{234, nullptr, "GetUniquePadDeviceTypeSetInternal"},
FunctionInfo{235, nullptr, "EnableAnalogStickPower"},
FunctionInfo{236, nullptr, "RequestKuinaUartClockCal"},
FunctionInfo{237, nullptr, "GetKuinaUartClockCal"},
FunctionInfo{238, nullptr, "SetKuinaUartClockTrim"},
FunctionInfo{239, nullptr, "KuinaLoopbackTest"},
FunctionInfo{240, nullptr, "RequestBatteryVoltage"},
FunctionInfo{241, nullptr, "GetBatteryVoltage"},
FunctionInfo{242, nullptr, "GetUniquePadPowerInfo"},
FunctionInfo{243, nullptr, "RebootUniquePad"},
FunctionInfo{244, nullptr, "RequestKuinaFirmwareVersion"},
FunctionInfo{245, nullptr, "GetKuinaFirmwareVersion"},
FunctionInfo{246, nullptr, "GetVidPid"},
FunctionInfo{247, nullptr, "GetAnalogStickCalibrationValue"},
FunctionInfo{248, nullptr, "GetUniquePadIdsFull"},
FunctionInfo{249, nullptr, "ConnectUniquePad"},
FunctionInfo{250, nullptr, "IsVirtual"},
FunctionInfo{251, nullptr, "GetAnalogStickModuleParam"},
FunctionInfo{253, nullptr, "ClearStorageForShipment"}, //19.0.0+
FunctionInfo{261, nullptr, "UpdateDesignInfo12"}, //21.0.0+
FunctionInfo{262, nullptr, "GetUniquePadButtonCount"}, //21.0.0+
FunctionInfo{267, nullptr, "SetAnalogStickCalibration"}, //21.0.0+
FunctionInfo{268, nullptr, "ResetAnalogStickCalibration"}, //21.0.0+
FunctionInfo{301, nullptr, "GetAbstractedPadHandles"},
FunctionInfo{302, nullptr, "GetAbstractedPadState"},
FunctionInfo{303, nullptr, "GetAbstractedPadsState"},
FunctionInfo{321, nullptr, "SetAutoPilotVirtualPadState"},
FunctionInfo{322, nullptr, "UnsetAutoPilotVirtualPadState"},
FunctionInfo{323, nullptr, "UnsetAllAutoPilotVirtualPadState"},
FunctionInfo{324, nullptr, "AttachHdlsWorkBuffer"},
FunctionInfo{325, nullptr, "ReleaseHdlsWorkBuffer"},
FunctionInfo{326, nullptr, "DumpHdlsNpadAssignmentState"},
FunctionInfo{327, nullptr, "DumpHdlsStates"},
FunctionInfo{328, nullptr, "ApplyHdlsNpadAssignmentState"},
FunctionInfo{329, nullptr, "ApplyHdlsStateList"},
FunctionInfo{330, nullptr, "AttachHdlsVirtualDevice"},
FunctionInfo{331, nullptr, "DetachHdlsVirtualDevice"},
FunctionInfo{332, nullptr, "SetHdlsState"},
FunctionInfo{350, nullptr, "AddRegisteredDevice"},
FunctionInfo{351, nullptr, "GetRegisteredDevicesCountDebug"}, //17.0.0-18.1.0
FunctionInfo{352, nullptr, "DeleteRegisteredDevicesDebug"}, //17.0.0-18.1.0
FunctionInfo{400, nullptr, "DisableExternalMcuOnNxDevice"},
FunctionInfo{401, nullptr, "DisableRailDeviceFiltering"},
FunctionInfo{402, nullptr, "EnableWiredPairing"},
FunctionInfo{403, nullptr, "EnableShipmentModeAutoClear"},
FunctionInfo{404, nullptr, "SetRailEnabled"},
FunctionInfo{500, nullptr, "SetFactoryInt"},
FunctionInfo{501, nullptr, "IsFactoryBootEnabled"},
FunctionInfo{550, nullptr, "SetAnalogStickModelDataTemporarily"},
FunctionInfo{551, nullptr, "GetAnalogStickModelData"},
FunctionInfo{552, nullptr, "ResetAnalogStickModelData"},
FunctionInfo{600, nullptr, "ConvertPadState"},
FunctionInfo{601, nullptr, "IsButtonConfigSupported"}, //18.0.0+
FunctionInfo{602, nullptr, "IsButtonConfigEmbeddedSupported"}, //18.0.0+
FunctionInfo{603, nullptr, "DeleteButtonConfig"}, //18.0.0+
FunctionInfo{604, nullptr, "DeleteButtonConfigEmbedded"}, //18.0.0+
FunctionInfo{605, nullptr, "SetButtonConfigEnabled"}, //18.0.0+
FunctionInfo{606, nullptr, "SetButtonConfigEmbeddedEnabled"}, //18.0.0+
FunctionInfo{607, nullptr, "IsButtonConfigEnabled"}, //18.0.0+
FunctionInfo{608, nullptr, "IsButtonConfigEmbeddedEnabled"}, //18.0.0+
FunctionInfo{609, nullptr, "SetButtonConfigEmbedded"}, //18.0.0+
FunctionInfo{610, nullptr, "SetButtonConfigFull"}, //18.0.0+
FunctionInfo{611, nullptr, "SetButtonConfigLeft"}, //18.0.0+
FunctionInfo{612, nullptr, "SetButtonConfigRight"}, //18.0.0+
FunctionInfo{613, nullptr, "GetButtonConfigEmbedded"}, //18.0.0+
FunctionInfo{614, nullptr, "GetButtonConfigFull"}, //18.0.0+
FunctionInfo{615, nullptr, "GetButtonConfigLeft"}, //18.0.0+
FunctionInfo{616, nullptr, "GetButtonConfigRight"}, //18.0.0+
FunctionInfo{650, nullptr, "AddButtonPlayData"},
FunctionInfo{651, nullptr, "StartButtonPlayData"},
FunctionInfo{652, nullptr, "StopButtonPlayData"},
FunctionInfo{700, nullptr, "GetRailAttachEventCount"}, //21.0.0+
FunctionInfo{2000, nullptr, "DeactivateDigitizer"},
FunctionInfo{2001, nullptr, "SetDigitizerAutoPilotState"},
FunctionInfo{2002, nullptr, "UnsetDigitizerAutoPilotState"},
FunctionInfo{3000, nullptr, "ReloadFirmwareDebugSettings"}
);
std::shared_ptr<ResourceManager> resource_manager;
std::shared_ptr<HidFirmwareSettings> firmware_settings;
};
void LoopProcess(Core::System& system) {
auto server_manager = std::make_unique<ServerManager>(system);
auto firmware_settings = std::make_shared<HidFirmwareSettings>(system);
@@ -18,298 +18,4 @@
namespace Service::HID {
IHidDebugServer::IHidDebugServer(Core::System& system_, std::shared_ptr<ResourceManager> resource,
std::shared_ptr<HidFirmwareSettings> settings)
: ServiceFramework{system_, "hid:dbg"}, resource_manager{resource}, firmware_settings{
settings} {
// clang-format off
static const FunctionInfo functions[] = {
FunctionInfo{0, nullptr, "DeactivateDebugPad"},
FunctionInfo{1, nullptr, "SetDebugPadAutoPilotState"},
FunctionInfo{2, nullptr, "UnsetDebugPadAutoPilotState"},
FunctionInfo{10, C<&IHidDebugServer::DeactivateTouchScreen>, "DeactivateTouchScreen"},
FunctionInfo{11, C<&IHidDebugServer::SetTouchScreenAutoPilotState>, "SetTouchScreenAutoPilotState"},
FunctionInfo{12, C<&IHidDebugServer::UnsetTouchScreenAutoPilotState>, "UnsetTouchScreenAutoPilotState"},
FunctionInfo{13, C<&IHidDebugServer::GetTouchScreenConfiguration>, "GetTouchScreenConfiguration"},
FunctionInfo{14, C<&IHidDebugServer::ProcessTouchScreenAutoTune>, "ProcessTouchScreenAutoTune"},
FunctionInfo{15, C<&IHidDebugServer::ForceStopTouchScreenManagement>, "ForceStopTouchScreenManagement"},
FunctionInfo{16, C<&IHidDebugServer::ForceRestartTouchScreenManagement>, "ForceRestartTouchScreenManagement"},
FunctionInfo{17, C<&IHidDebugServer::IsTouchScreenManaged>, "IsTouchScreenManaged"},
FunctionInfo{20, nullptr, "DeactivateMouse"},
FunctionInfo{21, nullptr, "SetMouseAutoPilotState"},
FunctionInfo{22, nullptr, "UnsetMouseAutoPilotState"},
FunctionInfo{23, nullptr, "AddMouseSideWheelDelta"},
FunctionInfo{25, nullptr, "SetDebugMouseAutoPilotState"},
FunctionInfo{26, nullptr, "UnsetDebugMouseAutoPilotState"},
FunctionInfo{30, nullptr, "DeactivateKeyboard"},
FunctionInfo{31, nullptr, "SetKeyboardAutoPilotState"},
FunctionInfo{32, nullptr, "UnsetKeyboardAutoPilotState"},
FunctionInfo{50, nullptr, "DeactivateXpad"},
FunctionInfo{51, nullptr, "SetXpadAutoPilotState"},
FunctionInfo{52, nullptr, "UnsetXpadAutoPilotState"},
FunctionInfo{53, nullptr, "DeactivateJoyXpad"},
FunctionInfo{60, nullptr, "ClearNpadSystemCommonPolicy"},
FunctionInfo{61, nullptr, "DeactivateNpad"},
FunctionInfo{62, nullptr, "ForceDisconnectNpad"},
FunctionInfo{91, C<&IHidDebugServer::DeactivateGesture>, "DeactivateGesture"},
FunctionInfo{110, nullptr, "DeactivateHomeButton"},
FunctionInfo{111, nullptr, "SetHomeButtonAutoPilotState"},
FunctionInfo{112, nullptr, "UnsetHomeButtonAutoPilotState"},
FunctionInfo{120, nullptr, "DeactivateSleepButton"},
FunctionInfo{121, nullptr, "SetSleepButtonAutoPilotState"},
FunctionInfo{122, nullptr, "UnsetSleepButtonAutoPilotState"},
FunctionInfo{123, nullptr, "DeactivateInputDetector"},
FunctionInfo{130, nullptr, "DeactivateCaptureButton"},
FunctionInfo{131, nullptr, "SetCaptureButtonAutoPilotState"},
FunctionInfo{132, nullptr, "UnsetCaptureButtonAutoPilotState"},
FunctionInfo{133, nullptr, "SetShiftAccelerometerCalibrationValue"},
FunctionInfo{134, nullptr, "GetShiftAccelerometerCalibrationValue"},
FunctionInfo{135, nullptr, "SetShiftGyroscopeCalibrationValue"},
FunctionInfo{136, nullptr, "GetShiftGyroscopeCalibrationValue"},
FunctionInfo{140, nullptr, "DeactivateConsoleSixAxisSensor"},
FunctionInfo{141, nullptr, "GetConsoleSixAxisSensorSamplingFrequency"},
FunctionInfo{142, nullptr, "DeactivateSevenSixAxisSensor"},
FunctionInfo{143, nullptr, "GetConsoleSixAxisSensorCountStates"},
FunctionInfo{144, nullptr, "GetAccelerometerFsr"},
FunctionInfo{145, nullptr, "SetAccelerometerFsr"},
FunctionInfo{146, nullptr, "GetAccelerometerOdr"},
FunctionInfo{147, nullptr, "SetAccelerometerOdr"},
FunctionInfo{148, nullptr, "GetGyroscopeFsr"},
FunctionInfo{149, nullptr, "SetGyroscopeFsr"},
FunctionInfo{150, nullptr, "GetGyroscopeOdr"},
FunctionInfo{151, nullptr, "SetGyroscopeOdr"},
FunctionInfo{152, nullptr, "GetWhoAmI"},
FunctionInfo{201, nullptr, "ActivateFirmwareUpdate"},
FunctionInfo{202, nullptr, "DeactivateFirmwareUpdate"},
FunctionInfo{203, nullptr, "StartFirmwareUpdate"},
FunctionInfo{204, nullptr, "GetFirmwareUpdateStage"},
FunctionInfo{205, nullptr, "GetFirmwareVersion"},
FunctionInfo{206, nullptr, "GetDestinationFirmwareVersion"},
FunctionInfo{207, nullptr, "DiscardFirmwareInfoCacheForRevert"},
FunctionInfo{208, nullptr, "StartFirmwareUpdateForRevert"},
FunctionInfo{209, nullptr, "GetAvailableFirmwareVersionForRevert"},
FunctionInfo{210, nullptr, "IsFirmwareUpdatingDevice"},
FunctionInfo{211, nullptr, "StartFirmwareUpdateIndividual"},
FunctionInfo{212, nullptr, "GetDetailFirmwareVersion"}, // 19.0.0+
FunctionInfo{215, nullptr, "SetUsbFirmwareForceUpdateEnabled"},
FunctionInfo{216, nullptr, "SetAllKuinaDevicesToFirmwareUpdateMode"},
FunctionInfo{221, nullptr, "UpdateControllerColor"},
FunctionInfo{222, nullptr, "ConnectUsbPadsAsync"},
FunctionInfo{223, nullptr, "DisconnectUsbPadsAsync"},
FunctionInfo{224, nullptr, "UpdateDesignInfo"},
FunctionInfo{225, nullptr, "GetUniquePadDriverState"},
FunctionInfo{226, nullptr, "GetSixAxisSensorDriverStates"},
FunctionInfo{227, nullptr, "GetRxPacketHistory"},
FunctionInfo{228, nullptr, "AcquireOperationEventHandle"},
FunctionInfo{229, nullptr, "ReadSerialFlash"},
FunctionInfo{230, nullptr, "WriteSerialFlash"},
FunctionInfo{231, nullptr, "GetOperationResult"},
FunctionInfo{232, nullptr, "EnableShipmentMode"},
FunctionInfo{233, nullptr, "ClearPairingInfo"},
FunctionInfo{234, nullptr, "GetUniquePadDeviceTypeSetInternal"},
FunctionInfo{235, nullptr, "EnableAnalogStickPower"},
FunctionInfo{236, nullptr, "RequestKuinaUartClockCal"},
FunctionInfo{237, nullptr, "GetKuinaUartClockCal"},
FunctionInfo{238, nullptr, "SetKuinaUartClockTrim"},
FunctionInfo{239, nullptr, "KuinaLoopbackTest"},
FunctionInfo{240, nullptr, "RequestBatteryVoltage"},
FunctionInfo{241, nullptr, "GetBatteryVoltage"},
FunctionInfo{242, nullptr, "GetUniquePadPowerInfo"},
FunctionInfo{243, nullptr, "RebootUniquePad"},
FunctionInfo{244, nullptr, "RequestKuinaFirmwareVersion"},
FunctionInfo{245, nullptr, "GetKuinaFirmwareVersion"},
FunctionInfo{246, nullptr, "GetVidPid"},
FunctionInfo{247, nullptr, "GetAnalogStickCalibrationValue"},
FunctionInfo{248, nullptr, "GetUniquePadIdsFull"},
FunctionInfo{249, nullptr, "ConnectUniquePad"},
FunctionInfo{250, nullptr, "IsVirtual"},
FunctionInfo{251, nullptr, "GetAnalogStickModuleParam"},
FunctionInfo{253, nullptr, "ClearStorageForShipment"}, //19.0.0+
FunctionInfo{261, nullptr, "UpdateDesignInfo12"}, //21.0.0+
FunctionInfo{262, nullptr, "GetUniquePadButtonCount"}, //21.0.0+
FunctionInfo{267, nullptr, "SetAnalogStickCalibration"}, //21.0.0+
FunctionInfo{268, nullptr, "ResetAnalogStickCalibration"}, //21.0.0+
FunctionInfo{301, nullptr, "GetAbstractedPadHandles"},
FunctionInfo{302, nullptr, "GetAbstractedPadState"},
FunctionInfo{303, nullptr, "GetAbstractedPadsState"},
FunctionInfo{321, nullptr, "SetAutoPilotVirtualPadState"},
FunctionInfo{322, nullptr, "UnsetAutoPilotVirtualPadState"},
FunctionInfo{323, nullptr, "UnsetAllAutoPilotVirtualPadState"},
FunctionInfo{324, nullptr, "AttachHdlsWorkBuffer"},
FunctionInfo{325, nullptr, "ReleaseHdlsWorkBuffer"},
FunctionInfo{326, nullptr, "DumpHdlsNpadAssignmentState"},
FunctionInfo{327, nullptr, "DumpHdlsStates"},
FunctionInfo{328, nullptr, "ApplyHdlsNpadAssignmentState"},
FunctionInfo{329, nullptr, "ApplyHdlsStateList"},
FunctionInfo{330, nullptr, "AttachHdlsVirtualDevice"},
FunctionInfo{331, nullptr, "DetachHdlsVirtualDevice"},
FunctionInfo{332, nullptr, "SetHdlsState"},
FunctionInfo{350, nullptr, "AddRegisteredDevice"},
FunctionInfo{351, nullptr, "GetRegisteredDevicesCountDebug"}, //17.0.0-18.1.0
FunctionInfo{352, nullptr, "DeleteRegisteredDevicesDebug"}, //17.0.0-18.1.0
FunctionInfo{400, nullptr, "DisableExternalMcuOnNxDevice"},
FunctionInfo{401, nullptr, "DisableRailDeviceFiltering"},
FunctionInfo{402, nullptr, "EnableWiredPairing"},
FunctionInfo{403, nullptr, "EnableShipmentModeAutoClear"},
FunctionInfo{404, nullptr, "SetRailEnabled"},
FunctionInfo{500, nullptr, "SetFactoryInt"},
FunctionInfo{501, nullptr, "IsFactoryBootEnabled"},
FunctionInfo{550, nullptr, "SetAnalogStickModelDataTemporarily"},
FunctionInfo{551, nullptr, "GetAnalogStickModelData"},
FunctionInfo{552, nullptr, "ResetAnalogStickModelData"},
FunctionInfo{600, nullptr, "ConvertPadState"},
FunctionInfo{601, nullptr, "IsButtonConfigSupported"}, //18.0.0+
FunctionInfo{602, nullptr, "IsButtonConfigEmbeddedSupported"}, //18.0.0+
FunctionInfo{603, nullptr, "DeleteButtonConfig"}, //18.0.0+
FunctionInfo{604, nullptr, "DeleteButtonConfigEmbedded"}, //18.0.0+
FunctionInfo{605, nullptr, "SetButtonConfigEnabled"}, //18.0.0+
FunctionInfo{606, nullptr, "SetButtonConfigEmbeddedEnabled"}, //18.0.0+
FunctionInfo{607, nullptr, "IsButtonConfigEnabled"}, //18.0.0+
FunctionInfo{608, nullptr, "IsButtonConfigEmbeddedEnabled"}, //18.0.0+
FunctionInfo{609, nullptr, "SetButtonConfigEmbedded"}, //18.0.0+
FunctionInfo{610, nullptr, "SetButtonConfigFull"}, //18.0.0+
FunctionInfo{611, nullptr, "SetButtonConfigLeft"}, //18.0.0+
FunctionInfo{612, nullptr, "SetButtonConfigRight"}, //18.0.0+
FunctionInfo{613, nullptr, "GetButtonConfigEmbedded"}, //18.0.0+
FunctionInfo{614, nullptr, "GetButtonConfigFull"}, //18.0.0+
FunctionInfo{615, nullptr, "GetButtonConfigLeft"}, //18.0.0+
FunctionInfo{616, nullptr, "GetButtonConfigRight"}, //18.0.0+
FunctionInfo{650, nullptr, "AddButtonPlayData"},
FunctionInfo{651, nullptr, "StartButtonPlayData"},
FunctionInfo{652, nullptr, "StopButtonPlayData"},
FunctionInfo{700, nullptr, "GetRailAttachEventCount"}, //21.0.0+
FunctionInfo{2000, nullptr, "DeactivateDigitizer"},
FunctionInfo{2001, nullptr, "SetDigitizerAutoPilotState"},
FunctionInfo{2002, nullptr, "UnsetDigitizerAutoPilotState"},
FunctionInfo{3000, nullptr, "ReloadFirmwareDebugSettings"},
};
// clang-format on
RegisterHandlers(functions);
}
IHidDebugServer::~IHidDebugServer() = default;
Result IHidDebugServer::DeactivateTouchScreen() {
LOG_INFO(Service_HID, "called");
if (!firmware_settings->IsDeviceManaged()) {
R_RETURN(GetResourceManager()->GetTouchScreen()->Deactivate());
}
R_SUCCEED();
}
Result IHidDebugServer::SetTouchScreenAutoPilotState(
InArray<TouchState, BufferAttr_HipcMapAlias> auto_pilot_buffer) {
AutoPilotState auto_pilot{};
auto_pilot.count =
static_cast<u64>((std::min)(auto_pilot_buffer.size(), auto_pilot.state.size()));
memcpy(auto_pilot.state.data(), auto_pilot_buffer.data(),
auto_pilot.count * sizeof(TouchState));
LOG_INFO(Service_HID, "called, auto_pilot_count={}", auto_pilot.count);
R_RETURN(GetResourceManager()->GetTouchScreen()->SetTouchScreenAutoPilotState(auto_pilot));
}
Result IHidDebugServer::UnsetTouchScreenAutoPilotState() {
LOG_INFO(Service_HID, "called");
R_RETURN(GetResourceManager()->GetTouchScreen()->UnsetTouchScreenAutoPilotState());
}
Result IHidDebugServer::GetTouchScreenConfiguration(
Out<Core::HID::TouchScreenConfigurationForNx> out_touchscreen_config,
ClientAppletResourceUserId aruid) {
LOG_INFO(Service_HID, "called, applet_resource_user_id={}", aruid.pid);
R_TRY(GetResourceManager()->GetTouchScreen()->GetTouchScreenConfiguration(
*out_touchscreen_config, aruid.pid));
if (out_touchscreen_config->mode != Core::HID::TouchScreenModeForNx::Heat2 &&
out_touchscreen_config->mode != Core::HID::TouchScreenModeForNx::Finger) {
out_touchscreen_config->mode = Core::HID::TouchScreenModeForNx::UseSystemSetting;
}
R_SUCCEED();
}
Result IHidDebugServer::ProcessTouchScreenAutoTune() {
LOG_INFO(Service_HID, "called");
R_RETURN(GetResourceManager()->GetTouchScreen()->ProcessTouchScreenAutoTune());
}
Result IHidDebugServer::ForceStopTouchScreenManagement() {
LOG_INFO(Service_HID, "called");
if (!firmware_settings->IsDeviceManaged()) {
R_SUCCEED();
}
auto touch_screen = GetResourceManager()->GetTouchScreen();
auto gesture = GetResourceManager()->GetGesture();
if (firmware_settings->IsTouchI2cManaged()) {
bool is_touch_active{};
bool is_gesture_active{};
R_TRY(touch_screen->IsActive(is_touch_active));
R_TRY(gesture->IsActive(is_gesture_active));
if (is_touch_active) {
R_TRY(touch_screen->Deactivate());
}
if (is_gesture_active) {
R_TRY(gesture->Deactivate());
}
}
R_SUCCEED();
}
Result IHidDebugServer::ForceRestartTouchScreenManagement(u32 basic_gesture_id,
ClientAppletResourceUserId aruid) {
LOG_INFO(Service_HID, "called, basic_gesture_id={}, applet_resource_user_id={}",
basic_gesture_id, aruid.pid);
auto touch_screen = GetResourceManager()->GetTouchScreen();
auto gesture = GetResourceManager()->GetGesture();
if (firmware_settings->IsDeviceManaged() && firmware_settings->IsTouchI2cManaged()) {
R_TRY(gesture->Activate());
R_TRY(gesture->Activate(aruid.pid, basic_gesture_id));
R_TRY(touch_screen->Activate());
R_TRY(touch_screen->Activate(aruid.pid));
}
R_SUCCEED();
}
Result IHidDebugServer::IsTouchScreenManaged(Out<bool> out_is_managed) {
LOG_INFO(Service_HID, "called");
bool is_touch_active{};
bool is_gesture_active{};
R_TRY(GetResourceManager()->GetTouchScreen()->IsActive(is_touch_active));
R_TRY(GetResourceManager()->GetGesture()->IsActive(is_gesture_active));
*out_is_managed = is_touch_active || is_gesture_active;
R_SUCCEED();
}
Result IHidDebugServer::DeactivateGesture() {
LOG_INFO(Service_HID, "called");
if (!firmware_settings->IsDeviceManaged()) {
R_RETURN(GetResourceManager()->GetGesture()->Deactivate());
}
R_SUCCEED();
}
std::shared_ptr<ResourceManager> IHidDebugServer::GetResourceManager() {
resource_manager->Initialize();
return resource_manager;
}
} // namespace Service::HID
@@ -15,31 +15,5 @@ namespace Service::HID {
class ResourceManager;
class HidFirmwareSettings;
class IHidDebugServer final : public ServiceFramework<IHidDebugServer> {
public:
explicit IHidDebugServer(Core::System& system_, std::shared_ptr<ResourceManager> resource,
std::shared_ptr<HidFirmwareSettings> settings);
~IHidDebugServer() override;
private:
Result DeactivateTouchScreen();
Result SetTouchScreenAutoPilotState(
InArray<TouchState, BufferAttr_HipcMapAlias> auto_pilot_buffer);
Result UnsetTouchScreenAutoPilotState();
Result GetTouchScreenConfiguration(
Out<Core::HID::TouchScreenConfigurationForNx> out_touchscreen_config,
ClientAppletResourceUserId aruid);
Result ProcessTouchScreenAutoTune();
Result ForceStopTouchScreenManagement();
Result ForceRestartTouchScreenManagement(u32 basic_gesture_id,
ClientAppletResourceUserId aruid);
Result IsTouchScreenManaged(Out<bool> out_is_managed);
Result DeactivateGesture();
std::shared_ptr<ResourceManager> GetResourceManager();
std::shared_ptr<ResourceManager> resource_manager;
std::shared_ptr<HidFirmwareSettings> firmware_settings;
};
} // namespace Service::HID
+9 -9
View File
@@ -42,11 +42,8 @@
namespace Service::HID {
IHidServer::IHidServer(Core::System& system_, std::shared_ptr<ResourceManager> resource,
std::shared_ptr<HidFirmwareSettings> settings)
: ServiceFramework{system_, "hid"}, resource_manager{resource}, firmware_settings{settings} {
// clang-format off
static const FunctionInfo functions[] = {
ServiceFrameworkBase::FunctionInfoBase const* IHidServer::FindRequest(u32 key) {
static constexpr auto functions = CreateStaticMap(
FunctionInfo{0, C<&IHidServer::CreateAppletResource>, "CreateAppletResource"},
FunctionInfo{1, C<&IHidServer::ActivateDebugPad>, "ActivateDebugPad"},
FunctionInfo{11, C<&IHidServer::ActivateTouchScreen>, "ActivateTouchScreen"},
@@ -237,12 +234,15 @@ IHidServer::IHidServer(Core::System& system_, std::shared_ptr<ResourceManager> r
FunctionInfo{3013, nullptr, "SetDebugPadGenericPadMap"}, //21.0.0+
FunctionInfo{3014, nullptr, "GetDebugPadKeyboardMap"}, //21.0.0+
FunctionInfo{3015, nullptr, "SetDebugPadKeyboardMap"}, //21.0.0+
FunctionInfo{3150, C<&IHidServer::SetMouseLibraryVersion>, "SetMouseLibraryVersion"}, //21.0.0+
FunctionInfo{3150, C<&IHidServer::SetMouseLibraryVersion>, "SetMouseLibraryVersion"} //21.0.0+
// What? -- {12010, nullptr, "SetButtonConfigLeft"},
};
// clang-format on
);
return HandlerTableGenerateWithFind(key, functions);
}
RegisterHandlers(functions);
IHidServer::IHidServer(Core::System& system_, std::shared_ptr<ResourceManager> resource,
std::shared_ptr<HidFirmwareSettings> settings)
: ServiceFramework{system_, "hid"}, resource_manager{resource}, firmware_settings{settings} {
}
IHidServer::~IHidServer() = default;
+2
View File
@@ -265,6 +265,8 @@ private:
Result SetTouchScreenResolution(u32 width, u32 height, ClientAppletResourceUserId aruid);
Result SetMouseLibraryVersion(ClientAppletResourceUserId aruid);
FunctionInfoBase const* FindRequest(u32 key) override;
std::shared_ptr<ResourceManager> resource_manager;
std::shared_ptr<HidFirmwareSettings> firmware_settings;
};
@@ -22,252 +22,6 @@ IHidSystemServer::IHidSystemServer(Core::System& system_, std::shared_ptr<Resour
std::shared_ptr<HidFirmwareSettings> settings)
: ServiceFramework{system_, "hid:sys"}, service_context{system_, service_name},
resource_manager{resource}, firmware_settings{settings} {
// clang-format off
static const FunctionInfo functions[] = {
FunctionInfo{31, nullptr, "SendKeyboardLockKeyEvent"},
FunctionInfo{101, nullptr, "AcquireHomeButtonEventHandle"},
FunctionInfo{111, nullptr, "ActivateHomeButton"},
FunctionInfo{121, nullptr, "AcquireSleepButtonEventHandle"},
FunctionInfo{131, nullptr, "ActivateSleepButton"},
FunctionInfo{141, nullptr, "AcquireCaptureButtonEventHandle"},
FunctionInfo{151, nullptr, "ActivateCaptureButton"},
FunctionInfo{161, &IHidSystemServer::GetPlatformConfig, "GetPlatformConfig"},
FunctionInfo{210, nullptr, "AcquireNfcDeviceUpdateEventHandle"},
FunctionInfo{211, nullptr, "GetNpadsWithNfc"},
FunctionInfo{212, nullptr, "AcquireNfcActivateEventHandle"},
FunctionInfo{213, nullptr, "ActivateNfc"},
FunctionInfo{214, nullptr, "GetXcdHandleForNpadWithNfc"},
FunctionInfo{215, nullptr, "IsNfcActivated"},
FunctionInfo{216, nullptr, "GetAbstractedPadIdForNpadWithNfc"},
FunctionInfo{217, nullptr, "SetNfcEvent"},
FunctionInfo{218, nullptr, "GetNfcInfo"},
FunctionInfo{219, nullptr, "StartNfcDiscovery"},
FunctionInfo{220, nullptr, "StopNfcDiscovery"},
FunctionInfo{221, nullptr, "StartNtagRead"},
FunctionInfo{222, nullptr, "StartNtagWrite"},
FunctionInfo{223, nullptr, "SendNfcRawData"},
FunctionInfo{224, nullptr, "RegisterMifareKey"},
FunctionInfo{225, nullptr, "ClearMifareKey"},
FunctionInfo{226, nullptr, "StartMifareRead"},
FunctionInfo{227, nullptr, "StartMifareWrite"},
FunctionInfo{230, nullptr, "AcquireIrSensorEventHndle" },
FunctionInfo{231, nullptr, "ActivateIrSensor"},
FunctionInfo{232, nullptr, "GetIrSensorState"},
FunctionInfo{233, nullptr, "GetXcdHandleForNpadWihIrSensor" },
FunctionInfo{234, nullptr, "GetNpadJoyHoldType"},
FunctionInfo{241, nullptr, "GetDataFormat"},
FunctionInfo{242, nullptr, "SetDataFormat"},
FunctionInfo{243, nullptr, "GetMcuState"},
FunctionInfo{244, nullptr, "SetMcuState"},
FunctionInfo{245, nullptr, "GetMcuVersionForNfc"},
FunctionInfo{246, nullptr, "CheckNfcDevicePower"},
FunctionInfo{247, nullptr, "SetMcuStateImmediate"},
FunctionInfo{301, nullptr, "ActivateNpadSystem"},
FunctionInfo{303, &IHidSystemServer::ApplyNpadSystemCommonPolicy, "ApplyNpadSystemCommonPolicy"},
FunctionInfo{304, &IHidSystemServer::EnableAssigningSingleOnSlSrPress, "EnableAssigningSingleOnSlSrPress"},
FunctionInfo{305, &IHidSystemServer::DisableAssigningSingleOnSlSrPress, "DisableAssigningSingleOnSlSrPress"},
FunctionInfo{306, &IHidSystemServer::GetLastActiveNpad, "GetLastActiveNpad"},
FunctionInfo{307, nullptr, "GetNpadSystemExtStyle"},
FunctionInfo{308, &IHidSystemServer::ApplyNpadSystemCommonPolicyFull, "ApplyNpadSystemCommonPolicyFull"},
FunctionInfo{309, &IHidSystemServer::GetNpadFullKeyGripColor, "GetNpadFullKeyGripColor"},
FunctionInfo{310, &IHidSystemServer::GetMaskedSupportedNpadStyleSet, "GetMaskedSupportedNpadStyleSet"},
FunctionInfo{311, nullptr, "SetNpadPlayerLedBlinkingDevice"},
FunctionInfo{312, &IHidSystemServer::SetSupportedNpadStyleSetAll, "SetSupportedNpadStyleSetAll"},
FunctionInfo{313, &IHidSystemServer::GetNpadCaptureButtonAssignment, "GetNpadCaptureButtonAssignment"},
FunctionInfo{314, nullptr, "GetAppletFooterUiType"},
FunctionInfo{315, &IHidSystemServer::GetAppletDetailedUiType, "GetAppletDetailedUiType"},
FunctionInfo{316, &IHidSystemServer::GetNpadInterfaceType, "GetNpadInterfaceType"},
FunctionInfo{317, &IHidSystemServer::GetNpadLeftRightInterfaceType, "GetNpadLeftRightInterfaceType"},
FunctionInfo{318, &IHidSystemServer::HasBattery, "HasBattery"},
FunctionInfo{319, &IHidSystemServer::HasLeftRightBattery, "HasLeftRightBattery"},
FunctionInfo{321, &IHidSystemServer::GetUniquePadsFromNpad, "GetUniquePadsFromNpad"},
FunctionInfo{322, &IHidSystemServer::SetNpadSystemExtStateEnabled, "SetNpadSystemExtStateEnabled"},
FunctionInfo{323, nullptr, "GetLastActiveUniquePad"},
FunctionInfo{324, nullptr, "GetUniquePadButtonSet"},
FunctionInfo{325, nullptr, "GetUniquePadColor"},
FunctionInfo{326, nullptr, "GetUniquePadAppletDetailedUiType"},
FunctionInfo{327, nullptr, "GetAbstractedPadIdDataFromNpad"},
FunctionInfo{328, nullptr, "AttachAbstractedPadToNpad"},
FunctionInfo{329, nullptr, "DetachAbstractedPadAll"},
FunctionInfo{330, nullptr, "CheckAbstractedPadConnection"},
FunctionInfo{332, nullptr, "ConvertAppletDetailedUiTypeFromPlayReportType"}, //19.0.0+
FunctionInfo{333, nullptr, "SetNpadUserSpgApplet"}, //20.0.0+
FunctionInfo{334, nullptr, "AcquireUniquePadButtonStateChangedEventHandle"}, //20.0.0+
FunctionInfo{501, &IHidSystemServer::RegisterAppletResourceUserId, "RegisterAppletResourceUserId"},
FunctionInfo{502, &IHidSystemServer::UnregisterAppletResourceUserId, "UnregisterAppletResourceUserId"},
FunctionInfo{503, &IHidSystemServer::EnableAppletToGetInput, "EnableAppletToGetInput"},
FunctionInfo{504, &IHidSystemServer::SetAruidValidForVibration, "SetAruidValidForVibration"},
FunctionInfo{505, &IHidSystemServer::EnableAppletToGetSixAxisSensor, "EnableAppletToGetSixAxisSensor"},
FunctionInfo{506, &IHidSystemServer::EnableAppletToGetPadInput, "EnableAppletToGetPadInput"},
FunctionInfo{507, &IHidSystemServer::EnableAppletToGetTouchScreen, "EnableAppletToGetTouchScreen"},
FunctionInfo{510, &IHidSystemServer::SetVibrationMasterVolume, "SetVibrationMasterVolume"},
FunctionInfo{511, &IHidSystemServer::GetVibrationMasterVolume, "GetVibrationMasterVolume"},
FunctionInfo{512, &IHidSystemServer::BeginPermitVibrationSession, "BeginPermitVibrationSession"},
FunctionInfo{513, &IHidSystemServer::EndPermitVibrationSession, "EndPermitVibrationSession"},
FunctionInfo{514, nullptr, "Unknown514"},
FunctionInfo{520, nullptr, "EnableHandheldHids"},
FunctionInfo{521, nullptr, "DisableHandheldHids"},
FunctionInfo{522, nullptr, "SetJoyConRailEnabled"},
FunctionInfo{523, &IHidSystemServer::IsJoyConRailEnabled, "IsJoyConRailEnabled"},
FunctionInfo{524, nullptr, "IsHandheldHidsEnabled"},
FunctionInfo{525, &IHidSystemServer::IsJoyConAttachedOnAllRail, "IsJoyConAttachedOnAllRail"},
FunctionInfo{540, nullptr, "AcquirePlayReportControllerUsageUpdateEvent"},
FunctionInfo{541, nullptr, "GetPlayReportControllerUsages"},
FunctionInfo{542, nullptr, "AcquirePlayReportRegisteredDeviceUpdateEvent"},
FunctionInfo{543, nullptr, "GetRegisteredDevicesOld"},
FunctionInfo{544, &IHidSystemServer::AcquireConnectionTriggerTimeoutEvent, "AcquireConnectionTriggerTimeoutEvent"},
FunctionInfo{545, nullptr, "SendConnectionTrigger"},
FunctionInfo{546, &IHidSystemServer::AcquireDeviceRegisteredEventForControllerSupport, "AcquireDeviceRegisteredEventForControllerSupport"},
FunctionInfo{547, nullptr, "GetAllowedBluetoothLinksCount"},
FunctionInfo{548, &IHidSystemServer::GetRegisteredDevices, "GetRegisteredDevices"},
FunctionInfo{549, nullptr, "GetConnectableRegisteredDevices"},
FunctionInfo{551, &IHidSystemServer::GetRegisteredDevices, "GetRegisteredDevicesForControllerSupport"}, //20.0.0+ //mocked via 548 for Diablo 3 (at least)
FunctionInfo{700, nullptr, "ActivateUniquePad"},
FunctionInfo{702, &IHidSystemServer::AcquireUniquePadConnectionEventHandle, "AcquireUniquePadConnectionEventHandle"},
FunctionInfo{703, &IHidSystemServer::GetUniquePadIds, "GetUniquePadIds"},
FunctionInfo{711, nullptr, "AcquireUniquePadConnectionOnHandheldForNsEventHandle"}, //20.0.0+
FunctionInfo{712, nullptr, "GetUniquePadColor12"}, //20.0.0+
FunctionInfo{751, &IHidSystemServer::AcquireJoyDetachOnBluetoothOffEventHandle, "AcquireJoyDetachOnBluetoothOffEventHandle"},
FunctionInfo{800, nullptr, "ListSixAxisSensorHandles"},
FunctionInfo{801, nullptr, "IsSixAxisSensorUserCalibrationSupported"},
FunctionInfo{802, nullptr, "ResetSixAxisSensorCalibrationValues"},
FunctionInfo{803, nullptr, "StartSixAxisSensorUserCalibration"},
FunctionInfo{804, nullptr, "CancelSixAxisSensorUserCalibration"},
FunctionInfo{805, nullptr, "GetUniquePadBluetoothAddress"},
FunctionInfo{806, nullptr, "DisconnectUniquePad"},
FunctionInfo{807, nullptr, "GetUniquePadType"},
FunctionInfo{808, nullptr, "GetUniquePadInterface"},
FunctionInfo{809, nullptr, "GetUniquePadSerialNumber"},
FunctionInfo{810, nullptr, "GetUniquePadControllerNumber"},
FunctionInfo{811, nullptr, "GetSixAxisSensorUserCalibrationStage"},
FunctionInfo{812, nullptr, "GetConsoleUniqueSixAxisSensorHandle"},
FunctionInfo{813, nullptr, "GetDeviceType"},
FunctionInfo{821, nullptr, "StartAnalogStickManualCalibration"},
FunctionInfo{822, nullptr, "RetryCurrentAnalogStickManualCalibrationStage"},
FunctionInfo{823, nullptr, "CancelAnalogStickManualCalibration"},
FunctionInfo{824, nullptr, "ResetAnalogStickManualCalibration"},
FunctionInfo{825, nullptr, "GetAnalogStickState"},
FunctionInfo{826, nullptr, "GetAnalogStickManualCalibrationStage"},
FunctionInfo{827, nullptr, "IsAnalogStickButtonPressed"},
FunctionInfo{828, nullptr, "IsAnalogStickInReleasePosition"},
FunctionInfo{829, nullptr, "IsAnalogStickInCircumference"},
FunctionInfo{830, nullptr, "SetNotificationLedPattern"},
FunctionInfo{831, nullptr, "SetNotificationLedPatternWithTimeout"},
FunctionInfo{832, nullptr, "PrepareHidsForNotificationWake"},
FunctionInfo{850, &IHidSystemServer::IsUsbFullKeyControllerEnabled, "IsUsbFullKeyControllerEnabled"},
FunctionInfo{851, &IHidSystemServer::EnableUsbFullKeyController, "EnableUsbFullKeyController"},
FunctionInfo{852, nullptr, "IsUsbConnected"},
FunctionInfo{870, &IHidSystemServer::IsHandheldButtonPressedOnConsoleMode, "IsHandheldButtonPressedOnConsoleMode"},
FunctionInfo{900, nullptr, "ActivateInputDetector"},
FunctionInfo{901, nullptr, "NotifyInputDetector"},
FunctionInfo{1000, &IHidSystemServer::InitializeFirmwareUpdate, "InitializeFirmwareUpdate"},
FunctionInfo{1001, nullptr, "GetFirmwareVersion"},
FunctionInfo{1002, nullptr, "GetAvailableFirmwareVersion"},
FunctionInfo{1003, nullptr, "IsFirmwareUpdateAvailable"},
FunctionInfo{1004, &IHidSystemServer::CheckFirmwareUpdateRequired, "CheckFirmwareUpdateRequired"},
FunctionInfo{1005, nullptr, "StartFirmwareUpdate"},
FunctionInfo{1006, nullptr, "AbortFirmwareUpdate"},
FunctionInfo{1007, nullptr, "GetFirmwareUpdateState"},
FunctionInfo{1008, nullptr, "ActivateAudioControl"},
FunctionInfo{1009, nullptr, "AcquireAudioControlEventHandle"},
FunctionInfo{1010, nullptr, "GetAudioControlStates"},
FunctionInfo{1011, nullptr, "DeactivateAudioControl"},
FunctionInfo{1012, nullptr, "GetFirmwareVersionStringForUserSupportPage"},
FunctionInfo{1050, nullptr, "IsSixAxisSensorAccurateUserCalibrationSupported"},
FunctionInfo{1051, nullptr, "StartSixAxisSensorAccurateUserCalibration"},
FunctionInfo{1052, nullptr, "CancelSixAxisSensorAccurateUserCalibration"},
FunctionInfo{1053, nullptr, "GetSixAxisSensorAccurateUserCalibrationState"},
FunctionInfo{1100, nullptr, "GetHidbusSystemServiceObject"},
FunctionInfo{1120, &IHidSystemServer::SetFirmwareHotfixUpdateSkipEnabled, "SetFirmwareHotfixUpdateSkipEnabled"},
FunctionInfo{1130, &IHidSystemServer::InitializeUsbFirmwareUpdate, "InitializeUsbFirmwareUpdate"},
FunctionInfo{1131, &IHidSystemServer::FinalizeUsbFirmwareUpdate, "FinalizeUsbFirmwareUpdate"},
FunctionInfo{1132, &IHidSystemServer::CheckUsbFirmwareUpdateRequired, "CheckUsbFirmwareUpdateRequired"},
FunctionInfo{1133, nullptr, "StartUsbFirmwareUpdate"},
FunctionInfo{1134, nullptr, "GetUsbFirmwareUpdateState"},
FunctionInfo{1135, &IHidSystemServer::InitializeUsbFirmwareUpdateWithoutMemory, "InitializeUsbFirmwareUpdateWithoutMemory"},
FunctionInfo{1150, &IHidSystemServer::SetTouchScreenMagnification, "SetTouchScreenMagnification"},
FunctionInfo{1151, &IHidSystemServer::GetTouchScreenFirmwareVersion, "GetTouchScreenFirmwareVersion"},
FunctionInfo{1152, &IHidSystemServer::SetTouchScreenDefaultConfiguration, "SetTouchScreenDefaultConfiguration"},
FunctionInfo{1153, &IHidSystemServer::GetTouchScreenDefaultConfiguration, "GetTouchScreenDefaultConfiguration"},
FunctionInfo{1154, nullptr, "IsFirmwareAvailableForNotification"},
FunctionInfo{1155, &IHidSystemServer::SetForceHandheldStyleVibration, "SetForceHandheldStyleVibration"},
FunctionInfo{1156, nullptr, "SendConnectionTriggerWithoutTimeoutEvent"},
FunctionInfo{1157, nullptr, "CancelConnectionTrigger"},
FunctionInfo{1158, nullptr, "SetConnectionLimitForSplay"}, //20.1.0+
FunctionInfo{1159, nullptr, "ClearConnectionLimitForSplay"}, //20.1.0+
FunctionInfo{1200, nullptr, "IsButtonConfigSupported"},
FunctionInfo{1201, nullptr, "IsButtonConfigEmbeddedSupported"},
FunctionInfo{1202, nullptr, "DeleteButtonConfig"},
FunctionInfo{1203, nullptr, "DeleteButtonConfigEmbedded"},
FunctionInfo{1204, nullptr, "SetButtonConfigEnabled"},
FunctionInfo{1205, nullptr, "SetButtonConfigEmbeddedEnabled"},
FunctionInfo{1206, nullptr, "IsButtonConfigEnabled"},
FunctionInfo{1207, nullptr, "IsButtonConfigEmbeddedEnabled"},
FunctionInfo{1208, nullptr, "SetButtonConfigEmbedded"},
FunctionInfo{1209, nullptr, "SetButtonConfigFull"},
FunctionInfo{1210, nullptr, "SetButtonConfigLeft"},
FunctionInfo{1211, nullptr, "SetButtonConfigRight"},
FunctionInfo{1212, nullptr, "GetButtonConfigEmbedded"},
FunctionInfo{1213, nullptr, "GetButtonConfigFull"},
FunctionInfo{1214, nullptr, "GetButtonConfigLeft"},
FunctionInfo{1215, nullptr, "GetButtonConfigRight"},
FunctionInfo{1250, nullptr, "IsCustomButtonConfigSupported"},
FunctionInfo{1251, nullptr, "IsDefaultButtonConfigEmbedded"},
FunctionInfo{1252, nullptr, "IsDefaultButtonConfigFull"},
FunctionInfo{1253, nullptr, "IsDefaultButtonConfigLeft"},
FunctionInfo{1254, nullptr, "IsDefaultButtonConfigRight"},
FunctionInfo{1255, nullptr, "IsButtonConfigStorageEmbeddedEmpty"},
FunctionInfo{1256, nullptr, "IsButtonConfigStorageFullEmpty"},
FunctionInfo{1257, nullptr, "IsButtonConfigStorageLeftEmpty"},
FunctionInfo{1258, nullptr, "IsButtonConfigStorageRightEmpty"},
FunctionInfo{1259, nullptr, "GetButtonConfigStorageEmbeddedDeprecated"},
FunctionInfo{1260, nullptr, "GetButtonConfigStorageFullDeprecated"},
FunctionInfo{1261, nullptr, "GetButtonConfigStorageLeftDeprecated"},
FunctionInfo{1262, nullptr, "GetButtonConfigStorageRightDeprecated"},
FunctionInfo{1263, nullptr, "SetButtonConfigStorageEmbeddedDeprecated"},
FunctionInfo{1264, nullptr, "SetButtonConfigStorageFullDeprecated"},
FunctionInfo{1265, nullptr, "SetButtonConfigStorageLeftDeprecated"},
FunctionInfo{1266, nullptr, "SetButtonConfigStorageRightDeprecated"},
FunctionInfo{1267, nullptr, "DeleteButtonConfigStorageEmbedded"},
FunctionInfo{1268, nullptr, "DeleteButtonConfigStorageFull"},
FunctionInfo{1269, nullptr, "DeleteButtonConfigStorageLeft"},
FunctionInfo{1270, nullptr, "DeleteButtonConfigStorageRight"},
FunctionInfo{1271, &IHidSystemServer::IsUsingCustomButtonConfig, "IsUsingCustomButtonConfig"},
FunctionInfo{1272, &IHidSystemServer::IsAnyCustomButtonConfigEnabled, "IsAnyCustomButtonConfigEnabled"},
FunctionInfo{1273, nullptr, "SetAllCustomButtonConfigEnabled"},
FunctionInfo{1274, nullptr, "SetDefaultButtonConfig"},
FunctionInfo{1275, nullptr, "SetAllDefaultButtonConfig"},
FunctionInfo{1276, nullptr, "SetHidButtonConfigEmbedded"},
FunctionInfo{1277, nullptr, "SetHidButtonConfigFull"},
FunctionInfo{1278, nullptr, "SetHidButtonConfigLeft"},
FunctionInfo{1279, nullptr, "SetHidButtonConfigRight"},
FunctionInfo{1280, nullptr, "GetHidButtonConfigEmbedded"},
FunctionInfo{1281, nullptr, "GetHidButtonConfigFull"},
FunctionInfo{1282, nullptr, "GetHidButtonConfigLeft"},
FunctionInfo{1283, nullptr, "GetHidButtonConfigRight"},
FunctionInfo{1284, nullptr, "GetButtonConfigStorageEmbedded"},
FunctionInfo{1285, nullptr, "GetButtonConfigStorageFull"},
FunctionInfo{1286, nullptr, "GetButtonConfigStorageLeft"},
FunctionInfo{1287, nullptr, "GetButtonConfigStorageRight"},
FunctionInfo{1288, nullptr, "SetButtonConfigStorageEmbedded"},
FunctionInfo{1289, nullptr, "SetButtonConfigStorageFull"},
FunctionInfo{1290, nullptr, "DeleteButtonConfigStorageRight"},
FunctionInfo{1291, nullptr, "DeleteButtonConfigStorageRight"},
FunctionInfo{1308, nullptr, "SetButtonConfigVisible"}, //18.0.0+
FunctionInfo{1309, nullptr, "IsButtonConfigVisible"}, //18.0.0+
FunctionInfo{1320, nullptr, "WakeTouchScreenUp"}, //17.0.0+
FunctionInfo{1321, nullptr, "PutTouchScreenToSleep"}, //17.0.0+
FunctionInfo{1322, nullptr, "AcquireTouchScreenAsyncWakeCompletedEvent"}, //20.0.0+
FunctionInfo{1323, nullptr, "StartTouchScreenAutoTuneForSystemSettings"}, //21.0.0+
FunctionInfo{1324, nullptr, "AcquireTouchScreenAutoTuneCompletedEvent"}, //21.0.0+
FunctionInfo{1325, nullptr, "IsTouchScreenAutoTuneRequiredForRepairProviderReplacement"}, //21.0.0+
FunctionInfo{1326, nullptr, "SetTouchScreenOffset"}, //21.0.0+
FunctionInfo{1420, nullptr, "GetAppletResourceProperty"}, //19.0.0+
FunctionInfo{12010, nullptr, "SetButtonConfigLeft"} //11.0.0-17.0.1
};
// clang-format on
RegisterHandlers(functions);
joy_detach_event = service_context.CreateEvent("IHidSystemServer::JoyDetachEvent");
acquire_device_registered_event =
@@ -81,6 +81,252 @@ private:
std::shared_ptr<ResourceManager> GetResourceManager();
FunctionInfoBase const* FindRequest(u32 key) override {
return HandlerTableGenerateWithFind(key, functions);
}
static constexpr auto functions = CreateStaticMap(
FunctionInfo{31, nullptr, "SendKeyboardLockKeyEvent"},
FunctionInfo{101, nullptr, "AcquireHomeButtonEventHandle"},
FunctionInfo{111, nullptr, "ActivateHomeButton"},
FunctionInfo{121, nullptr, "AcquireSleepButtonEventHandle"},
FunctionInfo{131, nullptr, "ActivateSleepButton"},
FunctionInfo{141, nullptr, "AcquireCaptureButtonEventHandle"},
FunctionInfo{151, nullptr, "ActivateCaptureButton"},
FunctionInfo{161, &IHidSystemServer::GetPlatformConfig, "GetPlatformConfig"},
FunctionInfo{210, nullptr, "AcquireNfcDeviceUpdateEventHandle"},
FunctionInfo{211, nullptr, "GetNpadsWithNfc"},
FunctionInfo{212, nullptr, "AcquireNfcActivateEventHandle"},
FunctionInfo{213, nullptr, "ActivateNfc"},
FunctionInfo{214, nullptr, "GetXcdHandleForNpadWithNfc"},
FunctionInfo{215, nullptr, "IsNfcActivated"},
FunctionInfo{216, nullptr, "GetAbstractedPadIdForNpadWithNfc"},
FunctionInfo{217, nullptr, "SetNfcEvent"},
FunctionInfo{218, nullptr, "GetNfcInfo"},
FunctionInfo{219, nullptr, "StartNfcDiscovery"},
FunctionInfo{220, nullptr, "StopNfcDiscovery"},
FunctionInfo{221, nullptr, "StartNtagRead"},
FunctionInfo{222, nullptr, "StartNtagWrite"},
FunctionInfo{223, nullptr, "SendNfcRawData"},
FunctionInfo{224, nullptr, "RegisterMifareKey"},
FunctionInfo{225, nullptr, "ClearMifareKey"},
FunctionInfo{226, nullptr, "StartMifareRead"},
FunctionInfo{227, nullptr, "StartMifareWrite"},
FunctionInfo{230, nullptr, "AcquireIrSensorEventHndle" },
FunctionInfo{231, nullptr, "ActivateIrSensor"},
FunctionInfo{232, nullptr, "GetIrSensorState"},
FunctionInfo{233, nullptr, "GetXcdHandleForNpadWihIrSensor" },
FunctionInfo{234, nullptr, "GetNpadJoyHoldType"},
FunctionInfo{241, nullptr, "GetDataFormat"},
FunctionInfo{242, nullptr, "SetDataFormat"},
FunctionInfo{243, nullptr, "GetMcuState"},
FunctionInfo{244, nullptr, "SetMcuState"},
FunctionInfo{245, nullptr, "GetMcuVersionForNfc"},
FunctionInfo{246, nullptr, "CheckNfcDevicePower"},
FunctionInfo{247, nullptr, "SetMcuStateImmediate"},
FunctionInfo{301, nullptr, "ActivateNpadSystem"},
FunctionInfo{303, &IHidSystemServer::ApplyNpadSystemCommonPolicy, "ApplyNpadSystemCommonPolicy"},
FunctionInfo{304, &IHidSystemServer::EnableAssigningSingleOnSlSrPress, "EnableAssigningSingleOnSlSrPress"},
FunctionInfo{305, &IHidSystemServer::DisableAssigningSingleOnSlSrPress, "DisableAssigningSingleOnSlSrPress"},
FunctionInfo{306, &IHidSystemServer::GetLastActiveNpad, "GetLastActiveNpad"},
FunctionInfo{307, nullptr, "GetNpadSystemExtStyle"},
FunctionInfo{308, &IHidSystemServer::ApplyNpadSystemCommonPolicyFull, "ApplyNpadSystemCommonPolicyFull"},
FunctionInfo{309, &IHidSystemServer::GetNpadFullKeyGripColor, "GetNpadFullKeyGripColor"},
FunctionInfo{310, &IHidSystemServer::GetMaskedSupportedNpadStyleSet, "GetMaskedSupportedNpadStyleSet"},
FunctionInfo{311, nullptr, "SetNpadPlayerLedBlinkingDevice"},
FunctionInfo{312, &IHidSystemServer::SetSupportedNpadStyleSetAll, "SetSupportedNpadStyleSetAll"},
FunctionInfo{313, &IHidSystemServer::GetNpadCaptureButtonAssignment, "GetNpadCaptureButtonAssignment"},
FunctionInfo{314, nullptr, "GetAppletFooterUiType"},
FunctionInfo{315, &IHidSystemServer::GetAppletDetailedUiType, "GetAppletDetailedUiType"},
FunctionInfo{316, &IHidSystemServer::GetNpadInterfaceType, "GetNpadInterfaceType"},
FunctionInfo{317, &IHidSystemServer::GetNpadLeftRightInterfaceType, "GetNpadLeftRightInterfaceType"},
FunctionInfo{318, &IHidSystemServer::HasBattery, "HasBattery"},
FunctionInfo{319, &IHidSystemServer::HasLeftRightBattery, "HasLeftRightBattery"},
FunctionInfo{321, &IHidSystemServer::GetUniquePadsFromNpad, "GetUniquePadsFromNpad"},
FunctionInfo{322, &IHidSystemServer::SetNpadSystemExtStateEnabled, "SetNpadSystemExtStateEnabled"},
FunctionInfo{323, nullptr, "GetLastActiveUniquePad"},
FunctionInfo{324, nullptr, "GetUniquePadButtonSet"},
FunctionInfo{325, nullptr, "GetUniquePadColor"},
FunctionInfo{326, nullptr, "GetUniquePadAppletDetailedUiType"},
FunctionInfo{327, nullptr, "GetAbstractedPadIdDataFromNpad"},
FunctionInfo{328, nullptr, "AttachAbstractedPadToNpad"},
FunctionInfo{329, nullptr, "DetachAbstractedPadAll"},
FunctionInfo{330, nullptr, "CheckAbstractedPadConnection"},
FunctionInfo{332, nullptr, "ConvertAppletDetailedUiTypeFromPlayReportType"}, //19.0.0+
FunctionInfo{333, nullptr, "SetNpadUserSpgApplet"}, //20.0.0+
FunctionInfo{334, nullptr, "AcquireUniquePadButtonStateChangedEventHandle"}, //20.0.0+
FunctionInfo{501, &IHidSystemServer::RegisterAppletResourceUserId, "RegisterAppletResourceUserId"},
FunctionInfo{502, &IHidSystemServer::UnregisterAppletResourceUserId, "UnregisterAppletResourceUserId"},
FunctionInfo{503, &IHidSystemServer::EnableAppletToGetInput, "EnableAppletToGetInput"},
FunctionInfo{504, &IHidSystemServer::SetAruidValidForVibration, "SetAruidValidForVibration"},
FunctionInfo{505, &IHidSystemServer::EnableAppletToGetSixAxisSensor, "EnableAppletToGetSixAxisSensor"},
FunctionInfo{506, &IHidSystemServer::EnableAppletToGetPadInput, "EnableAppletToGetPadInput"},
FunctionInfo{507, &IHidSystemServer::EnableAppletToGetTouchScreen, "EnableAppletToGetTouchScreen"},
FunctionInfo{510, &IHidSystemServer::SetVibrationMasterVolume, "SetVibrationMasterVolume"},
FunctionInfo{511, &IHidSystemServer::GetVibrationMasterVolume, "GetVibrationMasterVolume"},
FunctionInfo{512, &IHidSystemServer::BeginPermitVibrationSession, "BeginPermitVibrationSession"},
FunctionInfo{513, &IHidSystemServer::EndPermitVibrationSession, "EndPermitVibrationSession"},
FunctionInfo{514, nullptr, "Unknown514"},
FunctionInfo{520, nullptr, "EnableHandheldHids"},
FunctionInfo{521, nullptr, "DisableHandheldHids"},
FunctionInfo{522, nullptr, "SetJoyConRailEnabled"},
FunctionInfo{523, &IHidSystemServer::IsJoyConRailEnabled, "IsJoyConRailEnabled"},
FunctionInfo{524, nullptr, "IsHandheldHidsEnabled"},
FunctionInfo{525, &IHidSystemServer::IsJoyConAttachedOnAllRail, "IsJoyConAttachedOnAllRail"},
FunctionInfo{540, nullptr, "AcquirePlayReportControllerUsageUpdateEvent"},
FunctionInfo{541, nullptr, "GetPlayReportControllerUsages"},
FunctionInfo{542, nullptr, "AcquirePlayReportRegisteredDeviceUpdateEvent"},
FunctionInfo{543, nullptr, "GetRegisteredDevicesOld"},
FunctionInfo{544, &IHidSystemServer::AcquireConnectionTriggerTimeoutEvent, "AcquireConnectionTriggerTimeoutEvent"},
FunctionInfo{545, nullptr, "SendConnectionTrigger"},
FunctionInfo{546, &IHidSystemServer::AcquireDeviceRegisteredEventForControllerSupport, "AcquireDeviceRegisteredEventForControllerSupport"},
FunctionInfo{547, nullptr, "GetAllowedBluetoothLinksCount"},
FunctionInfo{548, &IHidSystemServer::GetRegisteredDevices, "GetRegisteredDevices"},
FunctionInfo{549, nullptr, "GetConnectableRegisteredDevices"},
FunctionInfo{551, &IHidSystemServer::GetRegisteredDevices, "GetRegisteredDevicesForControllerSupport"}, //20.0.0+ //mocked via 548 for Diablo 3 (at least)
FunctionInfo{700, nullptr, "ActivateUniquePad"},
FunctionInfo{702, &IHidSystemServer::AcquireUniquePadConnectionEventHandle, "AcquireUniquePadConnectionEventHandle"},
FunctionInfo{703, &IHidSystemServer::GetUniquePadIds, "GetUniquePadIds"},
FunctionInfo{711, nullptr, "AcquireUniquePadConnectionOnHandheldForNsEventHandle"}, //20.0.0+
FunctionInfo{712, nullptr, "GetUniquePadColor12"}, //20.0.0+
FunctionInfo{751, &IHidSystemServer::AcquireJoyDetachOnBluetoothOffEventHandle, "AcquireJoyDetachOnBluetoothOffEventHandle"},
FunctionInfo{800, nullptr, "ListSixAxisSensorHandles"},
FunctionInfo{801, nullptr, "IsSixAxisSensorUserCalibrationSupported"},
FunctionInfo{802, nullptr, "ResetSixAxisSensorCalibrationValues"},
FunctionInfo{803, nullptr, "StartSixAxisSensorUserCalibration"},
FunctionInfo{804, nullptr, "CancelSixAxisSensorUserCalibration"},
FunctionInfo{805, nullptr, "GetUniquePadBluetoothAddress"},
FunctionInfo{806, nullptr, "DisconnectUniquePad"},
FunctionInfo{807, nullptr, "GetUniquePadType"},
FunctionInfo{808, nullptr, "GetUniquePadInterface"},
FunctionInfo{809, nullptr, "GetUniquePadSerialNumber"},
FunctionInfo{810, nullptr, "GetUniquePadControllerNumber"},
FunctionInfo{811, nullptr, "GetSixAxisSensorUserCalibrationStage"},
FunctionInfo{812, nullptr, "GetConsoleUniqueSixAxisSensorHandle"},
FunctionInfo{813, nullptr, "GetDeviceType"},
FunctionInfo{821, nullptr, "StartAnalogStickManualCalibration"},
FunctionInfo{822, nullptr, "RetryCurrentAnalogStickManualCalibrationStage"},
FunctionInfo{823, nullptr, "CancelAnalogStickManualCalibration"},
FunctionInfo{824, nullptr, "ResetAnalogStickManualCalibration"},
FunctionInfo{825, nullptr, "GetAnalogStickState"},
FunctionInfo{826, nullptr, "GetAnalogStickManualCalibrationStage"},
FunctionInfo{827, nullptr, "IsAnalogStickButtonPressed"},
FunctionInfo{828, nullptr, "IsAnalogStickInReleasePosition"},
FunctionInfo{829, nullptr, "IsAnalogStickInCircumference"},
FunctionInfo{830, nullptr, "SetNotificationLedPattern"},
FunctionInfo{831, nullptr, "SetNotificationLedPatternWithTimeout"},
FunctionInfo{832, nullptr, "PrepareHidsForNotificationWake"},
FunctionInfo{850, &IHidSystemServer::IsUsbFullKeyControllerEnabled, "IsUsbFullKeyControllerEnabled"},
FunctionInfo{851, &IHidSystemServer::EnableUsbFullKeyController, "EnableUsbFullKeyController"},
FunctionInfo{852, nullptr, "IsUsbConnected"},
FunctionInfo{870, &IHidSystemServer::IsHandheldButtonPressedOnConsoleMode, "IsHandheldButtonPressedOnConsoleMode"},
FunctionInfo{900, nullptr, "ActivateInputDetector"},
FunctionInfo{901, nullptr, "NotifyInputDetector"},
FunctionInfo{1000, &IHidSystemServer::InitializeFirmwareUpdate, "InitializeFirmwareUpdate"},
FunctionInfo{1001, nullptr, "GetFirmwareVersion"},
FunctionInfo{1002, nullptr, "GetAvailableFirmwareVersion"},
FunctionInfo{1003, nullptr, "IsFirmwareUpdateAvailable"},
FunctionInfo{1004, &IHidSystemServer::CheckFirmwareUpdateRequired, "CheckFirmwareUpdateRequired"},
FunctionInfo{1005, nullptr, "StartFirmwareUpdate"},
FunctionInfo{1006, nullptr, "AbortFirmwareUpdate"},
FunctionInfo{1007, nullptr, "GetFirmwareUpdateState"},
FunctionInfo{1008, nullptr, "ActivateAudioControl"},
FunctionInfo{1009, nullptr, "AcquireAudioControlEventHandle"},
FunctionInfo{1010, nullptr, "GetAudioControlStates"},
FunctionInfo{1011, nullptr, "DeactivateAudioControl"},
FunctionInfo{1012, nullptr, "GetFirmwareVersionStringForUserSupportPage"},
FunctionInfo{1050, nullptr, "IsSixAxisSensorAccurateUserCalibrationSupported"},
FunctionInfo{1051, nullptr, "StartSixAxisSensorAccurateUserCalibration"},
FunctionInfo{1052, nullptr, "CancelSixAxisSensorAccurateUserCalibration"},
FunctionInfo{1053, nullptr, "GetSixAxisSensorAccurateUserCalibrationState"},
FunctionInfo{1100, nullptr, "GetHidbusSystemServiceObject"},
FunctionInfo{1120, &IHidSystemServer::SetFirmwareHotfixUpdateSkipEnabled, "SetFirmwareHotfixUpdateSkipEnabled"},
FunctionInfo{1130, &IHidSystemServer::InitializeUsbFirmwareUpdate, "InitializeUsbFirmwareUpdate"},
FunctionInfo{1131, &IHidSystemServer::FinalizeUsbFirmwareUpdate, "FinalizeUsbFirmwareUpdate"},
FunctionInfo{1132, &IHidSystemServer::CheckUsbFirmwareUpdateRequired, "CheckUsbFirmwareUpdateRequired"},
FunctionInfo{1133, nullptr, "StartUsbFirmwareUpdate"},
FunctionInfo{1134, nullptr, "GetUsbFirmwareUpdateState"},
FunctionInfo{1135, &IHidSystemServer::InitializeUsbFirmwareUpdateWithoutMemory, "InitializeUsbFirmwareUpdateWithoutMemory"},
FunctionInfo{1150, &IHidSystemServer::SetTouchScreenMagnification, "SetTouchScreenMagnification"},
FunctionInfo{1151, &IHidSystemServer::GetTouchScreenFirmwareVersion, "GetTouchScreenFirmwareVersion"},
FunctionInfo{1152, &IHidSystemServer::SetTouchScreenDefaultConfiguration, "SetTouchScreenDefaultConfiguration"},
FunctionInfo{1153, &IHidSystemServer::GetTouchScreenDefaultConfiguration, "GetTouchScreenDefaultConfiguration"},
FunctionInfo{1154, nullptr, "IsFirmwareAvailableForNotification"},
FunctionInfo{1155, &IHidSystemServer::SetForceHandheldStyleVibration, "SetForceHandheldStyleVibration"},
FunctionInfo{1156, nullptr, "SendConnectionTriggerWithoutTimeoutEvent"},
FunctionInfo{1157, nullptr, "CancelConnectionTrigger"},
FunctionInfo{1158, nullptr, "SetConnectionLimitForSplay"}, //20.1.0+
FunctionInfo{1159, nullptr, "ClearConnectionLimitForSplay"}, //20.1.0+
FunctionInfo{1200, nullptr, "IsButtonConfigSupported"},
FunctionInfo{1201, nullptr, "IsButtonConfigEmbeddedSupported"},
FunctionInfo{1202, nullptr, "DeleteButtonConfig"},
FunctionInfo{1203, nullptr, "DeleteButtonConfigEmbedded"},
FunctionInfo{1204, nullptr, "SetButtonConfigEnabled"},
FunctionInfo{1205, nullptr, "SetButtonConfigEmbeddedEnabled"},
FunctionInfo{1206, nullptr, "IsButtonConfigEnabled"},
FunctionInfo{1207, nullptr, "IsButtonConfigEmbeddedEnabled"},
FunctionInfo{1208, nullptr, "SetButtonConfigEmbedded"},
FunctionInfo{1209, nullptr, "SetButtonConfigFull"},
FunctionInfo{1210, nullptr, "SetButtonConfigLeft"},
FunctionInfo{1211, nullptr, "SetButtonConfigRight"},
FunctionInfo{1212, nullptr, "GetButtonConfigEmbedded"},
FunctionInfo{1213, nullptr, "GetButtonConfigFull"},
FunctionInfo{1214, nullptr, "GetButtonConfigLeft"},
FunctionInfo{1215, nullptr, "GetButtonConfigRight"},
FunctionInfo{1250, nullptr, "IsCustomButtonConfigSupported"},
FunctionInfo{1251, nullptr, "IsDefaultButtonConfigEmbedded"},
FunctionInfo{1252, nullptr, "IsDefaultButtonConfigFull"},
FunctionInfo{1253, nullptr, "IsDefaultButtonConfigLeft"},
FunctionInfo{1254, nullptr, "IsDefaultButtonConfigRight"},
FunctionInfo{1255, nullptr, "IsButtonConfigStorageEmbeddedEmpty"},
FunctionInfo{1256, nullptr, "IsButtonConfigStorageFullEmpty"},
FunctionInfo{1257, nullptr, "IsButtonConfigStorageLeftEmpty"},
FunctionInfo{1258, nullptr, "IsButtonConfigStorageRightEmpty"},
FunctionInfo{1259, nullptr, "GetButtonConfigStorageEmbeddedDeprecated"},
FunctionInfo{1260, nullptr, "GetButtonConfigStorageFullDeprecated"},
FunctionInfo{1261, nullptr, "GetButtonConfigStorageLeftDeprecated"},
FunctionInfo{1262, nullptr, "GetButtonConfigStorageRightDeprecated"},
FunctionInfo{1263, nullptr, "SetButtonConfigStorageEmbeddedDeprecated"},
FunctionInfo{1264, nullptr, "SetButtonConfigStorageFullDeprecated"},
FunctionInfo{1265, nullptr, "SetButtonConfigStorageLeftDeprecated"},
FunctionInfo{1266, nullptr, "SetButtonConfigStorageRightDeprecated"},
FunctionInfo{1267, nullptr, "DeleteButtonConfigStorageEmbedded"},
FunctionInfo{1268, nullptr, "DeleteButtonConfigStorageFull"},
FunctionInfo{1269, nullptr, "DeleteButtonConfigStorageLeft"},
FunctionInfo{1270, nullptr, "DeleteButtonConfigStorageRight"},
FunctionInfo{1271, &IHidSystemServer::IsUsingCustomButtonConfig, "IsUsingCustomButtonConfig"},
FunctionInfo{1272, &IHidSystemServer::IsAnyCustomButtonConfigEnabled, "IsAnyCustomButtonConfigEnabled"},
FunctionInfo{1273, nullptr, "SetAllCustomButtonConfigEnabled"},
FunctionInfo{1274, nullptr, "SetDefaultButtonConfig"},
FunctionInfo{1275, nullptr, "SetAllDefaultButtonConfig"},
FunctionInfo{1276, nullptr, "SetHidButtonConfigEmbedded"},
FunctionInfo{1277, nullptr, "SetHidButtonConfigFull"},
FunctionInfo{1278, nullptr, "SetHidButtonConfigLeft"},
FunctionInfo{1279, nullptr, "SetHidButtonConfigRight"},
FunctionInfo{1280, nullptr, "GetHidButtonConfigEmbedded"},
FunctionInfo{1281, nullptr, "GetHidButtonConfigFull"},
FunctionInfo{1282, nullptr, "GetHidButtonConfigLeft"},
FunctionInfo{1283, nullptr, "GetHidButtonConfigRight"},
FunctionInfo{1284, nullptr, "GetButtonConfigStorageEmbedded"},
FunctionInfo{1285, nullptr, "GetButtonConfigStorageFull"},
FunctionInfo{1286, nullptr, "GetButtonConfigStorageLeft"},
FunctionInfo{1287, nullptr, "GetButtonConfigStorageRight"},
FunctionInfo{1288, nullptr, "SetButtonConfigStorageEmbedded"},
FunctionInfo{1289, nullptr, "SetButtonConfigStorageFull"},
FunctionInfo{1290, nullptr, "DeleteButtonConfigStorageRight"},
FunctionInfo{1291, nullptr, "DeleteButtonConfigStorageRight"},
FunctionInfo{1308, nullptr, "SetButtonConfigVisible"}, //18.0.0+
FunctionInfo{1309, nullptr, "IsButtonConfigVisible"}, //18.0.0+
FunctionInfo{1320, nullptr, "WakeTouchScreenUp"}, //17.0.0+
FunctionInfo{1321, nullptr, "PutTouchScreenToSleep"}, //17.0.0+
FunctionInfo{1322, nullptr, "AcquireTouchScreenAsyncWakeCompletedEvent"}, //20.0.0+
FunctionInfo{1323, nullptr, "StartTouchScreenAutoTuneForSystemSettings"}, //21.0.0+
FunctionInfo{1324, nullptr, "AcquireTouchScreenAutoTuneCompletedEvent"}, //21.0.0+
FunctionInfo{1325, nullptr, "IsTouchScreenAutoTuneRequiredForRepairProviderReplacement"}, //21.0.0+
FunctionInfo{1326, nullptr, "SetTouchScreenOffset"}, //21.0.0+
FunctionInfo{1420, nullptr, "GetAppletResourceProperty"}, //19.0.0+
FunctionInfo{12010, nullptr, "SetButtonConfigLeft"} //11.0.0-17.0.1
);
Kernel::KEvent* acquire_connection_trigger_timeout_event;
Kernel::KEvent* acquire_device_registered_event;
Kernel::KEvent* joy_detach_event;
+7 -7
View File
@@ -29,9 +29,8 @@
namespace Service::IRS {
IRS::IRS(Core::System& system_) : ServiceFramework{system_, "irs"} {
// clang-format off
static const FunctionInfo functions[] = {
ServiceFrameworkBase::FunctionInfoBase const* IRS::FindRequest(u32 key) {
static constexpr auto functions = CreateStaticMap(
FunctionInfo{302, C<&IRS::ActivateIrsensor>, "ActivateIrsensor"},
FunctionInfo{303, C<&IRS::DeactivateIrsensor>, "DeactivateIrsensor"},
FunctionInfo{304, C<&IRS::GetIrsensorSharedMemoryHandle>, "GetIrsensorSharedMemoryHandle"},
@@ -49,12 +48,13 @@ IRS::IRS(Core::System& system_) : ServiceFramework{system_, "irs"} {
FunctionInfo{316, C<&IRS::RunImageTransferExProcessor>, "RunImageTransferExProcessor"},
FunctionInfo{317, C<&IRS::RunIrLedProcessor>, "RunIrLedProcessor"},
FunctionInfo{318, C<&IRS::StopImageProcessorAsync>, "StopImageProcessorAsync"},
FunctionInfo{319, C<&IRS::ActivateIrsensorWithFunctionLevel>, "ActivateIrsensorWithFunctionLevel"},
};
// clang-format on
FunctionInfo{319, C<&IRS::ActivateIrsensorWithFunctionLevel>, "ActivateIrsensorWithFunctionLevel"}
);
return HandlerTableGenerateWithFind(key, functions);
}
IRS::IRS(Core::System& system_) : ServiceFramework{system_, "irs"} {
u8* raw_shared_memory = system.Kernel().GetIrsSharedMem().GetPointer();
RegisterHandlers(functions);
shared_memory = std::construct_at(reinterpret_cast<StatusManager*>(raw_shared_memory));
npad_device = system.HIDCore().GetEmulatedController(Core::HID::NpadIdType::Player1);
+2
View File
@@ -154,6 +154,8 @@ private:
return static_cast<T&>(*processors[index]);
}
FunctionInfoBase const* FindRequest(u32 key) override;
Core::HID::EmulatedController* npad_device = nullptr;
StatusManager* shared_memory = nullptr;
std::array<std::unique_ptr<ProcessorBase>, 9> processors{};