HID services: Difference between revisions
| Line 122: | Line 122: | ||
| 132 || EnableUnintendedHomeButtonInputProtection | | 132 || EnableUnintendedHomeButtonInputProtection | ||
|- | |- | ||
| 200 || GetVibrationDeviceInfo | | 200 || [[#GetVibrationDeviceInfo]] | ||
|- | |- | ||
| 201 || [[#SendVibrationValue]] | | 201 || [[#SendVibrationValue]] | ||
| Line 170: | Line 170: | ||
== GetNpadHandheldActivationMode == | == GetNpadHandheldActivationMode == | ||
Takes a PID and an u64 [[AM_services|AppletResourceUserId]]. Returns an output u64. Official user-processes panic if the output u64 is not 0-2. | Takes a PID and an u64 [[AM_services|AppletResourceUserId]]. Returns an output u64. Official user-processes panic if the output u64 is not 0-2. | ||
== GetVibrationDeviceInfo == | |||
Takes an u32 VibrationDeviceHandle. Returns an output [[#VibrationDeviceInfo]]. | |||
== SendVibrationValue == | == SendVibrationValue == | ||
| Line 176: | Line 179: | ||
== GetActualVibrationValue == | == GetActualVibrationValue == | ||
Takes a PID-descriptor, an u32 VibrationDeviceHandle, and an u64 [[AM_services|AppletResourceUserId]]. Returns the 0x10-byte VibrationValue. | Takes a PID-descriptor, an u32 VibrationDeviceHandle, and an u64 [[AM_services|AppletResourceUserId]]. Returns the 0x10-byte VibrationValue. | ||
== VibrationDeviceInfo == | |||
This is a 0x8-byte struct. | |||
== IAppletResource == | == IAppletResource == | ||
Revision as of 08:29, 6 March 2018
See here for the HID shared-memory.
hid
This is "nn::hid::IHidServer".
| Cmd | Name |
|---|---|
| 0 | #CreateAppletResource |
| 1 | ActivateDebugPad |
| 11 | ActivateTouchScreen |
| 21 | ActivateMouse |
| 31 | ActivateKeyboard |
| 40 | AcquireXpadIdEventHandle |
| 41 | ReleaseXpadIdEventHandle |
| 51 | ActivateXpad |
| 55 | GetXpadIds |
| 56 | ActivateJoyXpad |
| 58 | GetJoyXpadLifoHandle |
| 59 | GetJoyXpadIds |
| 60 | ActivateSixAxisSensor |
| 61 | DeactivateSixAxisSensor |
| 62 | GetSixAxisSensorLifoHandle |
| 63 | ActivateJoySixAxisSensor |
| 64 | DeactivateJoySixAxisSensor |
| 65 | GetJoySixAxisSensorLifoHandle |
| 66 | StartSixAxisSensor |
| 67 | StopSixAxisSensor |
| 68 | IsSixAxisSensorFusionEnabled |
| 69 | EnableSixAxisSensorFusion |
| 70 | SetSixAxisSensorFusionParameters |
| 71 | GetSixAxisSensorFusionParameters |
| 72 | ResetSixAxisSensorFusionParameters |
| 73 | SetAccelerometerParameters |
| 74 | GetAccelerometerParameters |
| 75 | ResetAccelerometerParameters |
| 76 | SetAccelerometerPlayMode |
| 77 | GetAccelerometerPlayMode |
| 78 | ResetAccelerometerPlayMode |
| 79 | SetGyroscopeZeroDriftMode |
| 80 | GetGyroscopeZeroDriftMode |
| 81 | ResetGyroscopeZeroDriftMode |
| 82 | IsSixAxisSensorAtRest |
| 91 | ActivateGesture |
| 100 | SetSupportedNpadStyleSet |
| 101 | GetSupportedNpadStyleSet |
| 102 | SetSupportedNpadIdType |
| 103 | ActivateNpad |
| 104 | DeactivateNpad |
| 106 | AcquireNpadStyleSetUpdateEventHandle |
| 107 | DisconnectNpad |
| 108 | GetPlayerLedPattern |
| 120 | SetNpadJoyHoldType |
| 121 | GetNpadJoyHoldType |
| 122 | #SetNpadJoyAssignmentModeSingleByDefault |
| 123 | #SetNpadJoyAssignmentModeSingle |
| 124 | #SetNpadJoyAssignmentModeDual |
| 125 | #MergeSingleJoyAsDualJoy |
| 126 | StartLrAssignmentMode |
| 127 | StopLrAssignmentMode |
| 128 | SetNpadHandheldActivationMode |
| 129 | #GetNpadHandheldActivationMode |
| 130 | SwapNpadAssignment |
| 131 | IsUnintendedHomeButtonInputProtectionEnabled |
| 132 | EnableUnintendedHomeButtonInputProtection |
| 200 | #GetVibrationDeviceInfo |
| 201 | #SendVibrationValue |
| 202 | #GetActualVibrationValue |
| 203 | CreateActiveVibrationDeviceList |
| 204 | PermitVibration |
| 205 | IsVibrationPermitted |
| 206 | SendVibrationValues |
| 300 | ActivateConsoleSixAxisSensor |
| 301 | StartConsoleSixAxisSensor |
| 302 | StopConsoleSixAxisSensor |
| 400 | IsUsbFullKeyControllerEnabled |
| 401 | EnableUsbFullKeyController |
| 402 | IsUsbFullKeyControllerConnected |
| 1000 | SetNpadCommunicationMode |
| 1001 | GetNpadCommunicationMode |
CreateAppletResource
Takes a PID and an u64 AppletResourceUserId. Returns an #IAppletResource.
SetNpadJoyAssignmentModeSingleByDefault
Takes a PID-descriptor, an u32, and an AppletResourceUserId. No output.
SetNpadJoyAssignmentModeSingle
Takes a PID-descriptor, an u32, AppletResourceUserId, and s64 NpadJoyDeviceType. No output.
SetNpadJoyAssignmentModeDual
Takes a PID-descriptor, an u32, and an AppletResourceUserId. No output.
MergeSingleJoyAsDualJoy
Takes a PID-descriptor, two u32s, and an AppletResourceUserId. No output.
GetNpadHandheldActivationMode
Takes a PID and an u64 AppletResourceUserId. Returns an output u64. Official user-processes panic if the output u64 is not 0-2.
GetVibrationDeviceInfo
Takes an u32 VibrationDeviceHandle. Returns an output #VibrationDeviceInfo.
SendVibrationValue
Takes a PID-descriptor, an u32 VibrationDeviceHandle, 0x10-byte VibrationValue immediately after that, and an u64 AppletResourceUserId.
GetActualVibrationValue
Takes a PID-descriptor, an u32 VibrationDeviceHandle, and an u64 AppletResourceUserId. Returns the 0x10-byte VibrationValue.
VibrationDeviceInfo
This is a 0x8-byte struct.
IAppletResource
| Cmd | Name |
|---|---|
| 0 | #GetSharedMemoryHandle |
No input. Returned a sharedmem handle.
hid:dbg
This is "nn::hid::IHidDebugServer".
| Cmd | Name |
|---|---|
| 0 | DeactivateDebugPad |
| 1 | SetDebugPadAutoPilotState |
| 2 | UnsetDebugPadAutoPilotState |
| 10 | DeactivateTouchScreen |
| 11 | SetTouchScreenAutoPilotState |
| 12 | UnsetTouchScreenAutoPilotState |
| 20 | DeactivateMouse |
| 21 | SetMouseAutoPilotState |
| 22 | UnsetMouseAutoPilotState |
| 30 | DeactivateKeyboard |
| 31 | SetKeyboardAutoPilotState |
| 32 | UnsetKeyboardAutoPilotState |
| 50 | DeactivateXpad |
| 51 | SetXpadAutoPilotState |
| 52 | UnsetXpadAutoPilotState |
| 60 | DeactivateJoyXpad |
| 91 | DeactivateGesture |
| 110 | DeactivateHomeButton |
| 111 | SetHomeButtonAutoPilotState |
| 112 | UnsetHomeButtonAutoPilotState |
| 120 | DeactivateSleepButton |
| 121 | SetSleepButtonAutoPilotState |
| 122 | UnsetSleepButtonAutoPilotState |
| 123 | DeactivateInputDetector |
| 130 | DeactivateCaptureButton |
| 131 | SetCaptureButtonAutoPilotState |
| 132 | UnsetCaptureButtonAutoPilotState |
| 133 | SetShiftAccelerometerCalibrationValue |
| 134 | GetShiftAccelerometerCalibrationValue |
| 135 | SetShiftGyroscopeCalibrationValue |
| 136 | GetShiftGyroscopeCalibrationValue |
| 140 | DeactivateConsoleSixAxisSensor |
| 201 | ActivateFirmwareUpdate |
| 202 | DeactivateFirmwareUpdate |
| 203 | StartFirmwareUpdate |
| 204 | GetFirmwareUpdateStage |
| 205 | GetFirmwareVersion |
| 206 | GetDestinationFirmwareVersion |
| 207 | DiscardFirmwareInfoCacheForRevert |
| 208 | StartFirmwareUpdateForRevert |
| 209 | GetAvailableFirmwareVersionForRevert |
| 211 | UpdateControllerColor |
hid:sys
This is "nn::hid::IHidSystemServer".
| Cmd | Name |
|---|---|
| 31 | SendKeyboardLockKeyEvent |
| 101 | AcquireHomeButtonEventHandle |
| 111 | ActivateHomeButton |
| 121 | AcquireSleepButtonEventHandle |
| 131 | ActivateSleepButton |
| 141 | AcquireCaptureButtonEventHandle |
| 151 | ActivateCaptureButton |
| 210 | AcquireNfcDeviceUpdateEventHandle |
| 211 | GetNpadsWithNfc |
| 212 | AcquireNfcActivateEventHandle |
| 213 | ActivateNfc |
| 230 | AcquireIrSensorEventHandle |
| 231 | ActivateIrSensor |
| 301 | ActivateNpadSystem |
| 303 | ApplyNpadSystemCommonPolicy |
| 304 | EnableAssigningSingleOnSlSrPress |
| 305 | DisableAssigningSingleOnSlSrPress |
| 306 | GetLastActiveNpad |
| 307 | GetNpadSystemExtStyle |
| 311 | SetNpadPlayerLedBlinkingDevice |
| 321 | GetUniquePadsFromNpad |
| 322 | GetIrSensorState |
| 323 | GetXcdHandleForNpadWithIrSensor |
| 500 | SetAppletResourceUserId |
| 501 | RegisterAppletResourceUserId |
| 502 | UnregisterAppletResourceUserId |
| 503 | EnableAppletToGetInput |
| 504 | SetAruidValidForVibration |
| 505 | EnableAppletToGetSixAxisSensor |
| 510 | #SetVibrationMasterVolume |
| 511 | GetVibrationMasterVolume |
| 512 | BeginPermitVibrationSession |
| 513 | EndPermitVibrationSession |
| 520 | EnableHandheldHids |
| 521 | DisableHandheldHids |
| 540 | AcquirePlayReportControllerUsageUpdateEvent |
| 541 | GetPlayReportControllerUsages |
| 542 | AcquirePlayReportRegisteredDeviceUpdateEvent |
| 543 | GetRegisteredDevices |
| 544 | AcquireConnectionTriggerTimeoutEvent |
| 545 | SendConnectionTrigger |
| 546 | AcquireDeviceRegisteredEventForControllerSupport |
| 547 | GetAllowedBluetoothLinksCount |
| 700 | ActivateUniquePad |
| 702 | AcquireUniquePadConnectionEventHandle |
| 703 | GetUniquePadIds |
| 751 | AcquireJoyDetachOnBluetoothOffEventHandle |
| 800 | ListSixAxisSensorHandles |
| 801 | IsSixAxisSensorUserCalibrationSupported |
| 802 | ResetSixAxisSensorCalibrationValues |
| 803 | StartSixAxisSensorUserCalibration |
| 804 | CancelSixAxisSensorUserCalibration |
| 805 | GetUniquePadBluetoothAddress |
| 806 | DisconnectUniquePad |
| 821 | StartAnalogStickManualCalibration |
| 822 | RetryCurrentAnalogStickManualCalibrationStage |
| 823 | CancelAnalogStickManualCalibration |
| 824 | ResetAnalogStickManualCalibration |
| 850 | IsUsbFullKeyControllerEnabled |
| 851 | EnableUsbFullKeyController |
| 852 | IsUsbConnected |
| 900 | ActivateInputDetector |
| 901 | NotifyInputDetector |
| 1000 | InitializeFirmwareUpdate |
| 1001 | GetFirmwareVersion |
| 1002 | GetAvailableFirmwareVersion |
| 1003 | IsFirmwareUpdateAvailable |
| 1004 | CheckFirmwareUpdateRequired |
| 1005 | StartFirmwareUpdate |
| 1006 | AbortFirmwareUpdate |
| 1007 | GetFirmwareUpdateState |
SetVibrationMasterVolume
Takes an input 32bit float.
irs
This is "nn::irsensor::IIrSensorServer".
| Cmd | Name |
|---|---|
| 302 | #ActivateIrsensor |
| 303 | #DeactivateIrsensor |
| 304 | #GetIrsensorSharedMemoryHandle |
| 305 | #StopImageProcessor |
| 306 | #RunMomentProcessor |
| 307 | #RunClusteringProcessor |
| 308 | #RunImageTransferProcessor |
| 309 | #GetImageTransferProcessorState |
| 310 | #RunTeraPluginProcessor |
| 311 | #GetNpadIrCameraHandle |
| 312 | #RunDpdProcessor |
| 313 | #SuspendImageProcessor |
| 314 | [3.0.0+] #CheckFirmwareVersion |
ActivateIrsensor
Takes a PID-descriptor and an AppletResourceUserId. No output.
DeactivateIrsensor
Takes a PID-descriptor and an AppletResourceUserId. No output.
Takes a PID-descriptor and an AppletResourceUserId. Returns a SharedMemory handle.
The SharedMemory is mapped with permissions=read-only and size=0x8000.
StopImageProcessor
Takes a PID-descriptor, an #IrCameraHandle, and an AppletResourceUserId. No output.
RunMomentProcessor
Takes a PID-descriptor, an #IrCameraHandle, an AppletResourceUserId, and a #PackedMomentProcessorConfig. No output.
RunClusteringProcessor
Takes a PID-descriptor, an #IrCameraHandle, an AppletResourceUserId, and a #PackedClusteringProcessorConfig. No output.
RunImageTransferProcessor
Takes a PID-descriptor, an #IrCameraHandle, an AppletResourceUserId, a #PackedImageTransferProcessorConfig, an u64 for the TransferMemory_size, and a TransferMemory handle. No output.
Official sw creates the TransferMemory with an user-specified buffer and permissions=0.
GetImageTransferProcessorState
Takes a PID-descriptor, a type-0x6 output buffer, an #IrCameraHandle, and an AppletResourceUserId. Returns an #ImageTransferProcessorState. No output.
RunTeraPluginProcessor
Takes a PID-descriptor, an #IrCameraHandle, a #PackedTeraPluginProcessorConfig (immediately after the previous word), and an AppletResourceUserId. No output.
GetNpadIrCameraHandle
Takes an input u32. Returns an output #IrCameraHandle.
RunDpdProcessor
Takes a PID-descriptor, an #IrCameraHandle, a #PackedDpdProcessorConfig (immediately after the previous word), and an AppletResourceUserId. No output.
SuspendImageProcessor
Takes a PID-descriptor, an #IrCameraHandle, and an AppletResourceUserId. No output.
CheckFirmwareVersion
Takes a PID-descriptor, an #IrCameraHandle, a #PackedMcuVersion, and an AppletResourceUserId. No output.
IrCameraHandle
This is an u32.
PackedMomentProcessorConfig
This is a 0x20-byte struct. This is converted from another structure by the official user-process.
| Offset | Size | Description | DefaultConfig |
|---|---|---|---|
| 0x0 | 0x8 | ? | 0x493E0 |
| 0x8 | 0x1 | ? | 0x0 |
| 0x9 | 0x1 | ? | 0x8 |
| 0xA | 0x1 | ? | 0x0 |
| 0xB | 0x5 | Padding | |
| 0x10 | 0x8 | u16, u32, u16 | {Not written}, 0x1400000, 0xF0 |
| 0x18 | 0x4 | Hard-coded to 0xA0003. | |
| 0x1C | 0x1 | ? | 0x1 |
| 0x1D | 0x1 | ? | 0x50 |
| 0x1E | 0x2 | Padding |
PackedClusteringProcessorConfig
This is a 0x28-byte struct.
PackedImageTransferProcessorConfig
This is a 0x18-byte struct. This is converted from another structure by the official user-process. The conversion is the same as PackedMomentProcessorConfig, except the code using out +0x1C/+0x1D was removed, and the constant is now located at out+0x10. The code which wrote to out u64 +0x10 from in+0x24 was replaced with code which writes an u8 to out+0x14.
ImageTransferProcessorState
This is a 0x10-byte struct.
PackedTeraPluginProcessorConfig
This is an u64.
PackedDpdProcessorConfig
This is a 0x10-byte struct.
PackedMcuVersion
This is an u32.
RomFS
The hid-sysmodule RomFS contains:
ftmFwUpdate ├── NTD_4CD_1801.fts256 └── NTD_4CD_2602.fts256
These are firmware files for the touchscreen controller.
Firmware update
Starting with 3.0.0 HID-sysmodule now contains strings for data stored in title 0100000000000822.