From a3b92cd881ff609843a3ff514ec56798fa0d773c Mon Sep 17 00:00:00 2001 From: Fuzzy2319 Date: Sat, 27 Dec 2025 18:43:10 +0100 Subject: [PATCH 01/10] add:irs functions --- include/nn/irs.h | 82 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 include/nn/irs.h diff --git a/include/nn/irs.h b/include/nn/irs.h new file mode 100644 index 0000000..3e3fffb --- /dev/null +++ b/include/nn/irs.h @@ -0,0 +1,82 @@ +#pragma once + +#include + +namespace nn::irsensor { +struct ClusteringProcessorConfig; +struct ClusteringProcessorState; +struct DpdProcessorConfig; +struct DpdProcessorPointingState; +struct DpdProcessorState; +struct HandAnalysisConfig; +struct ImageTransferProcessorConfig; +struct ImageTransferProcessorState; +struct MomentProcessorConfig; +struct MomentProcessorState; +struct TeraPluginProcessorConfig; +struct TeraPluginProcessorState; + +enum class IrCameraStatus : u32 { + Available, + Unsupported, + Unconnected, +}; + +struct IrCameraHandle { + u8 playerNumber; + u8 deviceType; + u8 reserved[2]; +}; + +struct Rect { + u16 x = 0; + u16 y = 0; + u16 width = 320; + u16 height = 240; +}; + +IrCameraHandle GetIrCameraHandle(const u32&); +void Initialize(const IrCameraHandle& handle); +void Finalize(const IrCameraHandle& handle); +IrCameraStatus GetIrCameraStatus(const IrCameraHandle& handle); +void StopImageProcessor(const IrCameraHandle& handle); + +void GetMomentProcessorDefaultConfig(MomentProcessorConfig* outConfig); +void RunMomentProcessor(const IrCameraHandle& handle, const MomentProcessorConfig& config); +Result GetMomentProcessorState(MomentProcessorState* outState, const IrCameraHandle& handle); +Result GetMomentProcessorStates(MomentProcessorState* outStates, s32* outCount, s32, + const IrCameraHandle& handle); +void* CalculateMomentRegionStatistic(const MomentProcessorState* state, const Rect&, s32, s32, s32, + s32); // TODO: change return type + +void GetClusteringProcessorDefaultConfig(ClusteringProcessorConfig* outConfig); +void RunClusteringProcessor(const IrCameraHandle& handle, const ClusteringProcessorConfig& config); +Result GetClusteringProcessorState(ClusteringProcessorState* outState, + const IrCameraHandle& handle); +Result GetClusteringProcessorStates(ClusteringProcessorState* outStates, s32* outCount, s32, + const IrCameraHandle& handle); + +void GetImageTransferProcessorDefaultConfig(ImageTransferProcessorConfig* outConfig); +void RunImageTransferProcessor(const IrCameraHandle& handle, + const ImageTransferProcessorConfig& config, void*, u64); +Result GetImageTransferProcessorState(ImageTransferProcessorState* outState, void*, u64, + const IrCameraHandle& handle); + +Result RunHandAnalysis(const IrCameraHandle& handle, const HandAnalysisConfig& config); + +Result RunTeraPluginProcessor(const IrCameraHandle& handle, + const TeraPluginProcessorConfig& config); + +void RunDpdProcessor(const IrCameraHandle& handle); +void GetDpdProcessorDefaultConfig(DpdProcessorConfig* outConfig); +void RunDpdProcessor(const IrCameraHandle& handle, const DpdProcessorConfig& config); +Result GetDpdProcessorStates(DpdProcessorPointingState* outStates, s32* outCount, s32, + const IrCameraHandle& handle); +Result GetDpdProcessorStates(DpdProcessorState* outStates, s32* outCount, s32, + const IrCameraHandle& handle); + +Result GetTeraPluginProcessorStates(TeraPluginProcessorState* outStates, s32* outCount, s32, long, + u32, s32, const IrCameraHandle& handle); + +Rect MakeRect(s32 x, s32 y, s32 width, s32 height); +} // namespace nn::irsensor From 0d08556f8c6509270a40cff4491b36c0e47ede8a Mon Sep 17 00:00:00 2001 From: Fuzzy2319 Date: Sat, 27 Dec 2025 21:13:38 +0100 Subject: [PATCH 02/10] add:irs:sys functions --- include/nn/irs/sys.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 include/nn/irs/sys.h diff --git a/include/nn/irs/sys.h b/include/nn/irs/sys.h new file mode 100644 index 0000000..5e1534d --- /dev/null +++ b/include/nn/irs/sys.h @@ -0,0 +1,12 @@ +#pragma once + +namespace nn::applet { +struct AppletResourceUserId; +} // namespace nn::applet + +namespace nn::irsensor::system { +void SetAppletResourceUserId(const applet::AppletResourceUserId&); +void RegisterAppletResourceUserId(const applet::AppletResourceUserId&, bool); +void UnregisterAppletResourceUserId(const applet::AppletResourceUserId&); +void EnableAppletToGetInput(const applet::AppletResourceUserId&, bool); +} // namespace nn::irsensor::system From 6c56dd8f9987403ef99831815ca4b045be7acbc3 Mon Sep 17 00:00:00 2001 From: Fuzzy2319 Date: Sat, 27 Dec 2025 22:01:59 +0100 Subject: [PATCH 03/10] add:ClusteringProcessorConfig and ClusteringProcessorState --- include/nn/irs.h | 8 +------- include/nn/irs/ClusteringData.h | 12 ++++++++++++ include/nn/irs/ClusteringProcessorConfig.h | 19 +++++++++++++++++++ include/nn/irs/ClusteringProcessorState.h | 14 ++++++++++++++ include/nn/irs/MomentStatistic.h | 11 +++++++++++ include/nn/irs/Rect.h | 12 ++++++++++++ 6 files changed, 69 insertions(+), 7 deletions(-) create mode 100644 include/nn/irs/ClusteringData.h create mode 100644 include/nn/irs/ClusteringProcessorConfig.h create mode 100644 include/nn/irs/ClusteringProcessorState.h create mode 100644 include/nn/irs/MomentStatistic.h create mode 100644 include/nn/irs/Rect.h diff --git a/include/nn/irs.h b/include/nn/irs.h index 3e3fffb..bf26f04 100644 --- a/include/nn/irs.h +++ b/include/nn/irs.h @@ -1,5 +1,6 @@ #pragma once +#include #include namespace nn::irsensor { @@ -28,13 +29,6 @@ struct IrCameraHandle { u8 reserved[2]; }; -struct Rect { - u16 x = 0; - u16 y = 0; - u16 width = 320; - u16 height = 240; -}; - IrCameraHandle GetIrCameraHandle(const u32&); void Initialize(const IrCameraHandle& handle); void Finalize(const IrCameraHandle& handle); diff --git a/include/nn/irs/ClusteringData.h b/include/nn/irs/ClusteringData.h new file mode 100644 index 0000000..ed051b6 --- /dev/null +++ b/include/nn/irs/ClusteringData.h @@ -0,0 +1,12 @@ +#pragma once + +#include +#include + +namespace nn::irsensor { +struct ClusteringData { + MomentStatistic momentStatistic; + s32 pixelCount; + Rect bounds; +}; +} // namespace nn::irsensor diff --git a/include/nn/irs/ClusteringProcessorConfig.h b/include/nn/irs/ClusteringProcessorConfig.h new file mode 100644 index 0000000..827cd14 --- /dev/null +++ b/include/nn/irs/ClusteringProcessorConfig.h @@ -0,0 +1,19 @@ +#pragma once + +#include +#include + +namespace nn::irsensor { +struct ClusteringProcessorConfig { + s64 exposureTime = 200000; + s32 lightTarget = 0; + s32 gain = 2; + bool isNegativeImageUsed = false; + u8 reserved[7]; + Rect windowOfInterest; + s32 objectPixelCountMin = 3; + s32 objectPixelCountMax = 76800; // windowOfInterest.width * windowOfInterest.height; + s32 objectIntensityMin = 150; + bool isExternalLightFilterEnabled = true; +}; +} // namespace nn::irsensor diff --git a/include/nn/irs/ClusteringProcessorState.h b/include/nn/irs/ClusteringProcessorState.h new file mode 100644 index 0000000..28307b4 --- /dev/null +++ b/include/nn/irs/ClusteringProcessorState.h @@ -0,0 +1,14 @@ +#pragma once + +#include +#include + +namespace nn::irsensor { +struct ClusteringProcessorState { + s64 samplingNumber; + s64 timeStamp; + s8 objectCount; + s32 ambientNoiseLevel; + ClusteringData data[16]; +}; +} // namespace nn::irsensor diff --git a/include/nn/irs/MomentStatistic.h b/include/nn/irs/MomentStatistic.h new file mode 100644 index 0000000..2b26e98 --- /dev/null +++ b/include/nn/irs/MomentStatistic.h @@ -0,0 +1,11 @@ +#pragma once + +#include + +namespace nn::irsensor { +struct MomentStatistic { + f32 averageIntensity; + f32 centroidX; + f32 centroidY; +}; +} // namespace nn::irsensor diff --git a/include/nn/irs/Rect.h b/include/nn/irs/Rect.h new file mode 100644 index 0000000..c71cda7 --- /dev/null +++ b/include/nn/irs/Rect.h @@ -0,0 +1,12 @@ +#pragma once + +#include + +namespace nn::irsensor { +struct Rect { + u16 x = 0; + u16 y = 0; + u16 width = 320; + u16 height = 240; +}; +} // namespace nn::irsensor From 868e2e8d36ebd570ddf1626d773fd537dca9b116 Mon Sep 17 00:00:00 2001 From: Fuzzy2319 Date: Sat, 27 Dec 2025 22:44:59 +0100 Subject: [PATCH 04/10] add:DpdProcessorConfig, DpdProcessorPointingState and DpdProcessorState --- include/nn/irs/DpdProcessorConfig.h | 9 +++++++++ include/nn/irs/DpdProcessorPointingState.h | 20 ++++++++++++++++++++ include/nn/irs/DpdProcessorState.h | 13 +++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 include/nn/irs/DpdProcessorConfig.h create mode 100644 include/nn/irs/DpdProcessorPointingState.h create mode 100644 include/nn/irs/DpdProcessorState.h diff --git a/include/nn/irs/DpdProcessorConfig.h b/include/nn/irs/DpdProcessorConfig.h new file mode 100644 index 0000000..8673b2d --- /dev/null +++ b/include/nn/irs/DpdProcessorConfig.h @@ -0,0 +1,9 @@ +#pragma once + +#include + +namespace nn::irsensor { +struct DpdProcessorConfig { + Rect windowOfInterest; +}; +} // namespace nn::irsensor diff --git a/include/nn/irs/DpdProcessorPointingState.h b/include/nn/irs/DpdProcessorPointingState.h new file mode 100644 index 0000000..4c93ab8 --- /dev/null +++ b/include/nn/irs/DpdProcessorPointingState.h @@ -0,0 +1,20 @@ +#pragma once + +#include +#include + +namespace nn::irsensor { +struct DpdProcessorPointingState { + s64 samplingNumber; + s64 timeStamp; + struct { + s8 pointingStatus; + s32 _4; + f32 _8; + f32 positionX; + f32 positionY; + f32 _14; + Rect windowOfInterest; + } data[3]; +}; +} // namespace nn::irsensor diff --git a/include/nn/irs/DpdProcessorState.h b/include/nn/irs/DpdProcessorState.h new file mode 100644 index 0000000..3daf891 --- /dev/null +++ b/include/nn/irs/DpdProcessorState.h @@ -0,0 +1,13 @@ +#pragma once + +#include + +namespace nn::irsensor { +struct DpdProcessorState { + s64 samplingNumber; + s64 timeStamp; + s32 pointingStatus; + f32 positionX; + f32 positionY; +}; +} // namespace nn::irsensor From 2a5d07a3d2e5e52a5df908e377b121517e6ad9e9 Mon Sep 17 00:00:00 2001 From: Fuzzy2319 Date: Sun, 28 Dec 2025 14:10:51 +0100 Subject: [PATCH 05/10] add:HandAnalysisConfig and HandAnalysisMode --- include/nn/irs/HandAnalysisConfig.h | 9 +++++++++ include/nn/irs/HandAnalysisMode.h | 11 +++++++++++ 2 files changed, 20 insertions(+) create mode 100644 include/nn/irs/HandAnalysisConfig.h create mode 100644 include/nn/irs/HandAnalysisMode.h diff --git a/include/nn/irs/HandAnalysisConfig.h b/include/nn/irs/HandAnalysisConfig.h new file mode 100644 index 0000000..ec467a5 --- /dev/null +++ b/include/nn/irs/HandAnalysisConfig.h @@ -0,0 +1,9 @@ +#pragma once + +#include + +namespace nn::irsensor { +struct HandAnalysisConfig { + HandAnalysisMode mode; +}; +} // namespace nn::irsensor diff --git a/include/nn/irs/HandAnalysisMode.h b/include/nn/irs/HandAnalysisMode.h new file mode 100644 index 0000000..665c58b --- /dev/null +++ b/include/nn/irs/HandAnalysisMode.h @@ -0,0 +1,11 @@ +#pragma once + +namespace nn::irsensor { +enum HandAnalysisMode { + HandAnalysisMode_None, + HandAnalysisMode_Silhouette, + HandAnalysisMode_Image, + HandAnalysisMode_SilhouetteAndImage, + HandAnalysisMode_SilhouetteOnly, // [4.0.0+] +}; +} // namespace nn::irsensor From 2a93490c8ed42333489fa6ddfc33cafc44c998dc Mon Sep 17 00:00:00 2001 From: Fuzzy2319 Date: Sun, 28 Dec 2025 14:30:49 +0100 Subject: [PATCH 06/10] add:ImageTransferProcessorConfig and ImageTransferProcessorState --- include/nn/irs/ImageTransferProcessorConfig.h | 15 +++++++++++++++ include/nn/irs/ImageTransferProcessorFormat.h | 13 +++++++++++++ include/nn/irs/ImageTransferProcessorState.h | 11 +++++++++++ 3 files changed, 39 insertions(+) create mode 100644 include/nn/irs/ImageTransferProcessorConfig.h create mode 100644 include/nn/irs/ImageTransferProcessorFormat.h create mode 100644 include/nn/irs/ImageTransferProcessorState.h diff --git a/include/nn/irs/ImageTransferProcessorConfig.h b/include/nn/irs/ImageTransferProcessorConfig.h new file mode 100644 index 0000000..eeb2279 --- /dev/null +++ b/include/nn/irs/ImageTransferProcessorConfig.h @@ -0,0 +1,15 @@ +#pragma once + +#include +#include + +namespace nn::irsensor { +struct __attribute__((packed)) ImageTransferProcessorConfig { + s64 exposureTime = 300000; + s32 lightTarget = 0; + s32 gain = 2; + bool isNegativeImageUsed = false; + u8 reserved[7]; + ImageTransferProcessorFormat format = ImageTransferProcessorFormat::_320x240; +}; +} // namespace nn::irsensor diff --git a/include/nn/irs/ImageTransferProcessorFormat.h b/include/nn/irs/ImageTransferProcessorFormat.h new file mode 100644 index 0000000..0e250a7 --- /dev/null +++ b/include/nn/irs/ImageTransferProcessorFormat.h @@ -0,0 +1,13 @@ +#pragma once + +#include + +namespace nn::irsensor { +enum class ImageTransferProcessorFormat : s32 { + _320x240, + _160x120, + _80x60, + _40x30, // [4.0.0+] + _20x15, // [4.0.0+] +}; +} // namespace nn::irsensor diff --git a/include/nn/irs/ImageTransferProcessorState.h b/include/nn/irs/ImageTransferProcessorState.h new file mode 100644 index 0000000..9e26b63 --- /dev/null +++ b/include/nn/irs/ImageTransferProcessorState.h @@ -0,0 +1,11 @@ +#pragma once + +#include + +namespace nn::irsensor { +struct ImageTransferProcessorState { + s64 samplingNumber; + s32 ambientNoiseLevel; + s8 reserved[4]; +}; +} // namespace nn::irsensor From cc88e7f95e535cd750e2879288b8318f0478d863 Mon Sep 17 00:00:00 2001 From: Fuzzy2319 Date: Sun, 28 Dec 2025 14:59:52 +0100 Subject: [PATCH 07/10] add:MomentProcessorConfig and MomentProcessorState --- include/nn/irs/ImageTransferProcessorConfig.h | 2 +- include/nn/irs/MomentProcessorConfig.h | 17 +++++++++++++++++ include/nn/irs/MomentProcessorState.h | 14 ++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 include/nn/irs/MomentProcessorConfig.h create mode 100644 include/nn/irs/MomentProcessorState.h diff --git a/include/nn/irs/ImageTransferProcessorConfig.h b/include/nn/irs/ImageTransferProcessorConfig.h index eeb2279..bfcef0f 100644 --- a/include/nn/irs/ImageTransferProcessorConfig.h +++ b/include/nn/irs/ImageTransferProcessorConfig.h @@ -7,7 +7,7 @@ namespace nn::irsensor { struct __attribute__((packed)) ImageTransferProcessorConfig { s64 exposureTime = 300000; s32 lightTarget = 0; - s32 gain = 2; + s32 gain = 8; bool isNegativeImageUsed = false; u8 reserved[7]; ImageTransferProcessorFormat format = ImageTransferProcessorFormat::_320x240; diff --git a/include/nn/irs/MomentProcessorConfig.h b/include/nn/irs/MomentProcessorConfig.h new file mode 100644 index 0000000..683ad6f --- /dev/null +++ b/include/nn/irs/MomentProcessorConfig.h @@ -0,0 +1,17 @@ +#pragma once + +#include +#include + +namespace nn::irsensor { +struct MomentProcessorConfig { + s64 exposureTime = 300000; + s32 lightTarget = 0; + s32 gain = 8; + bool isNegativeImageUsed = false; + u8 reserved[7]; + Rect windowOfInterest; + s32 preprocess = 1; + s32 preprocessIntensityThreshold = 80; +}; +} // namespace nn::irsensor diff --git a/include/nn/irs/MomentProcessorState.h b/include/nn/irs/MomentProcessorState.h new file mode 100644 index 0000000..98ec4da --- /dev/null +++ b/include/nn/irs/MomentProcessorState.h @@ -0,0 +1,14 @@ +#pragma once + +#include +#include + +namespace nn::irsensor { +struct MomentProcessorState { + s64 samplingNumber; + s64 timeStamp; + s32 ambientNoiseLevel; + s8 reserved[4]; + MomentStatistic statistics[48]; +}; +} // namespace nn::irsensor From 6260581b99dbd4866d3482f0f693042f337ca977 Mon Sep 17 00:00:00 2001 From: Fuzzy2319 Date: Sun, 28 Dec 2025 15:25:39 +0100 Subject: [PATCH 08/10] add:TeraPluginProcessorConfig and TeraPluginProcessorState --- include/nn/irs/ClusteringProcessorState.h | 2 +- include/nn/irs/DpdProcessorPointingState.h | 2 +- include/nn/irs/ImageTransferProcessorFormat.h | 2 +- include/nn/irs/ImageTransferProcessorState.h | 2 +- include/nn/irs/MomentProcessorState.h | 2 +- include/nn/irs/TeraPluginProcessorConfig.h | 12 ++++++++++++ include/nn/irs/TeraPluginProcessorState.h | 12 ++++++++++++ 7 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 include/nn/irs/TeraPluginProcessorConfig.h create mode 100644 include/nn/irs/TeraPluginProcessorState.h diff --git a/include/nn/irs/ClusteringProcessorState.h b/include/nn/irs/ClusteringProcessorState.h index 28307b4..c44a691 100644 --- a/include/nn/irs/ClusteringProcessorState.h +++ b/include/nn/irs/ClusteringProcessorState.h @@ -7,7 +7,7 @@ namespace nn::irsensor { struct ClusteringProcessorState { s64 samplingNumber; s64 timeStamp; - s8 objectCount; + u8 objectCount; s32 ambientNoiseLevel; ClusteringData data[16]; }; diff --git a/include/nn/irs/DpdProcessorPointingState.h b/include/nn/irs/DpdProcessorPointingState.h index 4c93ab8..3e9f0ac 100644 --- a/include/nn/irs/DpdProcessorPointingState.h +++ b/include/nn/irs/DpdProcessorPointingState.h @@ -8,7 +8,7 @@ struct DpdProcessorPointingState { s64 samplingNumber; s64 timeStamp; struct { - s8 pointingStatus; + u8 pointingStatus; s32 _4; f32 _8; f32 positionX; diff --git a/include/nn/irs/ImageTransferProcessorFormat.h b/include/nn/irs/ImageTransferProcessorFormat.h index 0e250a7..268224c 100644 --- a/include/nn/irs/ImageTransferProcessorFormat.h +++ b/include/nn/irs/ImageTransferProcessorFormat.h @@ -3,7 +3,7 @@ #include namespace nn::irsensor { -enum class ImageTransferProcessorFormat : s32 { +enum class ImageTransferProcessorFormat : u32 { _320x240, _160x120, _80x60, diff --git a/include/nn/irs/ImageTransferProcessorState.h b/include/nn/irs/ImageTransferProcessorState.h index 9e26b63..926f3ca 100644 --- a/include/nn/irs/ImageTransferProcessorState.h +++ b/include/nn/irs/ImageTransferProcessorState.h @@ -6,6 +6,6 @@ namespace nn::irsensor { struct ImageTransferProcessorState { s64 samplingNumber; s32 ambientNoiseLevel; - s8 reserved[4]; + u8 reserved[4]; }; } // namespace nn::irsensor diff --git a/include/nn/irs/MomentProcessorState.h b/include/nn/irs/MomentProcessorState.h index 98ec4da..1efecaa 100644 --- a/include/nn/irs/MomentProcessorState.h +++ b/include/nn/irs/MomentProcessorState.h @@ -8,7 +8,7 @@ struct MomentProcessorState { s64 samplingNumber; s64 timeStamp; s32 ambientNoiseLevel; - s8 reserved[4]; + u8 reserved[4]; MomentStatistic statistics[48]; }; } // namespace nn::irsensor diff --git a/include/nn/irs/TeraPluginProcessorConfig.h b/include/nn/irs/TeraPluginProcessorConfig.h new file mode 100644 index 0000000..9017b89 --- /dev/null +++ b/include/nn/irs/TeraPluginProcessorConfig.h @@ -0,0 +1,12 @@ +#pragma once + +#include + +namespace nn::irsensor { +struct TeraPluginProcessorConfig { + s8 mode; + s8 _1; + s8 _2; + s8 _3; +}; +} // namespace nn::irsensor diff --git a/include/nn/irs/TeraPluginProcessorState.h b/include/nn/irs/TeraPluginProcessorState.h new file mode 100644 index 0000000..b2a7b16 --- /dev/null +++ b/include/nn/irs/TeraPluginProcessorState.h @@ -0,0 +1,12 @@ +#pragma once + +#include + +namespace nn::irsensor { +struct TeraPluginProcessorState { + s64 samplingNumber; + s64 timeStamp; + s32 ambientNoiseLevel; + u8 data[0x12c]; // TODO: this is unknown +}; +} // namespace nn::irsensor From 7e26e5c1debb6882018d8045f094fde1151271b7 Mon Sep 17 00:00:00 2001 From: Fuzzy2319 Date: Sat, 10 Jan 2026 00:16:10 +0100 Subject: [PATCH 09/10] fix:requested changes --- include/nn/irs.h | 5 +++-- include/nn/irs/TeraPluginProcessorConfig.h | 6 +++--- include/nn/irs/TeraPluginProcessorState.h | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/include/nn/irs.h b/include/nn/irs.h index bf26f04..e97718c 100644 --- a/include/nn/irs.h +++ b/include/nn/irs.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include @@ -40,8 +41,8 @@ void RunMomentProcessor(const IrCameraHandle& handle, const MomentProcessorConfi Result GetMomentProcessorState(MomentProcessorState* outState, const IrCameraHandle& handle); Result GetMomentProcessorStates(MomentProcessorState* outStates, s32* outCount, s32, const IrCameraHandle& handle); -void* CalculateMomentRegionStatistic(const MomentProcessorState* state, const Rect&, s32, s32, s32, - s32); // TODO: change return type +MomentStatistic CalculateMomentRegionStatistic(const MomentProcessorState* state, const Rect&, s32, + s32, s32, s32); void GetClusteringProcessorDefaultConfig(ClusteringProcessorConfig* outConfig); void RunClusteringProcessor(const IrCameraHandle& handle, const ClusteringProcessorConfig& config); diff --git a/include/nn/irs/TeraPluginProcessorConfig.h b/include/nn/irs/TeraPluginProcessorConfig.h index 9017b89..37365cc 100644 --- a/include/nn/irs/TeraPluginProcessorConfig.h +++ b/include/nn/irs/TeraPluginProcessorConfig.h @@ -5,8 +5,8 @@ namespace nn::irsensor { struct TeraPluginProcessorConfig { s8 mode; - s8 _1; - s8 _2; - s8 _3; + s8 _1; // [6.0.0+] + s8 _2; // [6.0.0+] + s8 _3; // [6.0.0+] }; } // namespace nn::irsensor diff --git a/include/nn/irs/TeraPluginProcessorState.h b/include/nn/irs/TeraPluginProcessorState.h index b2a7b16..86931a8 100644 --- a/include/nn/irs/TeraPluginProcessorState.h +++ b/include/nn/irs/TeraPluginProcessorState.h @@ -7,6 +7,6 @@ struct TeraPluginProcessorState { s64 samplingNumber; s64 timeStamp; s32 ambientNoiseLevel; - u8 data[0x12c]; // TODO: this is unknown + u8 pluginData[0x12c]; }; } // namespace nn::irsensor From f770f53db14c5dfbb2e715e7e60087f60fe50679 Mon Sep 17 00:00:00 2001 From: Fuzzy2319 Date: Sat, 10 Jan 2026 00:42:59 +0100 Subject: [PATCH 10/10] update:make DPD stuff only defined when NN_SDK_VER is less than 4.0.0 --- include/nn/irs.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/nn/irs.h b/include/nn/irs.h index e97718c..e91bfcd 100644 --- a/include/nn/irs.h +++ b/include/nn/irs.h @@ -3,13 +3,18 @@ #include #include #include +#include namespace nn::irsensor { struct ClusteringProcessorConfig; struct ClusteringProcessorState; + +#if NN_SDK_VER <= NN_MAKE_VER(4, 0, 0) struct DpdProcessorConfig; struct DpdProcessorPointingState; struct DpdProcessorState; +#endif + struct HandAnalysisConfig; struct ImageTransferProcessorConfig; struct ImageTransferProcessorState; @@ -62,6 +67,7 @@ Result RunHandAnalysis(const IrCameraHandle& handle, const HandAnalysisConfig& c Result RunTeraPluginProcessor(const IrCameraHandle& handle, const TeraPluginProcessorConfig& config); +#if NN_SDK_VER <= NN_MAKE_VER(4, 0, 0) void RunDpdProcessor(const IrCameraHandle& handle); void GetDpdProcessorDefaultConfig(DpdProcessorConfig* outConfig); void RunDpdProcessor(const IrCameraHandle& handle, const DpdProcessorConfig& config); @@ -69,6 +75,7 @@ Result GetDpdProcessorStates(DpdProcessorPointingState* outStates, s32* outCount const IrCameraHandle& handle); Result GetDpdProcessorStates(DpdProcessorState* outStates, s32* outCount, s32, const IrCameraHandle& handle); +#endif Result GetTeraPluginProcessorStates(TeraPluginProcessorState* outStates, s32* outCount, s32, long, u32, s32, const IrCameraHandle& handle);