Changes

2,727 bytes added ,  18:58, 21 March 2020
no edit summary
Line 1,199: Line 1,199:  
Takes a PID-descriptor and an [[AM_services|AppletResourceUserId]]. Returns a SharedMemory handle.
 
Takes a PID-descriptor and an [[AM_services|AppletResourceUserId]]. Returns a SharedMemory handle.
   −
The SharedMemory is mapped with permissions=read-only and size=0x8000.
+
The SharedMemory is "nn::irsensor::detail::StatusManager". It's mapped with permission read-only and size 0x8000.
 +
 
 +
It's structure is as follows:
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x7FB0 || Array of [[#DeviceFormat]]
 +
|-
 +
| 0x7FB0 || 0x50 || Array of [[#AruidFormat]]
 +
|}
 +
 
 +
The array of [[#DeviceFormat]] is indexed by [[#IrCameraHandle|PlayerNumber]] and can hold up to 9 entries. The array of [[#AruidFormat]] can only hold up to 5 entries.
 +
 
 +
=== DeviceFormat ===
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4 || IrCameraStatus
 +
|-
 +
| 0x4 || 0x4 || IrCameraInternalStatus
 +
|-
 +
| 0x8 || 0x8 || IrSensorMode
 +
|-
 +
| 0x10 || 0xE20 || Array of [[#ProcessorState]]
 +
|}
 +
 
 +
[[#ProcessorState]] is specialized depending on the value of IrSensorMode:
 +
{| class="wikitable" border="1"
 +
!  Value
 +
!  Description
 +
|-
 +
| 0 || None
 +
|-
 +
| 1 || [[#MomentProcessorState]]
 +
|-
 +
| 2 || [[#ClusteringProcessorState]]
 +
|-
 +
| 3 || [[#ImageTransferProcessorState]]
 +
|-
 +
| 4 || [[#PointingProcessorState]]
 +
|-
 +
| 5 || [[#TeraPluginProcessorState]]
 +
|-
 +
| 6 || Unknown
 +
|}
 +
 
 +
==== MomentProcessorState ====
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x8 || SamplingNumber
 +
|-
 +
| 0x8 || 0x8 || TimeStamp
 +
|-
 +
| 0x10 || 0x4 || AmbientNoiseLevel
 +
|-
 +
| 0x14 || 0x4 || Reserved
 +
|-
 +
| 0x18 || 0x240 || Array of [[#MomentStatistic]]
 +
|}
 +
 
 +
===== MomentStatistic =====
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4 || AverageIntensity
 +
|-
 +
| 0x4 || 0x4 || CentroidX
 +
|-
 +
| 0x8 || 0x4 || CentroidY
 +
|}
 +
 
 +
==== ClusteringProcessorState ====
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x8 || SamplingNumber
 +
|-
 +
| 0x8 || 0x8 || TimeStamp
 +
|-
 +
| 0x10 || 0x1 || ObjectCount
 +
|-
 +
| 0x11 || 0x3 || Reserved
 +
|-
 +
| 0x14 || 0x4 || AmbientNoiseLevel
 +
|-
 +
| 0x18 || 0x180 || Array of [[#ClusteringData]]
 +
|}
 +
 
 +
===== ClusteringData =====
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4 || AverageIntensity
 +
|-
 +
| 0x4 || 0x4 || CentroidX
 +
|-
 +
| 0x8 || 0x4 || CentroidY
 +
|-
 +
| 0xC || 0x4 || PixelCount
 +
|-
 +
| 0x10 || 0x2 || BoundX
 +
|-
 +
| 0x12 || 0x2 || BoundY
 +
|-
 +
| 0x14 || 0x2 || BoundtWidth
 +
|-
 +
| 0x16 || 0x2 || BoundHeight
 +
|}
 +
 
 +
==== PointingProcessorState ====
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x8 || SamplingNumber
 +
|-
 +
| 0x8 || 0x8 || TimeStamp
 +
|-
 +
| 0x10 || 0x60 || Unknown
 +
|}
 +
 
 +
==== TeraPluginProcessorState ====
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x8 || SamplingNumber
 +
|-
 +
| 0x8 || 0x8 || TimeStamp
 +
|-
 +
| 0x10 || 0x130 || Unknown
 +
|}
 +
 
 +
=== AruidFormat ===
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x8 || IrSensorAruid
 +
|-
 +
| 0x8 || 0x8 || IrSensorAruidStatus
 +
|}
    
== StopImageProcessor ==
 
== StopImageProcessor ==
Line 1,211: Line 1,360:     
== RunImageTransferProcessor ==
 
== RunImageTransferProcessor ==
Takes a PID-descriptor, an [[#IrCameraHandle]], an [[AM_services|AppletResourceUserId]], a [[#PackedImageTransferProcessorConfig]], an u64 for the TransferMemory_size, and a TransferMemory handle. No output.
+
Takes a PID-descriptor, an [[#IrCameraHandle]], an [[AM_services|AppletResourceUserId]], a [[#PackedImageTransferProcessorConfig]], an u64 for the TransferMemory's size, and a TransferMemory handle. No output.
    
Official sw creates the TransferMemory with an user-specified buffer and permissions=0.
 
Official sw creates the TransferMemory with an user-specified buffer and permissions=0.
Line 1,237: Line 1,386:     
== RunImageTransferExProcessor ==
 
== RunImageTransferExProcessor ==
Takes a PID-descriptor, an [[#IrCameraHandle]], an [[AM_services|AppletResourceUserId]], a [[#PackedImageTransferProcessorExConfig]], an u64 for the TransferMemory_size, and a TransferMemory handle. No output.
+
Takes a PID-descriptor, an [[#IrCameraHandle]], an [[AM_services|AppletResourceUserId]], a [[#PackedImageTransferProcessorExConfig]], an u64 for the TransferMemory's size, and a TransferMemory handle. No output.
    
Official sw creates the TransferMemory with an user-specified buffer and permissions=0.
 
Official sw creates the TransferMemory with an user-specified buffer and permissions=0.