HID services: Difference between revisions
No edit summary |
|||
(4 intermediate revisions by 2 users not shown) | |||
Line 72: | Line 72: | ||
| 78 || ResetAccelerometerPlayMode | | 78 || ResetAccelerometerPlayMode | ||
|- | |- | ||
| 79 || SetGyroscopeZeroDriftMode | | 79 || [[#SetGyroscopeZeroDriftMode]] | ||
|- | |- | ||
| 80 || GetGyroscopeZeroDriftMode | | 80 || [[#GetGyroscopeZeroDriftMode]] | ||
|- | |- | ||
| 81 || ResetGyroscopeZeroDriftMode | | 81 || [[#ResetGyroscopeZeroDriftMode]] | ||
|- | |- | ||
| 82 || IsSixAxisSensorAtRest | | 82 || IsSixAxisSensorAtRest | ||
Line 273: | Line 273: | ||
== SetSixAxisSensorFusionParameters == | == SetSixAxisSensorFusionParameters == | ||
Takes a PID-descriptor, an u32 SixAxisSensorHandle, two floats, and an u64 [[AM_services|AppletResourceUserId]], no output. | Takes a PID-descriptor, an u32 [[#SixAxisSensorHandle]], two floats, and an u64 [[AM_services|AppletResourceUserId]], no output. | ||
Official sw will throw an error before using this cmd, if the first float is outside of the bounds of 0.0f-1.0f. | Official sw will throw an error before using this cmd, if the first float is outside of the bounds of 0.0f-1.0f. | ||
== GetSixAxisSensorFusionParameters == | == GetSixAxisSensorFusionParameters == | ||
Takes a PID-descriptor, an u32 SixAxisSensorHandle, and an u64 [[AM_services|AppletResourceUserId]], returns two output floats. | Takes a PID-descriptor, an u32 [[#SixAxisSensorHandle]], and an u64 [[AM_services|AppletResourceUserId]], returns two output floats. | ||
== ResetSixAxisSensorFusionParameters == | == ResetSixAxisSensorFusionParameters == | ||
Takes a PID-descriptor, an u32 SixAxisSensorHandle, and an u64 [[AM_services|AppletResourceUserId]], no output. | Takes a PID-descriptor, an u32 [[#SixAxisSensorHandle]], and an u64 [[AM_services|AppletResourceUserId]], no output. | ||
== SetGyroscopeZeroDriftMode == | |||
Takes a PID-descriptor, an u32 [[#SixAxisSensorHandle]], an u32 [[#GyroscopeZeroDriftMode]], and an u64 [[AM_services|AppletResourceUserId]], no output. | |||
== GetGyroscopeZeroDriftMode == | |||
Takes a PID-descriptor, an u32 [[#SixAxisSensorHandle]], and an u64 [[AM_services|AppletResourceUserId]], returns an output u32 [[#GyroscopeZeroDriftMode]]. | |||
Gets the value written by [[#SetGyroscopeZeroDriftMode]]. | |||
== ResetGyroscopeZeroDriftMode == | |||
Takes a PID-descriptor, an u32 [[#SixAxisSensorHandle]], and an u64 [[AM_services|AppletResourceUserId]], no output. | |||
Same as [[#SetGyroscopeZeroDriftMode]] except the [[#GyroscopeZeroDriftMode]] is hard-coded to value 1 (Standard). | |||
== SetSupportedNpadStyleSet == | == SetSupportedNpadStyleSet == | ||
Line 402: | Line 415: | ||
The NpadInterfaceType must be 1-4, otherwise this will assert. | The NpadInterfaceType must be 1-4, otherwise this will assert. | ||
== IAppletResource == | == IAppletResource == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 437: | Line 440: | ||
Takes an input [[#VibrationDeviceHandle]]. No output. | Takes an input [[#VibrationDeviceHandle]]. No output. | ||
== | == GyroscopeZeroDriftMode == | ||
This is | This is "nn::hid::GyroscopeZeroDriftMode". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Value | ||
! Description | ! Description | ||
|- | |- | ||
| 0 | | 0 || Loose | ||
| | |||
| | |||
|- | |- | ||
| 1 | | 1 || Standard | ||
| | |||
| | |||
|- | |- | ||
| 2 | | 2 || Tight | ||
| | |} | ||
== SixAxisSensorHandle == | |||
This is an u32. | |||
== VibrationDeviceHandle == | |||
This is an u32. | |||
== VibrationDeviceInfo == | |||
This is a 0x8-byte struct. | |||
== VibrationValue == | |||
This is a 0x10-byte struct, which contains 4 float values. | |||
== NpadStyleTag == | |||
This is a bitfield describing which controller styles are supported. | |||
{| class="wikitable" border="1" | |||
! Bits | |||
! Description | |||
! Notes | |||
|- | |- | ||
| 3 | | 0 | ||
| NpadJoyLeft | | NpadFullKey | ||
| Joy-Con left controller in single mode. | | Pro Controller. | ||
|- | |||
| 1 | |||
| NpadHandheld | |||
| Joy-Con controller in handheld mode. | |||
|- | |||
| 2 | |||
| NpadJoyDual | |||
| Joy-Con controller in dual mode. | |||
|- | |||
| 3 | |||
| NpadJoyLeft | |||
| Joy-Con left controller in single mode. | |||
|- | |- | ||
| 4 | | 4 | ||
Line 1,492: | Line 1,521: | ||
The specified controller must have a HOME button. | The specified controller must have a HOME button. | ||
This sends subcommand 0x38 to the specified controller, for setting the pattern for the HOME button notification LED. The input structure is converted to the format used by this [https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering/blob/master/bluetooth_hid_subcommands_notes.md#subcommand-0x38-set-home-light subcommand]. | This sends subcommand 0x38 to the specified controller, for setting the pattern for the HOME button notification LED. The input structure is converted to the format used by this [https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering/blob/master/bluetooth_hid_subcommands_notes.md#subcommand-0x38-set-home-light subcommand]. | ||
[9.0.0+] This runs code similar to [[#SetNotificationLedPatternWithTimeout]], except it passes the following param values to an internal func: flag=1 and TimeSpan=0 (with [[#SetNotificationLedPatternWithTimeout]] these are flag=0 and TimeSpan={input value}). | [9.0.0+] This runs code similar to [[#SetNotificationLedPatternWithTimeout]], except it passes the following param values to an internal func: flag=1 and TimeSpan=0 (with [[#SetNotificationLedPatternWithTimeout]] these are flag=0 and TimeSpan={input value}). | ||
== SetNotificationLedPatternWithTimeout == | == SetNotificationLedPatternWithTimeout == | ||
Takes an input [[#NotificationLedPattern]], an u64 '''UniquePadId''', and an s64 TimeSpan, no output. | Takes an input [[#NotificationLedPattern]], an u64 '''UniquePadId''', and an s64 TimeSpan, no output. | ||
== PrepareHidsForNotificationWake == | == PrepareHidsForNotificationWake == | ||
Takes a type-0x9 input buffer containing an array of u64 '''UniquePadId''', no output. | Takes a type-0x9 input buffer containing an array of u64 '''UniquePadId''', no output. | ||
== GetHidbusSystemServiceObject == | == GetHidbusSystemServiceObject == | ||
No input, returns an [[#IHidbusSystemServer]]. | No input, returns an [[#IHidbusSystemServer]]. | ||
== IHidbusSystemServer == | |||
This is "nn::hidbus::IHidbusSystemServer". | |||
This was added with [5.0.0+]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 500 || SetAppletResourceUserId | |||
|- | |||
| 501 || RegisterAppletResourceUserId | |||
|- | |||
| 502 || UnregisterAppletResourceUserId | |||
|} | |||
== NotificationLedPattern == | == NotificationLedPattern == | ||
Line 1,749: | Line 1,794: | ||
| System | | System | ||
| Generic controller. | | Generic controller. | ||
|} | |} | ||