PVCAM SDK from Photometrics
authornico <nico@2c67d6c2-4361-4cd7-bd83-1149b1926c9b>
Thu, 18 Oct 2012 23:11:57 +0000 (23:11 +0000)
committernico <nico@2c67d6c2-4361-4cd7-bd83-1149b1926c9b>
Thu, 18 Oct 2012 23:11:57 +0000 (23:11 +0000)
git-svn-id: https://valelab.ucsf.edu/svn/3rdpartypublic@124 2c67d6c2-4361-4cd7-bd83-1149b1926c9b

Photometrics/PVCAM/SDK/Headers/master.h [new file with mode: 0644]
Photometrics/PVCAM/SDK/Headers/pv_icl.h [new file with mode: 0644]
Photometrics/PVCAM/SDK/Headers/pvcam.h [new file with mode: 0644]
Photometrics/PVCAM/SDK/Libs/Win32/pv_icl32.lib [new file with mode: 0644]
Photometrics/PVCAM/SDK/Libs/Win32/pvcam32.lib [new file with mode: 0644]
Photometrics/PVCAM/SDK/Libs/x64/pvcam64.lib [new file with mode: 0644]

diff --git a/Photometrics/PVCAM/SDK/Headers/master.h b/Photometrics/PVCAM/SDK/Headers/master.h
new file mode 100644 (file)
index 0000000..95d6c38
--- /dev/null
@@ -0,0 +1,121 @@
+/*****************************************************************************/\r
+/*        Copyright (C) Roper Scientific, Inc. 2007 All rights reserved.     */\r
+/*****************************************************************************/\r
+#ifndef _MASTER_H\r
+#define _MASTER_H\r
+\r
+#ifndef WIN32\r
+#error OS Not Supported\r
+#endif\r
+\r
+/******************************** ANSI Types *********************************/\r
+#if defined  __cplusplus\r
+\r
+// BORLAND   C++\r
+\r
+#define PV_C_PLUS_PLUS\r
+\r
+#elif defined  __cplusplus__\r
+\r
+// MICROSOFT C++   This allows us to insert the proper compiler flags,\r
+//                 in PVCAM.H for example, to cope properly with C++ definitions.\r
+\r
+#define PV_C_PLUS_PLUS\r
+\r
+#endif\r
+\r
+\r
+#if defined  _MSC_VER\r
+\r
+// MICROSOFT C++   VS 2005 wants to use safe string\r
+// functions - we have to turn this off for now.\r
+\r
+#pragma message("Disabling String Safe Warnings")\r
+#pragma warning(disable : 4996)\r
+\r
+#endif\r
+\r
+/**************************** Calling Conventions ****************************/\r
+\r
+#define PV_CDECL __cdecl\r
+\r
+#if 0  // for 64 bit...\r
+\r
+#if defined CDECL_CALL_CONV                      /* Use the '_cdecl' calling convention */\r
+#define PV_DECL __declspec(dllexport) PV_CDECL /*  or '__stdcall' calling convention  */\r
+#define PV_CALL_CONV PV_CDECL\r
+#else                                            /*  as appropriate.                    */\r
+#define PV_DECL __declspec(dllexport) __stdcall\r
+#define PV_CALL_CONV __stdcall\r
+#endif\r
+\r
+#define LIB_EXPORT __declspec(dllexport)\r
+\r
+#else\r
+\r
+#if defined CDECL_CALL_CONV                     // Use the '_cdecl' calling convention \r
+#define PV_DECL PV_CDECL                                       //  or '__stdcall' calling convention \r
+#define PV_CALL_CONV PV_CDECL\r
+#else                                           //  as appropriate.                    \r
+#define PV_DECL __stdcall\r
+#define PV_CALL_CONV __stdcall\r
+#endif\r
+\r
+#define LIB_EXPORT\r
+\r
+#endif\r
+\r
+/**************************** PVCAM Pointer Types ****************************/\r
+#define PV_PTR_DECL  *\r
+#define PV_BUFP_DECL *\r
+\r
+/******************************** PVCAM Types ********************************/\r
+enum { PV_FAIL, PV_OK };\r
+\r
+typedef unsigned short rs_bool, PV_PTR_DECL  rs_bool_ptr;\r
+typedef char                    PV_PTR_DECL  char_ptr;\r
+typedef signed char    int8,    PV_PTR_DECL  int8_ptr;\r
+typedef unsigned char  uns8,    PV_PTR_DECL  uns8_ptr;\r
+typedef short          int16,   PV_PTR_DECL  int16_ptr;\r
+typedef unsigned short uns16,   PV_PTR_DECL  uns16_ptr;\r
+typedef long           int32,   PV_PTR_DECL  int32_ptr;\r
+typedef unsigned long  uns32,   PV_PTR_DECL  uns32_ptr;\r
+typedef double         flt64,   PV_PTR_DECL  flt64_ptr;\r
+typedef void                    PV_BUFP_DECL void_ptr;\r
+typedef void_ptr                PV_BUFP_DECL void_ptr_ptr;\r
+\r
+#if defined(_MSC_VER)\r
+typedef unsigned __int64 ulong64, PV_PTR_DECL ulong64_ptr;\r
+typedef signed __int64 long64, PV_PTR_DECL long64_ptr;\r
+#else\r
+typedef unsigned long long ulong64, PV_PTR_DECL ulong64_ptr;;\r
+typedef signed long long long64, PV_PTR_DECL long64_ptr;\r
+#endif\r
+\r
+typedef const rs_bool PV_PTR_DECL rs_bool_const_ptr;\r
+typedef const char    PV_PTR_DECL char_const_ptr;\r
+typedef const int8    PV_PTR_DECL int8_const_ptr;\r
+typedef const uns8    PV_PTR_DECL uns8_const_ptr;\r
+typedef const int16   PV_PTR_DECL int16_const_ptr;\r
+typedef const uns16   PV_PTR_DECL uns16_const_ptr;\r
+typedef const int32   PV_PTR_DECL int32_const_ptr;\r
+typedef const uns32   PV_PTR_DECL uns32_const_ptr;\r
+typedef const flt64   PV_PTR_DECL flt64_const_ptr;\r
+\r
+/****************************** PVCAM Constants ******************************/\r
+#ifndef FALSE\r
+#define FALSE  PV_FAIL      /* FALSE == 0                                  */\r
+#endif\r
+\r
+#ifndef TRUE\r
+#define TRUE   PV_OK        /* TRUE  == 1                                  */\r
+#endif\r
+\r
+#define BIG_ENDIAN    FALSE /* TRUE for Motorola byte order, FALSE for Intel */\r
+#define CAM_NAME_LEN     32 /* Max length of a cam name (includes null term) */\r
+#define PARAM_NAME_LEN   32 /* Max length of a pp param                                                 */\r
+\r
+/************************ PVCAM-Specific Definitions *************************/\r
+#define MAX_CAM          16 /* Maximum number of cameras on this system.     */\r
+\r
+#endif /* _MASTER_H */\r
diff --git a/Photometrics/PVCAM/SDK/Headers/pv_icl.h b/Photometrics/PVCAM/SDK/Headers/pv_icl.h
new file mode 100644 (file)
index 0000000..0a3b267
--- /dev/null
@@ -0,0 +1,97 @@
+/*****************************************************************************/\r
+/************* IMAGER CONTROL LANGUAGE: A PVCAM OPTION LIBRARY ***************/\r
+/*****************************************************************************/\r
+/*            Copyright (C) 1994, Photometrics, Ltd.                         */\r
+/*                          2001, Roper Scientific                           */\r
+/*****************************************************************************/\r
+/*\r
+ * The functions in this library depend upon and make calls to the functions\r
+ * in the regular PVCAM library.  Because of that, this requires the PVCAM\r
+ * library to be present.  This file should be included after the include\r
+ * files "master.h" and "pvcam.h".\r
+ *\r
+ *****************************************************************************/\r
+#ifndef _PV_ICL_H\r
+#define _PV_ICL_H\r
+\r
+\r
+/******************************** ERROR CODES ********************************/\r
+#define CLASS101_ERROR 10100      /* ICL lib may use errors 10100 - 10199    */\r
+\r
+enum c101_error_vals \r
+{\r
+  C101_ICL_UNKNOWN_ERROR=CLASS101_ERROR,/* ICL OPTION LIBRARY: unknown error */\r
+  C101_ICL_LIB_NOT_INIT, /* the script library hasn't been initialized yet   */\r
+  C101_ICL_LIB_INITED,   /* the script library has already been initialized  */\r
+  C101_ICL_NO_BEGIN,     /* the "script_begin" command was never seen        */\r
+  C101_ICL_END_TOO_SOON, /* the text ended before "script_end" instruction   */\r
+  C101_ICL_INST_INVAL,   /* a script instruction could not be correctly read */\r
+  C101_ICL_OPEN_PAREN,   /* an opening parenthesis should have been present  */\r
+  C101_ICL_ILLEGAL_CHAR, /* an illegal character or symbol was seen          */\r
+  C101_ICL_BAD_COMMA,    /* unexpected comma                                 */\r
+  C101_ICL_BAD_NUMBER,   /* unexpected numeric parameter; comma needed?      */\r
+  C101_ICL_BAD_CL_PAREN, /* unexpected closing parenthesis; extra comma?     */\r
+  C101_ICL_NO_SEMICOLON, /* the semicolon was missing from this instruction  */\r
+  C101_ICL_TOO_MANY_ARG, /* this instruction has too many parameters         */\r
+  C101_ICL_TOO_FEW_ARG,  /* this instruction doesn't have enough parameters  */\r
+  C101_ICL_ARG_IS_ZERO,  /* this argument must be greater than zero          */\r
+  C101_ICL_ARG_OVER_65K, /* this argument must be 65,535 or less             */\r
+  C101_ICL_ARG_INVALID,  /* this argument is invalid or illegal              */\r
+  C101_ICL_OVER_LOOP,    /* the loops are nested too deeply                  */\r
+  C101_ICL_UNDER_LOOP,   /* there are too many "loop_end" instructions       */\r
+  C101_ICL_UNEVEN_LOOP,  /* "loop_begin" commands don't match "loop_end"     */\r
+  C101_ICL_BIN_TOO_LARG, /* a readout's binning exceeds its size             */\r
+  C101_ICL_RGN_TOO_LARG, /* the readout region does not fit on the CCD       */\r
+  C101_ICL_DISPLAY_SMAL, /* displayed data is less than the collected data   */\r
+  C101_ICL_DISPLAY_LARG, /* displayed data is more than the collected data   */\r
+  C101_ICL_NO_FRAME_XFR, /* this camera doesn't have a separate storage array*/\r
+  C101_ICL_NO_MPP,       /* this camera does not allow MPP mode              */\r
+  C101_ICL_TOO_COMPLEX,  /* this script exceeds available program memory     */\r
+  C101_NOT_SUPPORTED,    /* this camera does not support script download     */\r
+\r
+  C101_END  \r
+};\r
+\r
+\r
+/********************************* TYPEDEFS **********************************/\r
+typedef struct {                       /* ONE IMAGE "DISPLAY", FOR ICL       */\r
+  uns16    x;                          /* image width  to display, in pixels */\r
+  uns16    y;                          /* image height to display, in pixels */\r
+  void_ptr disp_addr;                  /* starting address for this image    */\r
+}           icl_disp_type,\r
+PV_PTR_DECL icl_disp_ptr;\r
+\r
+\r
+/********************************* CONSTANTS *********************************/\r
+\r
+\r
+/**************************** FUNCTION PROTOTYPES ****************************/\r
+#ifdef PV_C_PLUS_PLUS                  /* The prevents C++ compilers from    */\r
+extern "C" {                           /*   performing "name mangling".      */\r
+#endif\r
+\r
+boolean PV_DECL pl_exp_init_script    ( void );\r
+boolean PV_DECL pl_exp_uninit_script  ( void );\r
+boolean PV_DECL pl_exp_setup_script   ( int16 hcam, \r
+                                        char_const_ptr script,\r
+                                        uns32_ptr stream_size, \r
+                                        uns32_ptr num_rects );\r
+boolean PV_DECL pl_exp_display_script ( int16 hcam,\r
+                                        icl_disp_ptr user_disp_array, \r
+                                        void_ptr pixel_stream );\r
+boolean PV_DECL pl_exp_listerr_script ( int16 hcam, \r
+                                        char_ptr err_char,\r
+                                        uns32_ptr err_char_num, \r
+                                        uns32_ptr err_line,\r
+                                        uns32_ptr err_ch_in_line );\r
+\r
+\r
+#define pl_exp_start_script           ( hcam, pixel_stream ) \\r
+        pl_exp_start_seq              ( hcam, pixel_stream )\r
+\r
+#ifdef PV_C_PLUS_PLUS\r
+}\r
+#endif\r
+\r
+\r
+#endif /* _PV_ICL_H */\r
diff --git a/Photometrics/PVCAM/SDK/Headers/pvcam.h b/Photometrics/PVCAM/SDK/Headers/pvcam.h
new file mode 100644 (file)
index 0000000..479956b
--- /dev/null
@@ -0,0 +1,1008 @@
+/******************************************************************************\r
+   Copyright (C) Roper Scientific, Inc. 1990-2000. All rights reserved.\r
+******************************************************************************/\r
+\r
+#ifndef _PVCAM_H\r
+#define _PVCAM_H\r
+static const char *_pvcam_h_="$Header: /PVCAM v2.6/SourceCommon/pvcam.h 29    11/07/03 12:14p Ghavenga $";\r
+/*********************** Constant & Type Definitions *************************/\r
+\r
+/************************ Class 2: Data types ********************************/\r
+/* Data type used by pl_get_param with attribute type (ATTR_TYPE).           */\r
+#define TYPE_CHAR_PTR              13\r
+#define TYPE_INT8                  12\r
+#define TYPE_UNS8                   5\r
+#define TYPE_INT16                  1\r
+#define TYPE_UNS16                  6\r
+#define TYPE_INT32                  2\r
+#define TYPE_UNS32                  7\r
+#define TYPE_INT64                        16\r
+#define TYPE_UNS64                  8\r
+#define TYPE_FLT64                  4\r
+#define TYPE_ENUM                   9\r
+#define TYPE_BOOLEAN               11\r
+#define TYPE_VOID_PTR              14\r
+#define TYPE_VOID_PTR_PTR          15\r
+#define TYPE_SMART_STREAM_TYPE     17\r
+#define TYPE_SMART_STREAM_TYPE_PTR 18\r
+\r
+\r
+/* defines for classes                                                       */\r
+#define CLASS0      0          /* Camera Communications                      */\r
+#define CLASS1      1          /* Error Reporting                            */\r
+#define CLASS2      2          /* Configuration/Setup                        */\r
+#define CLASS3      3          /* Data Acuisition                            */\r
+#define CLASS4      4          /* Buffer Manipulation                        */\r
+#define CLASS5      5          /* Analysis                                   */\r
+#define CLASS6      6          /* Data Export                                */\r
+#define        CLASS7          7                  /* Bridge Commands                                                    */\r
+#define CLASS29     29         /* Buffer Functions                           */\r
+#define CLASS30     30         /* Utility functions                          */\r
+#define CLASS31     31         /* Memory Functions                           */\r
+#define CLASS32     32         /* CCL Engine                                 */\r
+#define CLASS91     91         /* RS170                                      */\r
+#define CLASS92     92         /* Defect Mapping                             */\r
+#define CLASS93     93         /* Fast frame operations (PIV/ACCUM/Kinetics) */\r
+#define CLASS94     94         /* PTG                                        */\r
+#define CLASS95     95         /* Virtual Chip                               */\r
+#define CLASS96     96         /* Acton diagnostics.                         */\r
+#define CLASS97     97         /* Custom Chip                                */\r
+#define CLASS98     98         /* Custom timing                              */\r
+/************************ Parameter IDs **************************************/\r
+/* Format: TTCCxxxx, where TT = Data type, CC = Class, xxxx = ID number      */\r
+\r
+\r
+/* DEVICE DRIVER PARAMETERS (CLASS 0) */\r
+\r
+/*  Class 0 (next available index for class zero = 6) */\r
+\r
+#define PARAM_DD_INFO_LENGTH        ((CLASS0<<16) + (TYPE_INT16<<24) + 1)\r
+#define PARAM_DD_VERSION            ((CLASS0<<16) + (TYPE_UNS16<<24) + 2)\r
+#define PARAM_DD_RETRIES            ((CLASS0<<16) + (TYPE_UNS16<<24) + 3)\r
+#define PARAM_DD_TIMEOUT            ((CLASS0<<16) + (TYPE_UNS16<<24) + 4)\r
+#define PARAM_DD_INFO               ((CLASS0<<16) + (TYPE_CHAR_PTR<<24) + 5)\r
+\r
+\r
+//GUID for FRAME_INFO structure\r
+typedef struct _TAG_PVCAM_FRAME_INFO_GUID\r
+{\r
+    uns32 f1;\r
+    uns16 f2;\r
+    uns16 f3;\r
+    uns8  f4[8];\r
+} PVCAM_FRAME_INFO_GUID, *PPVCAM_FRAME_INFO_GUID;\r
+\r
+static const PVCAM_FRAME_INFO_GUID FRAME_INFO_ID =\r
+{ 0xd9d321fc, 0xa233, 0x4272, { 0x89, 0x7e, 0x42, 0xec, 0x15, 0xda, 0xd, 0xd6 } };\r
+\r
+//FRAME_INFO currently holding the sequential frame number and timestamp\r
+typedef struct _TAG_FRAME_INFO\r
+{\r
+    PVCAM_FRAME_INFO_GUID FrameInfoGUID;\r
+    int16 hCam;\r
+    int32 FrameNr; \r
+    long64 TimeStamp;\r
+    int32 ReadoutTime;\r
+    long64 TimeStampBOF;\r
+} FRAME_INFO, *PFRAME_INFO;\r
+\r
+//struct FRAME_INFO;\r
+\r
+/* Camera Parameters Class 2 variables */\r
+\r
+/* Class 2 (next available index for class two = 544) */\r
+\r
+/* CCD skip parameters                                                       */\r
+\r
+/* Shutter, Gate, or Safe mode, for the PI-Max.                              */\r
+#define PARAM_SHTR_GATE_MODE        ((CLASS2<<16) + (TYPE_ENUM<<24)      + 217)\r
+/* ADC offset setting.                                                       */\r
+#define PARAM_ADC_OFFSET            ((CLASS2<<16) + (TYPE_INT16<<24)     + 195)\r
+/* CCD chip name.    */\r
+#define PARAM_CHIP_NAME             ((CLASS2<<16) + (TYPE_CHAR_PTR<<24)  + 129)\r
+\r
+#define PARAM_COOLING_MODE          ((CLASS2<<16) + (TYPE_ENUM<<24)      + 214)\r
+#define PARAM_PREAMP_DELAY          ((CLASS2<<16) + (TYPE_UNS16<<24)     + 502)\r
+#define PARAM_COLOR_MODE            ((CLASS2<<16) + (TYPE_ENUM<<24)      + 504)\r
+#define PARAM_MPP_CAPABLE           ((CLASS2<<16) + (TYPE_ENUM<<24)      + 224)\r
+#define PARAM_PREAMP_OFF_CONTROL    ((CLASS2<<16) + (TYPE_UNS32<<24)     + 507)\r
+#define PARAM_SERIAL_NUM            ((CLASS2<<16) + (TYPE_UNS16<<24)     + 508)\r
+\r
+/* CCD Dimensions and physical characteristics                               */\r
+/* pre and post dummies of CCD.                                              */\r
+#define PARAM_PREMASK               ((CLASS2<<16) + (TYPE_UNS16<<24)     +  53)\r
+#define PARAM_PRESCAN               ((CLASS2<<16) + (TYPE_UNS16<<24)     +  55)\r
+#define PARAM_POSTMASK              ((CLASS2<<16) + (TYPE_UNS16<<24)     +  54)\r
+#define PARAM_POSTSCAN              ((CLASS2<<16) + (TYPE_UNS16<<24)     +  56)\r
+#define PARAM_PIX_PAR_DIST          ((CLASS2<<16) + (TYPE_UNS16<<24)     + 500)\r
+#define PARAM_PIX_PAR_SIZE          ((CLASS2<<16) + (TYPE_UNS16<<24)     +  63)\r
+#define PARAM_PIX_SER_DIST          ((CLASS2<<16) + (TYPE_UNS16<<24)     + 501)\r
+#define PARAM_PIX_SER_SIZE          ((CLASS2<<16) + (TYPE_UNS16<<24)     +  62)\r
+#define PARAM_SUMMING_WELL          ((CLASS2<<16) + (TYPE_BOOLEAN<<24)   + 505)\r
+#define PARAM_FWELL_CAPACITY        ((CLASS2<<16) + (TYPE_UNS32<<24)     + 506)\r
+/* Y dimension of active area of CCD chip */\r
+#define PARAM_PAR_SIZE              ((CLASS2<<16) + (TYPE_UNS16<<24)     +  57)\r
+/* X dimension of active area of CCD chip */\r
+#define PARAM_SER_SIZE              ((CLASS2<<16) + (TYPE_UNS16<<24)     +  58)\r
+/* X dimension of active area of CCD chip */\r
+#define PARAM_ACCUM_CAPABLE         ((CLASS2<<16) + (TYPE_BOOLEAN<<24)   + 538)\r
+#define PARAM_FLASH_DWNLD_CAPABLE   ((CLASS2<<16) + (TYPE_BOOLEAN<<24)   + 539)\r
+\r
+\r
+\r
+\r
+/* General parameters */\r
+\r
+/* Readout time of current ROI, in ms */\r
+#define PARAM_READOUT_TIME          ((CLASS2<<16) + (TYPE_FLT64<<24)     + 179)\r
+\r
+\r
+\r
+\r
+\r
+/* CAMERA PARAMETERS (CLASS 2) */\r
+\r
+#define PARAM_CLEAR_CYCLES          ((CLASS2<<16) + (TYPE_UNS16<<24)     + 97)\r
+#define PARAM_CLEAR_MODE            ((CLASS2<<16) + (TYPE_ENUM<<24)      + 523)\r
+#define PARAM_FRAME_CAPABLE         ((CLASS2<<16) + (TYPE_BOOLEAN<<24)   + 509)\r
+#define PARAM_PMODE                 ((CLASS2<<16) + (TYPE_ENUM <<24)     + 524)\r
+#define PARAM_CCS_STATUS            ((CLASS2<<16) + (TYPE_INT16<<24)     + 510)\r
+\r
+/* This is the actual temperature of the detector. This is only a get, not a */\r
+/* set                                                                       */\r
+#define PARAM_TEMP                  ((CLASS2<<16) + (TYPE_INT16<<24)     + 525)\r
+/* This is the desired temperature to set. */\r
+#define PARAM_TEMP_SETPOINT         ((CLASS2<<16) + (TYPE_INT16<<24)     + 526)\r
+#define PARAM_CAM_FW_VERSION        ((CLASS2<<16) + (TYPE_UNS16<<24)     + 532)\r
+#define PARAM_HEAD_SER_NUM_ALPHA    ((CLASS2<<16) + (TYPE_CHAR_PTR<<24)  + 533)\r
+#define PARAM_PCI_FW_VERSION        ((CLASS2<<16) + (TYPE_UNS16<<24)     + 534)\r
+#define PARAM_CAM_FW_FULL_VERSION      ((CLASS2<<16) + (TYPE_CHAR_PTR<<24)  + 534)\r
+\r
+/* Exsposure mode, timed strobed etc, etc */\r
+#define PARAM_EXPOSURE_MODE         ((CLASS2<<16) + (TYPE_ENUM<<24)      + 535)\r
+\r
+/* SPEED TABLE PARAMETERS (CLASS 2) */\r
+\r
+#define PARAM_BIT_DEPTH             ((CLASS2<<16) + (TYPE_INT16<<24)     + 511)\r
+#define PARAM_GAIN_INDEX            ((CLASS2<<16) + (TYPE_INT16<<24)     + 512)\r
+#define PARAM_SPDTAB_INDEX          ((CLASS2<<16) + (TYPE_INT16<<24)     + 513)\r
+/* define which port (amplifier on shift register) to use. */\r
+#define PARAM_READOUT_PORT          ((CLASS2<<16) + (TYPE_ENUM<<24)      + 247)\r
+#define PARAM_PIX_TIME              ((CLASS2<<16) + (TYPE_UNS16<<24)     + 516)\r
+\r
+/* SHUTTER PARAMETERS (CLASS 2) */\r
+\r
+#define PARAM_SHTR_CLOSE_DELAY      ((CLASS2<<16) + (TYPE_UNS16<<24)     + 519)\r
+#define PARAM_SHTR_OPEN_DELAY       ((CLASS2<<16) + (TYPE_UNS16<<24)     + 520)\r
+#define PARAM_SHTR_OPEN_MODE        ((CLASS2<<16) + (TYPE_ENUM <<24)     + 521)\r
+#define PARAM_SHTR_STATUS           ((CLASS2<<16) + (TYPE_ENUM <<24)     + 522)\r
+#define PARAM_SHTR_CLOSE_DELAY_UNIT ((CLASS2<<16) + (TYPE_ENUM <<24)     + 543)  /* use enum TIME_UNITS to specify the unit */\r
+\r
+\r
+/* I/O PARAMETERS (CLASS 2) */\r
+\r
+#define PARAM_IO_ADDR               ((CLASS2<<16) + (TYPE_UNS16<<24)     + 527)\r
+#define PARAM_IO_TYPE               ((CLASS2<<16) + (TYPE_ENUM<<24)      + 528)\r
+#define PARAM_IO_DIRECTION          ((CLASS2<<16) + (TYPE_ENUM<<24)      + 529)\r
+#define PARAM_IO_STATE              ((CLASS2<<16) + (TYPE_FLT64<<24)     + 530)\r
+#define PARAM_IO_BITDEPTH           ((CLASS2<<16) + (TYPE_UNS16<<24)     + 531)\r
+\r
+/* GAIN MULTIPLIER PARAMETERS (CLASS 2) */\r
+\r
+#define PARAM_GAIN_MULT_FACTOR      ((CLASS2<<16) + (TYPE_UNS16<<24)     + 537)\r
+#define PARAM_GAIN_MULT_ENABLE      ((CLASS2<<16) + (TYPE_BOOLEAN<<24)   + 541)\r
+\r
+/*  POST PROCESSING PARAMETERS (CLASS 2) */\r
+#define PARAM_PP_FEAT_NAME                     ((CLASS2<<16) + (TYPE_CHAR_PTR<<24)     +  542)\r
+#define PARAM_PP_INDEX                         ((CLASS2<<16) + (TYPE_INT16<<24)        +  543)\r
+#define PARAM_ACTUAL_GAIN                      ((CLASS2<<16) + (TYPE_UNS16<<24)        +  544)\r
+#define PARAM_PP_PARAM_INDEX           ((CLASS2<<16) + (TYPE_INT16<<24)        +  545)\r
+#define PARAM_PP_PARAM_NAME                    ((CLASS2<<16) + (TYPE_CHAR_PTR<<24)     +  546)\r
+#define PARAM_PP_PARAM                         ((CLASS2<<16) + (TYPE_UNS32<<24)        +  547)\r
+#define PARAM_READ_NOISE                       ((CLASS2<<16) + (TYPE_UNS16<<24)        +  548)\r
+\r
+\r
+/*  S.M.A.R.T. STREAMING PARAMETERS (CLASS 2) */\r
+#define PARAM_SMART_STREAM_MODE_ENABLED                ((CLASS2<<16) + (TYPE_BOOLEAN<<24)      +  700)\r
+#define PARAM_SMART_STREAM_MODE                                ((CLASS2<<16) + (TYPE_UNS16<<24)        +  701)\r
+#define        PARAM_SMART_STREAM_EXP_PARAMS           ((CLASS2<<16) + (TYPE_VOID_PTR<<24)     +  702)\r
+#define        PARAM_SMART_STREAM_DLY_PARAMS           ((CLASS2<<16) + (TYPE_VOID_PTR<<24)     +  703)\r
+\r
+/* ACQUISITION PARAMETERS (CLASS 3) */\r
+/* (next available index for class three = 11) */\r
+\r
+#define PARAM_EXP_TIME              ((CLASS3<<16) + (TYPE_UNS16<<24)     +   1)\r
+#define PARAM_EXP_RES               ((CLASS3<<16) + (TYPE_ENUM<<24)      +   2)\r
+#define PARAM_EXP_MIN_TIME          ((CLASS3<<16) + (TYPE_FLT64<<24)     +   3)\r
+#define PARAM_EXP_RES_INDEX         ((CLASS3<<16) + (TYPE_UNS16<<24)     +   4)\r
+\r
+/* PARAMETERS FOR  BEGIN and END of FRAME Interrupts */\r
+#define PARAM_BOF_EOF_ENABLE        ((CLASS3<<16) + (TYPE_ENUM<<24)      +   5)\r
+#define PARAM_BOF_EOF_COUNT         ((CLASS3<<16) + (TYPE_UNS32<<24)     +   6)\r
+#define PARAM_BOF_EOF_CLR           ((CLASS3<<16) + (TYPE_BOOLEAN<<24)   +   7)\r
+\r
+\r
+/* Test to see if hardware/software can perform circular buffer */\r
+#define PARAM_CIRC_BUFFER           ((CLASS3<<16) + (TYPE_BOOLEAN<<24)   + 299)\r
+\r
+#define PARAM_CURRENT_PVTIME           ((CLASS3<<16) + (TYPE_INT16<<24)     + 167)\r
+/* bridge command parameters */\r
+\r
+\r
+/********************** Class 0: Open Camera Modes ***************************/\r
+/*\r
+  Function: pl_cam_open()\r
+  PI Conversion: CreateController()\r
+*/\r
+enum\r
+{ OPEN_EXCLUSIVE };\r
+\r
+/************************ Class 1: Error message size ************************/\r
+#define ERROR_MSG_LEN  255      /* No error message will be longer than this */\r
+\r
+/*********************** Class 2: Cooling type flags *************************/\r
+/* used with the PARAM_COOLING_MODE parameter id.\r
+  PI Conversion: NORMAL_COOL = TE_COOLED\r
+                 CRYO_COOL   = LN_COOLED\r
+*/\r
+enum\r
+{ NORMAL_COOL, CRYO_COOL };\r
+\r
+/************************** Class 2: Name/ID sizes ***************************/\r
+#define CCD_NAME_LEN  17           /* Includes space for the null terminator */\r
+#define MAX_ALPHA_SER_NUM_LEN 32   /* Includes space for the null terminator */\r
+#define MAX_PP_NAME_LEN 32\r
+\r
+/*********************** Class 2: MPP capability flags ***********************/\r
+/* used with the PARAM_MPP_CAPABLE parameter id.                             */\r
+enum\r
+{ MPP_UNKNOWN, MPP_ALWAYS_OFF, MPP_ALWAYS_ON, MPP_SELECTABLE };\r
+\r
+/************************** Class 2: Shutter flags ***************************/\r
+/* used with the PARAM_SHTR_STATUS parameter id.\r
+  PI Conversion: n/a   (returns SHTR_OPEN)\r
+*/\r
+enum\r
+{\r
+    SHTR_FAULT, SHTR_OPENING, SHTR_OPEN, SHTR_CLOSING, SHTR_CLOSED,\r
+    SHTR_UNKNOWN\r
+};\r
+\r
+/************************ Class 2: Pmode constants ***************************/\r
+/* used with the PARAM_PMODE parameter id.                                   */\r
+enum\r
+{\r
+    PMODE_NORMAL, PMODE_FT, PMODE_MPP, PMODE_FT_MPP,\r
+    PMODE_ALT_NORMAL, PMODE_ALT_FT, PMODE_ALT_MPP, PMODE_ALT_FT_MPP,\r
+    PMODE_INTERLINE\r
+};\r
+\r
+/************************ Class 2: Color support constants *******************/\r
+/* used with the PARAM_COLOR_MODE parameter id.                              */\r
+enum\r
+{ COLOR_NONE, COLOR_RGGB = 2 };\r
+\r
+/************************ Class 2: Attribute IDs *****************************/\r
+/*\r
+  Function: pl_get_param()\r
+*/\r
+enum\r
+{\r
+    ATTR_CURRENT, ATTR_COUNT, ATTR_TYPE, ATTR_MIN, ATTR_MAX, ATTR_DEFAULT,\r
+    ATTR_INCREMENT, ATTR_ACCESS, ATTR_AVAIL\r
+};\r
+\r
+/************************ Class 2: Access types ******************************/\r
+/*\r
+  Function: pl_get_param( ATTR_ACCESS )\r
+*/\r
+enum\r
+{\r
+    ACC_ERROR, ACC_READ_ONLY, ACC_READ_WRITE, ACC_EXIST_CHECK_ONLY,\r
+    ACC_WRITE_ONLY\r
+};\r
+/* This enum is used by the access Attribute */\r
+\r
+/************************ Class 2: I/O types *********************************/\r
+/* used with the PARAM_IO_TYPE parameter id.                                 */\r
+enum\r
+{ IO_TYPE_TTL, IO_TYPE_DAC };\r
+\r
+/************************ Class 2: I/O direction flags ***********************/\r
+/* used with the PARAM_IO_DIRECTION parameter id.                            */\r
+enum\r
+{ IO_DIR_INPUT, IO_DIR_OUTPUT, IO_DIR_INPUT_OUTPUT };\r
+\r
+/************************ Class 2: I/O port attributes ***********************/\r
+enum\r
+{ IO_ATTR_DIR_FIXED, IO_ATTR_DIR_VARIABLE_ALWAYS_READ };\r
+\r
+/************************ Class 2: Trigger polarity **************************/\r
+/* used with the PARAM_EDGE_TRIGGER parameter id.                            */\r
+enum\r
+{ EDGE_TRIG_POS = 2, EDGE_TRIG_NEG };\r
+\r
+/************************ Class 2: Logic Output ******************************/\r
+/* used with the PARAM_LOGIC_OUTPUT parameter id.                            */\r
+enum\r
+{\r
+    OUTPUT_NOT_SCAN = 0, OUTPUT_SHUTTER, OUTPUT_NOT_RDY, OUTPUT_LOGIC0,\r
+    OUTPUT_CLEARING, OUTPUT_NOT_FT_IMAGE_SHIFT, OUTPUT_RESERVED,\r
+    OUTPUT_LOGIC1\r
+};\r
+\r
+/************************ Class 2: PI-Max intensifer gating settings *********/\r
+/* used with the PARAM_SHTR_GATE_MODE parameter id.                          */\r
+enum\r
+{ INTENSIFIER_SAFE = 0, INTENSIFIER_GATING, INTENSIFIER_SHUTTER };\r
+\r
+/************************ Class 2: Readout Port ******************************/\r
+/* used with the PARAM_READOUT_PORT parameter id.                            */\r
+enum\r
+{\r
+    READOUT_PORT_MULT_GAIN = 0,\r
+    READOUT_PORT_NORMAL,\r
+    READOUT_PORT_LOW_NOISE,\r
+    READOUT_PORT_HIGH_CAP,\r
+    /* deprecated */\r
+    READOUT_PORT1 = 0,\r
+    READOUT_PORT2 = 1\r
+};\r
+\r
+/************************ Class 2: Anti Blooming *****************************/\r
+/* used with the PARAM_ANTI_BLOOMING parameter id.                           */\r
+enum\r
+{ ANTIBLOOM_NOTUSED = 0, ANTIBLOOM_INACTIVE, ANTIBLOOM_ACTIVE };\r
+\r
+/************************ Class 2: Clearing mode flags ***********************/\r
+/* used with the PARAM_CLEAR_MODE parameter id.                              */\r
+enum\r
+{\r
+    CLEAR_NEVER, CLEAR_PRE_EXPOSURE, CLEAR_PRE_SEQUENCE, CLEAR_POST_SEQUENCE,\r
+    CLEAR_PRE_POST_SEQUENCE, CLEAR_PRE_EXPOSURE_POST_SEQ, MAX_CLEAR_MODE\r
+};\r
+\r
+/************************ Class 2: Shutter mode flags ************************/\r
+/*\r
+  Function: pl_set_param ( PARAM_SHTR_OPEN_MODE )\r
+\r
+  PI Conversion: OPEN_NEVER:        SHUTTER_CLOSE\r
+                 OPEN_PRE_EXPOSURE: SHUTTER_OPEN  & CMP_SHT_PREOPEN = FALSE\r
+                 OPEN_PRE_SEQUENCE: SHUTTER_DISABLED_OPEN\r
+                 OPEN_PRE_TRIGGER:  SHUTTER_OPEN & CMP_SHT_PREOPEN = TRUE\r
+                 OPEN_NO_CHANGE:    SHUTTER_OPEN\r
+*/\r
+enum\r
+{\r
+    OPEN_NEVER, OPEN_PRE_EXPOSURE, OPEN_PRE_SEQUENCE, OPEN_PRE_TRIGGER,\r
+    OPEN_NO_CHANGE\r
+};\r
+\r
+/************************ Class 2: Exposure mode flags ***********************/\r
+/* used with the PARAM_EXPOSURE_MODE parameter id.\r
+  Functions: pl_exp_setup_cont()\r
+             pl_exp_setup_seq()\r
+\r
+  PI Conversion:\r
+\r
+         Readout Mode: Normal           ROM_KINETICS              ROM_DIF\r
+  ---------------------------------------------------------------------------\r
+            BULB_MODE: (not supported)                            CTRL_EEC\r
+           FLASH_MODE: (Don't have this)\r
+         STROBED_MODE: CTRL_EXTSYNC     CTRL_KINETICS_MULTIPLE    CTRL_ESABI\r
+           TIMED_MODE: CTRL_FREERUN     CTRL_KINETICS_NO_TRIGGER\r
+   TRIGGER_FIRST_MODE: (not supported)  CTRL_KINETICS_SINGLE      CTRL_IEC\r
+  VARIABLE_TIMED_MODE: (Do not use)\r
+      INT_STROBE_MODE: CTRL_INTERNAL_SYNC\r
+\r
+*/\r
+enum\r
+{\r
+    TIMED_MODE, STROBED_MODE, BULB_MODE, TRIGGER_FIRST_MODE, FLASH_MODE,\r
+    VARIABLE_TIMED_MODE, INT_STROBE_MODE, MAX_EXPOSE_MODE\r
+};\r
+\r
+/**************** Class 2: S.M.A.R.T Streaming  ****************/\r
+/* used with the PARAM_PP_PARAM_ID parameter id.                             */\r
+typedef struct\r
+{\r
+    uns16     entries;         /* The number of entries in the array         */\r
+    uns32_ptr params;          /* The actual S.M.A.R.T. stream parameters    */\r
+}\r
+smart_stream_type, PV_PTR_DECL smart_stream_type_ptr;\r
+\r
+/********************** Class 2: S.M.A.R.T Streaming Modes *******************/\r
+enum\r
+{\r
+    SMTMODE_ARBITRARY_ALL = 0,\r
+    SMTMODE_MAX\r
+};\r
+\r
+/********************** Class 3: Readout status flags ************************/\r
+/*\r
+  Function: pl_exp_check_status()\r
+  PI Conversion: PICM_LockCurrentFrame()\r
+                 PICM_Chk_Data()\r
+\r
+    if NEWDATARDY or NEWDATAFIXED     READOUT_COMPLETE\r
+    else if RUNNING                   ACQUISITION_IN_PROGRESS\r
+    else if INITIALIZED or DONEDCOK   READOUT_NOT_ACTIVE\r
+    else                              READOUT_FAILED\r
+\r
+*/\r
+enum\r
+{\r
+    READOUT_NOT_ACTIVE,\r
+    EXPOSURE_IN_PROGRESS,\r
+    READOUT_IN_PROGRESS,\r
+    READOUT_COMPLETE,                   /* Means frame available for a circular buffer acq */\r
+    FRAME_AVAILABLE = READOUT_COMPLETE, /* New camera status indicating at least one frame is available */\r
+    READOUT_FAILED,\r
+    ACQUISITION_IN_PROGRESS,\r
+    MAX_CAMERA_STATUS\r
+};\r
+\r
+/********************** Class 3: Abort Exposure flags ************************/\r
+/*\r
+  Function: pl_exp_abort()\r
+  PI Conversion: controller->Stop(), enum spec ignored\r
+*/\r
+enum\r
+{\r
+    CCS_NO_CHANGE, CCS_HALT, CCS_HALT_CLOSE_SHTR, CCS_CLEAR,\r
+    CCS_CLEAR_CLOSE_SHTR, CCS_OPEN_SHTR, CCS_CLEAR_OPEN_SHTR\r
+};\r
+\r
+/************************ Class 3: Event constants ***************************/\r
+enum\r
+{ EVENT_START_READOUT, EVENT_END_READOUT };\r
+\r
+/************************ Class 3: EOF/BOF constants *************************/\r
+/* used with the PARAM_BOF_EOF_ENABLE parameter id.                          */\r
+enum\r
+{ NO_FRAME_IRQS, BEGIN_FRAME_IRQS, END_FRAME_IRQS, BEGIN_END_FRAME_IRQS };\r
+\r
+/************************ Class 3: Continuous Mode constants *****************/\r
+/*\r
+  Function: pl_exp_setup_cont()\r
+*/\r
+enum\r
+{ CIRC_NONE, CIRC_OVERWRITE, CIRC_NO_OVERWRITE };\r
+\r
+/************************ Class 3: Fast Exposure Resolution constants ********/\r
+/* used with the PARAM_EXP_RES parameter id.                                 */\r
+enum\r
+{ EXP_RES_ONE_MILLISEC, EXP_RES_ONE_MICROSEC, EXP_RES_ONE_SEC };\r
+\r
+/************************ Class 3: I/O Script Locations **********************/\r
+enum\r
+{\r
+    SCR_PRE_OPEN_SHTR, SCR_POST_OPEN_SHTR, SCR_PRE_FLASH, SCR_POST_FLASH,\r
+    SCR_PRE_INTEGRATE, SCR_POST_INTEGRATE, SCR_PRE_READOUT, SCR_POST_READOUT,\r
+    SCR_PRE_CLOSE_SHTR, SCR_POST_CLOSE_SHTR\r
+};\r
+\r
+/************************ Class 3: Callback constants *************************/\r
+\r
+typedef enum _PL_CALLBACK_EVENT\r
+{\r
+    PL_CALLBACK_BOF,\r
+    PL_CALLBACK_EOF,\r
+    PL_CALLBACK_CHECK_CAMS,\r
+    PL_CALLBACK_CAM_REMOVED,\r
+    PL_CALLBACK_CAM_RESUMED,\r
+    PL_CALLBACK_MAX\r
+} PL_CALLBACK_EVENT, *PPL_CALLBACK_EVENT;\r
+\r
+/************************* Class 3: Region Definition ************************/\r
+typedef struct\r
+{\r
+    uns16 s1;                     /* First pixel in the serial register */\r
+    uns16 s2;                     /* Last pixel in the serial register */\r
+    uns16 sbin;                   /* Serial binning for this region */\r
+    uns16 p1;                     /* First row in the parallel register */\r
+    uns16 p2;                     /* Last row in the parallel register */\r
+    uns16 pbin;                   /* Parallel binning for this region */\r
+}\r
+rgn_type, PV_PTR_DECL rgn_ptr;\r
+typedef const rgn_type PV_PTR_DECL rgn_const_ptr;\r
+\r
+/********************** Class 4: Buffer bit depth flags **********************/\r
+enum\r
+{\r
+    PRECISION_INT8, PRECISION_UNS8, PRECISION_INT16, PRECISION_UNS16,\r
+    PRECISION_INT32, PRECISION_UNS32\r
+};\r
+\r
+/************************** Class 6: Export Control **************************/\r
+typedef struct\r
+{\r
+    rs_bool rotate;           /* TRUE=Rotate the data during export            */\r
+    rs_bool x_flip;           /* TRUE=Flip the data horizontally during export */\r
+    rs_bool y_flip;           /* TRUE=Flip the data vertically during export   */\r
+    int16 precision;          /* Bits in output data, see constants            */\r
+    int16 windowing;          /* See list of constants                         */\r
+    int32 max_inten;          /* Highest intensity, if windowing               */\r
+    int32 min_inten;          /* Lowest intensity, if windowing                */\r
+    int16 output_x_size;      /* Controls output array size                    */\r
+    int16 output_y_size;      /* Controls output array size                    */\r
+}\r
+export_ctrl_type, PV_PTR_DECL export_ctrl_ptr;\r
+typedef const export_ctrl_type PV_PTR_DECL export_ctrl_const_ptr;\r
+\r
+\r
+\r
+/************************** Classless Entries       **************************/\r
+enum TIME_UNITS\r
+{\r
+    TU_DAY    = 10,\r
+    TU_HOUR   = 5,\r
+    TU_MINUTE = 4,\r
+    TU_SEC    = 3,\r
+    TU_MSEC   = 2,      /* millisecond  */\r
+    TU_USEC   = 1,      /* microsecond  */\r
+    TU_NSEC   = 7,      /* nanosecond   */\r
+    TU_PSEC   = 8,      /* picosecond   */\r
+    TU_FSEC   = 9       /* femtosecond  */\r
+};\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+/**************************** Function Prototypes ****************************/\r
+#ifdef PV_C_PLUS_PLUS\r
+extern "C"\r
+{\r
+#endif\r
+\r
+\r
+    /*****************************************************************************/\r
+    /*****************************************************************************/\r
+    /*                                                                           */\r
+    /*             Class 0: Camera Communications Function Prototypes            */\r
+    /*                                                                           */\r
+    /*****************************************************************************/\r
+    /*****************************************************************************/\r
+\r
+    /*****************************************************************************/\r
+    /* rs_bool (RETURN)  All functions that return a rs_bool return TRUE for     */\r
+    /*                   success and FALSE for failure.  If a failure occurs     */\r
+    /*                   pl_error_code() and pl_error_message() can be used to   */\r
+    /*                   determine the cause.                                    */\r
+    /*****************************************************************************/\r
+\r
+    /*****************************************************************************/\r
+    /* pvcam_version     Version number of the PVCAM library                     */\r
+    /*                     16 bits = MMMMMMMMrrrrTTTT where MMMMMMMM = Major #,  */\r
+    /*                     rrrr = Minor #, and TTTT = Trivial #                  */\r
+    /*****************************************************************************/\r
+\r
+    rs_bool PV_DECL pl_pvcam_get_ver (uns16_ptr pvcam_version);\r
+    rs_bool PV_DECL pl_pvcam_init (void);\r
+    rs_bool PV_DECL pl_pvcam_uninit (void);\r
+\r
+    /*****************************************************************************/\r
+    /* hcam              Camera handle returned from pl_cam_open()               */\r
+    /* cam_num           Camera number Range: 0 through (totl_cams-1)            */\r
+    /* camera_name       Text name assigned to a camera (with RSConfig)          */\r
+    /* totl_cams         Total number of cameras in the system                   */\r
+    /* o_mode            Mode to open the camera in (must be OPEN_EXCLUSIVE)     */\r
+    /*****************************************************************************/\r
+\r
+    rs_bool PV_DECL pl_cam_check (int16 hcam);\r
+    rs_bool PV_DECL pl_cam_close (int16 hcam);\r
+    rs_bool PV_DECL pl_cam_get_diags (int16 hcam);\r
+    rs_bool PV_DECL pl_cam_get_name (int16 cam_num, char_ptr camera_name);\r
+    rs_bool PV_DECL pl_cam_get_total (int16_ptr totl_cams);\r
+    rs_bool PV_DECL pl_cam_open (char_ptr camera_name, int16_ptr hcam,\r
+                                 int16 o_mode);\r
+\r
+    rs_bool PV_DECL pl_cam_register_callback (int16 hcam, PL_CALLBACK_EVENT CallbackEvent, void *Callback);\r
+    rs_bool PV_DECL pl_cam_register_callback_ex (int16 hcam, PL_CALLBACK_EVENT CallbackEvent, void *Callback, void *Context);\r
+    rs_bool PV_DECL pl_cam_register_callback_ex2(int16 hcam, PL_CALLBACK_EVENT CallbackEvent, void *Callback);//add comment same as ex3 except for context\r
+    rs_bool PV_DECL pl_cam_register_callback_ex3(int16 hcam, PL_CALLBACK_EVENT CallbackEvent, void *Callback, void *Context);\r
+    rs_bool PV_DECL pl_cam_deregister_callback (int16 hcam, PL_CALLBACK_EVENT CallbackEvent);\r
+\r
+\r
+    /*****************************************************************************/\r
+    /* ddi_version       Device Driver Interface version number                  */\r
+    /*                   (The 16 bits are MMMMMMMMnnnnTTTT)                      */\r
+    /*                   where MMMMMMMM = Major number, nnnn = Minor number, and */\r
+    /*                   TTTT = Trivial number                                   */\r
+    /*****************************************************************************/\r
+\r
+    rs_bool PV_DECL pl_ddi_get_ver (uns16_ptr ddi_version);\r
+\r
+\r
+    /*****************************************************************************/\r
+    /*****************************************************************************/\r
+    /*                                                                           */\r
+    /*                Class 1: Error Reporting Function Prototypes               */\r
+    /*                                                                           */\r
+    /*****************************************************************************/\r
+    /*****************************************************************************/\r
+\r
+    /*****************************************************************************/\r
+    /* int16 (RETURN)    pl_error_code(void) returns the error code of the last  */\r
+    /*                   pl_ function call.                                      */\r
+    /* err_code          Unique ID of the error: returned from pl_error_code()   */\r
+    /* msg               Text description of err_code.                           */\r
+    /*****************************************************************************/\r
+\r
+    int16   PV_DECL pl_error_code (void);\r
+    rs_bool PV_DECL pl_error_message (int16 err_code, char_ptr msg);\r
+\r
+\r
+    /*****************************************************************************/\r
+    /*****************************************************************************/\r
+    /*                                                                           */\r
+    /*              Class 2: Configuration/Setup Function Prototypes             */\r
+    /*                                                                           */\r
+    /*****************************************************************************/\r
+    /*****************************************************************************/\r
+\r
+    /*****************************************************************************/\r
+    /* param_id          ID of the parameter to get or set (PARAM_...)           */\r
+    /* param_attribute   Attribute of the parameter to get (ATTR_...)            */\r
+    /* param_value       Value to get or set                                     */\r
+    /* index             Index of enumeration Range: 0 through N-1 ... where N   */\r
+    /*                     is retrieved with get_param(...,ATTR_COUNT,...)       */\r
+    /* value             Numerical value of enumeration                          */\r
+    /* desc              Text description of enumeration                         */\r
+    /* length            Length of text description of enumeration               */\r
+    /*****************************************************************************/\r
+\r
+    rs_bool PV_DECL pl_get_param (int16 hcam, uns32 param_id,\r
+                                  int16 param_attribute, void_ptr param_value);\r
+    rs_bool PV_DECL pl_set_param (int16 hcam, uns32 param_id,\r
+                                  void_ptr param_value);\r
+    rs_bool PV_DECL pl_get_enum_param (int16 hcam, uns32 param_id, uns32 index,\r
+                                       int32_ptr value, char_ptr desc,\r
+                                       uns32 length);\r
+    rs_bool PV_DECL pl_enum_str_length (int16 hcam, uns32 param_id, uns32 index,\r
+                                        uns32_ptr length);\r
+    rs_bool PV_DECL pl_pp_reset (int16 hcam);\r
+\r
+    rs_bool PV_DECL pl_create_smart_stream_struct(smart_stream_type_ptr *array,\r
+            uns16 entries);\r
+\r
+    rs_bool PV_DECL pl_release_smart_stream_struct(smart_stream_type_ptr *array);\r
+\r
+    rs_bool PV_DECL pl_create_frame_info_struct(PFRAME_INFO * new_frame);\r
+\r
+    rs_bool PV_DECL pl_release_frame_info_struct(PFRAME_INFO frame_to_delete);\r
+\r
+\r
+\r
+    /*****************************************************************************/\r
+    /*****************************************************************************/\r
+    /*                                                                           */\r
+    /*               Class 3: Data Acquisition Function Prototypes               */\r
+    /*                                                                           */\r
+    /*****************************************************************************/\r
+    /*****************************************************************************/\r
+\r
+    /*****************************************************************************/\r
+    /* pixel_stream      Buffer to hold image(s)                                 */\r
+    /* byte_cnt          Size of bufer to hold images (in bytes)                 */\r
+    /* exp_total         Total number of exposures to take                       */\r
+    /* rgn_total         Total number of regions defined for each image          */\r
+    /* rgn_array         Array of regions (must be rgn_total in size)            */\r
+    /*                     s1    starting pixel in the serial register           */\r
+    /*                     s2    ending pixel in the serial register             */\r
+    /*                     sbin  serial binning for this region                  */\r
+    /*                     p1    starting pixel in the parallel register         */\r
+    /*                     p2    ending pixel in the parallel register           */\r
+    /*                     pbin  parallel binning for this region                */\r
+    /* exp_mode          Mode for capture (TIMED_MODE, STROBED_MODE, ...)        */\r
+    /* exposure_time     Time to expose in selected exposure resolution          */\r
+    /*                     Default is milliseconds (see PARAM_EXP_RES)           */\r
+    /* exp_bytes         Value returned from PVCAM specifying the required       */\r
+    /*                     number of bytes to allocate for the capture           */\r
+    /* buffer_mode       Circular buffer mode (CIRC_OVERWRITE,...)               */\r
+    /* size              Size of continuous capture pixel_stream                 */\r
+    /*                     (must be a multiple of byte_cnt)                      */\r
+    /* status            Status of the current capture (EXPOSURE_IN_PROGRESS,...)*/\r
+    /* bytes_arrived     Number of bytes that have arrived.  For continuous      */\r
+    /*                     mode this is the number of bytes that have arrived    */\r
+    /*                     this time through the buffer.                         */\r
+    /* buffer_cnt        Number of times through the buffer (continuous mode)    */\r
+    /* frame             Pointer to the requested image                          */\r
+    /* cam_state         State to set the camera in (CCS_NO_CHANGE,...)          */\r
+    /* hbuf              Standard image buffer                                   */\r
+    /* exposure          Exposure # to unravel, 65535 for All, else exposure #   */\r
+    /* array_list        Array of Pointers that will get the unraveled images    */\r
+    /*                     in the same order as the regions.                     */\r
+    /* tlimit            Time in milliseconds to wait for a transfer             */\r
+    /*****************************************************************************/\r
+\r
+    rs_bool PV_DECL pl_exp_init_seq (void);\r
+    rs_bool PV_DECL pl_exp_uninit_seq (void);\r
+    rs_bool PV_DECL pl_exp_get_driver_buffer (int16 hcam,\r
+            void_ptr_ptr pixel_stream,\r
+            uns32_ptr byte_cnt);\r
+    rs_bool PV_DECL pl_exp_setup_seq (int16 hcam, uns16 exp_total,\r
+                                      uns16 rgn_total, rgn_const_ptr rgn_array,\r
+                                      int16 exp_mode, uns32 exposure_time,\r
+                                      uns32_ptr exp_bytes);\r
+    rs_bool PV_DECL pl_exp_start_seq (int16 hcam, void_ptr pixel_stream);\r
+    rs_bool PV_DECL pl_exp_setup_cont (int16 hcam, uns16 rgn_total,\r
+                                       rgn_const_ptr rgn_array, int16 exp_mode,\r
+                                       uns32 exposure_time, uns32_ptr exp_bytes,\r
+                                       int16 buffer_mode);\r
+    rs_bool PV_DECL pl_exp_start_cont (int16 hcam, void_ptr pixel_stream,\r
+                                       uns32 size);\r
+    rs_bool PV_DECL pl_exp_check_status (int16 hcam, int16_ptr status,\r
+                                         uns32_ptr bytes_arrived);\r
+    rs_bool PV_DECL pl_exp_check_cont_status (int16 hcam, int16_ptr status,\r
+            uns32_ptr bytes_arrived,\r
+            uns32_ptr buffer_cnt);\r
+    rs_bool PV_DECL pl_exp_check_cont_status_ex (int16 hcam, int16_ptr status, uns32_ptr byte_cnt, uns32_ptr buffer_cnt, PFRAME_INFO pFrameInfo);\r
+    rs_bool PV_DECL pl_exp_get_latest_frame (int16 hcam, void_ptr_ptr frame);\r
+    rs_bool PV_DECL pl_exp_get_latest_frame_ex (int16 hcam, void_ptr_ptr frame, PFRAME_INFO pFrameInfo);\r
+    rs_bool PV_DECL pl_exp_get_oldest_frame (int16 hcam, void_ptr_ptr frame);\r
+    rs_bool PV_DECL pl_exp_get_oldest_frame_ex (int16 hcam, void_ptr_ptr frame, PFRAME_INFO pFrameInfo);\r
+    rs_bool PV_DECL pl_exp_unlock_oldest_frame (int16 hcam);\r
+    rs_bool PV_DECL pl_exp_stop_cont (int16 hcam, int16 cam_state);\r
+    rs_bool PV_DECL pl_exp_abort (int16 hcam, int16 cam_state);\r
+    rs_bool PV_DECL pl_exp_finish_seq (int16 hcam, void_ptr pixel_stream,\r
+                                       int16 hbuf);\r
+    rs_bool PV_DECL pl_exp_unravel (int16 hcam, uns16 exposure,\r
+                                    void_ptr pixel_stream, uns16 rgn_total,\r
+                                    rgn_const_ptr rgn_array,\r
+                                    uns16_ptr * array_list);\r
+    rs_bool PV_DECL pl_exp_wait_start_xfer (int16 hcam, uns32 tlimit);\r
+    rs_bool PV_DECL pl_exp_wait_end_xfer (int16 hcam, uns32 tlimit);\r
+\r
+    /*****************************************************************************/\r
+    /* addr              Specifies which I/O address to control                  */\r
+    /* state             Specifies the value to write to the register            */\r
+    /* location          Specifies when to control the I/O (SCR_PRE_FLASH,...)   */\r
+    /*****************************************************************************/\r
+\r
+    rs_bool PV_DECL pl_io_script_control (int16 hcam, uns16 addr, flt64 state,\r
+                                          uns32 location);\r
+    rs_bool PV_DECL pl_io_clear_script_control (int16 hcam);\r
+\r
+    /*****************************************************************************/\r
+    /*****************************************************************************/\r
+    /*                                                                           */\r
+    /*             Class 4: Buffer Manipulation Function Prototypes              */\r
+    /*                                                                           */\r
+    /*****************************************************************************/\r
+    /*****************************************************************************/\r
+\r
+    /*****************************************************************************/\r
+    /* bit_depth         Bit depth of buffer to allocate (PRECISION_UNS16,...)   */\r
+    /* exp_num           Exposure number to get information about                */\r
+    /* year              Year exposure was taken                                 */\r
+    /* month             Month of the year the exposure was taken                */\r
+    /* day               Day of the month the exposure was taken                 */\r
+    /* hour              Hour of the Day the exposure was taken                  */\r
+    /* min               Minute of the Hour the exposure was taken               */\r
+    /* sec               Second of the Minute the exposure was taken             */\r
+    /* msec              Millisecond of the Second the exposure was taken        */\r
+    /* exp_msec          Exposure duration (in milliseconds)                     */\r
+    /* total_exps        Number of exposures in buffer                           */\r
+    /* himg              Single image in buffer                                  */\r
+    /* ibin              Serial binning factor of image                          */\r
+    /* jbin              Parallel binning factor of image                        */\r
+    /* img_num           Number of region in exposure to retrieve                */\r
+    /* s_ofs             Serial offset of image                                  */\r
+    /* p_ofs             Parallel offset of image                                */\r
+    /* x_size            Width of image                                          */\r
+    /* y_size            Height of image                                         */\r
+    /* totl_imgs         Number of images in each exposure                       */\r
+    /* buf_size          Size of buffer in bytes                                 */\r
+    /*****************************************************************************/\r
+\r
+    rs_bool PV_DECL pl_buf_init (void);\r
+    rs_bool PV_DECL pl_buf_uninit (void);\r
+\r
+    rs_bool PV_DECL pl_buf_alloc (int16_ptr hbuf, int16 exp_total,\r
+                                  int16 bit_depth, int16 rgn_total,\r
+                                  rgn_const_ptr rgn_array);\r
+    rs_bool PV_DECL pl_buf_get_bits (int16 hbuf, int16_ptr bit_depth);\r
+    rs_bool PV_DECL pl_buf_get_exp_date (int16 hbuf, int16 exp_num,\r
+                                         int16_ptr year, uns8_ptr month,\r
+                                         uns8_ptr day, uns8_ptr hour,\r
+                                         uns8_ptr min, uns8_ptr sec,\r
+                                         uns16_ptr msec);\r
+    rs_bool PV_DECL pl_buf_set_exp_date (int16 hbuf, int16 exp_num, int16 year,\r
+                                         uns8 month, uns8 day, uns8 hour,\r
+                                         uns8 min, uns8 sec, uns16 msec);\r
+    rs_bool PV_DECL pl_buf_get_exp_time (int16 hbuf, int16 exp_num,\r
+                                         uns32_ptr exp_msec);\r
+    rs_bool PV_DECL pl_buf_get_exp_total (int16 hbuf, int16_ptr total_exps);\r
+    rs_bool PV_DECL pl_buf_get_img_bin (int16 himg, int16_ptr ibin,\r
+                                        int16_ptr jbin);\r
+    rs_bool PV_DECL pl_buf_get_img_handle (int16 hbuf, int16 exp_num,\r
+                                           int16 img_num, int16_ptr himg);\r
+    rs_bool PV_DECL pl_buf_get_img_ofs (int16 himg, int16_ptr s_ofs,\r
+                                        int16_ptr p_ofs);\r
+    rs_bool PV_DECL pl_buf_get_img_ptr (int16 himg, void_ptr_ptr img_addr);\r
+    rs_bool PV_DECL pl_buf_get_img_size (int16 himg, int16_ptr x_size,\r
+                                         int16_ptr y_size);\r
+    rs_bool PV_DECL pl_buf_get_img_total (int16 hbuf, int16_ptr totl_imgs);\r
+    rs_bool PV_DECL pl_buf_get_size (int16 hbuf, int32_ptr buf_size);\r
+    rs_bool PV_DECL pl_buf_free (int16 hbuf);\r
+\r
+    /*****************************************************************************/\r
+    /* The following functions are obsolete and their corresponding PARAM_       */\r
+    /* parameters should be used with pl_get_param(), pl_set_param(),            */\r
+    /* pl_get_enum_param(), and pl_enum_str_length()                             */\r
+    /*****************************************************************************/\r
+\r
+    rs_bool PV_DECL pl_dd_get_info (int16 hcam, int16 bytes, char_ptr text);\r
+    /* Use PARAM_DD_INFO                                              */\r
+    rs_bool PV_DECL pl_dd_get_info_length (int16 hcam, int16_ptr bytes);\r
+    /* Use PARAM_DD_INFO_LENGTH                                       */\r
+    rs_bool PV_DECL pl_dd_get_ver (int16 hcam, uns16_ptr dd_version);\r
+    /* Use PARAM_DD_VERSION                                           */\r
+    rs_bool PV_DECL pl_dd_get_retries (int16 hcam, uns16_ptr max_retries);\r
+    rs_bool PV_DECL pl_dd_set_retries (int16 hcam, uns16 max_retries);\r
+    /* Use PARAM_DD_RETRIES                                           */\r
+    rs_bool PV_DECL pl_dd_get_timeout (int16 hcam, uns16_ptr m_sec);\r
+    rs_bool PV_DECL pl_dd_set_timeout (int16 hcam, uns16 m_sec);\r
+    /* Use PARAM_DD_TIMEOUT                                           */\r
+    rs_bool PV_DECL pl_ccd_get_adc_offset (int16 hcam, int16_ptr offset);\r
+    rs_bool PV_DECL pl_ccd_set_adc_offset (int16 hcam, int16 offset);\r
+    /* Use PARAM_ADC_OFFSET                                           */\r
+    rs_bool PV_DECL pl_ccd_get_chip_name (int16 hcam, char_ptr chip_name);\r
+    /* Use PARAM_CHIP_NAME                                            */\r
+    rs_bool PV_DECL pl_ccd_get_clear_cycles (int16 hcam, uns16_ptr clear_cycles);\r
+    rs_bool PV_DECL pl_ccd_set_clear_cycles (int16 hcam, uns16 clr_cycles);\r
+    /* Use PARAM_CLEAR_CYCLES                                         */\r
+    rs_bool PV_DECL pl_ccd_get_clear_mode (int16 hcam, int16_ptr clear_mode);\r
+    rs_bool PV_DECL pl_ccd_set_clear_mode (int16 hcam, int16 ccd_clear);\r
+    /* Use PARAM_CLEAR_MODE                                           */\r
+    rs_bool PV_DECL pl_ccd_get_color_mode (int16 hcam, uns16_ptr color_mode);\r
+    /* Use PARAM_COLOR_MODE                                           */\r
+    rs_bool PV_DECL pl_ccd_get_cooling_mode (int16 hcam, int16_ptr cooling);\r
+    /* Use PARAM_COOLING_MODE                                         */\r
+    rs_bool PV_DECL pl_ccd_get_frame_capable (int16 hcam,\r
+            rs_bool_ptr frame_capable);\r
+    /* Use PARAM_FRAME_CAPABLE                                        */\r
+    rs_bool PV_DECL pl_ccd_get_fwell_capacity (int16 hcam,\r
+            uns32_ptr fwell_capacity);\r
+    /* Use PARAM_FWELL_CAPACITY                                       */\r
+    rs_bool PV_DECL pl_ccd_get_mpp_capable (int16 hcam, int16_ptr mpp_capable);\r
+    /* Use PARAM_MPP_CAPABLE                                          */\r
+    rs_bool PV_DECL pl_ccd_get_preamp_dly (int16 hcam, uns16_ptr preamp_dly);\r
+    /* Use PARAM_PREAMP_DELAY                                         */\r
+    rs_bool PV_DECL pl_ccd_get_preamp_off_control (int16 hcam,\r
+            uns32_ptr preamp_off_control);\r
+    rs_bool PV_DECL pl_ccd_set_preamp_off_control (int16 hcam,\r
+            uns32 preamp_off_control);\r
+    /* Use PARAM_PREAMP_OFF_CONTROL                                   */\r
+    rs_bool PV_DECL pl_ccd_get_preflash (int16 hcam, uns16_ptr pre_flash);\r
+    /* Use PARAM_PREFLASH                                             */\r
+    rs_bool PV_DECL pl_ccd_get_pmode (int16 hcam, int16_ptr pmode);\r
+    rs_bool PV_DECL pl_ccd_set_pmode (int16 hcam, int16 pmode);\r
+    /* Use PARAM_PMODE                                                */\r
+    rs_bool PV_DECL pl_ccd_get_premask (int16 hcam, uns16_ptr pre_mask);\r
+    /* Use PARAM_PREMASK                                              */\r
+    rs_bool PV_DECL pl_ccd_get_prescan (int16 hcam, uns16_ptr prescan);\r
+    /* Use PARAM_PRESCAN                                              */\r
+    rs_bool PV_DECL pl_ccd_get_postmask (int16 hcam, uns16_ptr post_mask);\r
+    /* Use PARAM_POSTMASK                                             */\r
+    rs_bool PV_DECL pl_ccd_get_postscan (int16 hcam, uns16_ptr postscan);\r
+    /* Use PARAM_POSTSCAN                                             */\r
+    rs_bool PV_DECL pl_ccd_get_par_size (int16 hcam, uns16_ptr par_size);\r
+    /* Use PARAM_PAR_SIZE                                             */\r
+    rs_bool PV_DECL pl_ccd_get_ser_size (int16 hcam, uns16_ptr ser_size);\r
+    /* Use PARAM_SER_SIZE                                             */\r
+    rs_bool PV_DECL pl_ccd_get_serial_num (int16 hcam, uns16_ptr serial_num);\r
+    /* Use PARAM_SERIAL_NUM                                           */\r
+    rs_bool PV_DECL pl_ccs_get_status (int16 hcam, int16_ptr ccs_status);\r
+    /* Use PARAM_CCS_STATUS                                           */\r
+    rs_bool PV_DECL pl_ccd_get_summing_well (int16 hcam,\r
+            rs_bool_ptr s_well_exists);\r
+    /* Use PARAM_SUMMING_WELL                                         */\r
+    rs_bool PV_DECL pl_ccd_get_tmp (int16 hcam, int16_ptr cur_tmp);\r
+    rs_bool PV_DECL pl_ccd_get_tmp_range (int16 hcam, int16_ptr tmp_hi_val,\r
+                                          int16_ptr tmp_lo_val);\r
+    /* Use PARAM_TEMP                                                 */\r
+    rs_bool PV_DECL pl_ccd_get_tmp_setpoint (int16 hcam, int16_ptr tmp_setpoint);\r
+    rs_bool PV_DECL pl_ccd_set_tmp_setpoint (int16 hcam, int16 tmp_setpoint);\r
+    /* Use PARAM_TEMP_SETPOINT                                        */\r
+    rs_bool PV_DECL pl_ccd_set_readout_port (int16 , int16 );\r
+    rs_bool PV_DECL pl_ccd_get_pix_par_dist (int16 hcam, uns16_ptr pix_par_dist);\r
+    /* Use PARAM_PIX_PAR_DIST                                         */\r
+    rs_bool PV_DECL pl_ccd_get_pix_par_size (int16 hcam, uns16_ptr pix_par_size);\r
+    /* Use PARAM_PIX_PAR_SIZE                                         */\r
+    rs_bool PV_DECL pl_ccd_get_pix_ser_dist (int16 hcam, uns16_ptr pix_ser_dist);\r
+    /* Use PARAM_PIX_SER_DIST                                         */\r
+    rs_bool PV_DECL pl_ccd_get_pix_ser_size (int16 hcam, uns16_ptr pix_ser_size);\r
+    /* Use PARAM_PIX_SER_SIZE                                         */\r
+    rs_bool PV_DECL pl_spdtab_get_bits (int16 hcam, int16_ptr spdtab_bits);\r
+    /* Use PARAM_BIT_DEPTH                                            */\r
+    rs_bool PV_DECL pl_spdtab_get_gain (int16 hcam, int16_ptr spdtab_gain);\r
+    rs_bool PV_DECL pl_spdtab_set_gain (int16 hcam, int16 spdtab_gain);\r
+    rs_bool PV_DECL pl_spdtab_get_max_gain (int16 hcam,\r
+                                            int16_ptr spdtab_max_gain);\r
+    /* Use PARAM_GAIN_INDEX                                           */\r
+    rs_bool PV_DECL pl_spdtab_get_num (int16 hcam, int16_ptr spdtab_num);\r
+    rs_bool PV_DECL pl_spdtab_set_num (int16 hcam, int16 spdtab_num);\r
+    /* Use PARAM_SPDTAB_INDEX                                         */\r
+    rs_bool PV_DECL pl_spdtab_get_entries (int16 hcam, int16_ptr spdtab_entries);\r
+    /* Use PARAM_SPDTAB_INDEX (ATTR_MAX)                              */\r
+    rs_bool PV_DECL pl_spdtab_get_port (int16 hcam, int16_ptr spdtab_port);\r
+    rs_bool PV_DECL pl_spdtab_get_port_total (int16 hcam, int16_ptr total_ports);\r
+    /* Use PARAM_READOUT_PORT                                         */\r
+    rs_bool PV_DECL pl_spdtab_get_time (int16 hcam, uns16_ptr spdtab_time);\r
+    /* Use PARAM_PIX_TIME                                             */\r
+    rs_bool PV_DECL pl_shtr_get_close_dly (int16 hcam, uns16_ptr shtr_close_dly);\r
+    rs_bool PV_DECL pl_shtr_set_close_dly (int16 hcam, uns16 shtr_close_dly);\r
+    /* Use PARAM_SHTR_CLOSE_DELAY                                     */\r
+    rs_bool PV_DECL pl_shtr_get_open_dly (int16 hcam, uns16_ptr shtr_open_dly);\r
+    rs_bool PV_DECL pl_shtr_set_open_dly (int16 hcam, uns16 shtr_open_dly);\r
+    /* Use PARAM_SHTR_OPEN_DELAY                                      */\r
+    rs_bool PV_DECL pl_shtr_get_open_mode (int16 hcam, int16_ptr shtr_open_mode);\r
+    rs_bool PV_DECL pl_shtr_set_open_mode (int16 hcam, int16 shtr_open_mode);\r
+    /* Use PARAM_SHTR_OPEN_MODE                                       */\r
+    rs_bool PV_DECL pl_shtr_get_status (int16 hcam, int16_ptr shtr_status);\r
+    /* Use PARAM_SHTR_STATUS                                          */\r
+    rs_bool PV_DECL pl_exp_get_time_seq (int16 hcam, uns16_ptr exp_time);\r
+    rs_bool PV_DECL pl_exp_set_time_seq (int16 hcam, uns16 exp_time);\r
+    /* Use PARAM_EXP_TIME                                             */\r
+    rs_bool PV_DECL pl_exp_check_progress (int16 hcam, int16_ptr status,\r
+                                           uns32_ptr bytes_arrived);\r
+    /* Use pl_exp_check_status or pl_exp_check_cont_status */\r
+\r
+    /*****************************************************************************/\r
+    /* These functions should not be used.  They are included for compatibility  */\r
+    /* reasons.                                                                  */\r
+    /*****************************************************************************/\r
+    rs_bool PV_DECL pl_exp_set_cont_mode (int16 hcam, int16 mode);\r
+    rs_bool PV_DECL pl_subsys_do_diag (int16 hcam, uns8 subsys_id,\r
+                                       uns16_ptr err_code);\r
+    rs_bool PV_DECL pl_subsys_get_id (int16 hcam, uns8 subsys_id,\r
+                                      uns16_ptr part_num, uns8_ptr revision);\r
+    rs_bool PV_DECL pl_subsys_get_name (int16 hcam, uns8 subsys_id,\r
+                                        char_ptr subsys_name);\r
+\r
+    /*****************************************************************************/\r
+    /* End of function definitions.                                              */\r
+    /*****************************************************************************/\r
+\r
+\r
+#ifdef PV_C_PLUS_PLUS\r
+};\r
+#endif\r
+\r
+/************************* SINGLE-BYTE MACROS ********************************/\r
+/* These will pull out a single uns8 from either a two-uns8 integer quantity,*/\r
+/* or a four-uns8 integer quantity.  They ARE NOT machine specific.  The     */\r
+/* software using them is responsible for handling the interface requirements*/\r
+/* of the NGC camera, which expects the high uns8 first, then the lower bytes*/\r
+/* in order.  There are several macros:                                      */\r
+/*                                                                           */\r
+/*   ??16_BYTE extract one of two bytes from a two-uns8 integer input        */\r
+/*   VAL_UNS16 produces a two-uns8 integer value from high & low uns8 input  */\r
+/*   ??32_BYTE extracts one of four bytes from a four-uns8 integer input     */\r
+/*   VAL_UNS32 produces a four-uns8 integer value from 4 input bytes         */\r
+\r
+#define MS16_BYTE(two_byte_value) ((uns8) ((two_byte_value) >> 8))\r
+#define LS16_BYTE(two_byte_value) ((uns8) (two_byte_value))\r
+\r
+#define VAL_UNS16(ms_byte,ls_byte) ( (uns16)(((uns16)((uns8)(ms_byte))<<8) |\\r
+                                             ((uns16)((uns8)(ls_byte)))) )\r
+\r
+#define MS32_BYTE(four_byte_val) ((uns8) ((four_byte_val) >> 24))\r
+#define MH32_BYTE(four_byte_val) ((uns8) ((four_byte_val) >> 16))\r
+#define ML32_BYTE(four_byte_val) ((uns8) ((four_byte_val) >> 8))\r
+#define LS32_BYTE(four_byte_val) ((uns8) (four_byte_val))\r
+\r
+#define VAL_UNS32(ms_byte,mh_byte,ml_byte,ls_byte) (\\r
+  ((uns32)((uns8)(ms_byte))<<24) |\\r
+  ((uns32)((uns8)(mh_byte))<<16) |\\r
+  ((uns32)((uns8)(ml_byte))<<8)  |\\r
+  ((uns32)((uns8)(ls_byte)) ) )\r
+\r
+\r
+\r
+#endif /* _PVCAM_H */\r
diff --git a/Photometrics/PVCAM/SDK/Libs/Win32/pv_icl32.lib b/Photometrics/PVCAM/SDK/Libs/Win32/pv_icl32.lib
new file mode 100644 (file)
index 0000000..7790035
Binary files /dev/null and b/Photometrics/PVCAM/SDK/Libs/Win32/pv_icl32.lib differ
diff --git a/Photometrics/PVCAM/SDK/Libs/Win32/pvcam32.lib b/Photometrics/PVCAM/SDK/Libs/Win32/pvcam32.lib
new file mode 100644 (file)
index 0000000..d12a03b
Binary files /dev/null and b/Photometrics/PVCAM/SDK/Libs/Win32/pvcam32.lib differ
diff --git a/Photometrics/PVCAM/SDK/Libs/x64/pvcam64.lib b/Photometrics/PVCAM/SDK/Libs/x64/pvcam64.lib
new file mode 100644 (file)
index 0000000..ec247b2
Binary files /dev/null and b/Photometrics/PVCAM/SDK/Libs/x64/pvcam64.lib differ