Line 1,179: |
Line 1,179: |
| | 314 || [3.0.0+] [[#CheckFirmwareVersion]] | | | 314 || [3.0.0+] [[#CheckFirmwareVersion]] |
| |- | | |- |
− | | 315 || [4.0.0+] SetFunctionLevel | + | | 315 || [4.0.0+] [[#SetFunctionLevel]] |
| |- | | |- |
− | | 316 || [4.0.0+] RunImageTransferExProcessor | + | | 316 || [4.0.0+] [[#RunImageTransferExProcessor]] |
| |- | | |- |
− | | 317 || [4.0.0+] RunIrLedProcessor | + | | 317 || [4.0.0+] [[#RunIrLedProcessor]] |
| |- | | |- |
− | | 318 || [4.0.0+] StopImageProcessorAsync | + | | 318 || [4.0.0+] [[#StopImageProcessorAsync]] |
| |- | | |- |
− | | 319 || [4.0.0+] ActivateIrsensorWithFunctionLevel | + | | 319 || [4.0.0+] [[#ActivateIrsensorWithFunctionLevel]] |
| |} | | |} |
| | | |
Line 1,222: |
Line 1,222: |
| | | |
| == GetNpadIrCameraHandle == | | == GetNpadIrCameraHandle == |
− | Takes an input u32 NpadTypeId. Returns an output [[#IrCameraHandle]]. | + | Takes an input [[#NpadIdType]]. Returns an output [[#IrCameraHandle]]. |
| | | |
| == RunPointingProcessor == | | == RunPointingProcessor == |
− | Takes a PID-descriptor, an [[#IrCameraHandle]], a [[#PackedDpdProcessorConfig]] (immediately after the previous word), and an [[AM_services|AppletResourceUserId]]. No output. | + | Takes a PID-descriptor, an [[#IrCameraHandle]], a [[#PackedPointingProcessorConfig]] (immediately after the previous word), and an [[AM_services|AppletResourceUserId]]. No output. |
| | | |
| == SuspendImageProcessor == | | == SuspendImageProcessor == |
Line 1,233: |
Line 1,233: |
| Takes a PID-descriptor, an [[#IrCameraHandle]], a [[#PackedMcuVersion]], and an [[AM_services|AppletResourceUserId]]. No output. | | Takes a PID-descriptor, an [[#IrCameraHandle]], a [[#PackedMcuVersion]], and an [[AM_services|AppletResourceUserId]]. No output. |
| | | |
− | == PackedClusteringProcessorConfig == | + | == SetFunctionLevel == |
− | This is a 0x28-byte struct.
| + | Takes a PID-descriptor, an [[#IrCameraHandle]], a [[#PackedFunctionLevel]], and an [[AM_services|AppletResourceUserId]]. No output. |
| | | |
− | == PackedImageTransferProcessorConfig == | + | == RunImageTransferExProcessor == |
− | 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.
| + | Takes a PID-descriptor, an [[#IrCameraHandle]], an [[AM_services|AppletResourceUserId]], a [[#PackedImageTransferProcessorExConfig]], an u64 for the TransferMemory_size, and a TransferMemory handle. No output. |
| | | |
− | == ImageTransferProcessorState == | + | Official sw creates the TransferMemory with an user-specified buffer and permissions=0. |
− | This is a 0x10-byte struct.
| |
| | | |
− | == PackedTeraPluginProcessorConfig == | + | == RunIrLedProcessor == |
− | This is an u64.
| + | Takes a PID-descriptor, an [[#IrCameraHandle]], a [[#PackedIrLedProcessorConfig]] (immediately after the previous word), and an [[AM_services|AppletResourceUserId]]. No output. |
| | | |
− | == PackedDpdProcessorConfig == | + | == StopImageProcessorAsync == |
− | This is a 0x10-byte struct.
| + | Takes a PID-descriptor, an [[#IrCameraHandle]], and an [[AM_services|AppletResourceUserId]]. No output. |
| | | |
− | == PackedMcuVersion == | + | == ActivateIrsensorWithFunctionLevel == |
− | This is an u32.
| + | Takes a PID-descriptor, an [[#PackedFunctionLevel]], and an [[AM_services|AppletResourceUserId]]. No output. |
| | | |
| = irs:sys = | | = irs:sys = |
Line 1,258: |
Line 1,257: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 500 || SetAppletResourceUserId | + | | 500 || [[#SetAppletResourceUserId]] |
| |- | | |- |
− | | 501 || RegisterAppletResourceUserId | + | | 501 || [[#RegisterAppletResourceUserId]] |
| |- | | |- |
− | | 502 || UnregisterAppletResourceUserId | + | | 502 || [[#UnregisterAppletResourceUserId]] |
| |- | | |- |
− | | 503 || EnableAppletToGetInput | + | | 503 || [[#EnableAppletToGetInput]] |
| |} | | |} |
| + | |
| + | == SetAppletResourceUserId == |
| + | Takes an [[AM_services|AppletResourceUserId]]. No output. |
| + | |
| + | == RegisterAppletResourceUserId == |
| + | Takes a bool and an [[AM_services|AppletResourceUserId]]. No output. |
| + | |
| + | == UnregisterAppletResourceUserId == |
| + | Takes an [[AM_services|AppletResourceUserId]]. No output. |
| + | |
| + | == EnableAppletToGetInput == |
| + | Takes a bool and an [[AM_services|AppletResourceUserId]]. No output. |
| | | |
| = ahid:cd = | | = ahid:cd = |
Line 2,341: |
Line 2,352: |
| | | |
| = PackedMomentProcessorConfig = | | = PackedMomentProcessorConfig = |
− | This is a 0x20-byte struct. This is converted from another structure by the official user-process. | + | This is "nn::irsensor::PackedMomentProcessorConfig". This is a 0x20-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x8 || ExposureTime (default is 0x493E0) |
| + | |- |
| + | | 0x8 || 0x1 || LightTarget (default is 0) |
| + | |- |
| + | | 0x9 || 0x1 || Gain (default is 0x8) |
| + | |- |
| + | | 0xA || 0x1 || IsNegativeImageUsed (default is 0) |
| + | |- |
| + | | 0xB || 0x5 || Padding |
| + | |- |
| + | | 0x10 || 0x2 || WindowOfInterestX (default is 0) |
| + | |- |
| + | | 0x12 || 0x2 || WindowOfInterestY (default is 0) |
| + | |- |
| + | | 0x14 || 0x2 || WindowOfInterestWidth (default is 0x140) |
| + | |- |
| + | | 0x16 || 0x2 || WindowOfInterestHeight (default is 0xF0) |
| + | |- |
| + | | 0x18 || 0x4 || Unknown (always 0xA0003) |
| + | |- |
| + | | 0x1C || 0x1 || Preprocess (default is 0x1) |
| + | |- |
| + | | 0x1D || 0x1 || PreprocessIntensityThreshold (default is 0x50) |
| + | |- |
| + | | 0x1E || 0x2 || Padding |
| + | |} |
| + | |
| + | = PackedClusteringProcessorConfig = |
| + | This is "nn::irsensor::PackedClusteringProcessorConfig". This is a 0x28-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x8 || ExposureTime |
| + | |- |
| + | | 0x8 || 0x1 || LightTarget |
| + | |- |
| + | | 0x9 || 0x1 || Gain |
| + | |- |
| + | | 0xA || 0x1 || IsNegativeImageUsed |
| + | |- |
| + | | 0xB || 0x5 || Padding |
| + | |- |
| + | | 0x10 || 0x2 || WindowOfInterestX |
| + | |- |
| + | | 0x12 || 0x2 || WindowOfInterestY |
| + | |- |
| + | | 0x14 || 0x2 || WindowOfInterestWidth |
| + | |- |
| + | | 0x16 || 0x2 || WindowOfInterestHeight |
| + | |- |
| + | | 0x18 || 0x4 || Unknown (always 0xA0003) |
| + | |- |
| + | | 0x1C || 0x4 || ObjectPixelCountMin |
| + | |- |
| + | | 0x20 || 0x4 || ObjectPixelCountMax |
| + | |- |
| + | | 0x24 || 0x1 || ObjectIntensityMin |
| + | |- |
| + | | 0x25 || 0x1 || IsExternalLightFilterEnabled |
| + | |- |
| + | | 0x26 || 0x2 || Padding |
| + | |} |
| + | |
| + | = PackedImageTransferProcessorConfig = |
| + | This is "nn::irsensor::PackedImageTransferProcessorConfig". This is a 0x18-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x8 || ExposureTime |
| + | |- |
| + | | 0x8 || 0x1 || LightTarget |
| + | |- |
| + | | 0x9 || 0x1 || Gain |
| + | |- |
| + | | 0xA || 0x1 || IsNegativeImageUsed |
| + | |- |
| + | | 0xB || 0x5 || Padding |
| + | |- |
| + | | 0x10 || 0x4 || Unknown (always 0xA0003) |
| + | |- |
| + | | 0x14 || 0x1 || Format |
| + | |- |
| + | | 0x15 || 0x3 || Padding |
| + | |} |
| + | |
| + | = ImageTransferProcessorState = |
| + | This is "nn::irsensor::ImageTransferProcessorState". This is a 0x10-byte struct. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset || Size || Description |
| + | |- |
| + | | 0x0 || 0x8 || SamplingNumber |
| + | |- |
| + | | 0x8 || 0x1 || AmbientNoiseLevel |
| + | |- |
| + | | 0x9 || 0x7 || Padding |
| + | |} |
| + | |
| + | = PackedTeraPluginProcessorConfig = |
| + | This is "nn::irsensor::PackedTeraPluginProcessorConfig". This is an u64. |
| + | |
| + | = PackedPointingProcessorConfig = |
| + | This is "nn::irsensor::PackedPointingProcessorConfig". This is a 0x10-byte struct. |
| + | |
| + | = PackedMcuVersion = |
| + | This is "nn::irsensor::PackedMcuVersion". This is an u32. |
| + | |
| + | = PackedFunctionLevel = |
| + | This is nn::irsensor::PackedFunctionLevel. This is an u32. |
| + | |
| + | = PackedImageTransferProcessorExConfig = |
| + | This is "nn::irsensor::PackedImageTransferProcessorExConfig". This is a 0x20-byte struct. |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Offset || Size || Description || DefaultConfig | + | ! Offset || Size || Description |
| |- | | |- |
− | | 0x0 || 0x8 || ? || 0x493E0 | + | | 0x0 || 0x8 || ExposureTime |
| |- | | |- |
− | | 0x8 || 0x1 || ? || 0x0 | + | | 0x8 || 0x1 || LightTarget |
| |- | | |- |
− | | 0x9 || 0x1 || ? || 0x8 | + | | 0x9 || 0x1 || Gain |
| |- | | |- |
− | | 0xA || 0x1 || ? || 0x0 | + | | 0xA || 0x1 || IsNegativeImageUsed |
| |- | | |- |
− | | 0xB || 0x5 || Padding || | + | | 0xB || 0x5 || Padding |
| |- | | |- |
− | | 0x10 || 0x8 || u16, u32, u16 || {Not written}, 0x1400000, 0xF0 | + | | 0x10 || 0x4 || Unknown (always 0xA0003) |
| |- | | |- |
− | | 0x18 || 0x4 || Hard-coded to 0xA0003. || | + | | 0x14 || 0x1 || OrigFormat |
| |- | | |- |
− | | 0x1C || 0x1 || ? || 0x1 | + | | 0x15 || 0x1 || TrimmingFormat |
| |- | | |- |
− | | 0x1D || 0x1 || ? || 0x50 | + | | 0x16 || 0x2 || TrimmingStartX |
| |- | | |- |
− | | 0x1E || 0x2 || Padding || | + | | 0x18 || 0x2 || TrimmingStartY |
| + | |- |
| + | | 0x1A || 0x1 || IsExternalLightFilterEnabled |
| + | |- |
| + | | 0x1B || 0x5 || Padding |
| |} | | |} |
| + | |
| + | = PackedIrLedProcessorConfig = |
| + | This is "nn::irsensor::PackedIrLedProcessorConfig". This is a 0x10-byte struct. |
| | | |
| = BusHandle = | | = BusHandle = |