mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-10-03 05:09:41 +00:00
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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{};
|
||||
|
||||
Reference in New Issue
Block a user