libnx v4.9.0
Loading...
Searching...
No Matches
irs.h
Go to the documentation of this file.
1/**
2 * @file irs.h
3 * @brief HID IR sensor (irs) service IPC wrapper.
4 * @author yellows8
5 * @copyright libnx Authors
6 */
7#pragma once
8
9#include "../types.h"
10#include "../sf/service.h"
11#include "../services/hid.h"
12
13#define IRS_MAX_CAMERAS 0x9
14
15/// IrCameraStatus
16typedef enum {
17 IrsIrCameraStatus_Available = 0, ///< Available
18 IrsIrCameraStatus_Unsupported = 1, ///< Unsupported
19 IrsIrCameraStatus_Unconnected = 2, ///< Unconnected
21
22/// IrCameraInternalStatus
34
35/// IrSensorMode
36typedef enum {
37 IrsIrSensorMode_None = 0, ///< None
38 IrsIrSensorMode_MomentProcessor = 1, ///< MomentProcessor
39 IrsIrSensorMode_ClusteringProcessor = 2, ///< ClusteringProcessor
40 IrsIrSensorMode_ImageTransferProcessor = 3, ///< ImageTransferProcessor
41 IrsIrSensorMode_PointingProcessor = 4, ///< PointingProcessor
42 IrsIrSensorMode_TeraPluginProcessor = 5, ///< TeraPluginProcessor
43 IrsIrSensorMode_IrLedProcessor = 6, ///< IrLedProcessor (doesn't apply to IrsDeviceFormat::ir_sensor_mode)
45
46/// ImageProcessorStatus
51
52/// ImageTransferProcessorFormat. IR Sensor image resolution.
60
61/// AdaptiveClusteringMode
66
67/// AdaptiveClusteringTargetDistance
73
74/// HandAnalysisMode
75typedef enum {
76 IrsHandAnalysisMode_Silhouette = 1, ///< Silhouette
78 IrsHandAnalysisMode_SilhouetteAndImage = 3, ///< SilhouetteAndImage
79 IrsHandAnalysisMode_SilhouetteOnly = 4, ///< [4.0.0+] SilhouetteOnly
81
82/// Internal validation callblack.
83typedef bool (*IrsValidationCb)(void* userdata, void* arg);
84
85/// IrCameraHandle
86typedef struct {
87 u8 player_number; ///< PlayerNumber
88 u8 device_type; ///< DeviceType
89 u8 reserved[0x2]; ///< Reserved
91
92/// PackedMcuVersion
93typedef struct {
94 u16 major_version; ///< MajorVersion
95 u16 minor_version; ///< MinorVersion
97
98/// PackedFunctionLevel
99typedef struct {
100 u8 ir_sensor_function_level; ///< IrSensorFunctionLevel
101 u8 reserved[0x3]; ///< Reserved
103
104/// Rect
105typedef struct {
106 s16 x; ///< X
107 s16 y; ///< Y
108 s16 width; ///< Width
109 s16 height; ///< Height
110} IrsRect;
111
112/// IrsMomentProcessorConfig
113typedef struct {
114 u64 exposure_time; ///< IR Sensor exposure time in nanoseconds.
115 u32 light_target; ///< Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
116 u32 gain; ///< IR sensor signal's digital gain.
117 u8 is_negative_image_used; ///< Inverts the colors of the captured image. 0: Normal image, 1: Negative image.
118 u8 reserved[0x7]; ///< Reserved.
119 IrsRect window_of_interest; ///< WindowOfInterest
120 u32 preprocess; ///< Preprocess
121 u32 preprocess_intensity_threshold; ///< PreprocessIntensityThreshold
123
124/// PackedMomentProcessorConfig
125typedef struct {
126 u64 exposure_time; ///< IR Sensor exposure time in nanoseconds.
127 u8 light_target; ///< Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
128 u8 gain; ///< IR sensor signal's digital gain.
129 u8 is_negative_image_used; ///< Inverts the colors of the captured image. 0: Normal image, 1: Negative image.
130 u8 reserved[0x5]; ///< Reserved.
131 IrsRect window_of_interest; ///< WindowOfInterest
133 u8 preprocess; ///< Preprocess
134 u8 preprocess_intensity_threshold; ///< PreprocessIntensityThreshold
135 u8 reserved2[0x2]; ///< Reserved.
137
138/// ClusteringProcessorConfig
139typedef struct {
140 u64 exposure_time; ///< IR Sensor exposure time in nanoseconds.
141 u32 light_target; ///< Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
142 u32 gain; ///< IR sensor signal's digital gain.
143 u8 is_negative_image_used; ///< Inverts the colors of the captured image. 0: Normal image, 1: Negative image.
144 u8 reserved[0x7]; ///< Reserved.
145 IrsRect window_of_interest; ///< WindowOfInterest
146 u32 object_pixel_count_min; ///< ObjectPixelCountMin
147 u32 object_pixel_count_max; ///< ObjectPixelCountMax
148 u32 object_intensity_min; ///< ObjectIntensityMin
149 u8 is_external_light_filter_enabled; ///< IsExternalLightFilterEnabled
151
152/// PackedClusteringProcessorConfig
153typedef struct {
154 u64 exposure_time; ///< IR Sensor exposure time in nanoseconds.
155 u8 light_target; ///< Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
156 u8 gain; ///< IR sensor signal's digital gain.
157 u8 is_negative_image_used; ///< Inverts the colors of the captured image. 0: Normal image, 1: Negative image.
158 u8 reserved[0x5]; ///< Reserved.
159 IrsRect window_of_interest; ///< WindowOfInterest
161 u32 object_pixel_count_min; ///< ObjectPixelCountMin
162 u32 object_pixel_count_max; ///< ObjectPixelCountMax
163 u8 object_intensity_min; ///< ObjectIntensityMin
164 u8 is_external_light_filter_enabled; ///< IsExternalLightFilterEnabled
165 u8 reserved2[0x2]; ///< Reserved.
167
168/// ImageTransferProcessorConfig
169typedef struct {
170 u64 exposure_time; ///< IR Sensor exposure time in nanoseconds.
171 u32 light_target; ///< Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
172 u32 gain; ///< IR sensor signal's digital gain.
173 u8 is_negative_image_used; ///< Inverts the colors of the captured image. 0: Normal image, 1: Negative image.
174 u8 reserved[0x7]; ///< Reserved.
175 u32 format; ///< \ref IrsImageTransferProcessorFormat
177
178/// ImageTransferProcessorExConfig
179typedef struct {
180 u64 exposure_time; ///< IR Sensor exposure time in nanoseconds.
181 u32 light_target; ///< Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
182 u32 gain; ///< IR sensor signal's digital gain.
183 u8 is_negative_image_used; ///< Inverts the colors of the captured image. 0: Normal image, 1: Negative image.
184 u8 reserved[0x7]; ///< Reserved.
185 u32 orig_format; ///< OrigFormat \ref IrsImageTransferProcessorFormat
186 u32 trimming_format; ///< TrimmingFormat \ref IrsImageTransferProcessorFormat
187 u16 trimming_start_x; ///< TrimmingStartX
188 u16 trimming_start_y; ///< TrimmingStartY
189 u8 is_external_light_filter_enabled; ///< IsExternalLightFilterEnabled
191
192/// PackedImageTransferProcessorConfig
193typedef struct {
194 u64 exposure_time; ///< IR Sensor exposure time in nanoseconds.
195 u8 light_target; ///< Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
196 u8 gain; ///< IR sensor signal's digital gain.
197 u8 is_negative_image_used; ///< Inverts the colors of the captured image. 0: Normal image, 1: Negative image.
198 u8 reserved[0x5]; ///< Reserved.
200 u8 format; ///< \ref IrsImageTransferProcessorFormat
201 u8 reserved2[0x3]; ///< Reserved.
203
204/// PackedImageTransferProcessorExConfig
205typedef struct {
206 u64 exposure_time; ///< IR Sensor exposure time in nanoseconds.
207 u8 light_target; ///< Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
208 u8 gain; ///< IR sensor signal's digital gain.
209 u8 is_negative_image_used; ///< Inverts the colors of the captured image. 0: Normal image, 1: Negative image.
210 u8 reserved[0x5]; ///< Reserved.
212 u8 orig_format; ///< OrigFormat \ref IrsImageTransferProcessorFormat
213 u8 trimming_format; ///< TrimmingFormat \ref IrsImageTransferProcessorFormat
214 u16 trimming_start_x; ///< TrimmingStartX
215 u16 trimming_start_y; ///< TrimmingStartY
216 u8 is_external_light_filter_enabled; ///< IsExternalLightFilterEnabled
217 u8 reserved2[0x5]; ///< Reserved.
219
220/// ImageTransferProcessorState
221typedef struct {
222 u64 sampling_number; ///< SamplingNumber
223 u32 ambient_noise_level; ///< AmbientNoiseLevel
224 u8 reserved[0x4]; ///< Reserved
226
227/// PackedPointingProcessorConfig
228typedef struct {
229 IrsRect window_of_interest; ///< WindowOfInterest
232
233/// TeraPluginProcessorConfig
234typedef struct {
235 u8 mode; ///< Mode
236 u8 unk_x1; ///< [6.0.0+] Unknown
237 u8 unk_x2; ///< [6.0.0+] Unknown
238 u8 unk_x3; ///< [6.0.0+] Unknown
240
241/// PackedTeraPluginProcessorConfig
242typedef struct {
244 u8 mode; ///< Mode
245 u8 unk_x5; ///< [6.0.0+] This is set to 0x2 | (IrsTeraPluginProcessorConfig::unk_x1 << 7).
246 u8 unk_x6; ///< [6.0.0+] IrsTeraPluginProcessorConfig::unk_x2
247 u8 unk_x7; ///< [6.0.0+] IrsTeraPluginProcessorConfig::unk_x3
249
250/// IrLedProcessorConfig
251typedef struct {
252 u32 light_target; ///< Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
254
255/// PackedIrLedProcessorConfig
256typedef struct {
258 u8 light_target; ///< Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
259 u8 pad[0x3]; ///< Padding
261
262/// AdaptiveClusteringProcessorConfig
263typedef struct {
264 u32 mode; ///< \ref IrsAdaptiveClusteringMode
265 u32 target_distance; ///< [6.0.0+] \ref IrsAdaptiveClusteringTargetDistance
267
268/// HandAnalysisConfig
269typedef struct {
270 u32 mode; ///< \ref IrsHandAnalysisMode
272
273/// MomentStatistic
274typedef struct {
275 float average_intensity; ///< AverageIntensity
276 float centroid_x; ///< CentroidX
277 float centroid_y; ///< CentroidY
279
280/// MomentProcessorState
281typedef struct {
282 s64 sampling_number; ///< SamplingNumber
283 u64 timestamp; ///< TimeStamp
284
285 u32 ambient_noise_level; ///< AmbientNoiseLevel
286 u8 reserved[0x4]; ///< Reserved
287 IrsMomentStatistic statistic[0x30]; ///< \ref IrsMomentStatistic
289
290/// ClusteringData
291typedef struct {
292 float average_intensity; ///< AverageIntensity
293 float centroid_x; ///< CentroidX
294 float centroid_y; ///< CentroidY
295 u32 pixel_count; ///< PixelCount
296 u16 bound_x; ///< BoundX
297 u16 bound_y; ///< BoundY
298 u16 boundt_width; ///< BoundtWidth
299 u16 bound_height; ///< BoundHeight
301
302/// ClusteringProcessorState
303typedef struct {
304 s64 sampling_number; ///< SamplingNumber
305 u64 timestamp; ///< TimeStamp
306
307 u8 object_count; ///< ObjectCount
308 u8 reserved[0x3]; ///< Reserved
309 u32 ambient_noise_level; ///< AmbientNoiseLevel
310 IrsClusteringData data[0x10]; ///< \ref IrsClusteringData
312
313/// PointingProcessorMarkerState
314typedef struct {
315 s64 sampling_number; ///< SamplingNumber
316 u64 timestamp; ///< TimeStamp
317
318 struct {
319 u8 pointing_status; ///< PointingStatus
320 u8 reserved[0x3]; ///< Reserved
321 u8 unk_x4[0x4]; ///< Unknown
322 float unk_x8; ///< Unknown
323 float position_x; ///< PositionX
324 float position_y; ///< PositionY
325 float unk_x14; ///< Unknown
326 IrsRect window_of_interest; ///< WindowOfInterest
327 } data[3];
329
330/// PointingProcessorState
331typedef struct {
332 s64 sampling_number; ///< SamplingNumber
333 u64 timestamp; ///< TimeStamp
334
335 u32 pointing_status; ///< PointingStatus
336 float position_x; ///< PositionX
337 float position_y; ///< PositionY
338 u8 reserved[0x4]; ///< Reserved
340
341/// TeraPluginProcessorState
342typedef struct {
343 s64 sampling_number; ///< SamplingNumber
344 u64 timestamp; ///< TimeStamp
345 u32 ambient_noise_level; ///< AmbientNoiseLevel
346 u8 plugin_data[0x12c]; ///< PluginData
348
349/// ProcessorState
350typedef struct {
351 s64 start; ///< Start
352 u32 count; ///< Count
353 u32 pad; ///< Padding
354
355 u8 data[0xe10]; ///< Contains an array of *ProcessorState, depending on IrsDeviceFormat::ir_sensor_mode.
357
358/// DeviceFormat
359typedef struct {
360 u32 ir_camera_status; ///< \ref IrsIrCameraStatus
361 u32 ir_camera_internal_status; ///< \ref IrsIrCameraInternalStatus
362 u32 ir_sensor_mode; ///< \ref IrsIrSensorMode
363 u32 pad; ///< Padding
364
365 IrsProcessorState processor_state; ///< \ref IrsProcessorState
367
368/// AruidFormat
369typedef struct {
370 u64 ir_sensor_aruid; ///< IrSensorAruid
371 u32 ir_sensor_aruid_status; ///< IrSensorAruidStatus
372 u32 pad; ///< Padding
374
375/// StatusManager
376typedef struct {
377 IrsDeviceFormat device_format[IRS_MAX_CAMERAS];
378 IrsAruidFormat aruid_format[0x5];
380
381/// Initialize irs.
383
384/// Exit irs.
385void irsExit(void);
386
387/// Gets the Service object for the actual irs service session.
389
390/// Gets the address of the SharedMemory (\ref IrsStatusManager).
392
393/// Gets the \ref IrsIrCameraHandle for the specified controller.
395
396/// GetIrCameraStatus
398
399/// CheckFirmwareUpdateNecessity
400/// When successful where the output flag is set, the user should use \ref hidLaShowControllerFirmwareUpdate.
401/// Only available on [4.0.0+].
403
404/// GetImageProcessorStatus
405/// Only available on [4.0.0+].
407
408/// Stop the current Processor.
409/// \ref irsExit calls this with all IrCameraHandles which were not already used with \ref irsStopImageProcessor.
411
412/// Stop the current Processor, async.
413/// Only available on [4.0.0+].
415
416/**
417 * @brief Run the MomentProcessor.
418 * @param[in] handle \ref IrsIrCameraHandle
419 * @param[in] config Input config.
420 */
422
423/**
424 * @brief Gets the states for MomentProcessor or IrLedProcessor.
425 * @note The official GetIrLedProcessorState is essentially the same as this, except it uses hard-coded count=1 with output-array on stack, without returning that data. Hence we don't implement a seperate func for that.
426 * @param[in] handle \ref IrsIrCameraHandle
427 * @param[out] states Output array of \ref IrsMomentProcessorState.
428 * @param[in] count Size of the states array in entries. Must be 1-5.
429 * @param[out] total_out Total output entries.
430 */
432
433/**
434 * @brief Calculates an \ref IrsMomentStatistic from the specified region in the input \ref IrsMomentProcessorState.
435 * @param[in] state \ref IrsMomentProcessorState
436 * @param[in] rect \ref IrsRect, containing the image width and height.
437 * @param[in] region_x Region x, must be 0-5 (clamped to this range otherwise). region_x = image_x/6.
438 * @param[in] region_y Region y, must be 0-7 (clamped to this range otherwise). region_y = image_y/8.
439 * @param[in] region_width Region width. region_x+region_width must be <=6 (clamped to this range otherwise).
440 * @param[in] region_height Region height. region_y+region_height must be <=8 (clamped to this range otherwise).
441 */
442IrsMomentStatistic irsCalculateMomentRegionStatistic(const IrsMomentProcessorState *state, IrsRect rect, s32 region_x, s32 region_y, s32 region_width, s32 region_height);
443
444/**
445 * @brief Run the ClusteringProcessor.
446 * @param[in] handle \ref IrsIrCameraHandle
447 * @param[in] config Input config.
448 */
450
451/**
452 * @brief Gets the states for ClusteringProcessor.
453 * @param[in] handle \ref IrsIrCameraHandle
454 * @param[out] states Output array of \ref IrsClusteringProcessorState.
455 * @param[in] count Size of the states array in entries. Must be 1-5.
456 * @param[out] total_out Total output entries.
457 */
459
460/**
461 * @brief Run the ImageTransferProcessor.
462 * @param[in] handle \ref IrsIrCameraHandle
463 * @param[in] config Input config.
464 * @param[in] size Work-buffer size, must be 0x1000-byte aligned.
465 */
467
468/**
469 * @brief Run the ImageTransferExProcessor.
470 * @note Only available on [4.0.0+].
471 * @param[in] handle \ref IrsIrCameraHandle
472 * @param[in] config Input config.
473 * @param[in] size Work-buffer size, must be 0x1000-byte aligned.
474 */
476
477/// GetImageTransferProcessorState
479
480/**
481 * @brief Run the PointingProcessor.
482 * @param[in] handle \ref IrsIrCameraHandle
483 */
485
486/**
487 * @brief Gets the states for PointingProcessor.
488 * @param[in] handle \ref IrsIrCameraHandle
489 * @param[out] states Output array of \ref IrsPointingProcessorMarkerState.
490 * @param[in] count Size of the states array in entries. Must be 1-6.
491 * @param[out] total_out Total output entries.
492 */
494
495/**
496 * @brief Gets the states for \ref IrsPointingProcessorState.
497 * @note This uses \ref irsGetPointingProcessorMarkerStates, then converts the output to \ref IrsPointingProcessorState.
498 * @param[in] handle \ref IrsIrCameraHandle
499 * @param[out] states Output array of \ref IrsPointingProcessorState.
500 * @param[in] count Size of the states array in entries. Must be 1-6.
501 * @param[out] total_out Total output entries.
502 */
504
505/**
506 * @brief Run the TeraPluginProcessor.
507 * @param[in] handle \ref IrsIrCameraHandle
508 * @param[in] config Input config.
509 */
511
512/**
513 * @brief Gets the states for TeraPluginProcessor, filtered using the input params.
514 * @param[in] handle \ref IrsIrCameraHandle
515 * @param[out] states Output array of \ref IrsTeraPluginProcessorState.
516 * @param[in] count Size of the states array in entries. Must be 1-5.
517 * @param[in] sampling_number Minimum value for IrsTeraPluginProcessorState::sampling_number.
518 * @param[in] prefix_data Only used when prefix_bitcount is not 0. The first prefix_bitcount bits from prefix_data must match the first prefix_bitcount bits in IrsTeraPluginProcessorState::plugin_data.
519 * @param[in] prefix_bitcount Total bits for prefix_data.
520 * @param[out] total_out Total output entries.
521 */
522Result irsGetTeraPluginProcessorStates(IrsIrCameraHandle handle, IrsTeraPluginProcessorState *states, s32 count, s64 sampling_number, u32 prefix_data, u32 prefix_bitcount, s32 *total_out);
523
524/**
525 * @brief Run the IrLedProcessor.
526 * @note Only available on [4.0.0+].
527 * @param[in] handle \ref IrsIrCameraHandle
528 * @param[in] config Input config.
529 */
531
532/**
533 * @brief Run the AdaptiveClusteringProcessor.
534 * @note Only available on [5.0.0+].
535 * @param[in] handle \ref IrsIrCameraHandle
536 * @param[in] config Input config.
537 */
539
540/**
541 * @brief Run HandAnalysis.
542 * @param[in] handle \ref IrsIrCameraHandle
543 * @param[in] config Input config.
544 */
546
547/**
548 * Gets the default configuration for MomentProcessor.
549 */
551
552/**
553 * Gets the default configuration for ClusteringProcessor.
554 */
556
557/**
558 * Gets the default configuration for ImageTransferProcessor.
559 * Defaults are exposure 300us, 8x digital gain, the rest is all-zero. Format is ::IrsImageTransferProcessorFormat_320x240.
560 */
562
563/**
564 * Gets the default configuration for ImageTransferProcessorEx.
565 * Defaults are exposure 300us, 8x digital gain, the rest is all-zero. OrigFormat/TrimmingFormat are ::IrsImageTransferProcessorFormat_320x240.
566 */
568
569/**
570 * Gets the default configuration for IrLedProcessor.
571 */
HidNpadIdType
HID controller IDs.
Definition hid.h:214
Result irsGetIrCameraStatus(IrsIrCameraHandle handle, IrsIrCameraStatus *out)
GetIrCameraStatus.
Result irsGetImageTransferProcessorState(IrsIrCameraHandle handle, void *buffer, size_t size, IrsImageTransferProcessorState *state)
GetImageTransferProcessorState.
Result irsStopImageProcessor(IrsIrCameraHandle handle)
Stop the current Processor.
IrsImageTransferProcessorFormat
ImageTransferProcessorFormat. IR Sensor image resolution.
Definition irs.h:53
@ IrsImageTransferProcessorFormat_40x30
[4.0.0+] 40x30
Definition irs.h:57
@ IrsImageTransferProcessorFormat_80x60
80x60
Definition irs.h:56
@ IrsImageTransferProcessorFormat_20x15
[4.0.0+] 20x15
Definition irs.h:58
@ IrsImageTransferProcessorFormat_160x120
160x120
Definition irs.h:55
@ IrsImageTransferProcessorFormat_320x240
320x240
Definition irs.h:54
IrsAdaptiveClusteringTargetDistance
AdaptiveClusteringTargetDistance.
Definition irs.h:68
@ IrsAdaptiveClusteringTargetDistance_Far
Far.
Definition irs.h:71
@ IrsAdaptiveClusteringTargetDistance_Middle
Middle.
Definition irs.h:70
@ IrsAdaptiveClusteringTargetDistance_Near
Near.
Definition irs.h:69
void irsGetDefaultImageTransferProcessorExConfig(IrsImageTransferProcessorExConfig *config)
Gets the default configuration for ImageTransferProcessorEx.
Result irsGetIrCameraHandle(IrsIrCameraHandle *handle, HidNpadIdType id)
Gets the IrsIrCameraHandle for the specified controller.
void irsExit(void)
Exit irs.
Result irsStopImageProcessorAsync(IrsIrCameraHandle handle)
Stop the current Processor, async.
Result irsRunTeraPluginProcessor(IrsIrCameraHandle handle, const IrsTeraPluginProcessorConfig *config)
Run the TeraPluginProcessor.
IrsIrCameraStatus
IrCameraStatus.
Definition irs.h:16
@ IrsIrCameraStatus_Unsupported
Unsupported.
Definition irs.h:18
@ IrsIrCameraStatus_Available
Available.
Definition irs.h:17
@ IrsIrCameraStatus_Unconnected
Unconnected.
Definition irs.h:19
IrsMomentStatistic irsCalculateMomentRegionStatistic(const IrsMomentProcessorState *state, IrsRect rect, s32 region_x, s32 region_y, s32 region_width, s32 region_height)
Calculates an IrsMomentStatistic from the specified region in the input IrsMomentProcessorState.
IrsHandAnalysisMode
HandAnalysisMode.
Definition irs.h:75
@ IrsHandAnalysisMode_Image
Image.
Definition irs.h:77
@ IrsHandAnalysisMode_SilhouetteAndImage
SilhouetteAndImage.
Definition irs.h:78
@ IrsHandAnalysisMode_SilhouetteOnly
[4.0.0+] SilhouetteOnly
Definition irs.h:79
@ IrsHandAnalysisMode_Silhouette
Silhouette.
Definition irs.h:76
IrsImageProcessorStatus
ImageProcessorStatus.
Definition irs.h:47
@ IrsImageProcessorStatus_Stopped
Stopped.
Definition irs.h:48
@ IrsImageProcessorStatus_Running
Running.
Definition irs.h:49
Result irsGetPointingProcessorStates(IrsIrCameraHandle handle, IrsPointingProcessorState *states, s32 count, s32 *total_out)
Gets the states for IrsPointingProcessorState.
void irsGetDefaultImageTransferProcessorConfig(IrsImageTransferProcessorConfig *config)
Gets the default configuration for ImageTransferProcessor.
Result irsRunImageTransferExProcessor(IrsIrCameraHandle handle, const IrsImageTransferProcessorExConfig *config, size_t size)
Run the ImageTransferExProcessor.
Result irsGetClusteringProcessorStates(IrsIrCameraHandle handle, IrsClusteringProcessorState *states, s32 count, s32 *total_out)
Gets the states for ClusteringProcessor.
Result irsGetImageProcessorStatus(IrsIrCameraHandle handle, IrsImageProcessorStatus *out)
GetImageProcessorStatus Only available on [4.0.0+].
Result irsRunAdaptiveClusteringProcessor(IrsIrCameraHandle handle, const IrsAdaptiveClusteringProcessorConfig *config)
Run the AdaptiveClusteringProcessor.
Result irsRunIrLedProcessor(IrsIrCameraHandle handle, const IrsIrLedProcessorConfig *config)
Run the IrLedProcessor.
IrsAdaptiveClusteringMode
AdaptiveClusteringMode.
Definition irs.h:62
@ IrsAdaptiveClusteringMode_DynamicFov
DynamicFov.
Definition irs.h:64
@ IrsAdaptiveClusteringMode_StaticFov
StaticFov.
Definition irs.h:63
void * irsGetSharedmemAddr(void)
Gets the address of the SharedMemory (IrsStatusManager).
Result irsRunMomentProcessor(IrsIrCameraHandle handle, const IrsMomentProcessorConfig *config)
Run the MomentProcessor.
void irsGetMomentProcessorDefaultConfig(IrsMomentProcessorConfig *config)
Gets the default configuration for MomentProcessor.
Result irsCheckFirmwareUpdateNecessity(IrsIrCameraHandle handle, bool *out)
CheckFirmwareUpdateNecessity When successful where the output flag is set, the user should use hidLaS...
IrsIrSensorMode
IrSensorMode.
Definition irs.h:36
@ IrsIrSensorMode_ClusteringProcessor
ClusteringProcessor.
Definition irs.h:39
@ IrsIrSensorMode_PointingProcessor
PointingProcessor.
Definition irs.h:41
@ IrsIrSensorMode_MomentProcessor
MomentProcessor.
Definition irs.h:38
@ IrsIrSensorMode_IrLedProcessor
IrLedProcessor (doesn't apply to IrsDeviceFormat::ir_sensor_mode)
Definition irs.h:43
@ IrsIrSensorMode_ImageTransferProcessor
ImageTransferProcessor.
Definition irs.h:40
@ IrsIrSensorMode_None
None.
Definition irs.h:37
@ IrsIrSensorMode_TeraPluginProcessor
TeraPluginProcessor.
Definition irs.h:42
Result irsInitialize(void)
Initialize irs.
bool(* IrsValidationCb)(void *userdata, void *arg)
Internal validation callblack.
Definition irs.h:83
Result irsRunPointingProcessor(IrsIrCameraHandle handle)
Run the PointingProcessor.
Service * irsGetServiceSession(void)
Gets the Service object for the actual irs service session.
Result irsRunHandAnalysis(IrsIrCameraHandle handle, const IrsHandAnalysisConfig *config)
Run HandAnalysis.
static void irsGetIrLedProcessorDefaultConfig(IrsIrLedProcessorConfig *config)
Gets the default configuration for IrLedProcessor.
Definition irs.h:572
Result irsGetMomentProcessorStates(IrsIrCameraHandle handle, IrsMomentProcessorState *states, s32 count, s32 *total_out)
Gets the states for MomentProcessor or IrLedProcessor.
IrsIrCameraInternalStatus
IrCameraInternalStatus.
Definition irs.h:23
@ IrsIrCameraInternalStatus_Stopped
Stopped.
Definition irs.h:24
@ IrsIrCameraInternalStatus_FirmwareVersionIsInvalid
FirmwareVersionIsInvalid.
Definition irs.h:30
@ IrsIrCameraInternalStatus_Ready
[4.0.0+] Ready
Definition irs.h:31
@ IrsIrCameraInternalStatus_FirmwareVersionRequested
FirmwareVersionRequested.
Definition irs.h:29
@ IrsIrCameraInternalStatus_Unknown3
Unknown.
Definition irs.h:27
@ IrsIrCameraInternalStatus_FirmwareUpdateNeeded
FirmwareUpdateNeeded.
Definition irs.h:25
@ IrsIrCameraInternalStatus_Setting
[4.0.0+] Setting
Definition irs.h:32
@ IrsIrCameraInternalStatus_Unknown4
Unknown.
Definition irs.h:28
@ IrsIrCameraInternalStatus_Unknown2
Unknown.
Definition irs.h:26
Result irsGetTeraPluginProcessorStates(IrsIrCameraHandle handle, IrsTeraPluginProcessorState *states, s32 count, s64 sampling_number, u32 prefix_data, u32 prefix_bitcount, s32 *total_out)
Gets the states for TeraPluginProcessor, filtered using the input params.
Result irsRunImageTransferProcessor(IrsIrCameraHandle handle, const IrsImageTransferProcessorConfig *config, size_t size)
Run the ImageTransferProcessor.
void irsGetClusteringProcessorDefaultConfig(IrsClusteringProcessorConfig *config)
Gets the default configuration for ClusteringProcessor.
Result irsRunClusteringProcessor(IrsIrCameraHandle handle, const IrsClusteringProcessorConfig *config)
Run the ClusteringProcessor.
Result irsGetPointingProcessorMarkerStates(IrsIrCameraHandle handle, IrsPointingProcessorMarkerState *states, s32 count, s32 *total_out)
Gets the states for PointingProcessor.
AdaptiveClusteringProcessorConfig.
Definition irs.h:263
u32 mode
IrsAdaptiveClusteringMode
Definition irs.h:264
u32 target_distance
[6.0.0+] IrsAdaptiveClusteringTargetDistance
Definition irs.h:265
AruidFormat.
Definition irs.h:369
u64 ir_sensor_aruid
IrSensorAruid.
Definition irs.h:370
u32 pad
Padding.
Definition irs.h:372
u32 ir_sensor_aruid_status
IrSensorAruidStatus.
Definition irs.h:371
ClusteringData.
Definition irs.h:291
u16 boundt_width
BoundtWidth.
Definition irs.h:298
float average_intensity
AverageIntensity.
Definition irs.h:292
float centroid_y
CentroidY.
Definition irs.h:294
u16 bound_y
BoundY.
Definition irs.h:297
u16 bound_x
BoundX.
Definition irs.h:296
u32 pixel_count
PixelCount.
Definition irs.h:295
u16 bound_height
BoundHeight.
Definition irs.h:299
float centroid_x
CentroidX.
Definition irs.h:293
ClusteringProcessorConfig.
Definition irs.h:139
u8 is_external_light_filter_enabled
IsExternalLightFilterEnabled.
Definition irs.h:149
u32 object_pixel_count_min
ObjectPixelCountMin.
Definition irs.h:146
u8 is_negative_image_used
Inverts the colors of the captured image. 0: Normal image, 1: Negative image.
Definition irs.h:143
u32 light_target
Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
Definition irs.h:141
u32 object_intensity_min
ObjectIntensityMin.
Definition irs.h:148
u32 object_pixel_count_max
ObjectPixelCountMax.
Definition irs.h:147
u64 exposure_time
IR Sensor exposure time in nanoseconds.
Definition irs.h:140
IrsRect window_of_interest
WindowOfInterest.
Definition irs.h:145
u32 gain
IR sensor signal's digital gain.
Definition irs.h:142
ClusteringProcessorState.
Definition irs.h:303
s64 sampling_number
SamplingNumber.
Definition irs.h:304
u64 timestamp
TimeStamp.
Definition irs.h:305
u32 ambient_noise_level
AmbientNoiseLevel.
Definition irs.h:309
u8 object_count
ObjectCount.
Definition irs.h:307
DeviceFormat.
Definition irs.h:359
u32 pad
Padding.
Definition irs.h:363
u32 ir_sensor_mode
IrsIrSensorMode
Definition irs.h:362
u32 ir_camera_internal_status
IrsIrCameraInternalStatus
Definition irs.h:361
u32 ir_camera_status
IrsIrCameraStatus
Definition irs.h:360
IrsProcessorState processor_state
IrsProcessorState
Definition irs.h:365
HandAnalysisConfig.
Definition irs.h:269
u32 mode
IrsHandAnalysisMode
Definition irs.h:270
ImageTransferProcessorConfig.
Definition irs.h:169
u64 exposure_time
IR Sensor exposure time in nanoseconds.
Definition irs.h:170
u8 is_negative_image_used
Inverts the colors of the captured image. 0: Normal image, 1: Negative image.
Definition irs.h:173
u32 gain
IR sensor signal's digital gain.
Definition irs.h:172
u32 format
IrsImageTransferProcessorFormat
Definition irs.h:175
u32 light_target
Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
Definition irs.h:171
ImageTransferProcessorExConfig.
Definition irs.h:179
u16 trimming_start_x
TrimmingStartX.
Definition irs.h:187
u16 trimming_start_y
TrimmingStartY.
Definition irs.h:188
u8 is_external_light_filter_enabled
IsExternalLightFilterEnabled.
Definition irs.h:189
u32 orig_format
OrigFormat IrsImageTransferProcessorFormat.
Definition irs.h:185
u32 light_target
Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
Definition irs.h:181
u64 exposure_time
IR Sensor exposure time in nanoseconds.
Definition irs.h:180
u32 trimming_format
TrimmingFormat IrsImageTransferProcessorFormat.
Definition irs.h:186
u32 gain
IR sensor signal's digital gain.
Definition irs.h:182
u8 is_negative_image_used
Inverts the colors of the captured image. 0: Normal image, 1: Negative image.
Definition irs.h:183
ImageTransferProcessorState.
Definition irs.h:221
u32 ambient_noise_level
AmbientNoiseLevel.
Definition irs.h:223
u64 sampling_number
SamplingNumber.
Definition irs.h:222
IrCameraHandle.
Definition irs.h:86
u8 player_number
PlayerNumber.
Definition irs.h:87
u8 device_type
DeviceType.
Definition irs.h:88
IrLedProcessorConfig.
Definition irs.h:251
u32 light_target
Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
Definition irs.h:252
IrsMomentProcessorConfig.
Definition irs.h:113
IrsRect window_of_interest
WindowOfInterest.
Definition irs.h:119
u8 is_negative_image_used
Inverts the colors of the captured image. 0: Normal image, 1: Negative image.
Definition irs.h:117
u32 gain
IR sensor signal's digital gain.
Definition irs.h:116
u32 preprocess
Preprocess.
Definition irs.h:120
u32 preprocess_intensity_threshold
PreprocessIntensityThreshold.
Definition irs.h:121
u64 exposure_time
IR Sensor exposure time in nanoseconds.
Definition irs.h:114
u32 light_target
Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
Definition irs.h:115
MomentProcessorState.
Definition irs.h:281
u32 ambient_noise_level
AmbientNoiseLevel.
Definition irs.h:285
u64 timestamp
TimeStamp.
Definition irs.h:283
s64 sampling_number
SamplingNumber.
Definition irs.h:282
MomentStatistic.
Definition irs.h:274
float centroid_y
CentroidY.
Definition irs.h:277
float centroid_x
CentroidX.
Definition irs.h:276
float average_intensity
AverageIntensity.
Definition irs.h:275
PackedClusteringProcessorConfig.
Definition irs.h:153
IrsPackedMcuVersion required_mcu_version
RequiredMcuVersion.
Definition irs.h:160
u32 object_pixel_count_min
ObjectPixelCountMin.
Definition irs.h:161
u8 is_external_light_filter_enabled
IsExternalLightFilterEnabled.
Definition irs.h:164
u32 object_pixel_count_max
ObjectPixelCountMax.
Definition irs.h:162
u64 exposure_time
IR Sensor exposure time in nanoseconds.
Definition irs.h:154
u8 light_target
Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
Definition irs.h:155
u8 gain
IR sensor signal's digital gain.
Definition irs.h:156
u8 is_negative_image_used
Inverts the colors of the captured image. 0: Normal image, 1: Negative image.
Definition irs.h:157
u8 object_intensity_min
ObjectIntensityMin.
Definition irs.h:163
IrsRect window_of_interest
WindowOfInterest.
Definition irs.h:159
PackedFunctionLevel.
Definition irs.h:99
u8 ir_sensor_function_level
IrSensorFunctionLevel.
Definition irs.h:100
PackedImageTransferProcessorConfig.
Definition irs.h:193
u8 light_target
Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
Definition irs.h:195
u64 exposure_time
IR Sensor exposure time in nanoseconds.
Definition irs.h:194
u8 gain
IR sensor signal's digital gain.
Definition irs.h:196
u8 format
IrsImageTransferProcessorFormat
Definition irs.h:200
IrsPackedMcuVersion required_mcu_version
RequiredMcuVersion.
Definition irs.h:199
u8 is_negative_image_used
Inverts the colors of the captured image. 0: Normal image, 1: Negative image.
Definition irs.h:197
PackedImageTransferProcessorExConfig.
Definition irs.h:205
u8 gain
IR sensor signal's digital gain.
Definition irs.h:208
u8 is_external_light_filter_enabled
IsExternalLightFilterEnabled.
Definition irs.h:216
u16 trimming_start_x
TrimmingStartX.
Definition irs.h:214
u8 orig_format
OrigFormat IrsImageTransferProcessorFormat.
Definition irs.h:212
u64 exposure_time
IR Sensor exposure time in nanoseconds.
Definition irs.h:206
u8 is_negative_image_used
Inverts the colors of the captured image. 0: Normal image, 1: Negative image.
Definition irs.h:209
u8 trimming_format
TrimmingFormat IrsImageTransferProcessorFormat.
Definition irs.h:213
u16 trimming_start_y
TrimmingStartY.
Definition irs.h:215
IrsPackedMcuVersion required_mcu_version
RequiredMcuVersion.
Definition irs.h:211
u8 light_target
Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
Definition irs.h:207
PackedIrLedProcessorConfig.
Definition irs.h:256
IrsPackedMcuVersion required_mcu_version
RequiredMcuVersion.
Definition irs.h:257
u8 light_target
Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
Definition irs.h:258
PackedMcuVersion.
Definition irs.h:93
u16 major_version
MajorVersion.
Definition irs.h:94
u16 minor_version
MinorVersion.
Definition irs.h:95
PackedMomentProcessorConfig.
Definition irs.h:125
u64 exposure_time
IR Sensor exposure time in nanoseconds.
Definition irs.h:126
u8 preprocess
Preprocess.
Definition irs.h:133
IrsRect window_of_interest
WindowOfInterest.
Definition irs.h:131
IrsPackedMcuVersion required_mcu_version
RequiredMcuVersion.
Definition irs.h:132
u8 preprocess_intensity_threshold
PreprocessIntensityThreshold.
Definition irs.h:134
u8 light_target
Controls the IR leds. 0: All leds, 1: Bright group, 2: Dim group, 3: None.
Definition irs.h:127
u8 gain
IR sensor signal's digital gain.
Definition irs.h:128
u8 is_negative_image_used
Inverts the colors of the captured image. 0: Normal image, 1: Negative image.
Definition irs.h:129
PackedPointingProcessorConfig.
Definition irs.h:228
IrsRect window_of_interest
WindowOfInterest.
Definition irs.h:229
IrsPackedMcuVersion required_mcu_version
RequiredMcuVersion.
Definition irs.h:230
PackedTeraPluginProcessorConfig.
Definition irs.h:242
u8 unk_x5
[6.0.0+] This is set to 0x2 | (IrsTeraPluginProcessorConfig::unk_x1 << 7).
Definition irs.h:245
IrsPackedMcuVersion required_mcu_version
RequiredMcuVersion.
Definition irs.h:243
u8 unk_x7
[6.0.0+] IrsTeraPluginProcessorConfig::unk_x3
Definition irs.h:247
u8 mode
Mode.
Definition irs.h:244
u8 unk_x6
[6.0.0+] IrsTeraPluginProcessorConfig::unk_x2
Definition irs.h:246
PointingProcessorMarkerState.
Definition irs.h:314
IrsRect window_of_interest
WindowOfInterest.
Definition irs.h:326
float unk_x14
Unknown.
Definition irs.h:325
s64 sampling_number
SamplingNumber.
Definition irs.h:315
float position_x
PositionX.
Definition irs.h:323
u8 pointing_status
PointingStatus.
Definition irs.h:319
float position_y
PositionY.
Definition irs.h:324
float unk_x8
Unknown.
Definition irs.h:322
u64 timestamp
TimeStamp.
Definition irs.h:316
PointingProcessorState.
Definition irs.h:331
u64 timestamp
TimeStamp.
Definition irs.h:333
float position_x
PositionX.
Definition irs.h:336
float position_y
PositionY.
Definition irs.h:337
s64 sampling_number
SamplingNumber.
Definition irs.h:332
u32 pointing_status
PointingStatus.
Definition irs.h:335
ProcessorState.
Definition irs.h:350
s64 start
Start.
Definition irs.h:351
u32 count
Count.
Definition irs.h:352
u32 pad
Padding.
Definition irs.h:353
Rect.
Definition irs.h:105
s16 height
Height.
Definition irs.h:109
s16 x
X.
Definition irs.h:106
s16 y
Y.
Definition irs.h:107
s16 width
Width.
Definition irs.h:108
StatusManager.
Definition irs.h:376
TeraPluginProcessorConfig.
Definition irs.h:234
u8 unk_x1
[6.0.0+] Unknown
Definition irs.h:236
u8 unk_x3
[6.0.0+] Unknown
Definition irs.h:238
u8 mode
Mode.
Definition irs.h:235
u8 unk_x2
[6.0.0+] Unknown
Definition irs.h:237
TeraPluginProcessorState.
Definition irs.h:342
s64 sampling_number
SamplingNumber.
Definition irs.h:343
u64 timestamp
TimeStamp.
Definition irs.h:344
u32 ambient_noise_level
AmbientNoiseLevel.
Definition irs.h:345
Service object structure.
Definition service.h:14
int64_t s64
64-bit signed integer.
Definition types.h:28
uint64_t u64
64-bit unsigned integer.
Definition types.h:22
uint8_t u8
8-bit unsigned integer.
Definition types.h:19
int16_t s16
16-bit signed integer.
Definition types.h:26
uint16_t u16
16-bit unsigned integer.
Definition types.h:20
u32 Result
Function error code result type.
Definition types.h:44
#define NX_CONSTEXPR
Flags a function as constexpr in C++14 and above; or as (always) inline otherwise.
Definition types.h:92
int32_t s32
32-bit signed integer.
Definition types.h:27
uint32_t u32
32-bit unsigned integer.
Definition types.h:21