diff --git a/configure/CONFIG_SITE b/configure/CONFIG_SITE
index 06d9f3a..562d3e0 100644
--- a/configure/CONFIG_SITE
+++ b/configure/CONFIG_SITE
@@ -32,6 +32,18 @@ CHECK_RELEASE = YES
# take effect.
#IOCS_APPL_TOP =
+# Define where the PVCam SDK is located
+
+# Linux default
+PVCAM_SDK=/opt/pvcam/sdk
+PVCAM_INCLUDE = $(PVCAM_SDK)/include
+PVCAM_LIB = $(PVCAM_SDK)/library/x86_64
+
+# Windows default
+#PVCAM_SDK="C:/Program Files/Photometrics/PVCamSDK"
+#PVCAM_INCLUDE = $(PVCAM_SDK)/include
+#PVCAM_LIB = $(PVCAM_SDK)/lib/amd64
+
# Get settings from AREA_DETECTOR, so we only have to configure once for all detectors if we want to
-include $(AREA_DETECTOR)/configure/CONFIG_SITE
-include $(AREA_DETECTOR)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH)
diff --git a/kinetixSupport/Makefile b/kinetixSupport/Makefile
index 70ac591..bba5aeb 100644
--- a/kinetixSupport/Makefile
+++ b/kinetixSupport/Makefile
@@ -4,20 +4,16 @@ include $(TOP)/configure/CONFIG
# ADD MACRO DEFINITIONS AFTER THIS LINE
#=============================
-# The files in this directory are installed first because they are
-# used by PVCam driver
+# Pull in the necessary libraries and headers from your PVCam SDK installation.
-INC += pvcam.h master.h
+SRC_DIRS += $(PVCAM_INCLUDE)
-LIB_INSTALLS_Linux += ../os/linux-x86_64/libpvcam.so
-LIB_INSTALLS_Linux += ../os/linux-x86_64/libpvcam.so.2
-LIB_INSTALLS_Linux += ../os/linux-x86_64/libpvcam.so.2.6
+INC += pvcam.h master.h
-LIB_INSTALLS_Linux += ../os/linux-x86_64/libpvcamDDI.so
-LIB_INSTALLS_Linux += ../os/linux-x86_64/libpvcamDDI.so.3
-LIB_INSTALLS_Linux += ../os/linux-x86_64/libpvcamDDI.so.3.1
+LIB_INSTALLS_Linux += $(PVCAM_LIB)/libpvcam.so
+LIB_INSTALLS_Linux += $(PVCAM_LIB)/libpvcamDDI.so
-LIB_INSTALLS_WIN32 += ../os/windows-x64/pvcam64.lib
+LIB_INSTALLS_WIN32 += $(PVCAM_LIB)/pvcam64.lib
#=============================
diff --git a/kinetixSupport/master.h b/kinetixSupport/master.h
deleted file mode 100644
index f6ba5d1..0000000
--- a/kinetixSupport/master.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/******************************************************************************/
-/* Copyright (C) Teledyne Photometrics. All rights reserved. */
-/******************************************************************************/
-
-#ifndef _MASTER_H
-#define _MASTER_H
-
-/*
-This allows us to insert the proper compiler flags, in pvcam.h for example,
-to cope properly with C++ definitions.
-*/
-#if defined(__cplusplus)
- /* BORLAND C++ and GCC */
- #define PV_C_PLUS_PLUS
-#elif defined(__cplusplus__)
- /* MICROSOFT C++ */
- #define PV_C_PLUS_PLUS
-#endif
-
-/******************************************************************************/
-/* Platform-specific defined like calling conventions, etc. */
-/******************************************************************************/
-
-#if defined(_WIN32) || defined(_WIN64)
- #define PV_DECL __stdcall
- #define DEPRECATED __declspec(deprecated)
-#elif defined(__linux__)
- #define PV_DECL
- #define DEPRECATED __attribute__((deprecated))
-#elif defined(__APPLE__)
- #define PV_DECL
- #define DEPRECATED __attribute__((deprecated))
-#endif
-
-/******************************************************************************/
-/* PVCAM types */
-/******************************************************************************/
-
-/** General error codes usually returned from functions as rs_bool value. */
-enum
-{
- PV_FAIL = 0,
- PV_OK
-};
-
-typedef unsigned short rs_bool;
-typedef signed char int8;
-typedef unsigned char uns8;
-typedef short int16;
-typedef unsigned short uns16;
-typedef int int32;
-typedef unsigned int uns32;
-typedef float flt32;
-typedef double flt64;
-
-#if defined(_MSC_VER)
- typedef unsigned __int64 ulong64;
- typedef signed __int64 long64;
-#else
- typedef unsigned long long ulong64;
- typedef signed long long long64;
-#endif
-
-/**
-@defgroup grp_pm_deprecated Deprecated symbols
-*/
-
-/**
-@defgroup grp_pm_deprecated_typedefs Deprecated types
-@ingroup grp_pm_deprecated
-These types are included for compatibility reasons.
-@{
-*/
-
-#define PV_PTR_DECL *
-
-typedef void* void_ptr;
-typedef void** void_ptr_ptr;
-
-typedef rs_bool* rs_bool_ptr;
-typedef char* char_ptr;
-typedef int8* int8_ptr;
-typedef uns8* uns8_ptr;
-typedef int16* int16_ptr;
-typedef uns16* uns16_ptr;
-typedef int32* int32_ptr;
-typedef uns32* uns32_ptr;
-typedef flt32* flt32_ptr;
-typedef flt64* flt64_ptr;
-typedef ulong64* ulong64_ptr;
-typedef long64* long64_ptr;
-
-typedef const rs_bool* rs_bool_const_ptr;
-typedef const char* char_const_ptr;
-typedef const int8* int8_const_ptr;
-typedef const uns8* uns8_const_ptr;
-typedef const int16* int16_const_ptr;
-typedef const uns16* uns16_const_ptr;
-typedef const int32* int32_const_ptr;
-typedef const uns32* uns32_const_ptr;
-typedef const flt32* flt32_const_ptr;
-typedef const flt64* flt64_const_ptr;
-typedef const ulong64* ulong64_const_ptr;
-typedef const long64* long64_const_ptr;
-
-/** @} */ /* grp_pm_deprecated_typedefs */
-
-/******************************************************************************/
-/* PVCAM constants */
-/******************************************************************************/
-
-#ifndef FALSE
- #define FALSE PV_FAIL /* FALSE == 0 */
-#endif
-
-#ifndef TRUE
- #define TRUE PV_OK /* TRUE == 1 */
-#endif
-
-#endif /* _MASTER_H */
diff --git a/kinetixSupport/os/linux-x86/libpvcam.so b/kinetixSupport/os/linux-x86/libpvcam.so
deleted file mode 100755
index 658877f..0000000
Binary files a/kinetixSupport/os/linux-x86/libpvcam.so and /dev/null differ
diff --git a/kinetixSupport/os/linux-x86/libpvcam.so.2 b/kinetixSupport/os/linux-x86/libpvcam.so.2
deleted file mode 100755
index 658877f..0000000
Binary files a/kinetixSupport/os/linux-x86/libpvcam.so.2 and /dev/null differ
diff --git a/kinetixSupport/os/linux-x86/libpvcam.so.2.6 b/kinetixSupport/os/linux-x86/libpvcam.so.2.6
deleted file mode 100755
index 658877f..0000000
Binary files a/kinetixSupport/os/linux-x86/libpvcam.so.2.6 and /dev/null differ
diff --git a/kinetixSupport/os/linux-x86/libpvcamDDI.so b/kinetixSupport/os/linux-x86/libpvcamDDI.so
deleted file mode 100755
index 9625224..0000000
Binary files a/kinetixSupport/os/linux-x86/libpvcamDDI.so and /dev/null differ
diff --git a/kinetixSupport/os/linux-x86/libpvcamDDI.so.3 b/kinetixSupport/os/linux-x86/libpvcamDDI.so.3
deleted file mode 100755
index 9625224..0000000
Binary files a/kinetixSupport/os/linux-x86/libpvcamDDI.so.3 and /dev/null differ
diff --git a/kinetixSupport/os/linux-x86/libpvcamDDI.so.3.0 b/kinetixSupport/os/linux-x86/libpvcamDDI.so.3.0
deleted file mode 100755
index 9625224..0000000
Binary files a/kinetixSupport/os/linux-x86/libpvcamDDI.so.3.0 and /dev/null differ
diff --git a/kinetixSupport/os/linux-x86_64/libpvcam.so b/kinetixSupport/os/linux-x86_64/libpvcam.so
deleted file mode 120000
index b0f9c55..0000000
--- a/kinetixSupport/os/linux-x86_64/libpvcam.so
+++ /dev/null
@@ -1 +0,0 @@
-libpvcam.so.2.6
\ No newline at end of file
diff --git a/kinetixSupport/os/linux-x86_64/libpvcam.so.2 b/kinetixSupport/os/linux-x86_64/libpvcam.so.2
deleted file mode 120000
index b0f9c55..0000000
--- a/kinetixSupport/os/linux-x86_64/libpvcam.so.2
+++ /dev/null
@@ -1 +0,0 @@
-libpvcam.so.2.6
\ No newline at end of file
diff --git a/kinetixSupport/os/linux-x86_64/libpvcam.so.2.6 b/kinetixSupport/os/linux-x86_64/libpvcam.so.2.6
deleted file mode 100755
index 4084bb7..0000000
Binary files a/kinetixSupport/os/linux-x86_64/libpvcam.so.2.6 and /dev/null differ
diff --git a/kinetixSupport/os/linux-x86_64/libpvcamDDI.so b/kinetixSupport/os/linux-x86_64/libpvcamDDI.so
deleted file mode 120000
index 3c1405d..0000000
--- a/kinetixSupport/os/linux-x86_64/libpvcamDDI.so
+++ /dev/null
@@ -1 +0,0 @@
-libpvcamDDI.so.3
\ No newline at end of file
diff --git a/kinetixSupport/os/linux-x86_64/libpvcamDDI.so.3 b/kinetixSupport/os/linux-x86_64/libpvcamDDI.so.3
deleted file mode 120000
index a156f00..0000000
--- a/kinetixSupport/os/linux-x86_64/libpvcamDDI.so.3
+++ /dev/null
@@ -1 +0,0 @@
-libpvcamDDI.so.3.1
\ No newline at end of file
diff --git a/kinetixSupport/os/linux-x86_64/libpvcamDDI.so.3.1 b/kinetixSupport/os/linux-x86_64/libpvcamDDI.so.3.1
deleted file mode 100755
index d672d1d..0000000
Binary files a/kinetixSupport/os/linux-x86_64/libpvcamDDI.so.3.1 and /dev/null differ
diff --git a/kinetixSupport/os/linux-x86_64/master.h b/kinetixSupport/os/linux-x86_64/master.h
deleted file mode 100644
index 8baf983..0000000
--- a/kinetixSupport/os/linux-x86_64/master.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/******************************************************************************/
-/* Copyright (C) Teledyne Photometrics. All rights reserved. */
-/******************************************************************************/
-
-#ifndef _MASTER_H
-#define _MASTER_H
-
-/*
-This allows us to insert the proper compiler flags, in pvcam.h for example,
-to cope properly with C++ definitions.
-*/
-#if defined(__cplusplus)
- /* BORLAND C++ and GCC */
- #define PV_C_PLUS_PLUS
-#elif defined(__cplusplus__)
- /* MICROSOFT C++ */
- #define PV_C_PLUS_PLUS
-#endif
-
-/******************************************************************************/
-/* Platform-specific defined like calling conventions, etc. */
-/******************************************************************************/
-
-#if defined(_WIN32) || defined(_WIN64)
- #define PV_DECL __stdcall
- #define DEPRECATED __declspec(deprecated)
-#elif defined(__linux__)
- #define PV_DECL
- #define DEPRECATED __attribute__((deprecated))
-#elif defined(__APPLE__)
- #error TODO: Declare PV_DECL calling convention
- #error TODO: Declare DEPRECATED definition
-#endif
-
-/******************************************************************************/
-/* PVCAM types */
-/******************************************************************************/
-
-/** General error codes usually returned from functions as rs_bool value. */
-enum
-{
- PV_FAIL = 0,
- PV_OK
-};
-
-typedef unsigned short rs_bool;
-typedef signed char int8;
-typedef unsigned char uns8;
-typedef short int16;
-typedef unsigned short uns16;
-typedef int int32;
-typedef unsigned int uns32;
-typedef float flt32;
-typedef double flt64;
-
-#if defined(_MSC_VER)
- typedef unsigned __int64 ulong64;
- typedef signed __int64 long64;
-#else
- typedef unsigned long long ulong64;
- typedef signed long long long64;
-#endif
-
-/**
-@defgroup grp_pm_deprecated Deprecated symbols
-*/
-
-/**
-@defgroup grp_pm_deprecated_typedefs Deprecated types
-@ingroup grp_pm_deprecated
-These types are included for compatibility reasons.
-@{
-*/
-
-#define PV_PTR_DECL *
-
-typedef void* void_ptr;
-typedef void** void_ptr_ptr;
-
-typedef rs_bool* rs_bool_ptr;
-typedef char* char_ptr;
-typedef int8* int8_ptr;
-typedef uns8* uns8_ptr;
-typedef int16* int16_ptr;
-typedef uns16* uns16_ptr;
-typedef int32* int32_ptr;
-typedef uns32* uns32_ptr;
-typedef flt32* flt32_ptr;
-typedef flt64* flt64_ptr;
-typedef ulong64* ulong64_ptr;
-typedef long64* long64_ptr;
-
-typedef const rs_bool* rs_bool_const_ptr;
-typedef const char* char_const_ptr;
-typedef const int8* int8_const_ptr;
-typedef const uns8* uns8_const_ptr;
-typedef const int16* int16_const_ptr;
-typedef const uns16* uns16_const_ptr;
-typedef const int32* int32_const_ptr;
-typedef const uns32* uns32_const_ptr;
-typedef const flt32* flt32_const_ptr;
-typedef const flt64* flt64_const_ptr;
-typedef const ulong64* ulong64_const_ptr;
-typedef const long64* long64_const_ptr;
-
-/** @} */ /* grp_pm_deprecated_typedefs */
-
-/******************************************************************************/
-/* PVCAM constants */
-/******************************************************************************/
-
-#ifndef FALSE
- #define FALSE PV_FAIL /* FALSE == 0 */
-#endif
-
-#ifndef TRUE
- #define TRUE PV_OK /* TRUE == 1 */
-#endif
-
-#endif /* _MASTER_H */
diff --git a/kinetixSupport/os/windows-x64/pvcam64.lib b/kinetixSupport/os/windows-x64/pvcam64.lib
deleted file mode 100755
index 88cbf5f..0000000
Binary files a/kinetixSupport/os/windows-x64/pvcam64.lib and /dev/null differ
diff --git a/kinetixSupport/pvcam.h b/kinetixSupport/pvcam.h
deleted file mode 100644
index 3b612ad..0000000
--- a/kinetixSupport/pvcam.h
+++ /dev/null
@@ -1,4831 +0,0 @@
-/******************************************************************************/
-/* Copyright (C) Teledyne Photometrics. All rights reserved. */
-/******************************************************************************/
-
-#ifndef _PVCAM_H
-#define _PVCAM_H
-
-/******************************************************************************/
-/* Constants */
-/******************************************************************************/
-
-/** Maximum number of cameras on this system. */
-#define MAX_CAM 16
-
-/******************************************************************************/
-/* Name/ID sizes */
-/******************************************************************************/
-
-/** Maximum length of a camera name including space for null terminator. */
-/** @see #pl_cam_get_name for details. */
-#define CAM_NAME_LEN 32
-/** @warning Deprecated. Use #MAX_PP_NAME_LEN instead. */
-/** @ingroup grp_pm_deprecated */
-#define PARAM_NAME_LEN 32
-/** Maximum length of an error message including space for null terminator. */
-/** @see #pl_error_message for details. */
-#define ERROR_MSG_LEN 255
-/** Maximum length of a sensor chip name including space for null terminator. */
-/** @see #PARAM_CHIP_NAME for details. */
-#define CCD_NAME_LEN 17
-/** Maximum length of a camera serial number string including space for null
- terminator. */
-/** @see #PARAM_HEAD_SER_NUM_ALPHA for details. */
-#define MAX_ALPHA_SER_NUM_LEN 32
-/** Maximum length of a post-processing parameter/feature name including space
- for null terminator. */
-/** @see #PARAM_PP_FEAT_NAME and #PARAM_PP_PARAM_NAME for details. */
-#define MAX_PP_NAME_LEN 32
-/** Maximum length of a system name including space for null terminator. */
-/** @see #PARAM_SYSTEM_NAME for details. */
-#define MAX_SYSTEM_NAME_LEN 32
-/** Maximum length of a vendor name including space for null terminator */
-/** @see #PARAM_VENDOR_NAME for details. */
-#define MAX_VENDOR_NAME_LEN 32
-/** Maximum length of a product name including space for null terminator. */
-/** @see #PARAM_PRODUCT_NAME for details. */
-#define MAX_PRODUCT_NAME_LEN 32
-/** Maximum length of a camera part number including space for null terminator. */
-/** @see #PARAM_CAMERA_PART_NUMBER for details. */
-#define MAX_CAM_PART_NUM_LEN 32
-/** Maximum length of a gain name including space for null terminator. */
-/** @see #PARAM_GAIN_NAME for details. */
-#define MAX_GAIN_NAME_LEN 32
-/** Maximum length of a speed name including space for null terminator. */
-/** @see #PARAM_SPDTAB_NAME for details. */
-#define MAX_SPDTAB_NAME_LEN 32
-/** Maximum length of a gain name including space for null terminator. */
-/** @see #PARAM_CAM_SYSTEMS_INFO for details. */
-#define MAX_CAM_SYSTEMS_INFO_LEN 1024
-
-/******************************************************************************/
-/* Data types */
-/******************************************************************************/
-
-/**
-GUID for #FRAME_INFO structure.
-*/
-typedef struct _TAG_PVCAM_FRAME_INFO_GUID
-{
- uns32 f1;
- uns16 f2;
- uns16 f3;
- uns8 f4[8];
-}
-PVCAM_FRAME_INFO_GUID;
-
-/**
-Structure used to uniquely identify frames in the camera.
-
-Please note that this information is generated by the low-level device driver.
-While the information is accurate for slower acquisitions and most legacy CCD cameras,
-these timestamps are still obtained from the operating systems. For that reason, the
-timestamps may not always represent the time of actual, in-camera acquisition.
-This is especially true for fast sCMOS cameras that implement an internal frame buffer.
-Such cameras often report both the BOF and EOF timestamps as identical numbers with the
-readout time reported as 0.
-For accurate hardware timestamps please see @ref EmbeddedFrameMetadata feature.
-*/
-typedef struct _TAG_FRAME_INFO
-{
- PVCAM_FRAME_INFO_GUID FrameInfoGUID;
- int16 hCam; /**< Handle of the camera that sent this structure. */
- int32 FrameNr; /**< Frame number, 1-based. */
- long64 TimeStamp; /**< Frame EOF (end-of-frame) timestamp. */
- int32 ReadoutTime; /**< Frame readout time. */
- long64 TimeStampBOF; /**< Frame BOF (beginning-of-frame timestamp. */
-}
-FRAME_INFO;
-
-/**
-The modes under which the camera can be opened.
-Used with the function #pl_cam_open.
-Treated as @c #int16 type.
-*/
-typedef enum PL_OPEN_MODES
-{
- /** Default camera open mode. The camera is opened exclusively
- for the calling process. */
- OPEN_EXCLUSIVE
-}
-PL_OPEN_MODES;
-
-/**
-Used with the #PARAM_COOLING_MODE parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_COOL_MODES
-{
- /**
- This is a thermo-electrically (TE)-cooled camera with air or liquid assisted
- cooling.
- */
- NORMAL_COOL,
- /**
- The camera is cryogenically cooled.
- */
- CRYO_COOL,
- /**
- The camera has no cooling or the cooling is optional and should be provided
- by the end user.
- */
- NO_COOL
-}
-PL_COOL_MODES;
-
-/**
-Used with the #PARAM_MPP_CAPABLE parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_MPP_MODES
-{
- MPP_UNKNOWN,
- MPP_ALWAYS_OFF,
- MPP_ALWAYS_ON,
- MPP_SELECTABLE
-}
-PL_MPP_MODES;
-
-/**
-Used with the #PARAM_SHTR_STATUS parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_SHTR_MODES
-{
- SHTR_FAULT,
- SHTR_OPENING,
- SHTR_OPEN,
- SHTR_CLOSING,
- SHTR_CLOSED,
- SHTR_UNKNOWN
-}
-PL_SHTR_MODES;
-
-/**
-Used with the #PARAM_PMODE parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_PMODES
-{
- PMODE_NORMAL,
- PMODE_FT,
- PMODE_MPP,
- PMODE_FT_MPP,
- PMODE_ALT_NORMAL,
- PMODE_ALT_FT,
- PMODE_ALT_MPP,
- PMODE_ALT_FT_MPP
-}
-PL_PMODES;
-
-/**
-Used with the #PARAM_COLOR_MODE parameter ID.
-Treated as @c #int32 type (but should not exceed a value of 255 due to
-#md_frame_header.colorMask)
-*/
-typedef enum PL_COLOR_MODES
-{
- COLOR_NONE = 0, /**< Monochrome camera, no color mask. */
- COLOR_RESERVED = 1, /**< Reserved, do not use. */
- COLOR_RGGB = 2, /**< Color camera with RGGB color mask. */
- COLOR_GRBG, /**< Color camera with GRBG color mask. */
- COLOR_GBRG, /**< Color camera with GBRG color mask. */
- COLOR_BGGR /**< Color camera with BGGR color mask. */
-}
-PL_COLOR_MODES;
-
-/**
-Image format specifies the buffer format in which the pixels are
-transferred. The format should be used together with #PARAM_BIT_DEPTH
-because it specifies only the format of the pixel container, not the
-actual bit depth of the pixel it contains.
-Used with the #PARAM_IMAGE_FORMAT and #PARAM_IMAGE_FORMAT_HOST parameter IDs.
-Treated as @c #int32 type (but should not exceed a value of 255 due to
-#md_frame_header.imageFormat field).
-*/
-typedef enum PL_IMAGE_FORMATS
-{
- PL_IMAGE_FORMAT_MONO16 = 0, /**< 16bit mono, 2 bytes per pixel. */
- PL_IMAGE_FORMAT_BAYER16, /**< 16bit bayer masked image, 2 bytes per pixel. See also #PL_COLOR_MODES. */
- PL_IMAGE_FORMAT_MONO8, /**< 8bit mono, 1 byte per pixel. */
- PL_IMAGE_FORMAT_BAYER8, /**< 8bit bayer masked image, 1 byte per pixel. See also #PL_COLOR_MODES. */
- PL_IMAGE_FORMAT_MONO24, /**< 24bit mono, 3 bytes per pixel. */
- PL_IMAGE_FORMAT_BAYER24, /**< 24bit bayer masked image, 3 bytes per pixel. See also #PL_COLOR_MODES. */
- PL_IMAGE_FORMAT_RGB24, /**< 8bit RGB, 1 byte per sample, 3 bytes per pixel. */
- PL_IMAGE_FORMAT_RGB48, /**< 16bit RGB, 2 bytes per sample, 6 bytes per pixel. */
- PL_IMAGE_FORMAT_RGB72, /**< 24bit RGB, 3 bytes per sample, 9 bytes per pixel. */
- PL_IMAGE_FORMAT_MONO32, /**< 32bit mono, 4 bytes per pixel. */
- PL_IMAGE_FORMAT_BAYER32, /**< 32bit bayer masked image, 4 bytes per pixel. See also #PL_COLOR_MODES. */
- PL_IMAGE_FORMAT_RGB96 /**< 32bit RGB, 4 bytes per sample, 12 bytes per pixel. */
-}
-PL_IMAGE_FORMATS;
-
-/**
-Image compression used to reduce the size of the pixel data. Once the
-image is decompressed, the pixels can be accessed according to #PL_IMAGE_FORMATS type.
-Used with the #PARAM_IMAGE_COMPRESSION parameter ID.
-Treated as @c #int32 type (but should not exceed a value of 255 due to
-#md_frame_header.imageCompression field).
-*/
-typedef enum PL_IMAGE_COMPRESSIONS
-{
- PL_IMAGE_COMPRESSION_NONE = 0, /**< No compression, the pixels can be accessed according to #PL_IMAGE_FORMATS */
- /* Bit-packing compression modes */
- PL_IMAGE_COMPRESSION_RESERVED8 = 8,
- PL_IMAGE_COMPRESSION_BITPACK9, /**< 9-bit packing in 16bit format */
- PL_IMAGE_COMPRESSION_BITPACK10, /**< 10-bit packing in 16bit format */
- PL_IMAGE_COMPRESSION_BITPACK11, /**< 11-bit packing in 16bit format */
- PL_IMAGE_COMPRESSION_BITPACK12, /**< 12-bit packing in 16bit format */
- PL_IMAGE_COMPRESSION_BITPACK13, /**< 13-bit packing in 16bit format */
- PL_IMAGE_COMPRESSION_BITPACK14, /**< 14-bit packing in 16bit format */
- PL_IMAGE_COMPRESSION_BITPACK15, /**< 15-bit packing in 16bit format */
- PL_IMAGE_COMPRESSION_RESERVED16 = 16,
- PL_IMAGE_COMPRESSION_BITPACK17, /**< 17-bit packing in 24bit format */
- PL_IMAGE_COMPRESSION_BITPACK18, /**< 18-bit packing in 24bit format */
- PL_IMAGE_COMPRESSION_RESERVED24 = 24,
- PL_IMAGE_COMPRESSION_RESERVED32 = 32,
- /* Other compression modes below */
-}
-PL_IMAGE_COMPRESSIONS;
-
-/**
-Frame rotation modes. Used with the #PARAM_HOST_FRAME_ROTATE parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_FRAME_ROTATE_MODES
-{
- PL_FRAME_ROTATE_MODE_NONE = 0, /**< No rotation */
- PL_FRAME_ROTATE_MODE_90CW, /**< 90 degrees clockwise */
- PL_FRAME_ROTATE_MODE_180CW, /**< 180 degrees clockwise */
- PL_FRAME_ROTATE_MODE_270CW /**< 270 degrees clockwise */
-}
-PL_FRAME_ROTATE_MODES;
-
-/**
-Frame flip modes. Used with the #PARAM_HOST_FRAME_FLIP parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_FRAME_FLIP_MODES
-{
- PL_FRAME_FLIP_MODE_NONE = 0, /**< No flip */
- PL_FRAME_FLIP_MODE_X, /**< Horizontal flip, mirroring along x-axis */
- PL_FRAME_FLIP_MODE_Y, /**< Vertical flip, mirroring along y-axis */
- PL_FRAME_FLIP_MODE_XY /**< Horizontal and vertical flip */
-}
-PL_FRAME_FLIP_MODES;
-
-/**
-Frame summing formats. Used with the #PARAM_HOST_FRAME_SUMMING_FORMAT parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_FRAME_SUMMING_FORMATS
-{
- PL_FRAME_SUMMING_FORMAT_16_BIT = 0,
- PL_FRAME_SUMMING_FORMAT_24_BIT,
- PL_FRAME_SUMMING_FORMAT_32_BIT
-}
-PL_FRAME_SUMMING_FORMATS;
-
-/**
-Used with the function #pl_get_param.
-Treated as @c #int16 type.
-*/
-typedef enum PL_PARAM_ATTRIBUTES
-{
- /**
- Current value.
- For the enumerated type the value returned here is the value
- assigned to current enum item, not the item index.
- The data type for this attribute is defined by #ATTR_TYPE.
- */
- ATTR_CURRENT,
- /**
- Number of possible values for enumerated and array data types.
- If the data type returned by #ATTR_TYPE is #TYPE_CHAR_PTR (and not an
- enumerated type), then the #ATTR_COUNT is the number of characters in the
- string including a space for NULL terminator. If 0 or 1 is returned,
- #ATTR_COUNT is a scalar (single element) of the following data types:
- #TYPE_INT8, #TYPE_UNS8, #TYPE_INT16, #TYPE_UNS16, #TYPE_INT32, #TYPE_UNS32,
- #TYPE_INT64, #TYPE_UNS64, #TYPE_FLT64 and #TYPE_BOOLEAN.
- The data type for this attribute is #TYPE_UNS32.
- */
- ATTR_COUNT,
- /**
- Data type of parameter.
- Data types used by #pl_get_param with attribute type (#ATTR_TYPE) are:
-
- | Value | Type |
- |----------------------------|--------------------|
- | TYPE_BOOLEAN | rs_bool |
- | TYPE_INT8 | int8 |
- | TYPE_UNS8 | uns8 |
- | TYPE_INT16 | int16 |
- | TYPE_UNS16 | uns16 |
- | TYPE_INT32 | int32 |
- | TYPE_UNS32 | uns32 |
- | TYPE_INT64 | long64 |
- | TYPE_UNS64 | ulong64 |
- | TYPE_FLT32 | flt32 |
- | TYPE_FLT64 | flt64 |
- | TYPE_ENUM | int32 |
- | TYPE_CHAR_PTR | char* |
- | TYPE_VOID_PTR | void* |
- | TYPE_VOID_PTR_PTR | void** |
- | TYPE_SMART_STREAM_TYPE | smart_stream_type |
- | TYPE_SMART_STREAM_TYPE_PTR | smart_stream_type* |
- | TYPE_RGN_TYPE | rgn_type |
- | TYPE_RGN_TYPE_PTR | rgn_type* |
- | TYPE_RGN_LIST_TYPE | reserved |
- | TYPE_RGN_LIST_TYPE_PTR | reserved |
-
- The data type for this attribute is #TYPE_UNS16.
- */
- ATTR_TYPE,
- /**
- Minimum value. The value is only valid for the following data types:
- #TYPE_INT8, #TYPE_UNS8, #TYPE_INT16, #TYPE_UNS16, #TYPE_INT32, #TYPE_UNS32,
- #TYPE_INT64, #TYPE_UNS64, #TYPE_FLT64 and #TYPE_BOOLEAN.
- The data type for this attribute is defined by #ATTR_TYPE.
- */
- ATTR_MIN,
- /**
- Maximum value. The value is only valid for the following data types:
- #TYPE_INT8, #TYPE_UNS8, #TYPE_INT16, #TYPE_UNS16, #TYPE_INT32, #TYPE_UNS32,
- #TYPE_INT64, #TYPE_UNS64, #TYPE_FLT64 and #TYPE_BOOLEAN.
- The data type for this attribute is defined by #ATTR_TYPE.
- */
- ATTR_MAX,
- /**
- Default value. This value should be equal to the current value loaded
- by camera on power up. For the enumerated type, the value returned here
- is the value assigned to the current enum item, not the item index.
- The data type for this attribute is defined by #ATTR_TYPE.
- */
- ATTR_DEFAULT,
- /**
- Step size for values (zero if non-linear or without increment).
- The value is only valid for the following data types:
- #TYPE_INT8, #TYPE_UNS8, #TYPE_INT16, #TYPE_UNS16, #TYPE_INT32, #TYPE_UNS32,
- #TYPE_INT64, #TYPE_UNS64 and #TYPE_FLT64. The value for this attribute
- is never negative. If the value is non-zero, valid values can be easily
- calculated. The first valid value is the value reported for the attribute #ATTR_MIN,
- the second value is the minimum value plus increment (#ATTR_INCREMENT),
- and so on up to the maximum value (#ATTR_MAX).
- The data type for this attribute is defined by #ATTR_TYPE.
- */
- ATTR_INCREMENT,
- /**
- Reports if the parameter with ID param_id can be written to and/or read from or
- in case it cannot be written to and/or read, it tells whether a feature exists.
- If the param_id can be either written to or read from, the next step is to determine
- its data type.
- The access types are enumerated:
- #ACC_EXIST_CHECK_ONLY #ACC_READ_ONLY
- #ACC_WRITE_ONLY #ACC_READ_WRITE
- The data type for this attribute is #TYPE_UNS16.
- */
- ATTR_ACCESS,
- /**
- Feature available with attached hardware and software.
- The data type for this attribute is #TYPE_BOOLEAN.
- */
- ATTR_AVAIL,
- /**
- Reports if the parameter can be accessed during active acquisition.
- The data type for this attribute is #TYPE_BOOLEAN.
- */
- ATTR_LIVE
-}
-PL_PARAM_ATTRIBUTES;
-
-/**
-Used with the function #pl_get_param and #ATTR_ACCESS.
-Treated as @c #uns16 type.
-*/
-typedef enum PL_PARAM_ACCESS
-{
- /** Parameter is read only, #pl_set_param for such parameter will fail. */
- ACC_READ_ONLY = 1,
- /** Parameter can be read and written. */
- ACC_READ_WRITE,
- /** Only parameter availability can be checked. */
- ACC_EXIST_CHECK_ONLY,
- /** Parameter can only be written. */
- ACC_WRITE_ONLY
-}
-PL_PARAM_ACCESS;
-
-/**
-Used with the #PARAM_IO_TYPE parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_IO_TYPE
-{
- IO_TYPE_TTL, /**< The bit pattern written to this address.*/
- IO_TYPE_DAC /**< The value of the desired analog output written to the DAC on this address.*/
-}
-PL_IO_TYPE;
-
-/**
-Used with the #PARAM_IO_DIRECTION parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_IO_DIRECTION
-{
- IO_DIR_INPUT, /**< The port configured as input. */
- IO_DIR_OUTPUT, /**< The port configured as output. */
- IO_DIR_INPUT_OUTPUT /**< The port configured as bi-directional. */
-}
-PL_IO_DIRECTION;
-
-
-/**
-Used with the #PARAM_READOUT_PORT parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_READOUT_PORTS
-{
- READOUT_PORT_0 = 0,
- READOUT_PORT_1,
- READOUT_PORT_2,
- READOUT_PORT_3
-}
-PL_READOUT_PORTS;
-
-/**
-Used with the #PARAM_CLEAR_MODE parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_CLEAR_MODES
-{
- /**
- Don't ever clear the sensor. Useful for performing a readout after an
- exposure has been aborted.
- */
- CLEAR_NEVER,
- /**
- Clear the sensor automatically. Modern cameras control the sensor clearing
- as needed. Some cameras will report only this clearing mode. For backward
- compatibility with existing applications, the 'auto' clearing mode is reported
- under the same value as the 'clear never' mode.
- */
- CLEAR_AUTO = CLEAR_NEVER,
- /**
- Before each exposure, clears the sensor the number of times specified by the
- @c clear_cycles variable. This mode can be used in a sequence. It is most
- useful when there is a considerable amount of time between exposures.
- */
- CLEAR_PRE_EXPOSURE,
- /**
- Before each sequence, clears the sensor the number of times specified by the
- @c clear_cycles variable. If no sequence is set up, this mode behaves as if
- the sequence had one exposure. The result is the same as when using
- #CLEAR_PRE_EXPOSURE.
- */
- CLEAR_PRE_SEQUENCE,
- /**
- Clears continuously after the sequence ends. The camera continues clearing
- until a new exposure is set up or started, the abort command is sent, the
- speed entry number is changed, or the camera is reset.
- */
- CLEAR_POST_SEQUENCE,
- /**
- Clears @c clear_cycles times before each sequence and clears continuously
- after the sequence ends. The camera continues clearing until a new exposure
- is set up or started, the abort command is sent, the speed entry number is
- changed, or the camera is reset.
- */
- CLEAR_PRE_POST_SEQUENCE,
- /**
- Clears @c clear_cycles times before each exposure and clears continuously
- after the sequence ends. The camera continues clearing until a new exposure
- is set up or started, the abort command is sent, the speed entry number is
- changed, or the camera is reset.
- */
- CLEAR_PRE_EXPOSURE_POST_SEQ,
- /**
- Leverages the global-reset feature on supported sensors.
- */
- CLEAR_GLOBAL_RESET,
-
- /* Should be the last and never used value. */
- MAX_CLEAR_MODE
-}
-PL_CLEAR_MODES;
-
-/**
-Used with the #PARAM_SHTR_OPEN_MODE parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_SHTR_OPEN_MODES
-{
- /**
- The shutter closes before the exposure and stays closed during the exposure.
- */
- OPEN_NEVER,
- /**
- Opens the shutter with each exposure. Normal mode.
- */
- OPEN_PRE_EXPOSURE,
- /**
- Opens the shutter at the start of each sequence. Useful for frame transfer
- and external strobe devices.
- */
- OPEN_PRE_SEQUENCE,
- /**
- If using a triggered mode, this function causes the shutter to open before
- the external trigger is armed. If using a non-triggered mode, this function
- operates identically to #OPEN_PRE_EXPOSURE.
- */
- OPEN_PRE_TRIGGER,
- /**
- Sends no signals to open or close the shutter. Useful for frame transfer
- when you want to open the shutter and leave it open (see #pl_exp_abort).
- */
- OPEN_NO_CHANGE
-}
-PL_SHTR_OPEN_MODES;
-
-/**
-Used with the #PARAM_EXPOSURE_MODE parameter ID.
-Treated as @c #int32 type.
-
-Used with the functions #pl_exp_setup_cont and #pl_exp_setup_seq.
-Treated as @c #int16 type.
-*/
-typedef enum PL_EXPOSURE_MODES
-{
- /**
- Causes the exposure to use the internal timer to control
- the exposure duration.
- */
- TIMED_MODE,
- /**
- Accepts the external trigger as exposure start signal.
- The exposure duration is still controlled by the internal timer.
- */
- STROBED_MODE,
- /**
- Accepts the external trigger as exposure start and duration control
- signal.
- */
- BULB_MODE,
- /**
- Accepts the external trigger as acquisition sequence start signal.
- Each exposure in the sequence then uses the internal timer to control the
- exposure duration. The software will look for one trigger only and then
- proceed with the sequence.
- */
- TRIGGER_FIRST_MODE,
- /** @warning Deprecated. Not supported by any modern camera. */
- FLASH_MODE,
- /**
- The duration of the exposure can be controlled by software dynamically
- without requiring the acquisition to be reconfigured with #pl_exp_setup_seq.
- Use #pl_set_param with #PARAM_EXP_TIME to set new exposure time before calling
- #pl_exp_start_seq.
- */
- VARIABLE_TIMED_MODE,
- /** @warning Deprecated. Not supported by any modern camera. */
- INT_STROBE_MODE,
- MAX_EXPOSE_MODE = 7,
-
- /*
- Extended EXPOSURE modes used with #PARAM_EXPOSURE_MODE when
- camera dynamically reports its capabilities.
- The "7" in each of these calculations comes from the previous
- definition of #MAX_EXPOSE_MODE when this file was defined.
- */
-
- /**
- Internal camera trigger, camera controls the start and the duration
- of the exposure. This mode is similar to the legacy #TIMED_MODE.
- This value allows the exposure mode to be "ORed" with #PL_EXPOSE_OUT_MODES
- for #pl_exp_setup_seq and #pl_exp_setup_cont functions.
- */
- EXT_TRIG_INTERNAL = (7 + 0) << 8,
- /**
- Trigger controls the start of first exposure. Subsequent exposures are
- controlled by the camera internal timer. This mode is similar to the legacy
- #TRIGGER_FIRST_MODE.
- This value allows the exposure mode to be "ORed" with #PL_EXPOSE_OUT_MODES
- for #pl_exp_setup_seq and #pl_exp_setup_cont functions.
- */
- EXT_TRIG_TRIG_FIRST = (7 + 1) << 8,
- /**
- Trigger controls the start of each exposure. This mode is similar to
- the legacy #STROBED_MODE.
- This value allows the exposure mode to be "ORed" with #PL_EXPOSE_OUT_MODES
- for #pl_exp_setup_seq and #pl_exp_setup_cont functions.
- */
- EXT_TRIG_EDGE_RISING = (7 + 2) << 8,
- /**
- Trigger controls the start and duration of each exposure. This mode is similar to
- the legacy #BULB_MODE.
- This value allows the exposure mode to be "ORed" with #PL_EXPOSE_OUT_MODES
- for #pl_exp_setup_seq and #pl_exp_setup_cont functions.
- */
- EXT_TRIG_LEVEL = (7 + 3) << 8,
- /**
- Exposure is triggered with software trigger using the #pl_exp_trigger call.
- Similarly to #EXT_TRIG_TRIG_FIRST, the trigger starts the first exposure only.
- Subsequent exposures are controlled by the camera internal timer.
- This value allows the exposure mode to be "ORed" with #PL_EXPOSE_OUT_MODES
- for #pl_exp_setup_seq and #pl_exp_setup_cont functions.
- */
- EXT_TRIG_SOFTWARE_FIRST = (7 + 4) << 8,
- /**
- Exposure is triggered with software trigger using the #pl_exp_trigger call.
- Similarly to #EXT_TRIG_EDGE_RISING, each call to #pl_exp_trigger triggers one exposure.
- This value allows the exposure mode to be "ORed" with #PL_EXPOSE_OUT_MODES
- for #pl_exp_setup_seq and #pl_exp_setup_cont functions.
- */
- EXT_TRIG_SOFTWARE_EDGE = (7 + 5) << 8,
- /**
- Trigger controls the start and duration of each exposure. This mode allows
- overlapping exposure and readout.
- This value allows the exposure mode to be "ORed" with #PL_EXPOSE_OUT_MODES
- for #pl_exp_setup_seq and #pl_exp_setup_cont functions.
- */
- EXT_TRIG_LEVEL_OVERLAP = (7 + 6) << 8,
- /**
- A special case of a level trigger where the first trigger pulse starts
- the exposure and the next trigger pulse starts the readout of that exposure.
- For N frames specified in the software, there must be N+1 trigger pulses in the
- series with individual exposure times being equal to the time interval between
- the trigger pulses.
- This value allows the exposure mode to be "ORed" with #PL_EXPOSE_OUT_MODES
- for #pl_exp_setup_seq and #pl_exp_setup_cont functions.
- */
- EXT_TRIG_LEVEL_PULSED = (7 + 7) << 8
-}
-PL_EXPOSURE_MODES;
-
-/**
-Used with #pl_exp_trigger function.
-Treated as @c #uns32 type.
-*/
-typedef enum PL_SW_TRIG_STATUSES
-{
- /**
- The camera has accepted the trigger signal and started exposing.
- */
- PL_SW_TRIG_STATUS_TRIGGERED = 0,
- /**
- The camera was unable to accept the trigger due to an ongoing exposure.
- */
- PL_SW_TRIG_STATUS_IGNORED
-}
-PL_SW_TRIG_STATUSES;
-
-/**
-Used with the #PARAM_EXPOSE_OUT_MODE parameter ID.
-Build the values for the Expose Out modes that are "ORed" with the trigger
-modes when setting up the script.
-Treated as @c #int32 type.
-*/
-typedef enum PL_EXPOSE_OUT_MODES
-{
- /**
- Expose Out high when first row is exposed (from first row begin to first row end)
- */
- EXPOSE_OUT_FIRST_ROW = 0,
- /**
- Expose Out high when all rows are exposed simultaneously (from last row begin to first row end).
- The duration of the signal equals the exposure value entered which means the actual exposure
- time is longer - use this mode with triggered light source only.
- */
- EXPOSE_OUT_ALL_ROWS,
- /**
- Expose Out high when any row is exposed (from first row begin to last row end)
- */
- EXPOSE_OUT_ANY_ROW,
- /**
- Similar to ALL_ROWS. Actual exposure duration matches the value entered, but the Expose Out is
- only high while all rows are exposing simultaneously.
- If the exposure time entered is shorter than the readout time, the Expose Out signal will
- remain at low level.
- */
- EXPOSE_OUT_ROLLING_SHUTTER,
- /**
- Expose Out signal pulses for every line readout as configured via the #PARAM_SCAN_MODE
- and related parameters. If #PARAM_SCAN_MODE is not available or enabled, the Expose Out
- behaves as #EXPOSE_OUT_ANY_ROW.
- */
- EXPOSE_OUT_LINE_TRIGGER,
- /**
- Similar to EXPOSE_OUT_ROLLING_SHUTTER but using sensor's global shutter mode.
- */
- EXPOSE_OUT_GLOBAL_SHUTTER,
-
- /* Should be the last and never used value. */
- MAX_EXPOSE_OUT_MODE
-}
-PL_EXPOSE_OUT_MODES;
-
-/**
-Used with the #PARAM_FAN_SPEED_SETPOINT parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_FAN_SPEEDS
-{
- FAN_SPEED_HIGH, /**< Full fan speed, the default value for most cameras. */
- FAN_SPEED_MEDIUM, /**< Medium fan speed. */
- FAN_SPEED_LOW, /**< Low fan speed. */
- FAN_SPEED_OFF /**< Fan is turned off. */
-}
-PL_FAN_SPEEDS;
-
-/**
-Used with the #PARAM_TRIGTAB_SIGNAL parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_TRIGTAB_SIGNALS
-{
- PL_TRIGTAB_SIGNAL_EXPOSE_OUT /**< Control the expose out hardware signal multiplexing */
-}
-PL_TRIGTAB_SIGNALS;
-
-/**
-Used with the #PARAM_FRAME_DELIVERY_MODE parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_FRAME_DELIVERY_MODES
-{
- /**
- Camera will sample and deliver the frames as fast as possible while considering
- the interface bandwidth. This mode may result in uneven frame intervals, but
- possibly higher frame rates.
- */
- PL_FRAME_DELIVERY_MODE_MAX_FPS = 0,
- /**
- Camera will sample and deliver the frames in constant intervals. In this mode the
- camera samples the sensor in constant time intervals but if the interface is busy and
- all frame buffers are full, the frame will be skipped and the sensor will be sampled
- in the next interval (unlike the MAX_FPS mode where the sensor would be sampled immediately
- once the buffer/interface is unclogged). This results in even frame intervals, but
- there might be gaps in between the frame deliveries and thus reduced frame rate.
- */
- PL_FRAME_DELIVERY_MODE_CONSTANT_INTERVALS
-}
-PL_FRAME_DELIVERY_MODES;
-
-/**
-Used with the #PARAM_CAM_INTERFACE_TYPE parameter ID.
-
-32-bit enum where:
-- Upper 24 bits are interface classes, flags, 1bit = one class, 24 possible classes.
-- Lower 8 bits are interface revisions with 254 possible revisions per each interface class.
-
-Usage:
-@code{.cpp}
- if (attrCurrent & PL_CAM_IFC_TYPE_USB)
- // The camera is running on USB, any USB
- if (attrCurrent & PL_CAM_IFC_TYPE_USB && type >= PL_CAM_IFC_TYPE_USB_3_0)
- // The camera is running on USB, the camera is running on at least USB 3.0
- if (attrCurrent == PL_CAM_IFC_TYPE_USB_3_1)
- // The camera is running exactly on USB 3.1
-@endcode
-
-Treated as @c #int32 type.
-*/
-typedef enum PL_CAM_INTERFACE_TYPES
-{
- PL_CAM_IFC_TYPE_UNKNOWN = 0, /**< Unrecognized type. */
-
- PL_CAM_IFC_TYPE_1394 = 0x100, /**< A generic 1394 in case we cannot identify the sub type. */
- PL_CAM_IFC_TYPE_1394_A, /**< FireWire 400. */
- PL_CAM_IFC_TYPE_1394_B, /**< FireWire 800. */
-
- PL_CAM_IFC_TYPE_USB = 0x200, /**< A generic USB in case we cannot identify the sub type. */
- PL_CAM_IFC_TYPE_USB_1_1, /**< FullSpeed (12 Mbit/s). */
- PL_CAM_IFC_TYPE_USB_2_0, /**< HighSpeed (480 Mbit/s). */
- PL_CAM_IFC_TYPE_USB_3_0, /**< SuperSpeed (5 Gbit/s). */
- PL_CAM_IFC_TYPE_USB_3_1, /**< SuperSpeed+ (10 Gbit/s). */
-
- PL_CAM_IFC_TYPE_PCI = 0x400, /**< A generic PCI interface. */
- PL_CAM_IFC_TYPE_PCI_LVDS, /**< LVDS PCI interface. */
-
- PL_CAM_IFC_TYPE_PCIE = 0x800, /**< A generic PCIe interface. */
- PL_CAM_IFC_TYPE_PCIE_LVDS, /**< LVDS PCIe interface. */
- PL_CAM_IFC_TYPE_PCIE_X1, /**< Single channel PCIe interface. */
- PL_CAM_IFC_TYPE_PCIE_X4, /**< 4 channel PCIe interface. */
- PL_CAM_IFC_TYPE_PCIE_X8, /**< 8 channel PCIe interface. */
-
- PL_CAM_IFC_TYPE_VIRTUAL = 0x1000, /**< Base for all Virtual camera interfaces. */
-
- PL_CAM_IFC_TYPE_ETHERNET = 0x2000 /**< Base for all Ethernet-based cameras. */
-}
-PL_CAM_INTERFACE_TYPES;
-
-/**
-Used with the #PARAM_CAM_INTERFACE_MODE parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_CAM_INTERFACE_MODES
-{
- PL_CAM_IFC_MODE_UNSUPPORTED = 0, /**< Interface is not supported. */
- PL_CAM_IFC_MODE_CONTROL_ONLY, /**< Control commands only. */
- PL_CAM_IFC_MODE_IMAGING /**< Full imaging. */
-}
-PL_CAM_INTERFACE_MODES;
-
-/**
-Used with the #PARAM_CENTROIDS_MODE parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_CENTROIDS_MODES
-{
- PL_CENTROIDS_MODE_LOCATE = 0, /**< Locate mode (PrimeLocate) */
- PL_CENTROIDS_MODE_TRACK, /**< Particle Tracking mode */
- PL_CENTROIDS_MODE_BLOB /**< Blob Detection mode */
-}
-PL_CENTROIDS_MODES;
-
-
-/**
-Used with the #PARAM_SCAN_MODE parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_SCAN_MODES
-{
- /** Normal camera imaging and the default mode of operation, the FPGA
- reads each row in succession without inserting additional delays between rows */
- PL_SCAN_MODE_AUTO = 0,
- /** This mode allows the user to configure the #PARAM_SCAN_LINE_DELAY.
- The #PARAM_SCAN_WIDTH will become read-only and its value will be
- auto-calculated and reported by the camera */
- PL_SCAN_MODE_PROGRAMMABLE_LINE_DELAY,
- /** This mode allows the user to configure the #PARAM_SCAN_WIDTH.
- The #PARAM_SCAN_LINE_DELAY will become read-only and its value will be
- auto-calculated and reported by the camera */
- PL_SCAN_MODE_PROGRAMMABLE_SCAN_WIDTH
-}
-PL_SCAN_MODES;
-
-
-/**
-Used with the #PARAM_SCAN_DIRECTION parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_SCAN_DIRECTIONS
-{
- /** Default mode. The camera starts reading from top to bottom */
- PL_SCAN_DIRECTION_DOWN = 0,
- /** Camera starts reading from bottom to top */
- PL_SCAN_DIRECTION_UP,
- /** Camera initially starts reading from top to bottom
- and then switches automatically to read out from bottom to top.
- The direction alternates between frames down-up-down-up and so on.
- */
- PL_SCAN_DIRECTION_DOWN_UP
-}
-PL_SCAN_DIRECTIONS;
-
-/**
-Used with the #PARAM_PP_FEAT_ID parameter ID.
-Treated as @c #uns16 type.
-*/
-typedef enum PP_FEATURE_IDS
-{
- PP_FEATURE_RING_FUNCTION,
- PP_FEATURE_BIAS,
- PP_FEATURE_BERT, /**< Background Event Reduction Technology */
- PP_FEATURE_QUANT_VIEW,
- PP_FEATURE_BLACK_LOCK,
- PP_FEATURE_TOP_LOCK,
- PP_FEATURE_VARI_BIT,
- PP_FEATURE_RESERVED, /**< Should not be used at any time moving forward. */
- PP_FEATURE_DESPECKLE_BRIGHT_HIGH,
- PP_FEATURE_DESPECKLE_DARK_LOW,
- PP_FEATURE_DEFECTIVE_PIXEL_CORRECTION,
- PP_FEATURE_DYNAMIC_DARK_FRAME_CORRECTION,
- PP_FEATURE_HIGH_DYNAMIC_RANGE,
- PP_FEATURE_DESPECKLE_BRIGHT_LOW,
- PP_FEATURE_DENOISING, /**< PrimeEnhance feature*/
- PP_FEATURE_DESPECKLE_DARK_HIGH,
- PP_FEATURE_ENHANCED_DYNAMIC_RANGE,
- PP_FEATURE_FRAME_SUMMING,
- PP_FEATURE_LARGE_CLUSTER_CORRECTION,
- PP_FEATURE_FRAME_AVERAGING,
- PP_FEATURE_MAX
-}
-PP_FEATURE_IDS;
-
-/**
-Used with the #PARAM_PP_PARAM_ID parameter ID.
-*/
-#define PP_MAX_PARAMETERS_PER_FEATURE 10
-
-/**
-Used with the #PARAM_PP_PARAM_ID parameter ID.
-Treated as @c #uns16 type.
-*/
-typedef enum PP_PARAMETER_IDS
-{
- PP_PARAMETER_RF_FUNCTION = (PP_FEATURE_RING_FUNCTION * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_BIAS_ENABLED = (PP_FEATURE_BIAS * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_BIAS_LEVEL,
- PP_FEATURE_BERT_ENABLED = (PP_FEATURE_BERT * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_BERT_THRESHOLD,
- PP_FEATURE_QUANT_VIEW_ENABLED = (PP_FEATURE_QUANT_VIEW * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_QUANT_VIEW_E,
- PP_FEATURE_BLACK_LOCK_ENABLED = (PP_FEATURE_BLACK_LOCK * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_BLACK_LOCK_BLACK_CLIP,
- PP_FEATURE_TOP_LOCK_ENABLED = (PP_FEATURE_TOP_LOCK * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_TOP_LOCK_WHITE_CLIP,
- PP_FEATURE_VARI_BIT_ENABLED = (PP_FEATURE_VARI_BIT * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_VARI_BIT_BIT_DEPTH,
- PP_FEATURE_DESPECKLE_BRIGHT_HIGH_ENABLED = (PP_FEATURE_DESPECKLE_BRIGHT_HIGH * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_DESPECKLE_BRIGHT_HIGH_THRESHOLD,
- PP_FEATURE_DESPECKLE_BRIGHT_HIGH_MIN_ADU_AFFECTED,
- PP_FEATURE_DESPECKLE_DARK_LOW_ENABLED = (PP_FEATURE_DESPECKLE_DARK_LOW * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_DESPECKLE_DARK_LOW_THRESHOLD,
- PP_FEATURE_DESPECKLE_DARK_LOW_MAX_ADU_AFFECTED,
- PP_FEATURE_DEFECTIVE_PIXEL_CORRECTION_ENABLED = (PP_FEATURE_DEFECTIVE_PIXEL_CORRECTION * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_DYNAMIC_DARK_FRAME_CORRECTION_ENABLED = (PP_FEATURE_DYNAMIC_DARK_FRAME_CORRECTION * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_HIGH_DYNAMIC_RANGE_ENABLED = (PP_FEATURE_HIGH_DYNAMIC_RANGE * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_DESPECKLE_BRIGHT_LOW_ENABLED = (PP_FEATURE_DESPECKLE_BRIGHT_LOW * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_DESPECKLE_BRIGHT_LOW_THRESHOLD,
- PP_FEATURE_DESPECKLE_BRIGHT_LOW_MAX_ADU_AFFECTED,
- PP_FEATURE_DENOISING_ENABLED = (PP_FEATURE_DENOISING * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_DENOISING_NO_OF_ITERATIONS,
- PP_FEATURE_DENOISING_GAIN,
- PP_FEATURE_DENOISING_OFFSET,
- PP_FEATURE_DENOISING_LAMBDA,
- PP_FEATURE_DESPECKLE_DARK_HIGH_ENABLED = (PP_FEATURE_DESPECKLE_DARK_HIGH * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_DESPECKLE_DARK_HIGH_THRESHOLD,
- PP_FEATURE_DESPECKLE_DARK_HIGH_MIN_ADU_AFFECTED,
- PP_FEATURE_ENHANCED_DYNAMIC_RANGE_ENABLED = (PP_FEATURE_ENHANCED_DYNAMIC_RANGE * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_FRAME_SUMMING_ENABLED = (PP_FEATURE_FRAME_SUMMING * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_FRAME_SUMMING_COUNT,
- PP_FEATURE_FRAME_SUMMING_32_BIT_MODE,
- PP_FEATURE_LARGE_CLUSTER_CORRECTION_ENABLED = (PP_FEATURE_LARGE_CLUSTER_CORRECTION * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_FRAME_AVERAGING_ENABLED = (PP_FEATURE_FRAME_AVERAGING * PP_MAX_PARAMETERS_PER_FEATURE),
- PP_FEATURE_FRAME_AVERAGING_COUNT_FACTOR,
- PP_PARAMETER_ID_MAX
-}
-PP_PARAMETER_IDS;
-
-/**
-Used with the #PARAM_SMART_STREAM_EXP_PARAMS and #PARAM_SMART_STREAM_DLY_PARAMS
-parameter IDs and #pl_create_smart_stream_struct and
-#pl_release_smart_stream_struct functions.
-*/
-typedef struct smart_stream_type
-{
- uns16 entries; /**< The number of entries in the array. */
- uns32* params; /**< The actual S.M.A.R.T. stream parameters. */
-}
-smart_stream_type;
-
-/**
-Used with the #PARAM_SMART_STREAM_MODE parameter ID.
-Treated as @c #uns16 type.
-*/
-typedef enum PL_SMT_MODES
-{
- SMTMODE_ARBITRARY_ALL = 0, /**< Smart streaming values can be arbitrary. */
- SMTMODE_MAX
-}
-PL_SMT_MODES;
-
-/**
-Used with the functions #pl_exp_check_status, #pl_exp_check_cont_status and
-#pl_exp_check_cont_status_ex.
-Treated as @c #int16 type.
-*/
-typedef enum PL_IMAGE_STATUSES
-{
- /** The system is @b idle, no data is expected. If any data arrives, it will be discarded. */
- READOUT_NOT_ACTIVE,
- /**
- The data collection routines are @b active. They are waiting for data to arrive,
- but none has arrived yet.
- */
- EXPOSURE_IN_PROGRESS,
- /** The data collection routines are @b active. The data has started to arrive. */
- READOUT_IN_PROGRESS,
- /** Frame has been read out and is available in acquisition buffer. */
- READOUT_COMPLETE,
- /** New camera status indicating at least one frame is available. */
- FRAME_AVAILABLE = READOUT_COMPLETE,
- /** Something went wrong. The function returns a #PV_FAIL and #pl_error_code is set. */
- READOUT_FAILED,
- /** @warning Deprecated. Not used by PVCAM. */
- ACQUISITION_IN_PROGRESS,
-
- /* Should be the last and never used value. */
- MAX_CAMERA_STATUS
-}
-PL_IMAGE_STATUSES;
-
-/**
-Used with the #pl_exp_abort function. The CCS (Camera Control Subsystem) modes
-are applicable with CCD cameras only. With latest sCMOS cameras use the
-#CCS_HALT mode.
-
-Treated as @c #int16 type.
-*/
-typedef enum PL_CCS_ABORT_MODES
-{
- /**
- Do not alter the current state of the CCS. Use only if instructed
- by the camera vendor.
- */
- CCS_NO_CHANGE = 0,
- /**
- Halt all CCS activity and put the CCS into the idle state.
- Recommended with sCMOS cameras and with most acquisitions with CCD
- sensors when using pre-sequence clearing.
- */
- CCS_HALT,
- /**
- Close the shutter, then halt all CCS activity and put the CCS
- into the idle state.
- */
- CCS_HALT_CLOSE_SHTR,
- /**
- Put the CCS into the continuous clearing state. Recommended for
- CCD sensors where continuous clearing is required.
- */
- CCS_CLEAR,
- /**
- Close the shutter, then put the CCS into the continuous clearing state.
- */
- CCS_CLEAR_CLOSE_SHTR,
- /**
- Open the shutter, then halt all CCS activity and put the CCS into
- the idle state.
- */
- CCS_OPEN_SHTR,
- /**
- Open the shutter, then put the CCS into the continuous clearing state.
- */
- CCS_CLEAR_OPEN_SHTR
-}
-PL_CCS_ABORT_MODES;
-
-/**
-Used with the #PARAM_BOF_EOF_ENABLE parameter ID.
-Treated as @c #int32 type.
-*/
-typedef enum PL_IRQ_MODES
-{
- NO_FRAME_IRQS = 0, /**< Both counters are disabled. */
- BEGIN_FRAME_IRQS, /**< Counts BOF events. */
- END_FRAME_IRQS, /**< Counts EOF events. */
- BEGIN_END_FRAME_IRQS /**< Provides a sum of BOF and EOF event. */
-}
-PL_IRQ_MODES;
-
-/**
-Used with the function #pl_exp_setup_cont.
-Treated as @c #int16 type.
-*/
-typedef enum PL_CIRC_MODES
-{
- /**
- Used internally by PVCAM for sequence acquisitions only.
- @internal
- */
- CIRC_NONE = 0,
- /**
- In this circular buffer mode the oldest frame in buffer is automatically
- replaced with new frame. No error is indicated by any function when this
- occurs.
- */
- CIRC_OVERWRITE,
- /**
- In non-overwrite mode the oldest frame in circular buffer is also replaced
- with new frame as in #CIRC_OVERWRITE mode (e.g. via DMA write from camera),
- but PVCAM recognizes it and returns a buffer overrun error in the next
- call of #pl_exp_get_oldest_frame or #pl_exp_get_latest_frame_ex.
- */
- CIRC_NO_OVERWRITE
-}
-PL_CIRC_MODES;
-
-/**
-Used with the #PARAM_EXP_RES parameter ID.
-The resolution defines units in which the exposure time is passed to #pl_exp_setup_seq
-and #pl_exp_setup_cont calls and for the Variable Timed Mode (#PARAM_EXP_TIME).
-Treated as @c #int32 type.
-*/
-typedef enum PL_EXP_RES_MODES
-{
- EXP_RES_ONE_MILLISEC = 0, /**< Exposure value is defined in milli-seconds. */
- EXP_RES_ONE_MICROSEC, /**< Exposure value is defined in micro-seconds. */
- EXP_RES_ONE_SEC /**< Exposure value is defined in seconds. */
-}
-PL_EXP_RES_MODES;
-
-/**
-Used with the function #pl_io_script_control.
-Treated as @c #uns32 type.
-*/
-typedef enum PL_SRC_MODES
-{
- SCR_PRE_OPEN_SHTR = 0,
- SCR_POST_OPEN_SHTR,
- SCR_PRE_FLASH,
- SCR_POST_FLASH,
- SCR_PRE_INTEGRATE,
- SCR_POST_INTEGRATE,
- SCR_PRE_READOUT,
- SCR_POST_READOUT,
- SCR_PRE_CLOSE_SHTR,
- SCR_POST_CLOSE_SHTR
-}
-PL_SRC_MODES;
-
-/**
-Used with the functions pl_cam_register_callback* and #pl_cam_deregister_callback.
-
-Please note that callbacks are generated based on actual frame data transfer.
-This means that the BOF and EOF callbacks may not always correspond to actual
-readout of given frame from the camera sensor. This is especially true for fast
-cameras where frames are buffered on the camera side and BOF/EOF callbacks are
-generated when the frame is actually received on the device driver side.
-It is recommended to use the camera hardware signals for accurate frame
-synchronization.
-
-Treated as @c #int32 type.
-*/
-typedef enum PL_CALLBACK_EVENT
-{
- /**
- Beginning of frame callback. Occurs when the frame transfer begins.
- */
- PL_CALLBACK_BOF = 0,
- /**
- End of frame callback. Occurs when the frame is fully transferred
- and ready in the frame buffer.
- */
- PL_CALLBACK_EOF,
- /**
- List of connected cameras has changed. This feature is currently not
- supported. The list of cameras is refreshed only during #pl_pvcam_init.
- */
- PL_CALLBACK_CHECK_CAMS,
- /**
- A camera has been removed from the system.
- */
- PL_CALLBACK_CAM_REMOVED,
- /**
- A camera previously removed is available again. This feature is not
- currently supported.
- */
- PL_CALLBACK_CAM_RESUMED,
- PL_CALLBACK_MAX
-}
-PL_CALLBACK_EVENT;
-
-/**
-Defines the acquisition region.
-Used in #pl_exp_setup_seq and #pl_exp_setup_cont.
-In most cases, the s1, s2 coordinates correspond to x1, x2 coordinates.
-The sensor region width is then calculated as s2 - s1 + 1. The resulting
-image width would be (s2 - s1 + 1) / sbin.
-Similarly, the p1, p2 coordinates correspond to y1, y2 coordinates.
-The sensor region height is then calculated as (p2 - p1 + 1). The resulting
-image height would be (p2 - p1 + 1) / pbin.
-*/
-typedef struct rgn_type
-{
- uns16 s1; /**< First pixel in the serial register. */
- uns16 s2; /**< Last pixel in the serial register. */
- uns16 sbin; /**< Serial binning for this region. */
- uns16 p1; /**< First row in the parallel register. */
- uns16 p2; /**< Last row in the parallel register. */
- uns16 pbin; /**< Parallel binning for this region. */
-}
-rgn_type;
-
-typedef struct io_struct
-{
- uns16 io_port; /**< I/O port address. */
- uns32 io_type; /**< I/O port type (TTL, DAC, etc.) */
- flt64 state; /**< Desired output state for the port. */
- struct io_struct* next; /**< Linked list pointer.*/
-}
-io_entry;
-
-typedef struct io_list
-{
- io_entry pre_open;
- io_entry post_open;
- io_entry pre_flash;
- io_entry post_flash;
- io_entry pre_integrate;
- io_entry post_integrate;
- io_entry pre_readout;
- io_entry post_readout;
- io_entry pre_close;
- io_entry post_close;
-}
-io_list;
-
-/**
-Used in #pv_script_set_hook.
-@remarks This structure is deprecated.
-*/
-typedef struct active_camera_type
-{
- uns16 shutter_close_delay; /**< Number of milliseconds for the shutter to close. */
- uns16 shutter_open_delay; /**< Number of milliseconds for the shutter to open. */
- uns16 rows; /**< Parallel size of the sensor active area. */
- uns16 cols; /**< Serial size of the sensor active area. */
- uns16 prescan; /**< Serial pixels before the active area. */
- uns16 postscan; /**< Serial pixels after the active area. */
- uns16 premask; /**< Parallel rows before the active area. */
- uns16 postmask; /**< Parallel rows after the active area. */
- uns16 preflash; /**< Number of milliseconds to flash the diode ring. */
- uns16 clear_count; /**< Number of times to clear the sensor before exposure. */
- uns16 preamp_delay; /**< Number of milliseconds for the preamp to settle. */
- rs_bool mpp_selectable; /**< Indicates MPP mode can be selected. */
- rs_bool frame_selectable; /**< Indicates frame transfer can be selected. */
- int16 do_clear; /**< Clear: Never, Each Exposure, Each Sequence. */
- int16 open_shutter; /**< Open: Never, Each Exposure, Each Sequence. */
- rs_bool mpp_mode; /**< Enable or disable MPP mode. */
- rs_bool frame_transfer; /**< Enable or disable frame transfer operation. */
- rs_bool alt_mode; /**< Enable or disable Alternate Parallel mode. */
- uns32 exp_res; /**< Exposure resolution. */
- io_list* io_hdr; /**< Pointer to a list of I/O script control commands. */
-}
-active_camera_type;
-
-/******************************************************************************/
-/* Start of Frame Metadata Types */
-/******************************************************************************/
-
-/******************************************************************************/
-/* Data headers and camera shared types */
-
-/**
-Used in #md_frame_header structure.
-Treated as @c #uns8 type.
-*/
-typedef enum PL_MD_FRAME_FLAGS
-{
- /** Check this bit before using the timestampBOR and timestampEOR. */
- PL_MD_FRAME_FLAG_ROI_TS_SUPPORTED = 0x01,
- PL_MD_FRAME_FLAG_UNUSED_2 = 0x02,
- PL_MD_FRAME_FLAG_UNUSED_3 = 0x04,
- PL_MD_FRAME_FLAG_UNUSED_4 = 0x10,
- PL_MD_FRAME_FLAG_UNUSED_5 = 0x20,
- PL_MD_FRAME_FLAG_UNUSED_6 = 0x40,
- PL_MD_FRAME_FLAG_UNUSED_7 = 0x80
-}
-PL_MD_FRAME_FLAGS;
-
-/**
-Used in #md_frame_roi_header structure.
-Treated as @c #uns8 type.
-*/
-typedef enum PL_MD_ROI_FLAGS
-{
- /**
- This flag is used by #pl_md_frame_decode to discard invalid ROIs.
- Any ROI with this flag will not be included in the #md_frame ROI array.
- */
- PL_MD_ROI_FLAG_INVALID = 0x01,
- /**
- This flag is used to report an ROI that contains no pixel data. Such
- ROI is used to only mark a location within the frame.
- */
- PL_MD_ROI_FLAG_HEADER_ONLY = 0x02,
- PL_MD_ROI_FLAG_UNUSED_3 = 0x04,
- PL_MD_ROI_FLAG_UNUSED_4 = 0x10,
- PL_MD_ROI_FLAG_UNUSED_5 = 0x20,
- PL_MD_ROI_FLAG_UNUSED_6 = 0x40,
- PL_MD_ROI_FLAG_UNUSED_7 = 0x80
-}
-PL_MD_ROI_FLAGS;
-
-/**
-The signature is located in the first 4 bytes of the frame header. The signature
-is checked before any metadata-related operations are executed on the buffer.
-*/
-#define PL_MD_FRAME_SIGNATURE 5328208
-
-/*
-The structures are shared between platforms, thus we must ensure that no
-compiler will apply different struct alignment.
-*/
-#pragma pack(push)
-#pragma pack(1)
-
-/**
-This is a frame header that is located before each frame. The size of this
-structure must remain constant. The structure is generated by the camera
-and should be 16-byte aligned.
-*/
-typedef struct md_frame_header
-{ /* TOTAL: 48 bytes */
- uns32 signature; /**< 4B - Equal to #PL_MD_FRAME_SIGNATURE. */
- uns8 version; /**< 1B - Must be 1 in the first release. */
-
- uns32 frameNr; /**< 4B - 1-based, reset with each acquisition. */
- uns16 roiCount; /**< 2B - Number of ROIs in the frame, at least 1. */
-
- /** The final timestamp = timestampBOF * timestampResNs (in nanoseconds). */
- uns32 timestampBOF; /**< 4B - Depends on resolution. */
- uns32 timestampEOF; /**< 4B - Depends on resolution. */
- uns32 timestampResNs; /**< 4B - 1=1ns, 1000=1us, 5000000=5ms, ... */
-
- /** The final exposure time = exposureTime * exposureTimeResNs (nanoseconds). */
- uns32 exposureTime; /**< 4B - Depends on resolution. */
- uns32 exposureTimeResNs;/**< 4B - 1=1ns, 1000=1us, 5000000=5ms, ... */
-
- /** ROI timestamp resolution is stored here, no need to transfer with each ROI. */
- uns32 roiTimestampResNs;/**< 4B - ROI timestamps resolution. */
-
- uns8 bitDepth; /**< 1B - Must be 10, 13, 14, 16, etc. */
- uns8 colorMask; /**< 1B - Corresponds to #PL_COLOR_MODES. */
- uns8 flags; /**< 1B - Frame flags, see #PL_MD_FRAME_FLAGS. */
- uns16 extendedMdSize; /**< 2B - Must be 0 or actual ext md data size. */
-
- /** Version 2 header additions. The following entries are available only
- when the md_frame_header.version is reported as 2 or higher. */
- uns8 imageFormat; /**< 1B - Image data format, see #PL_IMAGE_FORMATS */
- uns8 imageCompression; /**< 1B - Image pixel data compression, see #PL_IMAGE_COMPRESSIONS */
-
- uns8 _reserved[6];
-}
-md_frame_header;
-
-/**
-Version 3 of the frame header with improved timestamp and exposure time accuracy.
-When the md_frame_header.version is reported as 3, users are expected to use reinterpret_cast
-to cast the md_frame.header pointer to md_frame_header_v3 type.
-*/
-typedef struct md_frame_header_v3
-{ /* TOTAL: 48 bytes */
- uns32 signature; /**< 4B - Equal to #PL_MD_FRAME_SIGNATURE. */
- uns8 version; /**< 1B - Header version. */
-
- uns32 frameNr; /**< 4B - 1-based, reset with each acquisition. */
- uns16 roiCount; /**< 2B - Number of ROIs in the frame, at least 1. */
-
- ulong64 timestampBOF; /**< 8B - Beginning of frame timestamp, in picoseconds. */
- ulong64 timestampEOF; /**< 8B - End of frame timestamp, in picoseconds. */
- ulong64 exposureTime; /**< 8B - Exposure time, in picoseconds. */
-
- uns8 bitDepth; /**< 1B - Must be 10, 13, 14, 16, etc. */
- uns8 colorMask; /**< 1B - Corresponds to #PL_COLOR_MODES. */
- uns8 flags; /**< 1B - Frame flags, see #PL_MD_FRAME_FLAGS. */
- uns16 extendedMdSize; /**< 2B - Must be 0 or actual ext md data size. */
- uns8 imageFormat; /**< 1B - Image data format, see #PL_IMAGE_FORMATS */
- uns8 imageCompression; /**< 1B - Image pixel data compression, see #PL_IMAGE_COMPRESSIONS */
-
- uns8 _reserved[6];
-}
-md_frame_header_v3;
-
-/**
-This is a ROI header that is located before every ROI data. The size of this
-structure must remain constant. The structure is generated by the camera
-and should be 16-byte aligned.
-*/
-typedef struct md_frame_roi_header
-{ /* TOTAL: 32 bytes */
- uns16 roiNr; /**< 2B - 1-based, reset with each frame. */
-
- /** ROI timestamps. Currently unused. */
- uns32 timestampBOR; /**< 4B - Beginning of ROI readout timestamp. */
- uns32 timestampEOR; /**< 4B - End of ROI readout timestamp. */
-
- rgn_type roi; /**< 12B - ROI coordinates and binning. */
-
- uns8 flags; /**< 1B - ROI flags, see #PL_MD_ROI_FLAGS. */
- uns16 extendedMdSize; /**< 2B - Must be 0 or actual ext metadata size in bytes. */
-
- /** Version 2 header additions */
- uns32 roiDataSize; /**< 4B - ROI image data size in bytes. */
-
- uns8 _reserved[3];
-}
-md_frame_roi_header;
-
-#pragma pack(pop)
-
-/******************************************************************************/
-/* Extended metadata related structures */
-
-/**
-Maximum number of extended metadata tags supported.
-*/
-#define PL_MD_EXT_TAGS_MAX_SUPPORTED 255
-
-/**
-Available extended metadata tags.
-Used in #md_ext_item_info structure.
-Used directly as an enum type without casting to any integral type.
-*/
-typedef enum PL_MD_EXT_TAGS
-{
- PL_MD_EXT_TAG_PARTICLE_ID = 0, /**< Particle ID */
- PL_MD_EXT_TAG_PARTICLE_M0, /**< Particle M0 vector */
- PL_MD_EXT_TAG_PARTICLE_M2, /**< Particle M2 vector */
- PL_MD_EXT_TAG_MAX
-}
-PL_MD_EXT_TAGS;
-
-/**
-This structure describes the extended metadata TAG. This information is
-retrieved from an internal table. User needs this to correctly read and
-display the extended metadata value.
-*/
-typedef struct md_ext_item_info
-{
- PL_MD_EXT_TAGS tag; /**< Tag ID */
- uns16 type; /**< Tag type, corresponds to #ATTR_TYPE */
- uns16 size; /**< Tag value size */
- const char* name; /**< Tag friendly name */
-}
-md_ext_item_info;
-
-/**
-An extended metadata item together with its value. The user will retrieve a
-collection of these items.
-*/
-typedef struct md_ext_item
-{
- const md_ext_item_info* tagInfo; /**< Tag information */
- void* value; /**< Tag value */
-}
-md_ext_item;
-
-/**
-A collection of decoded extended metadata.
-*/
-typedef struct md_ext_item_collection
-{
- md_ext_item list[PL_MD_EXT_TAGS_MAX_SUPPORTED]; /**< List of extended metadata tags */
- md_ext_item* map[PL_MD_EXT_TAGS_MAX_SUPPORTED]; /**< Map of extended metadata tags */
- uns16 count; /**< Number of valid tags in the arrays above */
-}
-md_ext_item_collection;
-
-/**
-This is a helper structure that is used to decode the md_frame_roi_header. Since
-the header cannot contain any pointers, PVCAM will calculate all information
-using offsets from frame & ROI headers.
-
-The structure must be created using the #pl_md_create_frame_struct function.
-Please note the structure keeps only pointers to data residing in the image
-buffer. Once the buffer is deleted, the contents of the structure become invalid.
-*/
-typedef struct md_frame_roi
-{
- md_frame_roi_header* header; /**< Points directly to the header within the buffer. */
- void* data; /**< Points to the ROI image data. */
- uns32 dataSize; /**< Size of the ROI image data in bytes. */
- void* extMdData; /**< Points directly to ext. metadata data within the buffer. */
- uns16 extMdDataSize; /**< Size of the extended metadata buffer. */
-}
-md_frame_roi;
-
-/**
-This is a helper structure that is used to decode the md_frame_header. Since
-the header cannot contain any pointers, we need to calculate all information
-using offsets only.
-
-Please note the structure keeps only pointers to data residing in the image
-buffer. Once the buffer is deleted, the contents of the structure become invalid.
-*/
-typedef struct md_frame
-{
- md_frame_header* header; /**< Points directly to the header within the buffer. */
- void* extMdData; /**< Points directly to ext. metadata within the buffer. */
- uns16 extMdDataSize;/**< Size of the ext. metadata buffer in bytes. */
- rgn_type impliedRoi; /**< Implied ROI calculated during decoding. */
-
- md_frame_roi* roiArray; /**< An array of ROI descriptors. */
- uns16 roiCapacity; /**< Number of ROIs the structure can hold. */
- uns16 roiCount; /**< Number of ROIs found during decoding. */
-}
-md_frame;
-
-/******************************************************************************/
-/*End of Frame Metadata Types */
-/******************************************************************************/
-
-/******************************************************************************/
-/**
-@addtogroup grp_pm_deprecated_typedefs
-@{
-*/
-
-typedef PVCAM_FRAME_INFO_GUID* PPVCAM_FRAME_INFO_GUID;
-typedef FRAME_INFO* PFRAME_INFO;
-typedef smart_stream_type* smart_stream_type_ptr;
-typedef rgn_type* rgn_ptr;
-typedef const rgn_type* rgn_const_ptr;
-typedef io_entry* io_entry_ptr;
-typedef io_list* io_list_ptr;
-typedef io_list** io_list_ptr_ptr;
-typedef active_camera_type* active_camera_ptr;
-
-/** @} */ /* grp_pm_deprecated_typedefs */
-
-/******************************************************************************/
-/**
-The following macros can be used to extract a single byte from multi-byte integers,
-or to combine multiple bytes into a larger integer value.
-
-@{
-*/
-
-/** Extracts the most significant byte from a two-uns8 integer input. */
-#define MS16_BYTE(two_byte_value)((uns8)(((uns16)(two_byte_value) >> 8) & 0xFF))
-/** Extracts the least significant byte from a two-uns8 integer input. */
-#define LS16_BYTE(two_byte_value)((uns8)(((uns16)(two_byte_value) >> 0) & 0xFF))
-
-/** Extracts the most significant byte from a four-uns8 integer input. */
-#define MS32_BYTE(four_byte_value)((uns8)(((uns32)(four_byte_value) >> 24) & 0xFF))
-/** Extracts the middle-high significant byte from a four-uns8 integer input. */
-#define MH32_BYTE(four_byte_value)((uns8)(((uns32)(four_byte_value) >> 16) & 0xFF))
-/** Extracts the middle-low significant byte from a four-uns8 integer input. */
-#define ML32_BYTE(four_byte_value)((uns8)(((uns32)(four_byte_value) >> 8) & 0xFF))
-/** Extracts the least significant byte from a four-uns8 integer input. */
-#define LS32_BYTE(four_byte_value)((uns8)(((uns32)(four_byte_value) >> 0) & 0xFF))
-
-/** Produces a 16-bit unsigned integer value from 2 input bytes. */
-#define VAL_UNS16(ms_byte,ls_byte)(\
- ((uns16)((uns8)(ms_byte)) << 8) |\
- ((uns16)((uns8)(ls_byte)) << 0))
-
-/** Produces a 32-bit unsigned integer value from 4 input bytes. */
-#define VAL_UNS32(ms_byte,mh_byte,ml_byte,ls_byte)(\
- ((uns32)((uns8)(ms_byte)) << 24) |\
- ((uns32)((uns8)(mh_byte)) << 16) |\
- ((uns32)((uns8)(ml_byte)) << 8) |\
- ((uns32)((uns8)(ls_byte)) << 0))
-
-/** Produces a 64-bit signed integer value from 8 input bytes. */
-#define VAL_INT64(b0,b1,b2,b3,b4,b5,b6,b7)(\
- ((long64)((uns8)(b0)) << 56) |\
- ((long64)((uns8)(b1)) << 48) |\
- ((long64)((uns8)(b2)) << 40) |\
- ((long64)((uns8)(b3)) << 32) |\
- ((long64)((uns8)(b4)) << 24) |\
- ((long64)((uns8)(b5)) << 16) |\
- ((long64)((uns8)(b6)) << 8) |\
- ((long64)((uns8)(b7)) << 0))
-
-/** @} */
-
-/******************************************************************************/
-/* Content which is needed to communicate with the PVCAM DLLs */
-
-typedef int16 pm_script_hook(int16 hcam,
- uns16 exp_total,
- uns16 rgn_total,
- const rgn_type* rgn_array,
- int16 mode,
- uns32 exposure_time,
- uns32* pixels,
- active_camera_type* active_camera);
-
-/**
-Data type used by #pl_get_param with #ATTR_TYPE.
-@{
-*/
-#define TYPE_INT16 1
-#define TYPE_INT32 2
-#define TYPE_FLT64 4
-#define TYPE_UNS8 5
-#define TYPE_UNS16 6
-#define TYPE_UNS32 7
-#define TYPE_UNS64 8
-#define TYPE_ENUM 9
-#define TYPE_BOOLEAN 11
-#define TYPE_INT8 12
-#define TYPE_CHAR_PTR 13
-#define TYPE_VOID_PTR 14
-#define TYPE_VOID_PTR_PTR 15
-#define TYPE_INT64 16
-#define TYPE_SMART_STREAM_TYPE 17
-#define TYPE_SMART_STREAM_TYPE_PTR 18
-#define TYPE_FLT32 19
-#define TYPE_RGN_TYPE 20
-#define TYPE_RGN_TYPE_PTR 21
-#define TYPE_RGN_LIST_TYPE 22
-#define TYPE_RGN_LIST_TYPE_PTR 23
-/** @} */
-
-/*
-Defines for classes.
-*/
-#define CLASS0 0 /* Camera Communications */
-#define CLASS2 2 /* Configuration/Setup */
-#define CLASS3 3 /* Data Acquisition */
-
-/******************************************************************************/
-/* Start of parameter ID definitions. */
-/* Format: TTCCxxxx, where TT = Data type, CC = Class, xxxx = ID number */
-/* Please note that some data types encoded in the parameter IDs do not */
-/* correspond to the actual parameter data type. Please always check the */
-/* ATTR_TYPE before using the parameter. */
-/******************************************************************************/
-
-/**
-@defgroup grp_pm_parameters Parameters
-*/
-
-/**
-@addtogroup grp_pm_parameters
-@{
-*/
-
-/* CAMERA COMMUNICATION PARAMETERS */
-
-/**
-@brief Returns the length of an information message for each device driver.
-
-Some devices have no message. In other words, they return a value of 0 for bytes.
-
-Data type: @c #int16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_DD_INFO_LENGTH ((CLASS0<<16) + (TYPE_INT16<<24) + 1)
-/**
-@brief Returns a version number for the device driver used to access the camera.
-
-The version number is for information only. Application does not need to check
-the version or make decisions based on its value. Every PVCAM release is bundled
-with a specific set of device driver versions. PVCAM binaries and device driver
-binaries are usually tightly coupled and cannot be interchanged.
-
-The version is a formatted hexadecimal number of the style:
-
-| High byte | Low | byte |
-|:-------------:|--------------:|:----------------|
-| | High nibble | Low nibble |
-| Major version | Minor version | Trivial version |
-
-For example, the number 0xB1C0 indicates major release 177, minor release 12,
-and trivial change 0.
-
-Open the camera before calling this parameter. Note that different cameras in
-the same system may use different drivers. Thus, each camera can have its own
-driver and its own driver version.
-
-Data type: @c #uns16
-*/
-#define PARAM_DD_VERSION ((CLASS0<<16) + (TYPE_UNS16<<24) + 2)
-/**
-@brief Reads/sets the maximum number of command retransmission attempts that are
- allowed.
-
-When a command or status transmission is garbled, the system signals for a
-re-transmission. After a certain number of failed transmissions (an initial
-attempt + max_retries), the system abandons the attempt and concludes that the
-communication link has failed. The camera will not close, but the command or
-status read returns with an error. The maximum number of retries is initially
-set by the device driver, and is matched to the communication link, hardware
-platform, and operating system. It may also be reset by the user.
-
-Data type: @c #uns16
-
-@note The availability is camera-dependent.
-
-@remarks This parameter is deprecated.
-*/
-#define PARAM_DD_RETRIES ((CLASS0<<16) + (TYPE_UNS16<<24) + 3)
-/**
-@brief Reads/sets the maximum time the driver waits for acknowledgment.
-
-I.e., the slowest allowable response speed from the camera. This is a crucial
-factor used in the device driver for communication control. If the driver sends
-a command to the camera and does not receive acknowledgment within the timeout
-period, the driver times out and returns an error. Unless reset by the user,
-this timeout is a default setting that is contained in the device driver and is
-matched to the communication link, hardware platform, and operating system.
-
-Data type: @c #uns16
-
-@note The availability is camera-dependent.
-
-@remarks This parameter is deprecated.
-*/
-#define PARAM_DD_TIMEOUT ((CLASS0<<16) + (TYPE_UNS16<<24) + 4)
-/**
-@brief Returns an information message for each device.
-
-Some devices have no message. The user is responsible for allocating enough
-memory to hold the message string. Required number of bytes can be obtained via
-parameter #PARAM_DD_INFO_LENGTH.
-
-Data type: @c char*
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_DD_INFO ((CLASS0<<16) + (TYPE_CHAR_PTR<<24) + 5)
-
-/**
-@brief Returns a list of camera communication interfaces.
-
-For example it can be USB 3.0, PCIe, etc. Use the #ATTR_CURRENT to retrieve the
-currently selected interface. Use the #pl_get_enum_param function to retrieve
-all camera supported interfaces.
-
-Data type: @c enum (@c #int32)
-
-@see #PL_CAM_INTERFACE_TYPES
-@note The availability is camera-dependent.
-*/
-#define PARAM_CAM_INTERFACE_TYPE ((CLASS0<<16) + (TYPE_ENUM<<24) + 10)
-/**
-@brief Returns a list of camera communication interface modes.
-
-This for example returns whether the interface is fully capable of imaging or if it
-has limitations. Use the #ATTR_CURRENT to retrieve the mode of the currently
-selected interface. Use the #pl_get_enum_param function to retrieve the list of
-modes for all the camera supported interfaces.
-
-The number of items reported by this parameter corresponds to the number of
-items reported by the #PARAM_CAM_INTERFACE_TYPE. Using the #pl_get_enum_param
-call one can build a table of camera interfaces and their modes, simply iterate
-through both parameters and build the table, for example:
-
-| Enum index | Type id | Type string | Mode id | Mode string |
-|:----------:|:-------:|:-----------:|:-------:|:-----------:|
-| 0 | 514 | "USB 2.0" | 1 | "Control" |
-| 1 | 515 | "USB 3.0" | 2 | "Imaging" |
-| 2 | 2051 | "PCIe x4" | 2 | "Imaging" |
-
-Data type: @c enum (@c #int32)
-
-@see #PL_CAM_INTERFACE_MODES
-@note The availability is camera-dependent.
-*/
-#define PARAM_CAM_INTERFACE_MODE ((CLASS0<<16) + (TYPE_ENUM<<24) + 11)
-
-/* CONFIGURATION AND SETUP PARAMETERS */
-
-/**
-@brief Bias offset voltage.
-
-The units do not correspond to the output pixel values in any simple fashion
-(the conversion rate should be linear, but may differ from system to system), but
-a lower offset voltage will yield a lower value for all output pixels. Pixels
-brought below zero by this method will be clipped at zero. Pixels raised above
-saturation will be clipped at saturation. Before you can change the offset
-level, you must read the current offset level. The default offset level will
-also vary from system to system and may change with each speed and gain setting.
-
-Data type: @c #int16
-
-@warning THIS VALUE IS SET AT THE FACTORY AND SHOULD NOT BE CHANGED!
-If you would like to change this value, please contact customer service before
-doing so.
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_ADC_OFFSET ((CLASS2<<16) + (TYPE_INT16<<24) + 195)
-/**
-@brief The name of the sensor.
-
-The name is a null-terminated text string. The user must pass in a character
-array that is at least #CCD_NAME_LEN elements long.
-
-Data type: @c char*
-*/
-#define PARAM_CHIP_NAME ((CLASS2<<16) + (TYPE_CHAR_PTR<<24) + 129)
-/**
-@brief The name of the system.
-
-The name is a null-terminated text string. The user must pass in a character
-array that is at least #MAX_SYSTEM_NAME_LEN elements long. It is meant to
-replace #PARAM_CHIP_NAME behavior on some cameras which were
-reporting their friendly product name with this parameter, and in turn help
-future cameras go back to reporting the name of the sensor with
-#PARAM_CHIP_NAME.
-
-Data type: @c char*
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_SYSTEM_NAME ((CLASS2<<16) + (TYPE_CHAR_PTR<<24) + 130)
-/**
-@brief The name of the vendor.
-
-The name is a null-terminated text string. The user must pass in a character
-array that is at least #MAX_VENDOR_NAME_LEN elements long. This is meant to
-differentiate between "QImaging" and "Photometrics" products moving forward.
-
-Data type: @c char*
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_VENDOR_NAME ((CLASS2<<16) + (TYPE_CHAR_PTR<<24) + 131)
-/**
-@brief The name of the product.
-
-The name is a null-terminated text string. The user must pass in a character
-array that is at least #MAX_PRODUCT_NAME_LEN elements long. This is meant to
-report camera name such as "Prime 95B" or "Retiga R6". OEMs should also consider
-using this for branding their cameras.
-
-Data type: @c char*
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_PRODUCT_NAME ((CLASS2<<16) + (TYPE_CHAR_PTR<<24) + 132)
-/**
-@brief The part number of the camera.
-
-The part number is a null-terminated text string. The user must pass in a
-character array that is at least #MAX_CAM_PART_NUM_LEN elements long.
-
-Data type: @c char*
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_CAMERA_PART_NUMBER ((CLASS2<<16) + (TYPE_CHAR_PTR<<24) + 133)
-
-/**
-@brief This is the type of cooling used by the current camera.
-
-See #PL_COOL_MODES enum for all possible values.
-
-Data type: @c enum (@c #int32)
-*/
-#define PARAM_COOLING_MODE ((CLASS2<<16) + (TYPE_ENUM<<24) + 214)
-/**
-@brief The number of milliseconds required for the sensor output preamp to
-stabilize, after it is turned on.
-
-Data type: @c #uns16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_PREAMP_DELAY ((CLASS2<<16) + (TYPE_UNS16<<24) + 502)
-/**
-@brief The color mode of the sensor.
-
-This enum parameter provides a list of all possible color masks defined in
-#PL_COLOR_MODES type. The real mask applied on sensor is reported as current
-value (#ATTR_CURRENT). Take into account that for mono cameras this parameter is
-usually not available (for #ATTR_AVAIL it returns @c FALSE) instead of reporting
-#COLOR_NONE value.
-
-Data type: @c enum (@c #int32)
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_COLOR_MODE ((CLASS2<<16) + (TYPE_ENUM<<24) + 504)
-/**
-@brief Indicates whether this sensor runs in MPP mode.
-
-See #PL_MPP_MODES enum for all possible values.
-
-Data type: @c enum (@c #int32)
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_MPP_CAPABLE ((CLASS2<<16) + (TYPE_ENUM<<24) + 224)
-/**
-@brief The exposure time limit in milliseconds above which the preamp is turned
-off during exposure.
-
-Data type: @c #uns32
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_PREAMP_OFF_CONTROL ((CLASS2<<16) + (TYPE_UNS32<<24) + 507)
-
-/* Sensor dimensions and physical characteristics */
-
-/**
-@brief The number of masked lines at the near end of the parallel register.
-
-It is next to the serial register. 0 means no mask (no normal mask). If the
-pre-mask is equal to par_size, this probably indicates a frame transfer device
-with an ordinary mask. Accordingly, the sensor should probably be run in frame
-transfer mode.
-
-Data type: @c #uns16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_PREMASK ((CLASS2<<16) + (TYPE_UNS16<<24) + 53)
-/**
-@brief The number of pixels discarded from the serial register before the first
-real data pixel.
-
-Data type: @c #uns16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_PRESCAN ((CLASS2<<16) + (TYPE_UNS16<<24) + 55)
-/**
-@brief The number of masked lines at the far end of the parallel register.
-
-It's away from the serial register. This is the number of additional parallel
-shifts that need to be done after readout to clear the parallel register.
-
-Data type: @c #uns16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_POSTMASK ((CLASS2<<16) + (TYPE_UNS16<<24) + 54)
-/**
-@brief The number of pixels to discard from the serial register after the last
-real data pixel.
-
-These must be read or discarded to clear the serial register.
-
-Data type: @c #uns16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_POSTSCAN ((CLASS2<<16) + (TYPE_UNS16<<24) + 56)
-/**
-@brief This is the center-to-center distance between pixels in the parallel
-direction.
-
-It is measured in nanometers. This is identical to #PARAM_PIX_PAR_SIZE if there
-are no inter-pixel dead areas.
-
-Data type: @c #uns16
-*/
-#define PARAM_PIX_PAR_DIST ((CLASS2<<16) + (TYPE_UNS16<<24) + 500)
-/**
-@brief This is the size of the active area of a pixel, in the parallel direction.
-
-Reported in nanometers.
-
-Data type: @c #uns16
-*/
-#define PARAM_PIX_PAR_SIZE ((CLASS2<<16) + (TYPE_UNS16<<24) + 63)
-/**
-@brief This is the center-to-center distance between pixels in the serial
-direction.
-
-Reported in nanometers. This is identical to #PARAM_PIX_SER_SIZE, if there
-are no dead areas.
-
-Data type: @c #uns16
-*/
-#define PARAM_PIX_SER_DIST ((CLASS2<<16) + (TYPE_UNS16<<24) + 501)
-/**
-@brief This is the size of the active area of a pixel in the serial direction.
-
-Reported in nanometers.
-
-Data type: @c #uns16
-*/
-#define PARAM_PIX_SER_SIZE ((CLASS2<<16) + (TYPE_UNS16<<24) + 62)
-/**
-@brief Checks to see if the summing well exists.
-
-When a @c TRUE is returned for #ATTR_AVAIL, the summing well exists.
-
-Data type: @c #rs_bool
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_SUMMING_WELL ((CLASS2<<16) + (TYPE_BOOLEAN<<24) + 505)
-/**
-@brief Gets the sensor full-well capacity, measured in electrons.
-
-Data type: @c #uns32
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_FWELL_CAPACITY ((CLASS2<<16) + (TYPE_UNS32<<24) + 506)
-/**
-@brief The parallel size of the sensor chip, in active rows.
-
-In most cases this parameter reports the height of the sensor imaging area or
-the number of rows in sCMOS type sensor.
-
-The full size of the parallel register is actually (par_size + premask + postmask).
-
-Data type: @c #uns16
-*/
-#define PARAM_PAR_SIZE ((CLASS2<<16) + (TYPE_UNS16<<24) + 57)
-/**
-@brief The serial size of the sensor chip, in active columns.
-
-In most cases this parameter reports the width of the sensor imaging area or
-the number of columns in sCMOS type sensor.
-
-Data type: @c #uns16
-*/
-#define PARAM_SER_SIZE ((CLASS2<<16) + (TYPE_UNS16<<24) + 58)
-/**
-@brief Returns @c TRUE for #ATTR_AVAIL if the camera has accumulation capability.
-
-Accumulation functionality is provided with the FF plug-in.
-
-Data type: @c #rs_bool
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_ACCUM_CAPABLE ((CLASS2<<16) + (TYPE_BOOLEAN<<24) + 538)
-/**
-@brief Reports if the camera supports firmware download.
-
-This parameter is for Teledyne Photometrics internal use only. It is largely unused
-because we simply do it on all cameras now, thus it can become deprecated in
-future.
-
-Data type: @c #rs_bool
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_FLASH_DWNLD_CAPABLE ((CLASS2<<16) + (TYPE_BOOLEAN<<24) + 539)
-
-/* General parameters */
-
-/**
-@brief Time it will take to read out the image from the sensor with the current
-camera settings, in microseconds.
-
-Settings have to be applied with #pl_exp_setup_seq or #pl_exp_setup_cont before
-the camera will calculate the readout time for the new settings.
-
-@warning: as with all other parameters please do not access this parameter
-while the camera is imaging.
-
-Data type: @c #uns32
-
-@note The availability is camera-dependent.
-@note The parameter type is incorrectly defined. The actual type is TYPE_UNS32.
-*/
-#define PARAM_READOUT_TIME ((CLASS2<<16) + (TYPE_FLT64<<24) + 179)
-/**
-@brief This parameter reports the time needed to clear the sensor.
-
-The time is reported in nanoseconds. This delay is incurred once prior to the
-acquisition when pre-sequence clearing mode is chosen by the application. The
-delay is incurred prior to every frame when the imaging application chooses
-pre-exposure clearing mode.
-
-The value is valid only after #pl_exp_setup_seq or #pl_exp_setup_cont call.
-
-Data type: @c #long64
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_CLEARING_TIME ((CLASS2<<16) + (TYPE_INT64<<24) + 180)
-/**
-@brief Post-trigger delay, in nanoseconds.
-
-In addition to the #PARAM_CLEARING_TIME, there might be a delay between an
-internal or external trigger and the transition event (low to high) for the
-Expose Out signal. This happens, for example, in global All Rows Expose Out mode
-in which case the value is equal to the readout time.
-
-The value is valid only after #pl_exp_setup_seq or #pl_exp_setup_cont call.
-
-Data type: @c #long64
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_POST_TRIGGER_DELAY ((CLASS2<<16) + (TYPE_INT64<<24) + 181)
-/**
-@brief Pre-trigger delay, in nanoseconds.
-
-For pre-exposure clearing mode and the first frame in pre-sequence clearing mode,
-the frame cycle time is the sum of #PARAM_EXPOSURE_TIME, #PARAM_PRE_TRIGGER_DELAY,
-#PARAM_POST_TRIGGER_DELAY and #PARAM_CLEARING_TIME.
-
-For second and subsequent frames in pre-sequence clearing mode (most typical
-scenario) the frame cycle time is the sum of #PARAM_EXPOSURE_TIME,
-#PARAM_PRE_TRIGGER_DELAY and #PARAM_POST_TRIGGER_DELAY.
-
-Frame cycle time is defined as the interval between start of exposure for one
-frame and start of exposure for the next frame when the camera is in internal
-triggered (timed) mode and set up for continuous (circular buffer) acquisition.
-
-The value is valid only after #pl_exp_setup_seq or #pl_exp_setup_cont call.
-
-Data type: @c #long64
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_PRE_TRIGGER_DELAY ((CLASS2<<16) + (TYPE_INT64<<24) + 182)
-
-/* CAMERA PARAMETERS */
-
-/**
-@brief Number of clear cycles.
-
-This is the number of times the sensor must be cleared to completely remove
-charge from the parallel register. The value is ignored in case the clearing
-mode is set to #CLEAR_NEVER or #CLEAR_AUTO via #PARAM_CLEAR_MODE parameter.
-
-Data type: @c #uns16
-*/
-#define PARAM_CLEAR_CYCLES ((CLASS2<<16) + (TYPE_UNS16<<24) + 97)
-/**
-@brief Defines when clearing takes place.
-
-All the possible clearing modes are defined in #PL_CLEAR_MODES enum. But keep in
-mind that some cameras might not support all the modes. Use #pl_get_enum_param
-function to enumerate all the supported modes.
-
-Data type: @c enum (@c #int32)
-
-@see @ref ClearModes
-@note The availability is camera-dependent.
-*/
-#define PARAM_CLEAR_MODE ((CLASS2<<16) + (TYPE_ENUM<<24) + 523)
-/**
-@brief Reports frame transfer capability.
-
-Returns @c TRUE for #ATTR_AVAIL if this camera can run in frame transfer mode
-(set through #PARAM_PMODE).
-
-Data type: @c #rs_bool
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_FRAME_CAPABLE ((CLASS2<<16) + (TYPE_BOOLEAN<<24) + 509)
-/**
-@brief Parallel clocking method.
-
-See #PL_PMODES enum for all possible values.
-The @c "_FT" in mode name indicates frame transfer mode, @c "_FT_MPP" indicates
-both frame transfer and MPP mode. @c "_ALT" indicates that custom parameters may
-be loaded.
-
-Data type: @c enum (@c #int32)
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_PMODE ((CLASS2<<16) + (TYPE_ENUM <<24) + 524)
-
-/* Temperature parameters for the sensor. */
-
-/**
-@brief Returns the current measured temperature of the sensor in hundredths of
-degrees Celsius.
-
-For example, a temperature of minus 35°C would be read as -3500.
-
-@warning: Unless the #ATTR_LIVE attribute for this parameter is reported as #TRUE,
-this parameter must not be accessed while the camera is imaging.
-
-Data type: @c #int16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_TEMP ((CLASS2<<16) + (TYPE_INT16<<24) + 525)
-/**
-@brief Sets the desired sensor temperature in hundredths of degrees Celsius.
-
-E.g. -35°C is represented as -3500. The hardware attempts to heat or cool the
-sensor to this temperature. The min/max allowable temperatures are given by
-#ATTR_MIN and #ATTR_MAX. Settings outside this range are ignored. Note that this
-function only sets the desired temperature. Even if the desired temperature is
-within a legal range, it still may be impossible to achieve. If the ambient
-temperature is too high, it is difficult to get sufficient cooling on an air-cooled
-camera.
-
-Data type: @c #int16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_TEMP_SETPOINT ((CLASS2<<16) + (TYPE_INT16<<24) + 526)
-
-/* Parameters used for firmware version retrieval. */
-
-/**
-@brief Returns the firmware version of the camera, as a hexadecimal number.
-
-The form is @c MMmm, where @c MM is the major version and @c mm is the minor
-version. For example, 0x0814 corresponds to version 8.20.
-
-Data type: @c #uns16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_CAM_FW_VERSION ((CLASS2<<16) + (TYPE_UNS16<<24) + 532)
-/**
-@brief Returns the alphanumeric serial number for the camera head.
-
-The serial number for Teledyne Photometrics-branded cameras has a maximum length of
-#MAX_ALPHA_SER_NUM_LEN.
-
-Data type: @c char*
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_HEAD_SER_NUM_ALPHA ((CLASS2<<16) + (TYPE_CHAR_PTR<<24) + 533)
-/**
-@brief Returns the version number of the PCI firmware.
-
-This number is a single 16-bit unsigned value.
-
-Data type: @c #uns16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_PCI_FW_VERSION ((CLASS2<<16) + (TYPE_UNS16<<24) + 534)
-
-/**
-@brief Sets and gets the desired fan speed.
-
-Note that the camera can automatically adjust the fan speed to higher level due to
-sensor overheating or completely shut down power to the sensor board to protect
-camera from damage. The default fan speed is supposed to be changed only
-temporarily during experiments to reduce sound noise or vibrations.
-
-Data type: @c enum (@c #int32)
-
-@warning Use this parameter with caution.
-@note The availability is camera-dependent.
-*/
-#define PARAM_FAN_SPEED_SETPOINT ((CLASS2<<16) + (TYPE_ENUM<<24) + 710)
-/**
-@brief Returns description of all camera nodes.
-
-The text is a multi-line and null-terminated string. The user must pass in a
-character array that is at least #MAX_CAM_SYSTEMS_INFO_LEN elements long or
-dynamically allocated array to size returned for #ATTR_COUNT attribute.
-
-The format is the same as can be seen in output of @c VersionInformation tool.
-
-Data type: @c char*
-
-@warning Extra caution should be taken while accessing this parameter. It is
-known to hang some cameras when used together with other parameters e.g. while
-scanning camera capabilities after opening (especially with Retiga R1/R3/R6 cameras).
-To work around this limitation ensure there is no communication with camera one
-second before and one second after this parameter is used!
-@note The availability is camera-dependent.
-*/
-#define PARAM_CAM_SYSTEMS_INFO ((CLASS2<<16) + (TYPE_CHAR_PTR<<24) + 536)
-
-/**
-@brief The exposure/triggering mode.
-
-This parameter cannot be set, but its value can be retrieved. The mode is set as
-a value combined with Expose Out mode via #pl_exp_setup_seq or
-#pl_exp_setup_cont function.
-See #PL_EXPOSURE_MODES enum for all possible values.
-
-Data type: @c enum (@c #int32)
-
-@see @ref ExposureModes, @ref secTriggerModes, @ref secExtTriggerModes
-*/
-#define PARAM_EXPOSURE_MODE ((CLASS2<<16) + (TYPE_ENUM<<24) + 535)
-/**
-@brief The Expose Out mode.
-
-This parameter cannot be set, but its value can be retrieved. The mode is set as
-a value combined with extended exposure mode via #pl_exp_setup_seq or
-#pl_exp_setup_cont function.
-See #PL_EXPOSE_OUT_MODES enum for all possible values.
-
-Data type: @c enum (@c #int32)
-
-@see @ref secExpOutModes, @ref secExtTriggerModes
-@note The availability is camera-dependent.
-*/
-#define PARAM_EXPOSE_OUT_MODE ((CLASS2<<16) + (TYPE_ENUM<<24) + 560)
-
-/* SPEED TABLE PARAMETERS */
-
-/**
-@brief *Native* pixel sample range in number of bits for the currently configured acquisition.
-
-The image bit depth may depend on currently selected #PARAM_READOUT_PORT, #PARAM_SPDTAB_INDEX,
-#PARAM_GAIN_INDEX and other acquisition parameters. Please, make sure to check this parameter
-before starting the acquisition, ideally after calling #pl_exp_setup_seq or #pl_exp_setup_cont.
-
-Most Teledyne Photometrics cameras transfer pixels in 16-bit words (#uns16 type). However, some
-cameras are capable of transferring 8-bit data (#uns8 type). Make sure to also check the
-#PARAM_IMAGE_FORMAT parameter to discover the current camera pixel format.
-
-This parameter indicates the number of valid bits within the transferred word or byte.
-
-Data type: @c #int16
-
-@see @ref SpeedTable
-*/
-#define PARAM_BIT_DEPTH ((CLASS2<<16) + (TYPE_INT16<<24) + 511)
-
-/**
-@brief Pixel sample range of the image outputted to the *host*.
-
-This parameter differs from the *native* #PARAM_BIT_DEPTH in a way that it reports the bit depth
-of the *output* frame - a frame that is delivered to the *host*. Since PVCAM supports various *host*
-side post processing features, the *host* bit depth may differ from the *native* camera bit depth,
-depending on what *host*-side post processing features are active.
-
-For example, the camera *native* bit depth may be reported as 12-bit for current port/speed/gain
-selection. However, when #PARAM_HOST_FRAME_SUMMING_ENABLED is enabled, the *host* frame bit depth may
-be reported as 16 or 32-bit.
-
-As a general rule, the application should always rely on the '_HOST'-specific parameters when
-identifying the output data format. The *native* parameters should be used only for informational
-purposes, e.g. to show the camera native format in the GUI.
-
-Data type: @c #int16
-
-@see @ref SpeedTable, #PARAM_HOST_FRAME_SUMMING_ENABLED, #PARAM_HOST_FRAME_SUMMING_FORMAT.
-*/
-#define PARAM_BIT_DEPTH_HOST ((CLASS2<<16) + (TYPE_INT16<<24) + 551)
-/**
-@brief *Native* image format of the camera pixel stream.
-
-This parameter is used to retrieve the list of camera-supported image formats. The
-image format may depend on current camera configuration. It is advised to check
-the image format before starting the acquisition. Some cameras allow the native
-format to be selected. Use the #ATTR_ACCESS to check the write permissions.
-
-Data type: @c enum (@c #int32)
-
-@see #PL_IMAGE_FORMATS enum for all possible values.
-*/
-#define PARAM_IMAGE_FORMAT ((CLASS2<<16) + (TYPE_ENUM<<24) + 248)
-
-/**
-@brief Image format of the pixel stream that is outputted to the *host*.
-
-This parameter differs from the *native* #PARAM_IMAGE_FORMAT in a way that it reports the format
-of the *output* frame - a frame that is delivered to the *host*. Since PVCAM supports various *host*
-side post processing features, the *host* image format may differ from the *native* camera bit depth,
-depending on what *host*-side post processing features are active.
-
-For example, the camera *native* image format may be reported as 16-bit MONO for the current
-port/speed/gain selection. However, when #PARAM_HOST_FRAME_SUMMING_ENABLED is enabled, the *host* image
-format may need to be upgraded to a wider, 32-bit MONO format.
-
-As a general rule, the application should always rely on the '_HOST'-specific parameters when
-identifying the output data format. The *native* parameters should be used only for informational
-purposes, e.g. to show the camera native format in the GUI.
-
-Data type: @c enum (@c #int32)
-
-@see #PL_IMAGE_FORMATS enum for all possible values and related #PARAM_HOST_FRAME_SUMMING_ENABLED,
- #PARAM_HOST_FRAME_SUMMING_FORMAT parameters.
-*/
-#define PARAM_IMAGE_FORMAT_HOST ((CLASS2<<16) + (TYPE_ENUM<<24) + 552)
-/**
-@brief *Native* image compression of the camera pixel stream.
-
-This parameter is used to retrieve the list of camera-supported image compression modes.
-The compression mode may depend on currently selected port and speed combination.
-It is advised to check the compression mode before starting the acquisition. Some
-cameras allow the native compression to be selected. Use the #ATTR_ACCESS to check
-the write permissions.
-
-Data type: @c enum (@c #int32)
-
-@see #PL_IMAGE_COMPRESSIONS enum for all possible values.
-*/
-#define PARAM_IMAGE_COMPRESSION ((CLASS2<<16) + (TYPE_ENUM<<24) + 249)
-
-/**
-@brief Image compression of the pixel stream outputted to the host.
-
-This parameter differs from the *native* #PARAM_IMAGE_COMPRESSION in a way that it reports the
-compression of the *output* frame - a frame that is delivered to the *host*. For some camera
-models, various compression methods may be used to increase the interface bandwidth.
-
-In general, applications do not have to support any of the compression-related parameters because
-decompression is automatically and seamlessly done by PVCAM. However, in specific cases the
-automatic decompression may be disabled.
-
-Data type: @c enum (@c #int32)
-
-@see #PL_IMAGE_COMPRESSIONS enum for all possible values and related
- #PARAM_HOST_FRAME_DECOMPRESSION_ENABLED.
-*/
-#define PARAM_IMAGE_COMPRESSION_HOST ((CLASS2<<16) + (TYPE_ENUM<<24) + 253)
-/**
-@brief Scan mode of the camera.
-
-This parameter is used to retrieve and control the camera-supported scan modes.
-Please note that the #PARAM_SCAN_LINE_DELAY and #PARAM_SCAN_WIDTH access mode
-depends on the scan mode selection.
-
-If the mode is set to #PL_SCAN_MODE_PROGRAMMABLE_SCAN_WIDTH, then the
-#PARAM_SCAN_WIDTH can be controlled and the #PARAM_SCAN_LINE_DELAY becomes read-only.
-If the mode is set to #PL_SCAN_MODE_PROGRAMMABLE_LINE_DELAY, then the
-#PARAM_SCAN_LINE_DELAY can be controlled and the #PARAM_SCAN_WIDTH becomes read-only.
-In both cases the #PARAM_SCAN_LINE_TIME reports the total time it takes to read
-one sensor line (row), including any delay added with the parameters above.
-
-Data type: @c enum (@c #int32)
-
-@see #PL_SCAN_MODES enum for all possible values.
-*/
-#define PARAM_SCAN_MODE ((CLASS3<<16) + (TYPE_ENUM<<24) + 250)
-/**
-@brief Scan direction of the camera.
-
-This parameter is used to retrieve the list of camera-supported scan directions.
-
-Data type: @c enum (@c #int32)
-
-@see #PL_SCAN_DIRECTIONS enum for all possible values.
-*/
-#define PARAM_SCAN_DIRECTION ((CLASS3<<16) + (TYPE_ENUM<<24) + 251)
-/**
-@brief Scan direction reset state.
-
-This parameter is used to retrieve scan direction reset state of camera.
-The parameter is used with alternate scan directions (down-up) to reset the
-direction with every acquisition.
-
-Data type: @c boolean (@c #rs_bool)
-*/
-#define PARAM_SCAN_DIRECTION_RESET ((CLASS3<<16) + (TYPE_BOOLEAN<<24) + 252)
-/**
-@brief Scan line delay value of the camera.
-
-This parameter is used to retrieve or set the scan line delay. The parameter
-access mode depends on the #PARAM_SCAN_MODE selection.
-
-Data type: @c uns16 (@c #uns16)
-*/
-#define PARAM_SCAN_LINE_DELAY ((CLASS3<<16) + (TYPE_UNS16<<24) + 253)
-/**
-@brief Scan line time of the camera.
-
-This parameter is used to retrieve scan line time of camera. The time is reported
-in nanoseconds.
-
-Please note the parameter value should be retrieved after the call to
-#pl_exp_setup_seq or #pl_exp_setup_cont because the camera needs to know the
-actual acquisition configuration in order to calculate the value.
-
-Data type: @c long64 (@c #long64)
-*/
-#define PARAM_SCAN_LINE_TIME ((CLASS3<<16) + (TYPE_INT64<<24) + 254)
-/**
-@brief Scan width in number of lines.
-
-This parameter is used to retrieve scan width of camera.
-
-Data type: @c uns16 (@c #uns16)
-*/
-#define PARAM_SCAN_WIDTH ((CLASS3<<16) + (TYPE_UNS16<<24) + 255)
-/**
-@brief Virtual frame rotation mode.
-
-This parameter controls PVCAM-internal frame rotation module. When enabled,
-PVCAM will automatically rotate incoming frames based on the parameter setting.
-Please note that the frame rotation setting affects other parameters:
-#PARAM_SER_SIZE, #PARAM_PAR_SIZE, #PARAM_BINNING_SER, #PARAM_BINNING_PAR and
-#PARAM_COLOR_MODE. For example, if a 90-degree rotation is requested, the affected
-parameters will return appropriately swapped or rotated values. Application should
-re-read the affected parameters after every change in #PARAM_HOST_FRAME_ROTATE.
-
-If #PARAM_METADATA_ENABLED is enabled, the frame-embedded metadata is also adjusted
-automatically if needed. This applies to the metadata-reported ROI and color mask.
-
-Legacy applications can set a system environment variable "PVCAM_FRAME_ROTATE_MODE" to
-one of the following values: 90, 180, 270 or 0. If set, sensors of all PVCAM cameras in the
-system will become virtually rotated and all sensor-related parameters will be
-reported appropriately rotated as well.
-
-A multi-threaded block-rotate algorithm is used for image rotation. The delay introduced
-by the algorithm depends on CPU performance. An Intel Xeon W-2123 processor can rotate
-a 2048x2048 16-bit image in approximately 1.5ms.
-
-This parameter can be used together with #PARAM_HOST_FRAME_FLIP. When both parameters
-are enabled, PVCAM uses an algorithm that processes the rotation/flipping combination
-using only one pass, keeping the performance withing 1-2ms on the same CPU.
-
-Data type: @c enum (@c #int32)
-
-@see #PL_FRAME_ROTATE_MODES enum for all possible values.
-*/
-#define PARAM_HOST_FRAME_ROTATE ((CLASS2<<16) + (TYPE_ENUM<<24) + 256)
-/** @warning Deprecated. Use the #PARAM_HOST_FRAME_ROTATE */
-/** @ingroup grp_pm_deprecated */
-#define PARAM_FRAME_ROTATE (PARAM_HOST_FRAME_ROTATE)
-/**
-@brief Virtual frame flipping mode.
-
-This parameter controls PVCAM-internal frame flipping module. When enabled,
-PVCAM will automatically flip incoming frames based on the parameter setting.
-Please note that the frame flip setting affects the sensor reported color mask
-(#PARAM_COLOR_MODE). For example, if flip-X is requested, the sensor mask is
-also reported as flipped: an RGGB sensor mask would be reported as GRBG mask.
-
-If #PARAM_METADATA_ENABLED is enabled, the frame-embedded metadata is also adjusted
-automatically if needed. This applies to the metadata-reported color mask value.
-
-Legacy applications can set a system environment variable "PVCAM_FRAME_FLIP_MODE" to
-one of the following values: X, Y, XY or NONE. If set, sensors of all PVCAM cameras
-in the system will become virtually flipped and all sensor-related parameters will be
-reported appropriately flipped as well.
-
-A multi-threaded algorithm is used for image flipping. The delay introduced
-by the algorithm depends on CPU performance. An Intel Xeon W-2123 processor can flip
-a 2048x2048 16-bit image in approximately 1ms.
-
-This parameter can be used together with #PARAM_HOST_FRAME_ROTATE. When both parameters
-are enabled, PVCAM uses an algorithm that processes the rotation/flipping combination
-using only one pass, keeping the performance withing 1-2ms on the same CPU.
-
-Data type: @c enum (@c #int32)
-
-@see #PL_FRAME_FLIP_MODES enum for all possible values.
-*/
-#define PARAM_HOST_FRAME_FLIP ((CLASS2<<16) + (TYPE_ENUM<<24) + 257)
-/** @warning Deprecated. Use the #PARAM_HOST_FRAME_FLIP */
-/** @ingroup grp_pm_deprecated */
-#define PARAM_FRAME_FLIP (PARAM_HOST_FRAME_FLIP)
-/**
-@brief This parameter is used to enable or disable the host frame summing feature.
-
-Use the #PARAM_HOST_FRAME_SUMMING_COUNT to set the number of frames to sum and the
-#PARAM_HOST_FRAME_SUMMING_FORMAT to discover and set the desired frame output
-format. After setting up the acquisition with #pl_exp_setup_seq or #pl_exp_setup_cont,
-check the #PARAM_BIT_DEPTH_HOST and #PARAM_IMAGE_FORMAT_HOST to discover the
-correct output frame format. This format may differ from the native #PARAM_BIT_DEPTH
-and #PARAM_IMAGE_FORMAT.
-
-By enabling this feature, PVCAM will start summing incoming frames and provide
-an output frame for every N-th frame (defined by #PARAM_HOST_FRAME_SUMMING_COUNT).
-Please note that when sequences are used (#pl_exp_setup_seq), the number of frames in
-sequence may be limited. When M-frames are requested in #pl_exp_setup_seq function and
-N-frames are configured for summing, PVCAM has to internally acquire a total of MxN
-frames to deliver correct amount of frames to the host. The camera hardware signals
-will also correspond to the MxN count because the frame summing is done on the host
-side without any knowledge of the camera.
-
-Data type: @c #rs_bool
-
-@see #PARAM_BIT_DEPTH_HOST, #PARAM_IMAGE_FORMAT_HOST
-*/
-#define PARAM_HOST_FRAME_SUMMING_ENABLED ((CLASS2<<16) + (TYPE_BOOLEAN<<24) + 258)
-/**
-@brief This parameter is used to set the number of frames to sum.
-
-@see #PARAM_HOST_FRAME_SUMMING_ENABLED for details.
-
-Data type: @c #uns32
-*/
-#define PARAM_HOST_FRAME_SUMMING_COUNT ((CLASS2<<16) + (TYPE_UNS32<<24) + 259)
-/**
-@brief This parameter is used to set the desired output format for the summed frame.
-
-When host frame summing feature is enabled, this parameter can be used to set the
-desired output frame format. Depending on the average image intensity and dynamic
-range requirements, the output format can be widened as needed.
-For example, when summing 12-bit images, the output format may be set to 16-bit width,
-allowing to sum up to 16 saturated images into one. When wider dynamic range is required,
-the output format can be switched to 32-bit mode, allowing to sum up to 1M 12-bit frames
-without reaching the 32-bit saturation level.
-
-Data type: @c enum (@c #int32)
-
-@see #PARAM_HOST_FRAME_SUMMING_ENABLED and #PL_FRAME_SUMMING_FORMATS for details.
-*/
-#define PARAM_HOST_FRAME_SUMMING_FORMAT ((CLASS2<<16) + (TYPE_ENUM<<24) + 260)
-/**
-@brief This parameter is used to enable or disable the automated frame decompression
-feature.
-
-In general, applications do not have to support any of the compression-related parameters because
-decompression is automatically and seamlessly done by PVCAM. However, in specific cases the
-automatic decompression may be disabled. In such case, the application is expected to provide
-the frame decompression.
-
-Please note that when this parameter is disabled for cameras that require frame
-decompression, other *host* post processing parameters such as #PARAM_HOST_FRAME_ROTATE,
-#PARAM_HOST_FRAME_FLIP, #PARAM_HOST_FRAME_SUMMING_ENABLED and similar cannot be enabled because
-they require uncompressed pixels to work properly. The #pl_exp_setup_seq and #pl_exp_setup_cont
-functions will fail.
-
-@see #PARAM_IMAGE_COMPRESSION, #PARAM_IMAGE_COMPRESSION_HOST
-
-Data type: @c #rs_bool
-*/
-#define PARAM_HOST_FRAME_DECOMPRESSION_ENABLED ((CLASS2<<16) + (TYPE_BOOLEAN<<24) + 261)
-/**
-@brief Gain setting for the current speed choice.
-
-The valid range for a gain setting is reported via #ATTR_MIN and #ATTR_MAX,
-where the min. gain is usually 1 and the max. gain may be as high as 16. Values
-outside this range will be ignored. Note that gain setting may not be linear!
-Values 1-16 may not correspond to 1x-16x, and there are gaps between the
-values. However, when the camera is initialized and every time a new speed is
-selected, the system will always reset to run at a gain of 1x.
-
-After setting the parameter, the #PARAM_GAIN_NAME can be used to retrieve user-
-friendly description of the selected gain (if supported by camera).
-
-Data type: @c #int16
-
-@see @ref SpeedTable
-*/
-#define PARAM_GAIN_INDEX ((CLASS2<<16) + (TYPE_INT16<<24) + 512)
-/**
-@brief Selects the sensor readout speed from a table of available choices.
-
-Entries are 0-based and the range of possible values is 0 to @c max_entries,
-where @c max_entries can be determined using #ATTR_MAX attribute. This setting
-relates to other speed table values, including #PARAM_BIT_DEPTH,
-#PARAM_PIX_TIME, #PARAM_READOUT_PORT, #PARAM_GAIN_INDEX and #PARAM_GAIN_NAME.
-After setting #PARAM_SPDTAB_INDEX, the gain setting is always reset to a value
-corresponding to 1x gain. To use a different gain setting, call #pl_set_param
-with #PARAM_GAIN_INDEX after setting the speed table index.
-
-After setting the parameter the #PARAM_SPDTAB_NAME can be used to retrieve user
-friendly description of the selected speed (if supported by camera).
-
-Data type: @c #int16
-
-@see @ref SpeedTable
-@note The availability is camera-dependent.
-*/
-#define PARAM_SPDTAB_INDEX ((CLASS2<<16) + (TYPE_INT16<<24) + 513)
-/**
-@brief Name of the currently selected Gain (via #PARAM_GAIN_INDEX).
-
-Use #ATTR_AVAIL to check for the availability. The gain name has a maximum
-length of #MAX_GAIN_NAME_LEN and can be retrieved with the #ATTR_CURRENT
-attribute.
-
-Data type: @c char*
-
-@see @ref SpeedTable
-@note The availability is camera-dependent.
-*/
-#define PARAM_GAIN_NAME ((CLASS2<<16) + (TYPE_CHAR_PTR<<24) + 514)
-/**
-@brief Name of the currently selected Speed (via #PARAM_SPDTAB_INDEX).
-
-Use #ATTR_AVAIL to check for the availability. The speed name has a maximum
-length of #MAX_SPDTAB_NAME_LEN and can be retrieved with the #ATTR_CURRENT
-attribute.
-
-Data type: @c char*
-
-@see @ref SpeedTable
-@note The availability is camera-dependent.
-*/
-#define PARAM_SPDTAB_NAME ((CLASS2<<16) + (TYPE_CHAR_PTR<<24) + 515)
-/**
-@brief Sensor readout port being used by the currently selected speed.
-
-Different readout ports (used for alternate speeds) flip the image in serial,
-parallel, or both.
-
-Data type: @c enum (@c #int32)
-
-@see @ref SpeedTable
-@note The availability is camera-dependent.
-*/
-#define PARAM_READOUT_PORT ((CLASS2<<16) + (TYPE_ENUM<<24) + 247)
-/**
-@brief This is the actual speed for the currently selected speed choice.
-
-It returns the time for each pixel conversion, in nanoseconds. This value may
-change as other speed choices are selected.
-
-Data type: @c #uns16
-
-@see @ref SpeedTable
-@note The availability is camera-dependent.
-*/
-#define PARAM_PIX_TIME ((CLASS2<<16) + (TYPE_UNS16<<24) + 516)
-
-/* SHUTTER PARAMETERS */
-
-/**
-@brief The shutter close delay.
-
-This is the number of milliseconds required for the shutter to close. Since physical
-shutters are no longer shipped or used with modern Teledyne Photometrics cameras, this
-signal can be used for controlling other devices such as light sources.
-
-Data type: @c #uns16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_SHTR_CLOSE_DELAY ((CLASS2<<16) + (TYPE_UNS16<<24) + 519)
-/**
-@brief The shutter open delay.
-
-This is the number of milliseconds required for the shutter to open. Since physical
-shutters are no longer shipped or used with modern Teledyne Photometrics cameras, this
-signal can be used for controlling other devices such as light sources.
-
-Data type: @c #uns16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_SHTR_OPEN_DELAY ((CLASS2<<16) + (TYPE_UNS16<<24) + 520)
-/**
-@brief The shutter opening condition.
-
-See #PL_SHTR_OPEN_MODES enum for all possible values.
-
-Data type: @c enum (@c #int32)
-
-@see @ref ExposureLoops
-@note The availability is camera-dependent.
-*/
-#define PARAM_SHTR_OPEN_MODE ((CLASS2<<16) + (TYPE_ENUM <<24) + 521)
-/**
-@brief The state of the camera shutter.
-
-This is a legacy parameter not used with modern Teledyne Photometrics cameras.
-If the shutter is run too fast, it will overheat and trigger #SHTR_FAULT. The
-shutter electronics will disconnect until the temperature returns to a suitable
-range. Note that although the electronics have reset the voltages to open or
-close the shutter, there is a lag time for the physical mechanism to respond.
-See also #PARAM_SHTR_OPEN_DELAY and #PARAM_SHTR_CLOSE_DELAY.
-See #PL_SHTR_MODES enum for all possible values.
-
-Data type: @c enum (@c #int32)
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_SHTR_STATUS ((CLASS2<<16) + (TYPE_ENUM <<24) + 522)
-
-/* I/O PARAMETERS */
-
-/**
-@brief Sets and gets the currently active I/O address.
-
-The number of available I/O addresses can be obtained using the #ATTR_COUNT.
-
-Data type: @c #uns16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_IO_ADDR ((CLASS2<<16) + (TYPE_UNS16<<24) + 527)
-/**
-@brief Gets the type of I/O available at the current address.
-
-See #PL_IO_TYPE enum for all possible values.
-
-Data type: @c enum (@c #int32)
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_IO_TYPE ((CLASS2<<16) + (TYPE_ENUM<<24) + 528)
-/**
-@brief Gets the direction of the signal at the current address.
-
-See #PL_IO_DIRECTION enum for all possible values.
-
-Data type: @c enum (@c #int32)
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_IO_DIRECTION ((CLASS2<<16) + (TYPE_ENUM<<24) + 529)
-/**
-@brief Sets and gets the state of the currently active I/O signal.
-
-The new or return value when setting or getting the value respectively has
-different meanings depending on the I/O type:
-- #IO_TYPE_TTL - A bit pattern, indicating the current state (0 or 1) of each of
- the control lines (bit 0 indicates line 0 state, etc.).
-- #IO_TYPE_DAC - The value of the desired analog output (only applies to
- #pl_set_param).
-
-The minimum and maximum range for the signal can be obtained using the #ATTR_MIN
-and #ATTR_MAX attributes, respectively.
-
-When outputting signals, the state is the desired output. For example, when
-setting the output of a 12-bit DAC with a range of 0-5V to half-scale, the state
-should be 2.5 (volts), not 1024 (bits).
-
-Data type: @c #flt64
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_IO_STATE ((CLASS2<<16) + (TYPE_FLT64<<24) + 530)
-/**
-@brief Gets the bit depth for the signal at the current address.
-
-The bit depth has different meanings, depending on the I/O Type:
-- #IO_TYPE_TTL - The number of bits read or written at this address.
-- #IO_TYPE_DAC - The number of bits written to the DAC.
-
-Data type: @c #uns16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_IO_BITDEPTH ((CLASS2<<16) + (TYPE_UNS16<<24) + 531)
-
-/* GAIN MULTIPLIER PARAMETERS */
-
-/**
-@brief Gain multiplication factor for cameras with multiplication gain
-functionality.
-
-The valid range is reported via #ATTR_MIN and #ATTR_MAX.
-
-Data type: @c #uns16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_GAIN_MULT_FACTOR ((CLASS2<<16) + (TYPE_UNS16<<24) + 537)
-/**
-@brief Gain multiplier on/off indicator for cameras with the multiplication gain
-functionality.
-
-This parameter is read-only and its value is always @c TRUE if it is available on the
-camera.
-
-Data type: @c #rs_bool
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_GAIN_MULT_ENABLE ((CLASS2<<16) + (TYPE_BOOLEAN<<24) + 541)
-
-/* POST PROCESSING PARAMETERS */
-
-/**
-@brief This returns the name of the currently selected post-processing feature.
-
-The name is a null-terminated text string. User is responsible for buffer
-allocation with at least #MAX_PP_NAME_LEN bytes.
-
-Data type: @c char*
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_PP_FEAT_NAME ((CLASS2<<16) + (TYPE_CHAR_PTR<<24) + 542)
-/**
-@brief This selects the current post-processing feature from a table of
-available choices.
-
-The entries are 0-based and the range of possible values is 0 to @c max_entries.
-@c max_entries can be determined with the #ATTR_MAX attribute. This setting
-relates to other post-processing table values, including #PARAM_PP_FEAT_NAME,
-#PARAM_PP_FEAT_ID and #PARAM_PP_PARAM_INDEX.
-
-Data type: @c #int16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_PP_INDEX ((CLASS2<<16) + (TYPE_INT16<<24) + 543)
-/**
-@brief Gets the actual e/ADU for the current gain setting.
-
-Data type: @c #uns16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_ACTUAL_GAIN ((CLASS2<<16) + (TYPE_UNS16<<24) + 544)
-/**
-@brief This selects the current post-processing parameter from a table of
-available choices.
-
-The entries are 0-based and the range of possible values is 0 to @c max_entries.
-@c max_entries can be determined with the #ATTR_MAX attribute. This setting
-relates to other post-processing table values, including #PARAM_PP_PARAM_NAME,
-#PARAM_PP_PARAM_ID and #PARAM_PP_PARAM.
-
-Data type: @c #int16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_PP_PARAM_INDEX ((CLASS2<<16) + (TYPE_INT16<<24) + 545)
-/**
-@brief Gets the name of the currently selected post-processing parameter for the
-currently selected post-processing feature.
-
-The name is a null-terminated text string. User is responsible for buffer
-allocation with at least #MAX_PP_NAME_LEN bytes.
-
-Data type: @c char*
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_PP_PARAM_NAME ((CLASS2<<16) + (TYPE_CHAR_PTR<<24) + 546)
-/**
-@brief This gets or sets the post-processing parameter for the currently selected
-post-processing parameter at the index.
-
-Data type: @c #uns32
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_PP_PARAM ((CLASS2<<16) + (TYPE_UNS32<<24) + 547)
-/**
-@brief Gets the read noise for the current speed.
-
-Data type: @c #uns16
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_READ_NOISE ((CLASS2<<16) + (TYPE_UNS16<<24) + 548)
-/**
-@brief This returns the ID of the currently-selected post-processing feature.
-
-This maps a specific post-processing module across cameras to help applications
-filter for camera features they need to expose and those that they don't. It
-helps to identify similarities between camera post-processing features.
-
-Data type: @c #uns32
-
-@note The availability is camera-dependent.
-@note The parameter type is incorrectly defined. The actual type is TYPE_UNS32.
-*/
-#define PARAM_PP_FEAT_ID ((CLASS2<<16) + (TYPE_UNS16<<24) + 549)
-/**
-@brief This returns the ID of the currently selected post-processing parameter.
-
-This maps a specific post-processing parameter across cameras to help
-applications filter for camera features they need to expose and those that they
-don't. It helps to identify similarities between camera post-processing features.
-
-Data type: @c #uns32
-
-@note The availability is camera-dependent.
-@note The parameter type is incorrectly defined. The actual type is TYPE_UNS32.
-*/
-#define PARAM_PP_PARAM_ID ((CLASS2<<16) + (TYPE_UNS16<<24) + 550)
-
-/* S.M.A.R.T. STREAMING PARAMETERS */
-
-/**
-@brief This parameter allows the user to retrieve or set the state of the
-S.M.A.R.T. streaming mode.
-
-When a @c TRUE is returned by the camera, S.M.A.R.T. streaming is enabled.
-
-Data type: @c #rs_bool
-
-@see @ref SmartStreaming
-@note The availability is camera-dependent.
-*/
-#define PARAM_SMART_STREAM_MODE_ENABLED ((CLASS2<<16) + (TYPE_BOOLEAN<<24) + 700)
-/**
-@brief This parameter allows the user to select between available S.M.A.R.T.
-streaming modes.
-
-See #PL_SMT_MODES enum for all possible values.
-Currently the only available mode is #SMTMODE_ARBITRARY_ALL.
-
-Data type: @c #uns16
-
-@see @ref SmartStreaming
-@note The availability is camera-dependent.
-*/
-#define PARAM_SMART_STREAM_MODE ((CLASS2<<16) + (TYPE_UNS16<<24) + 701)
-/**
-@brief This parameter allows to set or read the current exposure parameters for
-S.M.A.R.T. streaming.
-
-Data type: @c #smart_stream_type*
-
-@see @ref SmartStreaming
-@note The availability is camera-dependent.
-@note The parameter type is incorrectly defined. The actual type is TYPE_SMART_STREAM_TYPE_PTR.
-*/
-#define PARAM_SMART_STREAM_EXP_PARAMS ((CLASS2<<16) + (TYPE_VOID_PTR<<24) + 702)
-/**
-@brief This parameter allows to set or read the current delays between exposures
-in S.M.A.R.T. streaming.
-
-Data type: @c #smart_stream_type*
-
-@see @ref SmartStreaming
-@note The availability is camera-dependent.
-@note This parameter is currently not supported and #ATTR_AVAIL always returns
-@c FALSE.
-@note The parameter type is incorrectly defined. The actual type is TYPE_SMART_STREAM_TYPE_PTR.
-*/
-#define PARAM_SMART_STREAM_DLY_PARAMS ((CLASS2<<16) + (TYPE_VOID_PTR<<24) + 703)
-
-/* ACQUISITION PARAMETERS */
-
-/**
-@brief Used to examine and change the exposure time in VTM only.
-
-VTM is active if exposure mode is set to #VARIABLE_TIMED_MODE. This value is
-limited to 16-bit. For higher exposure times separate single frame acquisitions,
-or SMART streaming (if available), have to be used.
-
-Data type: @c #uns16
-*/
-#define PARAM_EXP_TIME ((CLASS3<<16) + (TYPE_UNS16<<24) + 1)
-/**
-@brief Gets the exposure resolution for the current resolution index.
-
-This parameter does exactly the same as #PARAM_EXP_RES_INDEX, but additionally
-provides human-readable string for each exposure resolution.
-
-For some older cameras this parameter might not be available (#ATTR_AVAIL
-returns @c FALSE). In this case camera uses #EXP_RES_ONE_MILLISEC resolution.
-
-Data type: @c enum (@c #int32)
-*/
-#define PARAM_EXP_RES ((CLASS3<<16) + (TYPE_ENUM<<24) + 2)
-/**
-@brief Gets and sets the index into the exposure resolution table.
-
-The table contains the resolutions supported by the camera. The value at this
-index is an enumerated type, representing different resolutions. The number of
-supported resolutions can be obtained using the #ATTR_COUNT attribute.
-See #PL_EXP_RES_MODES enum for all possible values.
-
-Data type: @c #uns16
-*/
-#define PARAM_EXP_RES_INDEX ((CLASS3<<16) + (TYPE_UNS16<<24) + 4)
-/**
-@brief Used to examine current exposure time and range of valid values.
-
-The minimum and maximum value could be limited by camera hardware. Use #ATTR_MIN
-and #ATTR_MAX to retrieve it. This parameter is always available, but for older
-cameras not reporting their limits, the min. value is set to 0 and max. value is
-set to max. 32-bit range for backward compatibility. This means the range is not
-known, which does not rule out exposure limits. In such case limits may be specified
-e.g. in camera manual. Please note the reported value unit depends on
-currently selected exposure resolution (#PARAM_EXP_RES).
-
-Data type: @c #ulong64
-*/
-#define PARAM_EXPOSURE_TIME ((CLASS3<<16) + (TYPE_UNS64<<24) + 8)
-
-/* PARAMETERS FOR BEGIN and END of FRAME Interrupts */
-
-/**
-@brief Enables and configures the BOF/EOF interrupts.
-
-See #PL_IRQ_MODES enum for all possible values.
-
-Data type: @c enum (@c #int32)
-
-@note The availability is camera-dependent.
-@warning This parameter is deprecated and should not be accessed. Modern cameras
-use callback acquisition where BOF/EOF is controlled by the hardware.
-@ingroup grp_pm_deprecated
-*/
-#define PARAM_BOF_EOF_ENABLE ((CLASS3<<16) + (TYPE_ENUM<<24) + 5)
-/**
-@brief Returns the Begin-Of-Frame and/or End-Of-Frame count.
-
-BOF/EOF counting is enabled and configured with #PARAM_BOF_EOF_ENABLE.
-
-Data type: @c #uns32
-
-@note The availability is camera-dependent.
-@warning This parameter is deprecated and should not be accessed. Modern cameras
-use callback acquisition where BOF/EOF is controlled by the hardware.
-@ingroup grp_pm_deprecated
-*/
-#define PARAM_BOF_EOF_COUNT ((CLASS3<<16) + (TYPE_UNS32<<24) + 6)
-/**
-@brief Clears the BOF/EOF count when a #pl_set_param is performed.
-
-This is a write-only parameter.
-
-Data type: @c #rs_bool
-
-@note The availability is camera-dependent.
-@warning This parameter is deprecated and should not be accessed. Modern cameras
-use callback acquisition where BOF/EOF is controlled by the hardware.
-@ingroup grp_pm_deprecated
-*/
-#define PARAM_BOF_EOF_CLR ((CLASS3<<16) + (TYPE_BOOLEAN<<24) + 7)
-
-/**
-@brief Tests to see if the hardware/software can perform circular buffer.
-
-When a @c TRUE is returned for #ATTR_AVAIL attribute, the circular buffer
-function can be used.
-
-Data type: @c #rs_bool
-*/
-#define PARAM_CIRC_BUFFER ((CLASS3<<16) + (TYPE_BOOLEAN<<24) + 299)
-/**
-@brief Retrieves the min, max, current and recommended (default) buffer size in
-bytes.
-
-Applies to currently configured acquisition. This parameter becomes
-available only after calling the #pl_exp_setup_seq or #pl_exp_setup_cont.
-For sequence acquisition, the attribute always reports the full sequence size in
-bytes. For circular buffer acquisition, use the #ATTR_DEFAULT to retrieve the
-recommended buffer size.
-
-Data type: @c #ulong64
-*/
-#define PARAM_FRAME_BUFFER_SIZE ((CLASS3<<16) + (TYPE_UNS64<<24) + 300)
-
-/* Binning reported by camera */
-
-/**
-@brief Used to obtain serial part of serial x parallel binning factors
-permutations.
-
-It has to be always used in pair with #PARAM_BINNING_PAR parameter.
-
-Data type: @c enum (@c #int32)
-
-@see @ref BinningDiscovery
-@note The availability is camera-dependent.
-*/
-#define PARAM_BINNING_SER ((CLASS3<<16) + (TYPE_ENUM<<24) + 165)
-/**
-@brief Used to obtain parallel part of serial x parallel binning factors
-permutations.
-
-It has to be always used in pair with #PARAM_BINNING_SER parameter.
-
-Data type: @c enum (@c #int32)
-
-@see @ref BinningDiscovery
-@note The availability is camera-dependent.
-*/
-#define PARAM_BINNING_PAR ((CLASS3<<16) + (TYPE_ENUM<<24) + 166)
-
-/* Parameters related to multiple ROIs and Centroids */
-
-/**
-@brief Parameter used to enable or disable the embedded frame metadata feature.
-
-Once enabled, the acquired frames will contain additional information describing
-the frame.
-
-Data type: @c #rs_bool
-
-@see @ref EmbeddedFrameMetadata
-@note The availability is camera-dependent.
-*/
-#define PARAM_METADATA_ENABLED ((CLASS3<<16) + (TYPE_BOOLEAN<<24) + 168)
-/**
-@brief Resets the camera-generated metadata timestamp.
-
-In normal operation, the timestamp is reset upon camera power up. Use this parameter
-to reset the timestamp when needed. This is a write-only paremeter, use #pl_set_param
-with @c TRUE value to reset the timestamp.
-
-Data type: @c #rs_bool
-
-@see @ref EmbeddedFrameMetadata
-@note The availability is camera-dependent.
-*/
-#define PARAM_METADATA_RESET_TIMESTAMP ((CLASS3<<16) + (TYPE_BOOLEAN<<24) + 176)
-/**
-@brief The number of currently configured ROIs.
-
-The #ATTR_CURRENT returns the currently configured number of ROIs set via
-#pl_exp_setup_seq or #pl_exp_setup_cont functions. The #ATTR_MAX can be used to
-retrieve the maximum number of ROIs the camera supports.
-
-Data type: @c #uns16
-*/
-#define PARAM_ROI_COUNT ((CLASS3<<16) + (TYPE_UNS16 <<24) + 169)
-/**
-@brief Gets or sets the current ROI.
-
-This parameter returns the current ROI that was configured through the
-#pl_exp_setup_seq or #pl_exp_setup_cont functions. If multiple ROIs were
-configured, this parameter returns the first one.
-If the camera supports live ROI feature, the parameter is used to send the live
-ROI to the camera.
-
-Data type: @c #rgn_type
-*/
-#define PARAM_ROI ((CLASS3<<16) + (TYPE_RGN_TYPE<<24) + 1)
-/**
-@brief This parameter is used to enable or disable the Centroids/Object detection
-feature.
-
-Use the #PARAM_CENTROIDS_MODE to retrieve a list of camera supported
-object detection modes.
-
-Data type: @c #rs_bool
-
-@see @ref Centroids
-@note The availability is camera-dependent.
-*/
-#define PARAM_CENTROIDS_ENABLED ((CLASS3<<16) + (TYPE_BOOLEAN<<24) + 170)
-/**
-@brief This parameter is used to set the Centroid radius.
-
-This read-write parameter is used to obtain the range of Centroids radii the
-camera supports. Use the #ATTR_MIN and #ATTR_MAX to retrieve the range.
-
-The radius defines the distance from the center pixel. For example, if the camera
-reports the radius range between 1 and 5, it means that the resulting ROIs can be
-configured to the following sizes: 1=3x3, 2=5x5, 3=7x7, 4=9x9, 5=11x11.
-
-The parameter interpretation also depends on the selected Centroid/Object detection
-mode. In some modes, the radius is used to set the size of the 'object' to be detected.
-
-Use #pl_set_param to set the desired Centroids radius. Once set, make sure to
-reconfigure the acquisition with #pl_exp_setup_seq or #pl_exp_setup_cont
-functions.
-
-Data type: @c #uns16
-
-@see @ref Centroids
-@note The availability is camera-dependent.
-*/
-#define PARAM_CENTROIDS_RADIUS ((CLASS3<<16) + (TYPE_UNS16 <<24) + 171)
-/**
-@brief This parameter is used to control the number of Centroids.
-
-This read-write parameter is used to obtain the maximum supported number of
-Centroids and set the desired number of Centroids to the camera.
-
-The camera usually supports a limited number of Centroids/objects to be detected.
-Use this parameter to limit the number of objects to be detected. For example, in
-particle tracking mode, the parameter will limit number of particles to be tracked
-- if the camera finds more particles than the current limit, the remaining particles
-will be ignored.
-
-Data type: @c #uns16
-
-@see @ref Centroids
-@note The availability is camera-dependent.
-*/
-#define PARAM_CENTROIDS_COUNT ((CLASS3<<16) + (TYPE_UNS16 <<24) + 172)
-/**
-@brief This parameter is used to retrieve and control the camera Centroid/Object
-detection modes.
-
-In case the camera supports centroids, but reports this parameter as not
-available, only the #PL_CENTROIDS_MODE_LOCATE feature is supported.
-See #PL_CENTROIDS_MODES enum for all possible values.
-
-Data type: @c enum (@c #int32)
-
-@see @ref Centroids
-@note The availability is camera-dependent.
-*/
-#define PARAM_CENTROIDS_MODE ((CLASS3<<16) + (TYPE_ENUM <<24) + 173)
-/**
-@brief Supported Centroids background frame processing count.
-
-This allows the camera to report supported selections for number of frames for
-dynamic background removal. The processing is optimized only for the selected set
-of frames. Thus there is no related enumeration type with supported values for this
-parameter.
-
-Data type: @c enum (@c #int32)
-
-@see @ref Centroids
-@note The availability is camera-dependent.
-*/
-#define PARAM_CENTROIDS_BG_COUNT ((CLASS3<<16) + (TYPE_ENUM <<24) + 174)
-/**
-@brief Used to configure threshold multiplier for specific object detection modes.
-
-For 'particle tracking' mode, the value is a fixed-point real number in Q8.4 format.
-E.g. the value 1234 (0x4D2) means 77.2 (0x4D hex = 77 dec).
-
-Data type: @c #uns32
-
-@see @ref Centroids
-@note The availability is camera-dependent.
-*/
-#define PARAM_CENTROIDS_THRESHOLD ((CLASS3<<16) + (TYPE_UNS32 <<24) + 175)
-
-/* Parameters related to triggering table */
-
-/**
-@brief Used to select the output signal to be configured.
-
-The configuration of number of active outputs is done via
-#PARAM_LAST_MUXED_SIGNAL parameter.
-See #PL_TRIGTAB_SIGNALS enum for all possible values.
-
-Data type: @c enum (@c #int32)
-
-@see @ref TriggeringTable
-@note The availability is camera-dependent.
-*/
-#define PARAM_TRIGTAB_SIGNAL ((CLASS3<<16) + (TYPE_ENUM<<24) + 180)
-/**
-@brief Used to set the number of active output signals.
-
-The set number of signals is used by multiplexer for the signal selected
-by #PARAM_TRIGTAB_SIGNAL parameter.
-
-Data type: @c #uns8
-
-@see @ref TriggeringTable
-@note The availability is camera-dependent.
-*/
-#define PARAM_LAST_MUXED_SIGNAL ((CLASS3<<16) + (TYPE_UNS8<<24) + 181)
-/**
-@brief Deals with frame delivery modes.
-
-This parameter allows to switch among various frame delivery modes.
-If not available, camera runs in #PL_FRAME_DELIVERY_MODE_MAX_FPS mode.
-See #PL_FRAME_DELIVERY_MODES enum for all possible values.
-
-Data type: @c enum (@c #int32)
-
-@note The availability is camera-dependent.
-*/
-#define PARAM_FRAME_DELIVERY_MODE ((CLASS3<<16) + (TYPE_ENUM <<24) + 400)
-
-/** @} */ /* grp_pm_parameters */
-
-/******************************************************************************/
-/* End of parameter ID definitions. */
-/******************************************************************************/
-
-/******************************************************************************/
-/* Start of function prototypes. */
-/******************************************************************************/
-
-#ifndef PV_EMBEDDED
-
-/**
-@defgroup grp_pm_deprecated_functions Deprecated functions
-@ingroup grp_pm_deprecated
-These functions are included for compatibility reasons.
-*/
-
-/**
-@defgroup grp_callbacks Callbacks
-
-Use these callback function signatures with corresponding callback registering
-functions to register for various camera notifications.
-
-C++ code example:
-(Proper error handling and other camera initialization omitted for clarity)
-@code{.cpp}
-void MyCamera::initialize()
-{
- // Register for the End-Of-Frame notifications, passing 'this' as a context
- // in order to properly forward the notification to this class.
- pl_cam_register_callback_ex3(m_hCam, PL_CALLBACK_EOF, (void*)pvcamCallbackEofEx3, this);
-}
-void MyCamera::handleEofCallback(const FRAME_INFO* pFrameInfo)
-{
- uns16* pFrameData = NULL;
- pl_exp_get_latest_frame(m_hCam, (void**)&pFrameData);
- // The displayFrame() should not do any lengthy processing, we need to
- // release the callback routine as quickly as possible.
- displayFrame(pFrameData, pFrameInfo);
-}
-
-// Using the PL_CALLBACK_SIG_EX3 function signature. This function is declared
-// as static in the header file.
-void PV_DECL MyCamera::pvcamCallbackEofEx3(const FRAME_INFO* pFrameInfo, void* pContext)
-{
- MyCamera* pCamera = static_cast(pContext);
- pCamera->handleEofCallback(pFrameInfo);
-}
-@endcode
-
-@{
-*/
-
-/**
-A callback function signature for the #pl_cam_register_callback function.
-*/
-typedef void (PV_DECL *PL_CALLBACK_SIG_LEGACY)(void);
-
-/**
-A callback function signature for the #pl_cam_register_callback_ex function.
-
-@param[in] pContext A pointer to the user defined context that was previously
- passed into the #pl_cam_register_callback_ex function.
-*/
-typedef void (PV_DECL *PL_CALLBACK_SIG_EX)(void* pContext);
-
-/**
-A callback function signature for the #pl_cam_register_callback_ex2 function.
-
-@param[in] pFrameInfo A pointer to a FRAME_INFO structure uniquely identifying
- the incoming frame.
-*/
-typedef void (PV_DECL *PL_CALLBACK_SIG_EX2)(const FRAME_INFO* pFrameInfo);
-
-/**
-A callback function signature for the #pl_cam_register_callback_ex3 function.
-
-@param[in] pFrameInfo A pointer to a FRAME_INFO structure uniquely identifying
- the incoming frame.
-@param[in] pContext A pointer to the user defined context that was previously
- passed into the #pl_cam_register_callback_ex3 function.
-*/
-typedef void (PV_DECL *PL_CALLBACK_SIG_EX3)(const FRAME_INFO* pFrameInfo, void* pContext);
-
-/** @} */ /* grp_callbacks */
-
-#ifdef PV_C_PLUS_PLUS
-extern "C"
-{
-#endif
-
-/*****************************************************************************/
-/*****************************************************************************/
-/* */
-/* Camera Communications Function Prototypes */
-/* */
-/*****************************************************************************/
-/*****************************************************************************/
-
-/**
-@defgroup grp_pm_functions Functions
-*/
-
-/**
-@addtogroup grp_pm_functions
-@{
-*/
-
-/**
-@brief Returns the PVCAM version number.
-
-The version is a highly formatted hexadecimal number of the style:
-
-| High byte | Low | byte |
-|:------------:|--------------:|:---------------|
-| | High nibble | Low nibble |
-| Major version| Minor version | Trivial version|
-
-For example, the number 0x11F1 indicates major release 17, minor release 15, and
-trivial change 1. A major release is defined as anything that alters the interface,
-calling sequence, parameter list, or interpretation of any function in the library.
-This includes new functions and alterations to existing functions, but it does not
-include alterations to the optional libraries, which sit on top of PVCAM
-(each optional library includes its own, independent version number). A new major release
-often requires a change in the PVCAM library, but wherever possible, major releases
-are backwards compatible with earlier releases. A minor release should be completely
-transparent to higher-level software (PVCAM) but may include internal enhancements.
-The trivial version is reserved for use by the software staff to keep track of extremely
-minor variations. The last digit is used for build numbers and should be ignored. Minor
-and trivial releases should require no change in the calling software.
-
-@param[out] pvcam_version Version number of PVCAM installer.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see #PARAM_DD_VERSION
-*/
-rs_bool PV_DECL pl_pvcam_get_ver(uns16* pvcam_version);
-
-/**
-@brief Opens and initializes the library.
-
-The PVCAM library requires significant system resources: memory, hardware access, etc.
-#pl_pvcam_init prepares these resources for use, as well as allocating whatever static
-memory the library needs. Until #pl_pvcam_init is called, every PVCAM function
-(except for the error reporting functions) will fail and return an error message
-that corresponds to "library has not been initialized".
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@note If this call fails, #pl_error_code contains the code that lists the reason for failure.
-
-@see pl_pvcam_uninit, pl_cam_open, pl_error_code
-*/
-rs_bool PV_DECL pl_pvcam_init(void);
-
-/**
-@brief Closes the library, closes all devices, frees memory.
-
-This function releases all system resources that #pl_pvcam_init acquired.
-It also searches for all cameras that the user has opened. If it finds any,
-it will close them before exiting.
-It will also unlock and free memory, and clean up after itself as much as possible.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_pvcam_init, pl_cam_close, pl_error_code
-
-@warning If hardware is involved in acquiring data, the system may not be
-able to disconnect immediately.
-*/
-rs_bool PV_DECL pl_pvcam_uninit(void);
-
-/** @} */ /* grp_pm_functions */
-
-/**
-@addtogroup grp_pm_deprecated_functions
-@{
-*/
-DEPRECATED rs_bool PV_DECL pl_cam_check(int16 hcam);
-/** @} */ /* grp_pm_deprecated_functions */
-
-/**
-@addtogroup grp_pm_functions
-@{
-*/
-
-/**
-@brief Frees the current camera, prepares it for power-down.
-
-This function has two effects. First, it removes the listed camera from
-the reserved list, allowing other users to open and use the hardware.
-Second, it performs all cleanup, close-down, and shutdown preparations needed
-by the hardware. A camera can only be closed if it was previously opened.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_cam_open, pl_pvcam_init, pl_pvcam_uninit
-
-@note #pl_pvcam_uninit automatically calls the #pl_cam_close on all cameras opened by
-the current user.
-*/
-rs_bool PV_DECL pl_cam_close(int16 hcam);
-
-/**
-@brief Returns the name of a camera.
-
-This function allows users to learn the string identifier associated with every
-camera on the current system. This is a companion to the #pl_cam_get_total function.
-cam_num input can run from 0 to (@c totl_cams-1), inclusive. The user must pass in
-a string that is at least #CAM_NAME_LEN characters long, #pl_cam_get_name then fills
-that string with an appropriate null-terminated string. @c camera_name can be passed
-directly into the #pl_cam_open function. It has no other use, aside from providing
-a brief description of the camera.
-
-@param[in] cam_num Camera number Range: 0 through (@c totl_cams-1).
-@param[out] camera_name PVCAM-assigned camera name.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_cam_get_total, pl_cam_open, pl_cam_close
-
-@note This call reports the names of all cameras on the system, even if all the cameras
-are not available. If the hardware is turned off, or if another user has a camera open,
-the camera name is reported, but the camera will not be available. #pl_cam_get_name returns
-a name and #pl_cam_open gives information on availability of that camera.
-To build a complete list of every camera on the system, it is necessary to cycle through
-all the entries as shown below:
-@code{.cpp}
-int total_cameras;
-char name[CAM_NAME_LEN];
-...
-pl_cam_get_total(&total_cameras);
-for (i = 0; i < total_cameras; i++) {
- pl_cam_get_name(i, name);
- printf("Camera %d is called '%s'\n", i, name);
-}
-@endcode
-*/
-rs_bool PV_DECL pl_cam_get_name(int16 cam_num, char* camera_name);
-
-/**
-@brief Returns the number of cameras attached to the system.
-
-This function reports the number of cameras on the system.
-All the listed cameras may not be available on multi-tasking systems, some cameras
-may already be in use by other users. A companion function #pl_cam_get_name can
-be used to get the string identifier associated with each camera.
-
-@param[out] totl_cams Total number of cameras in the system.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_cam_get_name, pl_cam_open, pl_cam_close
-
-@note This function actually searches for all device drivers on the system, without
-checking hardware. The list of cameras is obtained during #pl_pvcam_init. Thus, if a new camera
-(new device driver) is added after the library was opened, the system won't know that the new
-camera is there. The system will also not notice if a camera is removed. (Obviously, this is
-only important on multi-tasking systems). A cycle of @c uninit / @c init regenerates the list of available
-cameras, updating the system for any additions or deletions.
-*/
-rs_bool PV_DECL pl_cam_get_total(int16* totl_cams);
-
-/**
-@brief Reserves and initializes the camera hardware.
-
-The string @a camera_name should be identical to one of the valid camera names returned by #pl_cam_get_name.
-If the name is valid, #pl_cam_open completes a short set of checks and diagnostics as it attempts
-to establish communication with the camera electronics unit. If successful, the camera is opened
-and a valid camera handle is passed back in hcam. Otherwise, #pl_cam_open returns with a failure.
-An explanation is shown in #pl_error_code.
-
-The @a o_mode setting controls the mode under which the camera is opened.
-Currently, the only possible choice is #OPEN_EXCLUSIVE. On multi-user systems, opening a camera
-under the exclusive mode reserves it for the current user, locking out all other users on the
-system. If #pl_cam_open is successful, the user has exclusive access to that camera until the camera
-is closed or #pl_pvcam_uninit is called.
-
-@param[in] camera_name PVCAM-assigned camera name.
-@param[out] hcam Camera handle returned from #pl_cam_open.
-@param[in] o_mode Mode to open the camera in (must be #OPEN_EXCLUSIVE).
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_cam_get_name, pl_cam_get_total, pl_cam_close, pl_pvcam_init, pl_pvcam_uninit
-
-@warning Despite the above paragraph, a successful #pl_cam_open does not mean that the camera
-is in working order. It does mean that you can communicate with the device driver associated
-with the camera. After a successful #pl_cam_open, call #pl_error_message, which reports any error
-conditions.
-*/
-rs_bool PV_DECL pl_cam_open(char* camera_name, int16* hcam, int16 o_mode);
-
-/** @} */ /* grp_pm_functions */
-
-/**
-@addtogroup grp_pm_deprecated_functions
-@{
-*/
-DEPRECATED rs_bool PV_DECL pl_cam_register_callback(int16 hcam, int32 callback_event,
- void* callback);
-DEPRECATED rs_bool PV_DECL pl_cam_register_callback_ex(int16 hcam, int32 callback_event,
- void* callback, void* context);
-DEPRECATED rs_bool PV_DECL pl_cam_register_callback_ex2(int16 hcam, int32 callback_event,
- void* callback);
-/** @} */ /* grp_pm_deprecated_functions */
-
-/**
-@addtogroup grp_pm_functions
-@{
-*/
-
-/**
-@brief Installs a handler function that will be called when an event occurs in a camera
-providing information about frame via #FRAME_INFO type and with user context information.
-
-This function combines functionality provided by #pl_cam_register_callback_ex
-and #pl_cam_register_callback_ex2.
-
-Use this API call to install a function that will be called when the specified event
-occurs providing additional frame information. Input parameter of the callback function
-must be of #FRAME_INFO* type in order to receive information about the frame
-(timestamp with precision of 0.1ms, frame counter number, ID (handle) of the camera that
-produced the frame). Also, pointer to a context that will be echoed back when the callback
-is invoked can be passed to PVCAM in this function.
-
-#### Example of Callback function:
-
-@code{.cpp}
-void EOFCallbackHandler(FRAME_INFO* pFrameInfo, void* pContext)
-{
- const int32 frameNr = pFrameInfo->FrameNr;
- const long64 frameTime = pFrameInfo->TimeStamp;
- const int16 camID = pFrameInfo->hCam;
- // Display or process frame info etc.
- if (*(int16*)pContext == hCamera1)
- EOFCountCamera1++;
- else if (*(int16*)pContext == hCamera2)
- EOFCountCamera2++;
-}
-@endcode
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[in] callback_event Callback event to register for (see #PL_CALLBACK_EVENT).
-@param[out] callback Callback function pointer.
-@param[out] context Pointer to custom user context.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_cam_deregister_callback
-
-@warning #pl_exp_finish_seq must be called if acquiring in sequential mode
-(using #pl_exp_setup_seq and #pl_exp_start_seq) with callback notification after all frames are
-read out and before new exposure is started by calling #pl_exp_start_seq.
-Not all callbacks will be available for all camera systems/interfaces.
-
-@note Only #PL_CALLBACK_BOF and #PL_CALLBACK_EOF are fully supported by all camera types.
-Do not use other callback types in generic-purpose software.
-*/
-rs_bool PV_DECL pl_cam_register_callback_ex3(int16 hcam, int32 callback_event,
- void* callback, void* context);
-
-/**
-@brief Uninstalls a handler function for camera system event.
-
-Use this API call to uninstall a function for the specified camera system event.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[in] callback_event Callback event to register for (see #PL_CALLBACK_EVENT).
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_cam_register_callback, pl_cam_register_callback_ex, pl_cam_register_callback_ex2,
-pl_cam_register_callback_ex3.
-
-@note Only #PL_CALLBACK_BOF and #PL_CALLBACK_EOF are fully supported by all camera types.
-Do not use other callback types in generic-purpose software.
-See callback descriptions section under #pl_cam_register_callback_ex3 for details.
-*/
-rs_bool PV_DECL pl_cam_deregister_callback(int16 hcam, int32 callback_event);
-
-/*****************************************************************************/
-/*****************************************************************************/
-/* */
-/* Error Reporting Function Prototypes */
-/* */
-/*****************************************************************************/
-/*****************************************************************************/
-
-/**
-@brief Returns the most recent error condition.
-
-As every PVCAM function begins, it resets the error code to 0.
-If an error occurs later in the function, the error code is set to a corresponding
-value.
-
-For details about correct handling see @ref ApiErrors section.
-
-@return The current error code. Note that a call to #pl_error_code does not
-reset the error code.
-
-@see pl_error_message
-
-@note #pl_error_code works even before #pl_pvcam_init is called.
-This allows a message to be returned if #pl_pvcam_init fails.
-
-@warning The PVCAM library does not intercept signals. Errors that interrupt
-the normal process (divide by zero, etc.) may cause the software to crash,
-and #pl_error_code may or may not contain useful information.
-*/
-int16 PV_DECL pl_error_code(void);
-
-/**
-@brief Returns a string explaining input error code.
-
-This function fills in the character string msg with a message that corresponds
-to the value in @a err_code. The msg string is allocated by the user, and should be
-at least #ERROR_MSG_LEN elements long.
-
-For details about correct handling see @ref ApiErrors section.
-
-@param[in] err_code Unique ID of the error: returned from #pl_error_code.
-@param[out] msg Text description of err_code.
-
-@return Returns #PV_OK if a message corresponding to the input code is found and
-#PV_FAIL if the code does not have a corresponding message
-(@a msg will be filled with the string "Unknown error").
-Even if a #PV_FAIL is returned, the value of #pl_error_code is not altered.
-
-@see pl_error_code
-
-@note #pl_error_message works even before #pl_pvcam_init is called.
-This allows a message to be printed if #pl_pvcam_init fails.
-All error messages are standalone sentences without ending period having error
-code name appended in parenthesis.
-*/
-rs_bool PV_DECL pl_error_message(int16 err_code, char* msg);
-
-/*****************************************************************************/
-/*****************************************************************************/
-/* */
-/* Configuration/Setup Function Prototypes */
-/* */
-/*****************************************************************************/
-/*****************************************************************************/
-
-/**
-@brief Returns the requested attribute for a PVCAM parameter.
-
-This function returns the requested attribute for a PVCAM parameter.
-
-@a param_id is an enumerated type that indicates the parameter in question.
-@a param_value points to the value of the requested attribute for the parameter.
-It is a @c void* because it can be of different data types. The user is responsible
-for passing in the correct data type (see attribute descriptions that follow).
-@a param_attribute is used to retrieve characteristics of the parameter.
-See #PL_PARAM_ATTRIBUTES for possible values for @a param_attribute.
-
-Reading of values for attributes #ATTR_AVAIL, #ATTR_ACCESS and #ATTR_TYPE should
-always succeed and return correct value. Values of other attributes can be read
-only if #ATTR_ACCESS reports either #ACC_READ_ONLY or #ACC_READ_WRITE.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[in] param_id ID of the parameter to get or set (PARAM_...).
-@param[in] param_attribute Attribute of the parameter to get (ATTR_...).
-@param[out] param_value Value to get or set.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_set_param, pl_get_enum_param
-
-@note The data type of @a param_value is documented in pvcam.h for each param_id.
-*/
-rs_bool PV_DECL pl_get_param(int16 hcam, uns32 param_id,
- int16 param_attribute, void* param_value);
-
-/**
-@brief Sets the current value for a PVCAM parameter.
-
-This function sets the current value for a PVCAM parameter.
-
-@a param_id is an enumerated type that indicates the parameter in question.
-@a param_value points to the new value of the parameter. For the enumerated type,
-this value is the value assigned to current enum item, not the item index.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[in] param_id ID of the parameter to get or set (PARAM_...).
-@param[in] param_value Value to get or set.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_get_param, pl_get_enum_param
-
-@note The data type of @a param_value is documented in pvcam.h for each @a param_id.
-It can be retrieved using the #pl_get_param function and #ATTR_TYPE attribute.
-The user should call the #pl_get_param function with the attribute #ATTR_ACCESS
-to verify that the parameter ID is writable (settable) before calling the #pl_set_param
-function.
-*/
-rs_bool PV_DECL pl_set_param(int16 hcam, uns32 param_id, void* param_value);
-
-/**
-@brief Returns the enumerated value of the parameter param_id at index.
-
-This function will return the enumerated value of the parameter param_id at index.
-It also returns a string associated with the enumerated type (desc).
-@b length indicates the maximum length allowed for the returned description.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[in] param_id ID of the parameter to get or set (PARAM_...).
-@param[in] index Index of enumeration Range: 0 through N-1 ... where N
- is retrieved with get_param(...,#ATTR_COUNT,...).
-@param[out] value Numerical value of enumeration.
-@param[out] desc Text description of enumeration.
-@param[in] length Length of text description of enumeration.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_get_param, pl_set_param, pl_enum_str_length
-
-@note The user should call the #pl_get_param function with the attribute #ATTR_TYPE,
-to verify that the parameter ID is an enumerated data type before calling the #pl_get_enum_param.
-The user should also call the #pl_get_param function with the attribute #ATTR_COUNT to
-determine how many valid enumerated values the parameter ID has.
-Example: Suppose there is a parameter for camera readout speed. This parameter can be set to 1MHz,
-5MHz or 10MHz with the appropriate values 1, 5 and 10. If the readout speed is currently set to 5MHz,
-a call to #pl_get_param with #ATTR_CURRENT returns a value of 5.
-A call to #pl_get_enum_param for the readout speed parameter at index 1 (the second item)
-returns the enumerated type 5MHz with the value equal to 5 and the desc would contain "5MHz".
-*/
-rs_bool PV_DECL pl_get_enum_param(int16 hcam, uns32 param_id, uns32 index,
- int32* value, char* desc, uns32 length);
-
-/**
-@brief Returns the length of the descriptive string for the parameter @a param_id at index.
-
-This function will return the length (length) of the descriptive string for the parameter
-@a param_id at index. The length includes the terminating null ('\0') character.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[in] param_id ID of the parameter to get or set (PARAM_...).
-@param[in] index Index of enumeration Range: 0 through N-1, where N
- is retrieved with get_param(..., ATTR_COUNT, ...).
-@param[out] length Length of text description of enumeration.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_get_enum_param
-
-@note This function can be used to determine the amount of memory to allocate for
-the descriptive string when calling the #pl_get_enum_param function. Using the example
-in #pl_get_enum_param, the length returned would be 5 (4 printable characters plus 1 null character).
-*/
-rs_bool PV_DECL pl_enum_str_length(int16 hcam, uns32 param_id, uns32 index,
- uns32* length);
-
-/**
-@brief This function will reset all post-processing modules to their default values.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-
-@warning Fails if post-processing modules are not available in the current camera or
-if @a hcam is not the handle of an open camera.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see PARAM_PP_FEAT_NAME, PARAM_PP_PARAM_INDEX, PARAM_PP_PARAM_NAME, PARAM_PP_PARAM,
-PARAM_PP_FEAT_ID, PARAM_PP_PARAM_ID
-*/
-rs_bool PV_DECL pl_pp_reset(int16 hcam);
-
-/**
-@brief Creates and allocates variable of smart_stream_type type with the number of
-entries passed in via the entries parameter and returns pointer to it.
-
-This function will create a variable of smart_stream_type type and return a pointer
-to access it. The entries parameter passed by the user determines how many entries
-the structure will contain.
-
-@param[out] array Created struct to be returned.
-@param[in] entries Number of entries to be in smart stream struct.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_release_smart_stream_struct
-*/
-rs_bool PV_DECL pl_create_smart_stream_struct(smart_stream_type** array,
- uns16 entries);
-
-/**
-@brief Frees the space previously allocated by the #pl_create_smart_stream_struct function.
-
-This function will deallocate a smart_stream_type variable created by
-#pl_create_smart_stream_struct.
-
-@param[in] array Struct to be released.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_create_smart_stream_struct
-*/
-rs_bool PV_DECL pl_release_smart_stream_struct(smart_stream_type** array);
-
-/**
-@brief Creates and allocates variable of #FRAME_INFO type and returns pointer to it.
-
-This function will create a variable of #FRAME_INFO type and
-return a pointer to access it. The GUID field of the #FRAME_INFO structure is assigned
-by this function. Other fields are updated by PVCAM at the time of frame reception.
-
-@param[out] new_frame Frame info struct to be returned.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_release_frame_info_struct, pl_exp_get_latest_frame_ex, pl_exp_get_oldest_frame_ex,
-pl_exp_check_cont_status_ex, pl_cam_register_callback_ex2, pl_cam_register_callback_ex3
-*/
-rs_bool PV_DECL pl_create_frame_info_struct(FRAME_INFO** new_frame);
-
-/**
-@brief Deletes variable of #FRAME_INFO type.
-
-This function will deallocate #FRAME_INFO variable created by #pl_create_frame_info_struct.
-
-@param[in] frame_to_delete Frame info struct to be released.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_create_frame_info_struct, pl_exp_get_latest_frame_ex, pl_exp_get_oldest_frame_ex,
-pl_exp_check_cont_status_ex, pl_cam_register_callback_ex2, pl_cam_register_callback_ex3
-*/
-rs_bool PV_DECL pl_release_frame_info_struct(FRAME_INFO* frame_to_delete);
-
-/*****************************************************************************/
-/*****************************************************************************/
-/* */
-/* Data Acquisition Function Prototypes */
-/* */
-/*****************************************************************************/
-/*****************************************************************************/
-
-/**
-@brief Prepares the camera to perform a readout.
-
-This function uses the array of regions, exposure mode, and exposure
-time passed in and transmits them to the camera.
-@a exp_total specifies the number of images to take.
-The pointer @a rgn_array points to @a rgn_total region definitions, @a exp_mode specifies
-the bitwise OR combination of exposure mode and expose out mode (see chapter Extended
-Exposure Modes), @a exposure_time specifies the exposure time in the currently
-selected exposure time resolution (see #PARAM_EXP_RES and #PARAM_EXP_RES_INDEX).
-The pointer @a exp_bytes points to a variable that will be filled with number of bytes
-in the pixel stream. The settings are then uploaded to the camera. If there is any
-problem (overlapping regions or a frame-transfer setting for a camera that lacks that
-capability), this function aborts and returns with a failure. #pl_error_code indicates
-the definition problem. The @a exp_bytes pointer is filled with the number of bytes of
-memory needed to buffer the full sequence. (It is the developer's responsibility to
-allocate a memory buffer for the pixel stream.)
-When this function returns, the camera is ready to begin the exposure. #pl_exp_start_seq
-initiates exposure and readout.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[in] exp_total Total number of exposures to take.
-@param[in] rgn_total Total number of regions defined for each image.
-@param[in] rgn_array Array of regions (must be rgn_total in size).
- See rgn_type for details.
-@param[in] exp_mode Mode for capture (an OR-ed combination of #PL_EXPOSURE_MODES
- and #PL_EXPOSE_OUT_MODES, if applicable).
-@param[in] exposure_time Time to expose in selected exposure resolution.
- Default is milliseconds (see #PARAM_EXP_RES).
-@param[out] exp_bytes Value returned from PVCAM specifying the required
- number of bytes to allocate for the capture.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_exp_abort, pl_exp_check_status, pl_exp_start_seq, pl_exp_finish_seq
-
-@note This function uploads new settings to the camera. After receiving the settings, the camera
-merely waits in an idle state. The #pl_exp_abort command may be used to place the camera
-into some other state, such as continuous clearing, but this will not alter or affect
-the uploaded settings. Essentially, the camera is still holding the exposure sequence
-and waiting to start, while it clears the sensor charge.
-Also, please note that PVCAM internally checks whether configuration needs to be sent to the camera.
-If there is no difference in the camera configuration from the previous "setup" and other acquisition
-parameters have not changed in the meantime, the PVCAM will not resend the configuration. This may
-lead to shorter execution times of this function and faster start of the subsequent acquisition.
-*/
-rs_bool PV_DECL pl_exp_setup_seq(int16 hcam, uns16 exp_total, uns16 rgn_total,
- const rgn_type* rgn_array, int16 exp_mode,
- uns32 exposure_time, uns32* exp_bytes);
-
-/**
-@brief Begins exposing, returns immediately.
-
-This is a companion function to #pl_exp_setup_seq. #pl_exp_setup_seq
-must be called first to define the exposure and program this information into the camera.
-After that, #pl_exp_start_seq may be called one or more times. Each time it is called,
-it starts one sequence and returns immediately (a sequence may be one or more exposures).
-Progress can be monitored through #pl_exp_check_status. The next sequence may be started
-as soon as the readout has finished or an abort has been performed (#pl_exp_abort).
-
-The @a hcam parameter defines which camera is used.
-The user must allocate an appropriately sized memory buffer for data collection, pointed to
-by @a pixel_stream. This buffer must be at least @c exp_bytes bytes, where @c exp_bytes
-is the value returned from #pl_exp_setup_seq.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[out] pixel_stream Buffer to hold image(s).
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_exp_check_status, pl_exp_setup_seq, pl_exp_finish_seq
-*/
-rs_bool PV_DECL pl_exp_start_seq(int16 hcam, void* pixel_stream);
-
-/**
-@brief Sets circular buffer mode.
-
-This function sets the mode of operation for the circular buffer.
-This function uses the array of regions, exposure mode, exposure time passed in,
-and circular buffer mode and transmits them to the camera.
-The pointer @a rgn_array points to @a rgn_total region definitions.
-@a exp_mode specifies the bitwise OR combination of the exposure mode and expose out mode.
-@a exposure_time specifies the exposure time in the currently selected exposure time resolution
-(see #PARAM_EXP_RES and #PARAM_EXP_RES_INDEX). The pointer @a exp_bytes points to a variable that
-will be filled with number of bytes in the pixel stream.
-@a buffer_mode can be set to either #CIRC_OVERWRITE or #CIRC_NO_OVERWRITE. This function must be called
-before calling #pl_exp_start_cont.
-
-The settings are then downloaded to the camera. If there is any problem (overlapping regions
-or a frame-transfer setting for a camera that lacks that capability), this function aborts and
-returns with a failure. #pl_error_code indicates the definition problem.
-The @a exp_bytes pointer is filled with the number of bytes of memory needed to buffer the full
-sequence. (It is the developer's responsibility to allocate a memory buffer for the pixel stream.)
-When this function returns, the camera is ready to begin the exposure. #pl_exp_start_cont initiates
-exposure and readout.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[in] rgn_total Total number of regions defined for each image.
-@param[in] rgn_array Array of regions (must be rgn_total in size).
- See rgn_type for details.
-@param[in] exp_mode Mode for capture (an OR-ed combination of #PL_EXPOSURE_MODES
- and #PL_EXPOSE_OUT_MODES, if applicable).
-@param[in] exposure_time Time to expose in selected exposure resolution units.
- Default is milliseconds (see #PARAM_EXP_RES).
-@param[out] exp_bytes Value returned from PVCAM specifying the required
- number of bytes to allocate for the capture.
-@param[in] buffer_mode Circular buffer mode (#CIRC_OVERWRITE, #CIRC_NO_OVERWRITE).
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_exp_start_cont, pl_exp_check_cont_status, pl_exp_get_oldest_frame, pl_exp_get_latest_frame,
-pl_exp_unlock_oldest_frame, pl_exp_stop_cont
-
-@note Use the parameter ID #PARAM_CIRC_BUFFER with #pl_get_param to see if the system can
-perform circular buffer operations. The circular buffer is passed to #pl_exp_start_cont.
-The buffer is allocated by your application.
-*/
-rs_bool PV_DECL pl_exp_setup_cont(int16 hcam, uns16 rgn_total,
- const rgn_type* rgn_array, int16 exp_mode,
- uns32 exposure_time, uns32* exp_bytes,
- int16 buffer_mode);
-
-/**
-@brief Begins continuous readout into circular buffer.
-
-This function will initiate a continuous readout from the camera into a circular buffer.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[in] pixel_stream Buffer to hold image(s).
-@param[in] size Size of continuous capture pixel_stream
- (must be a multiple of @c byte_cnt).
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_exp_setup_cont, pl_exp_check_cont_status, pl_exp_get_oldest_frame,
-pl_exp_get_latest_frame, pl_exp_unlock_oldest_frame, pl_exp_stop_cont
-
-@note If @a pixel_stream points to a buffer that is not an integer-multiple of the frame size
-for the exposure, this function will return #PV_FAIL and set an appropriate error
-code in #pl_error_code. For example, a buffer size of 1000 bytes with a frame size of 250 bytes is OK,
-but a buffer size of 900 bytes would cause a failure.
-Use the parameter ID #PARAM_CIRC_BUFFER with #pl_get_param to check to see if the system can
-perform circular buffer operations.
-*/
-rs_bool PV_DECL pl_exp_start_cont(int16 hcam, void* pixel_stream, uns32 size);
-
-/**
-@brief Sends a software trigger to the device.
-
-In order to use the software trigger, following preconditions must be met:
- - Acquisition has been configured via a call to #pl_exp_setup_seq or #pl_exp_setup_cont
- using one of the software triggering modes (@see PL_EXPOSURE_MODES).
- - Acquisition has been started via #pl_exp_start_seq or #pl_exp_start_cont.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[in,out] flags Input/output flags, see remarks.
-@param[in] value Reserved for future use. This value should be set to 0.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@remarks In current implementation the input flags should be set to 0. On output,
-the flags will contain one of the values defined in #PL_SW_TRIG_STATUSES enumeration.
-
-@see pl_exp_setup_seq, pl_exp_start_seq, pl_exp_setup_cont, pl_exp_start_cont,
-pl_exp_check_cont_status, pl_exp_get_oldest_frame, pl_exp_get_latest_frame,
-pl_exp_unlock_oldest_frame, pl_exp_abort
-*/
-rs_bool PV_DECL pl_exp_trigger(int16 hcam, uns32* flags, uns32 value);
-
-/**
-@addtogroup grp_pm_deprecated_functions
-@{
-*/
-
-/**
-@brief Checks the status of sequence acquisition.
-
-This is only useful when data collection has been set up and started, as with a call
-to the functions #pl_exp_setup_seq and #pl_exp_start_seq. In general, these
-functions start an exposure and then immediately return, allowing the progress to be monitored.
-The @a status gives a quick evaluation of progress.
-The argument @a status returns one of the values listed here: #PL_IMAGE_STATUSES.
-
-More detailed information is returned in @a bytes_arrived. This reports on exactly
-how many bytes of data have arrived so far.
-This level of feedback is unimportant to many users.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[out] status Status of the current capture (#EXPOSURE_IN_PROGRESS, ...).
-@param[out] bytes_arrived Number of bytes that have arrived. For continuous
- mode, this is the number of bytes that have arrived
- this time through the buffer.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_exp_setup_seq, pl_exp_start_seq
-
-@warning This is a legacy function used for polling the acquisition status.
-The 'polling' acquisition technique has been obsoleted. Modern cameras are designed
-to work best with the callback acquisition. See #pl_cam_register_callback_ex3.
-*/
-DEPRECATED rs_bool PV_DECL pl_exp_check_status(int16 hcam, int16* status, uns32* bytes_arrived);
-
-/**
-@brief Checks the continuous readout status from the camera into the circular buffer.
-
-This function will return the status of continuous readout from the camera
-into the circular buffer.
-@a status is a pointer to one of the values listed here: #PL_IMAGE_STATUSES.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[out] status Status of the current capture (#EXPOSURE_IN_PROGRESS,...).
-@param[out] bytes_arrived Number of bytes that have arrived. For continuous
- mode, this is the number of bytes that have arrived
- this time through the buffer.
-@param[out] buffer_cnt Number of times through the buffer (continuous mode).
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_exp_setup_cont, pl_exp_start_cont, pl_exp_get_oldest frame, pl_exp_get_latest_frame,
-pl_exp_unlock_oldest_frame, pl_exp_stop_cont
-
-@note This function only returns meaningful results if a continuous readout from the camera
-has been initiated by a call to #pl_exp_start_cont.
-Use the parameter ID #PARAM_CIRC_BUFFER with #pl_get_param to see if the system can
-perform circular buffer operations.
-
-@warning This is a legacy function used for polling the acquisition status.
-The 'polling' acquisition technique has been obsoleted. Modern cameras are designed
-to work best with the callback acquisition. See #pl_cam_register_callback_ex3.
-*/
-DEPRECATED rs_bool PV_DECL pl_exp_check_cont_status(int16 hcam, int16* status,
- uns32* bytes_arrived, uns32* buffer_cnt);
-
-/**
-@brief Checks the continuous readout status from the camera into the circular buffer.
-
-This function will return the status of continuous readout from the camera
-into the circular buffer.
-@a status is a pointer to one of the values listed here: #PL_IMAGE_STATUSES.
-
-Values in the variable pointed to by frame_info will be updated with frame counters,
-timestamps (with precision of 0.1ms) and readout time information assigned by device driver
-at the moment of frame reception.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[out] status Status of the current capture (#EXPOSURE_IN_PROGRESS,...).
-@param[out] byte_cnt Size of buffer to hold images (in bytes).
-@param[out] buffer_cnt Number of times through the buffer (continuous mode).
-@param[out] frame_info Frame info struct pointer.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_exp_setup_cont, pl_exp_start_cont, pl_exp_get_oldest_frame, pl_exp_get_latest_frame,
-pl_exp_unlock_oldest_frame, pl_exp_stop_cont, pl_create_frame_info_struct,
-pl_exp_get_latest_frame_ex, pl_exp_get_oldest_frame_ex
-
-@note This function only returns meaningful results if a continuous readout from the camera has
-been initiated by a call to #pl_exp_start_cont. Use the parameter ID #PARAM_CIRC_BUFFER
-with #pl_get_param to see if the system can perform circular buffer operations.
-Variable pointed to by frame_info must be created with #pl_create_frame_info_struct.
-
-@warning This is a legacy function used for polling the acquisition status.
-The 'polling' acquisition technique has been obsoleted. Modern cameras are designed
-to work best with the callback acquisition. See #pl_cam_register_callback_ex3.
-*/
-DEPRECATED rs_bool PV_DECL pl_exp_check_cont_status_ex(int16 hcam, int16* status,
- uns32* byte_cnt, uns32* buffer_cnt,
- FRAME_INFO* frame_info);
-
-/** @} */ /* grp_pm_deprecated_functions */
-
-/**
-@brief This function returns a pointer to the most recently acquired frame in the circular buffer.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[out] frame Pointer to the most recent frame.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_exp_setup_cont, pl_exp_start_cont, pl_exp_check_cont_status, pl_exp_stop_cont
-
-@note If the camera in use is not able to return the latest frame for the current operating mode,
-this function will fail. For example, some cameras cannot return the latest frame in
-#CIRC_NO_OVERWRITE mode. Use the parameter ID #PARAM_CIRC_BUFFER with #pl_get_param to
-see if the system can perform circular buffer operations.
-*/
-rs_bool PV_DECL pl_exp_get_latest_frame(int16 hcam, void** frame);
-
-/**
-@brief Returns pointer to the most recent frame in circular buffer.
-
-Additionally, this function updates values of timestamps (with precision of 0.1ms),
-frame counter numbers and readout time in variable of #FRAME_INFO type.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[out] frame Pointer to the most recent frame.
-@param[out] frame_info Frame info struct pointer.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_exp_setup_cont, pl_exp_start_cont, pl_exp_check_cont_status, pl_exp_stop_cont,
-pl_exp_get_oldest_frame_ex, pl_exp_check_cont_status_ex, pl_cam_register_callback_ex2,
-pl_create_frame_info_struct, pl_release_frame_info_struct
-
-@note If the camera in use is not able to return the latest frame for the current operating mode,
-this function will fail. For example, some cameras cannot return the latest frame
-in #CIRC_NO_OVERWRITE mode. Use the parameter ID #PARAM_CIRC_BUFFER with #pl_get_param to see
-if the system can perform circular buffer operations.
-Variable pointed to by frame_info must be created with #pl_create_frame_info_struct.
-*/
-rs_bool PV_DECL pl_exp_get_latest_frame_ex(int16 hcam, void** frame,
- FRAME_INFO* frame_info);
-
-/**
-@brief This function returns pointer to the oldest unretrieved frame in the circular buffer.
-
-After calling this function, #pl_exp_unlock_oldest_frame has to be called to notify PVCAM that
-the oldest frame can be overwritten with new data.\n
-This function should be used with acquisitions running in #CIRC_NO_OVERWRITE mode.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[out] frame Pointer to the oldest unretrieved frame.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_exp_setup_cont, pl_exp_start_cont, pl_exp_check_cont_status,
-pl_exp_unlock_oldest_frame, pl_exp_stop_cont, pl_exp_get_oldest_frame_ex
-
-@note If the camera in use is not able to return the oldest frame for the current operating mode,
-this function will fail. For example, some cameras cannot return the oldest frame
-in #CIRC_OVERWRITE mode. Use the parameter ID #PARAM_CIRC_BUFFER with #pl_get_param
-to see if the system can perform circular buffer operations.
-*/
-rs_bool PV_DECL pl_exp_get_oldest_frame(int16 hcam, void** frame);
-
-/**
-@brief This function returns pointer to the oldest unretrieved frame in the circular buffer.
-
-After calling this function, #pl_exp_unlock_oldest_frame has to be called to notify PVCAM that
-the oldest frame can be overwritten with new data.\n
-This function should be used in acquisitions running in #CIRC_NO_OVERWRITE mode.
-
-Additionally, this function updates the values in the variable pointed to by @a frame_info
-with the data collected at the time of frame reception by the device driver (e.g. frame counter value).
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[out] frame Pointer to the oldest unretrieved frame.
-@param[out] frame_info Frame info struct pointer.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_exp_setup_cont, pl_exp_start_cont, pl_exp_check_cont_status,
-pl_exp_unlock_oldest_frame, pl_exp_stop_cont, pl_exp_check_cont_status_ex,
-pl_cam_register_callback_ex2, pl_create_frame_info_struct, pl_release_frame_info_struct
-
-@note If the camera in use is not able to return the oldest frame for the current operating mode,
-this function will fail. For example, some cameras cannot return the oldest frame in
-#CIRC_OVERWRITE mode. Use the parameter ID #PARAM_CIRC_BUFFER with pl_get_param to see
-if the system can perform circular buffer operations.
-Variable pointed to by frame_info must be created with #pl_create_frame_info_struct.
-*/
-rs_bool PV_DECL pl_exp_get_oldest_frame_ex(int16 hcam, void** frame,
- FRAME_INFO* frame_info);
-
-/**
-@brief Makes oldest frame in circular buffer overwritable.
-
-This function allows PVCAM to overwrite the oldest frame in the circular buffer.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_exp_setup_cont, pl_exp_start_cont, pl_exp_check_cont_status, pl_exp_get_oldest_frame,
-pl_exp_unlock_oldest_frame, pl_exp_stop_cont
-
-@note Failure to call this function after using the frame will cause the continuous acquisition
-progress to halt eventually, because the frame cannot be overwritten when it is locked.
-Use the parameter ID #PARAM_CIRC_BUFFER with #pl_get_param to check to see if the system can perform
-circular buffer operations.
-*/
-rs_bool PV_DECL pl_exp_unlock_oldest_frame(int16 hcam);
-
-/**
-@brief Stops continuous readout acquisition. Identical to #pl_exp_abort.
-
-This function halts a continuous readout acquisition into the circular buffer.
-@a cam_state defines the new state of the Camera Control Subsystem,
-as described in the documentation for the #pl_exp_abort function. To simplify the code, #pl_exp_abort
-may be used instead of #pl_exp_stop_cont to stop both continuous and sequential acquisitions.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[out] cam_state State to set the camera in (#CCS_NO_CHANGE,...).
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_exp_setup_cont, pl_exp_start_cont, pl_exp_check_cont_status, pl_exp_get_oldest_frame,
-pl_exp_get_latest_frame, pl_exp_unlock_oldest_frame
-
-@note Use the parameter ID #PARAM_CIRC_BUFFER with #pl_get_param to see if the system
-can perform circular buffer operations.
-*/
-rs_bool PV_DECL pl_exp_stop_cont(int16 hcam, int16 cam_state);
-
-/**
-@brief Stops collecting data, cleans up device driver, halts camera.
-
-#pl_exp_abort performs two functions: it stops the host device driver, and it may halt the camera
-(@a hcam specifies which camera and which device driver are being used.) Halting the camera halts
-@a readout, @c clearing, and all other camera activity. On the host side, data collection is controlled
-by a device driver. If data collection is currently enabled (the image data @b active state), this
-function stops collection, returns the low-level communication hardware and software to an image
-data @b idle state, and disables collection. In the @b idle state, any data that arrives is ignored and
-discarded. The @b idle state is the normal system default. On the camera side, the Camera Control
-Subsystem (CCS) may be in the process of collecting data, or it may be in one of several idle states.
-This function always stops the data collection software. In addition, it has the option of forcing
-the CCS into a new state by setting the @a cam_state variable to one of the following constants,
-which are camera-dependent: #PL_CCS_ABORT_MODES.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[out] cam_state State to set the camera in (#CCS_NO_CHANGE,...).
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@note This may also be called outside of an exposure. It can explicitly open the shutter,
-close the shutter, or stop the CCS. In the @b idle state, the system takes the least possible
-amount of action when image data arrives. On some systems, this involves placing the hardware
-in reset state, so it is inactive. On SCSI systems, the driver does not initiate any data transfers,
-although a buffer on the camera end may be filling up. If the CCS is halted and the shutter
-is closed (#CCS_HALT_CLOSE_SHTR), the current image remains on the sensor (although dark charge
-continues to accumulate). If @c clear_cycles is zero or the clear mode is #CLEAR_NEVER, the image
-may be read off by performing a bias readout. In frame transfer mode, you may not want to close
-the shutter when halting the CCS. Some frame transfer systems do not include a shutter, in which
-case an attempt to open or close the shutter is ignored, but does not cause an error.
-*/
-rs_bool PV_DECL pl_exp_abort(int16 hcam, int16 cam_state);
-
-/**
-@brief Finishes and cleans up after #pl_exp_start_seq.
-
-This cleans up after an exposure started through #pl_exp_start_seq has finished readout.
-If the exposure has not finished readout, this function returns with an error.
-Argument @a hbuf is not used at the moment.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[in] pixel_stream Buffer to hold image(s).
-@param[in] hbuf Standard image buffer. Not used at this time.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_exp_abort, pl_exp_check_status, pl_exp_setup_seq, pl_exp_start_seq
-
-@note This function must also be called if acquiring in sequential mode
-(using #pl_exp_setup_seq and #pl_exp_start_seq) with callback notification
-after a frame is read out and before new exposure is started by calling #pl_exp_start_seq.
-*/
-rs_bool PV_DECL pl_exp_finish_seq(int16 hcam, void* pixel_stream, int16 hbuf);
-
-/**
-@brief Defines control of an I/O line from within a camera script.
-
-This function allows the application program to define control of the available I/O lines
-from within a script. This allows for more precise control of external devices. For example,
-the application could request that a linear stage be indexed immediately after integration,
-instead of waiting until after the data is read out, the shutter is closed, etc.
-
-@a state has different meanings depending on the I/O type which are described here: #PL_IO_TYPE.
-@a location can be set to the values described here: #PL_SRC_MODES.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-@param[in] addr Specifies which I/O address to control.
-@param[in] state Specifies the value to write to the register.
-@param[in] location Specifies when to control the I/O (#SCR_PRE_FLASH,...).
- Values are listed under #PL_IO_TYPE.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_io_clear_script_control
-*/
-rs_bool PV_DECL pl_io_script_control(int16 hcam, uns16 addr, flt64 state,
- uns32 location);
-
-/**
-@brief Clears the current setup for control of the available I/O lines within a camera script.
-
-This function allows the application program to clear the current setup for control
-of the available I/O lines within the script. This allows the user to enter
-a new setup for these lines.
-
-@param[in] hcam Camera handle returned from #pl_cam_open.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-
-@see pl_io_script_control
-*/
-rs_bool PV_DECL pl_io_clear_script_control(int16 hcam);
-
-/** @} */ /* grp_pm_functions */
-
-/*****************************************************************************/
-/**
-@addtogroup grp_pm_deprecated_functions
-Most of the functions are obsolete and their corresponding PARAM_
-parameters should be used with #pl_get_param, #pl_set_param,
-#pl_get_enum_param and #pl_enum_str_length.
-@{
-*/
-
-DEPRECATED rs_bool PV_DECL pl_exp_init_seq(void);
-DEPRECATED rs_bool PV_DECL pl_exp_uninit_seq(void);
-/** Use #PARAM_DD_INFO instead. */
-DEPRECATED rs_bool PV_DECL pl_dd_get_info(int16 hcam, int16 bytes, char* text);
-/** Use #PARAM_DD_INFO_LENGTH instead. */
-DEPRECATED rs_bool PV_DECL pl_dd_get_info_length(int16 hcam, int16* bytes);
-/** Use #PARAM_DD_VERSION instead. */
-DEPRECATED rs_bool PV_DECL pl_dd_get_ver(int16 hcam, uns16* version);
-/** Use #PARAM_DD_RETRIES instead. */
-DEPRECATED rs_bool PV_DECL pl_dd_get_retries(int16 hcam, uns16* max_retries);
-/** Use #PARAM_DD_RETRIES instead. */
-DEPRECATED rs_bool PV_DECL pl_dd_set_retries(int16 hcam, uns16 max_retries);
-/** Use #PARAM_DD_TIMEOUT instead. */
-DEPRECATED rs_bool PV_DECL pl_dd_get_timeout(int16 hcam, uns16* m_sec);
-/** Use #PARAM_DD_TIMEOUT instead. */
-DEPRECATED rs_bool PV_DECL pl_dd_set_timeout(int16 hcam, uns16 m_sec);
-/** Use #PARAM_ADC_OFFSET instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_adc_offset(int16 hcam, int16* offset);
-/** Use #PARAM_ADC_OFFSET instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_set_adc_offset(int16 hcam, int16 offset);
-/** Use #PARAM_CHIP_NAME instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_chip_name(int16 hcam, char* chip_name);
-/** Use #PARAM_CLEAR_CYCLES instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_clear_cycles(int16 hcam, uns16* clear_cycles);
-/** Use #PARAM_CLEAR_CYCLES instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_set_clear_cycles(int16 hcam, uns16 clear_cycles);
-/** Use #PARAM_CLEAR_MODE instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_clear_mode(int16 hcam, int16* clear_mode);
-/** Use #PARAM_CLEAR_MODE instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_set_clear_mode(int16 hcam, int16 clear_mode);
-/** Use #PARAM_COLOR_MODE instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_color_mode(int16 hcam, uns16* color_mode);
-/** Use #PARAM_COOLING_MODE instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_cooling_mode(int16 hcam, int16* cooling);
-/** Use #PARAM_FRAME_CAPABLE instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_frame_capable(int16 hcam, rs_bool* frame_capable);
-/** Use #PARAM_FWELL_CAPACITY instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_fwell_capacity(int16 hcam, uns32* fwell_capacity);
-/** Use #PARAM_MPP_CAPABLE instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_mpp_capable(int16 hcam, int16* mpp_capable);
-/** Use #PARAM_PREAMP_DELAY instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_preamp_dly(int16 hcam, uns16* preamp_dly);
-/** Use #PARAM_PREAMP_OFF_CONTROL instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_preamp_off_control(int16 hcam,
- uns32* preamp_off_control);
-/** Use #PARAM_PREAMP_OFF_CONTROL instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_set_preamp_off_control(int16 hcam,
- uns32 preamp_off_control);
-/** Use deprecated PARAM_PREFLASH instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_preflash(int16 hcam, uns16* pre_flash);
-/** Use #PARAM_PMODE instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_pmode(int16 hcam, int16* pmode);
-/** Use #PARAM_PMODE instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_set_pmode(int16 hcam, int16 pmode);
-/** Use #PARAM_PREMASK instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_premask(int16 hcam, uns16* pre_mask);
-/** Use #PARAM_PRESCAN instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_prescan(int16 hcam, uns16* pre_scan);
-/** Use #PARAM_POSTMASK instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_postmask(int16 hcam, uns16* post_mask);
-/** Use #PARAM_POSTSCAN instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_postscan(int16 hcam, uns16* post_scan);
-/** Use #PARAM_PAR_SIZE instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_par_size(int16 hcam, uns16* par_size);
-/** Use #PARAM_SER_SIZE instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_ser_size(int16 hcam, uns16* ser_size);
-/** Use deprecated PARAM_SERIAL_NUM instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_serial_num(int16 hcam, uns16* serial_num);
-/** Use deprecated PARAM_CCS_STATUS instead. */
-DEPRECATED rs_bool PV_DECL pl_ccs_get_status(int16 hcam, int16* ccs_status);
-/** Use #PARAM_SUMMING_WELL instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_summing_well(int16 hcam, rs_bool* s_well_exists);
-/** Use #PARAM_TEMP instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_tmp(int16 hcam, int16* cur_tmp);
-/** Use #PARAM_TEMP instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_tmp_range(int16 hcam, int16* tmp_hi_val,
- int16* tmp_lo_val);
-/** Use #PARAM_TEMP_SETPOINT instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_tmp_setpoint(int16 hcam, int16* tmp_setpoint);
-/** Use #PARAM_TEMP_SETPOINT instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_set_tmp_setpoint(int16 hcam, int16 tmp_setpoint);
-DEPRECATED rs_bool PV_DECL pl_ccd_set_readout_port(int16 , int16 );
-/** Use #PARAM_PIX_PAR_DIST instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_pix_par_dist(int16 hcam, uns16* pix_par_dist);
-/** Use #PARAM_PIX_PAR_SIZE instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_pix_par_size(int16 hcam, uns16* pix_par_size);
-/** Use #PARAM_PIX_SER_DIST instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_pix_ser_dist(int16 hcam, uns16* pix_ser_dist);
-/** Use #PARAM_PIX_SER_SIZE instead. */
-DEPRECATED rs_bool PV_DECL pl_ccd_get_pix_ser_size(int16 hcam, uns16* pix_ser_size);
-/** Use #PARAM_BIT_DEPTH instead. */
-DEPRECATED rs_bool PV_DECL pl_spdtab_get_bits(int16 hcam, int16* spdtab_bits);
-/** Use #PARAM_GAIN_INDEX instead. */
-DEPRECATED rs_bool PV_DECL pl_spdtab_get_gain(int16 hcam, int16* spdtab_gain);
-/** Use #PARAM_GAIN_INDEX instead. */
-DEPRECATED rs_bool PV_DECL pl_spdtab_set_gain(int16 hcam, int16 spdtab_gain);
-/** Use #PARAM_GAIN_INDEX instead. */
-DEPRECATED rs_bool PV_DECL pl_spdtab_get_max_gain(int16 hcam, int16* spdtab_max_gain);
-/** Use #PARAM_SPDTAB_INDEX instead. */
-DEPRECATED rs_bool PV_DECL pl_spdtab_get_num(int16 hcam, int16* spdtab_num);
-/** Use #PARAM_SPDTAB_INDEX instead. */
-DEPRECATED rs_bool PV_DECL pl_spdtab_set_num(int16 hcam, int16 spdtab_num);
-/** Use #PARAM_SPDTAB_INDEX instead. */
-DEPRECATED rs_bool PV_DECL pl_spdtab_get_entries(int16 hcam, int16* spdtab_entries);
-/** Use #PARAM_READOUT_PORT instead. */
-DEPRECATED rs_bool PV_DECL pl_spdtab_get_port(int16 hcam, int16* spdtab_port);
-/** Use #PARAM_READOUT_PORT instead. */
-DEPRECATED rs_bool PV_DECL pl_spdtab_get_port_total(int16 hcam, int16* total_ports);
-/** Use #PARAM_PIX_TIME instead. */
-DEPRECATED rs_bool PV_DECL pl_spdtab_get_time(int16 hcam, uns16* spdtab_time);
-/** Use #PARAM_SHTR_CLOSE_DELAY instead. */
-DEPRECATED rs_bool PV_DECL pl_shtr_get_close_dly(int16 hcam, uns16* shtr_close_dly);
-/** Use #PARAM_SHTR_CLOSE_DELAY instead. */
-DEPRECATED rs_bool PV_DECL pl_shtr_set_close_dly(int16 hcam, uns16 shtr_close_dly);
-/** Use #PARAM_SHTR_OPEN_DELAY instead. */
-DEPRECATED rs_bool PV_DECL pl_shtr_get_open_dly(int16 hcam, uns16* shtr_open_dly);
-/** Use #PARAM_SHTR_OPEN_DELAY instead. */
-DEPRECATED rs_bool PV_DECL pl_shtr_set_open_dly(int16 hcam, uns16 shtr_open_dly);
-/** Use #PARAM_SHTR_OPEN_MODE instead. */
-DEPRECATED rs_bool PV_DECL pl_shtr_get_open_mode(int16 hcam, int16* shtr_open_mode);
-/** Use #PARAM_SHTR_OPEN_MODE instead. */
-DEPRECATED rs_bool PV_DECL pl_shtr_set_open_mode(int16 hcam, int16 shtr_open_mode);
-/** Use #PARAM_SHTR_STATUS instead. */
-DEPRECATED rs_bool PV_DECL pl_shtr_get_status(int16 hcam, int16* shtr_status);
-/** Use #PARAM_EXP_TIME instead. */
-DEPRECATED rs_bool PV_DECL pl_exp_get_time_seq(int16 hcam, uns16* exp_time);
-/** Use #PARAM_EXP_TIME instead. */
-DEPRECATED rs_bool PV_DECL pl_exp_set_time_seq(int16 hcam, uns16 exp_time);
-/** Use #pl_exp_check_status or #pl_exp_check_cont_status instead. */
-DEPRECATED rs_bool PV_DECL pl_exp_check_progress(int16 hcam, int16* status, uns32* bytes_arrived);
-
-/** Use #pl_exp_setup_cont instead. */
-DEPRECATED rs_bool PV_DECL pl_exp_set_cont_mode(int16 hcam, int16 mode);
-DEPRECATED rs_bool PV_DECL pl_subsys_do_diag(int16 hcam, uns8 addr, uns16* err_code);
-DEPRECATED rs_bool PV_DECL pl_subsys_get_id(int16 hcam, uns8 addr, uns16* part_num, uns8* revision);
-DEPRECATED rs_bool PV_DECL pl_subsys_get_name(int16 hcam, uns8 addr, char* subsys_name);
-DEPRECATED rs_bool PV_DECL pl_exp_get_driver_buffer(int16 hcam,
- void** pixel_stream,
- uns32* byte_cnt);
-DEPRECATED rs_bool PV_DECL pl_buf_init(void);
-DEPRECATED rs_bool PV_DECL pl_buf_uninit(void);
-DEPRECATED rs_bool PV_DECL pl_buf_alloc(int16* hbuf, int16 exp_total,
- int16 bit_depth, int16 rgn_total,
- const rgn_type* rgn_array);
-DEPRECATED rs_bool PV_DECL pl_buf_get_exp_date(int16 hbuf, int16 exp_num, int16* year,
- uns8* month, uns8* day, uns8* hour,
- uns8* min, uns8* sec, uns16* msec);
-DEPRECATED rs_bool PV_DECL pl_buf_set_exp_date(int16 hbuf, int16 exp_num, int16 year,
- uns8 month, uns8 day, uns8 hour,
- uns8 min, uns8 sec, uns16 msec);
-DEPRECATED rs_bool PV_DECL pl_buf_get_exp_time(int16 hbuf, int16 exp_num, uns32* exp_msec);
-DEPRECATED rs_bool PV_DECL pl_buf_get_exp_total(int16 hbuf, int16* total_exps);
-DEPRECATED rs_bool PV_DECL pl_buf_get_img_bin(int16 himg, int16* ibin, int16* jbin);
-DEPRECATED rs_bool PV_DECL pl_buf_get_img_handle(int16 hbuf, int16 exp_num,
- int16 img_num, int16* himg);
-DEPRECATED rs_bool PV_DECL pl_buf_get_img_ofs(int16 himg, int16* s_ofs, int16* p_ofs);
-DEPRECATED rs_bool PV_DECL pl_buf_get_img_ptr(int16 himg, void** img_addr);
-DEPRECATED rs_bool PV_DECL pl_buf_get_img_size(int16 himg, int16* x_size, int16* y_size);
-DEPRECATED rs_bool PV_DECL pl_buf_get_img_total(int16 hbuf, int16* totl_imgs);
-DEPRECATED rs_bool PV_DECL pl_buf_get_size(int16 hbuf, int32* buf_size);
-DEPRECATED rs_bool PV_DECL pl_buf_free(int16 hbuf);
-DEPRECATED rs_bool PV_DECL pl_buf_get_bits(int16 hbuf, int16* bit_depth);
-DEPRECATED rs_bool PV_DECL pl_exp_unravel(int16 hcam, uns16 exposure,
- void* pixel_stream, uns16 rgn_total,
- const rgn_type* rgn_array,
- uns16** array_list);
-DEPRECATED rs_bool PV_DECL pl_exp_wait_start_xfer(int16 hcam, uns32 tlimit);
-DEPRECATED rs_bool PV_DECL pl_exp_wait_end_xfer(int16 hcam, uns32 tlimit);
-
-DEPRECATED rs_bool PV_DECL pv_cam_get_ccs_mem(int16 hcam, uns16* size);
-DEPRECATED rs_bool PV_DECL pv_cam_send_debug(int16 hcam, char* debug_str,
- uns16 reply_len, char* reply_str);
-DEPRECATED rs_bool PV_DECL pv_cam_write_read(int16 hcam, uns8 c_class, uns16 write_bytes,
- uns8* write_array, uns8* read_array);
-DEPRECATED rs_bool PV_DECL pv_dd_active(int16 hcam, void* pixel_stream);
-DEPRECATED rs_bool PV_DECL pv_exp_get_bytes(int16 hcam, uns32* exp_bytes);
-DEPRECATED rs_bool PV_DECL pv_exp_get_script(int16 hcam, rs_bool* script_valid);
-DEPRECATED rs_bool PV_DECL pv_exp_get_status(int16 hcam, int16* status,
- uns32* byte_cnt, uns32* frame_cnt);
-DEPRECATED rs_bool PV_DECL pv_exp_set_bytes(int16 hcam, uns32 frame_count,
- uns32 seq_bytes, void* pixel_stream);
-DEPRECATED rs_bool PV_DECL pv_exp_set_script(int16 hcam, rs_bool script_valid);
-DEPRECATED rs_bool PV_DECL pv_set_error_code(int16 omode,int16 err_code);
-DEPRECATED rs_bool PV_DECL pv_cam_do_reads(int16 hcam);
-DEPRECATED rs_bool PV_DECL pv_free(void* block, int16 heap);
-DEPRECATED void* PV_DECL pv_malloc(uns32 size, int16 heap);
-DEPRECATED void* PV_DECL pv_realloc(void* block, uns32 size, int16 heap);
-DEPRECATED rs_bool PV_DECL pv_script_set_hook(pm_script_hook* pfn);
-DEPRECATED rs_bool PV_DECL pv_ccd_get_accum_capable(int16 hcam, rs_bool* accum_capable);
-DEPRECATED rs_bool PV_DECL pv_exp_get_frames(int16 hcam, uns32* exp_frames);
-DEPRECATED rs_bool PV_DECL pv_exp_set_frames(int16 hcam, uns32 exp_frames);
-DEPRECATED rs_bool PV_DECL pv_exp_set_no_readout_timeout(int16 hcam);
-DEPRECATED rs_bool PV_DECL pv_exp_reset_no_readout_timeout(int16 hcam);
-DEPRECATED rs_bool PV_DECL pm_cam_write_read(int16 hcam, uns8 c_class, uns16 write_bytes,
- uns8* write_array, uns8* read_array);
-
-DEPRECATED rs_bool PV_DECL pl_ddi_get_ver(uns16* version);
-DEPRECATED rs_bool PV_DECL pl_cam_get_diags(int16 hcam);
-
-/** @} */ /* grp_pm_deprecated_functions */
-
-/*****************************************************************************/
-/*****************************************************************************/
-/* */
-/* Frame metadata functions */
-/* */
-/*****************************************************************************/
-/*****************************************************************************/
-
-/**
-@addtogroup grp_pm_functions
-@{
-*/
-
-/**
-@brief Decodes a metadata-enabled frame buffer into provided frame descriptor structure.
-
-This function processes the input frame buffer and calculates pointers to frame metadata headers,
-ROI headers and ROI image data and stores them to previously allocated @a pDstFrame structure.
-This function does not copy any pixel data. Since the @a pDstFrame stores only pointers
-to the @a pSrcBuf memory, the @a pSrcBuf must be valid for as long as the @a pDstFrame is
-accessed.
-
-@param[out] pDstFrame A pre-allocated helper structure that will be filled with
- information from the given raw buffer. Create this structure with
- #pl_md_create_frame_struct or #pl_md_create_frame_struct_cont functions.
-@param[in] pSrcBuf A pointer to a frame data as retrieved from PVCAM. See functions
- #pl_exp_get_latest_frame and #pl_exp_get_latest_frame_ex.
-@param[in] srcBufSize The size of the raw frame data. Size of a frame is obtained
- from #pl_exp_setup_seq and #pl_exp_setup_cont functions.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-*/
-rs_bool PV_DECL pl_md_frame_decode(md_frame* pDstFrame, void* pSrcBuf, uns32 srcBufSize);
-
-/**
-@brief Optional function that recomposes a multi-ROI frame into a displayable image buffer.
-
-Every ROI will be copied into its appropriate location in the provided buffer.
-Please note that the function will subtract the Implied ROI position from each ROI
-position which essentially moves the entire Implied ROI to a [0, 0] position.
-Use the Offset arguments to shift all ROIs back to desired positions if needed.
-If you use the Implied ROI position for offset arguments, the frame will be recomposed
-as it appears on the full frame.
-
-The caller is responsible for black-filling the input buffer. Usually, this function
-is called during live/preview mode where the destination buffer is re-used. If the
-ROIs do move during acquisition, it is essential to black-fill the destination buffer
-before calling this function. This is not needed if the ROIs do not move.
-If the ROIs move during live mode, it is also recommended to use the offset arguments
-and recompose the ROI to a full frame - with moving ROIs the implied ROI may change
-with each frame and this may cause undesired ROI "twitching" in the displayable image.
-
-@param[out] pDstBuf An output buffer; the buffer must be at least the size of the implied
- ROI that is calculated during the frame decoding process. The buffer
- must be of the same type as is the input frame - e.g. if the input
- frame format is 8-bit, the destination buffer should be 8-bit as well.
- If offset is set, the buffer dimensions must be large enough to allow
- the entire implied ROI to be positioned in the buffer.
-@param[in] offX Offset in the destination buffer, in pixels. If 0, the Implied
- ROI will be shifted to position 0 in the target buffer.
- Use (ImpliedRoi.s1 / ImplierRoi.sbin) as offset value to
- disable the shift and keep the ROIs in their absolute positions.
-@param[in] offY Offset in the destination buffer, in pixels. If 0, the Implied
- ROI will be shifted to position 0 in the target buffer.
- Use (ImpliedRoi.p1 / ImplierRoi.pbin) as offset value to
- disable the shift and keep the ROIs in their absolute positions.
-@param[in] dstWidth Width, in pixels of the destination image buffer. The buffer
- must be large enough to hold the entire Implied ROI, including
- the offsets (if used).
-@param[in] dstHeight Height, in pixels of the destination image buffer.
-@param[in] pSrcFrame A helper structure, previously decoded using the frame
- decoding function #pl_md_frame_decode.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-*/
-rs_bool PV_DECL pl_md_frame_recompose(void* pDstBuf, uns16 offX, uns16 offY,
- uns16 dstWidth, uns16 dstHeight,
- md_frame* pSrcFrame);
-
-/**
-@brief This method creates an empty md_frame structure for known number of ROIs.
-
-Use this method to prepare and pre-allocate one structure before starting
-continuous acquisition. Once callback arrives, fill the structure with
-#pl_md_frame_decode and display the metadata.
-Release the structure when not needed.
-
-@param[out] pFrame A pointer to frame helper structure address where the structure
- will be allocated.
-@param[in] roiCount Number of ROIs the structure should be prepared for.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-*/
-rs_bool PV_DECL pl_md_create_frame_struct_cont(md_frame** pFrame, uns16 roiCount);
-
-/**
-@brief This method creates an empty md_frame structure from an existing buffer.
-
-Use this method when loading buffers from disk or when performance is not
-critical. Do not forget to release the structure when not needed.
-For continuous acquisition where the number or ROIs is known, it is recommended
-to use the other provided method to avoid frequent memory allocation.
-
-@param[out] pFrame A pointer address where the newly created structure will be stored.
-@param[in] pSrcBuf A raw frame data pointer as returned from the camera.
-@param[in] srcBufSize Size of the raw frame data buffer.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-*/
-rs_bool PV_DECL pl_md_create_frame_struct(md_frame** pFrame, void* pSrcBuf,
- uns32 srcBufSize);
-
-/**
-@brief Releases the md_frame struct.
-
-@param[in] pFrame A pointer to the previously allocated structure.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-*/
-rs_bool PV_DECL pl_md_release_frame_struct(md_frame* pFrame);
-
-/**
-@brief Reads all the extended metadata from the given ext. metadata buffer.
-
-@param[out] pOutput A pre-allocated structure that will be filled with metadata
-@param[in] pExtMdPtr A pointer to the ext. MD buffer, this can be obtained from
- the md_frame and md_frame_roi structures.
-@param[in] extMdSize Size of the ext. MD buffer, also retrievable from the helper
- structures.
-
-@return #PV_OK for success, #PV_FAIL for failure. Failure sets #pl_error_code.
-*/
-rs_bool PV_DECL pl_md_read_extended(md_ext_item_collection* pOutput, void* pExtMdPtr,
- uns32 extMdSize);
-
-/** @} */ /* grp_pm_functions */
-
-#ifdef PV_C_PLUS_PLUS
-};
-#endif
-
-#endif /* PV_EMBEDDED */
-
-/******************************************************************************/
-/* End of function prototypes. */
-/******************************************************************************/
-
-#endif /* _PVCAM_H */