PVCAM: Added PVCAM SDK 3.0.1.2 to 3rPartyPublic - the SDK will be released to public...
authorlwalder <lwalder@2c67d6c2-4361-4cd7-bd83-1149b1926c9b>
Fri, 14 Feb 2014 09:23:17 +0000 (09:23 +0000)
committerlwalder <lwalder@2c67d6c2-4361-4cd7-bd83-1149b1926c9b>
Fri, 14 Feb 2014 09:23:17 +0000 (09:23 +0000)
git-svn-id: https://valelab.ucsf.edu/svn/3rdpartypublic@156 2c67d6c2-4361-4cd7-bd83-1149b1926c9b

Photometrics/PVCAM/SDK/Headers/master.h
Photometrics/PVCAM/SDK/Headers/pv_icl.h [deleted file]
Photometrics/PVCAM/SDK/Headers/pvcam.h
Photometrics/PVCAM/SDK/Libs/Win32/pv_icl32.lib [deleted file]
Photometrics/PVCAM/SDK/Libs/Win32/pvcam32.lib
Photometrics/PVCAM/SDK/Libs/x64/pvcam64.lib

index 95d6c38..e9599dd 100644 (file)
@@ -4,11 +4,6 @@
 #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
@@ -24,7 +19,6 @@
 \r
 #endif\r
 \r
-\r
 #if defined  _MSC_VER\r
 \r
 // MICROSOFT C++   VS 2005 wants to use safe string\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
+/**************************** Calling Conventions ****************************/\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
@@ -81,8 +47,8 @@ typedef unsigned short uns16,   PV_PTR_DECL  uns16_ptr;
 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
+typedef void                    PV_PTR_DECL  void_ptr;\r
+typedef void_ptr                PV_PTR_DECL  void_ptr_ptr;\r
 \r
 #if defined(_MSC_VER)\r
 typedef unsigned __int64 ulong64, PV_PTR_DECL ulong64_ptr;\r
@@ -111,7 +77,6 @@ typedef const flt64   PV_PTR_DECL flt64_const_ptr;
 #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
diff --git a/Photometrics/PVCAM/SDK/Headers/pv_icl.h b/Photometrics/PVCAM/SDK/Headers/pv_icl.h
deleted file mode 100644 (file)
index 0a3b267..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-/*****************************************************************************/\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
index 479956b..7af3954 100644 (file)
@@ -1,81 +1,24 @@
 /******************************************************************************\r
-   Copyright (C) Roper Scientific, Inc. 1990-2000. All rights reserved.\r
+   Copyright (C) Roper Scientific, Inc. 1990-2012. 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
+/* 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
+PVCAM_FRAME_INFO_GUID, PV_PTR_DECL PPVCAM_FRAME_INFO_GUID;\r
 \r
-//FRAME_INFO currently holding the sequential frame number and timestamp\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
@@ -84,169 +27,30 @@ typedef struct _TAG_FRAME_INFO
     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
+FRAME_INFO, PV_PTR_DECL PFRAME_INFO;\r
 \r
 /********************** Class 0: Open Camera Modes ***************************/\r
 /*\r
   Function: pl_cam_open()\r
-  PI Conversion: CreateController()\r
 */\r
-enum\r
-{ OPEN_EXCLUSIVE };\r
+typedef enum\r
+{\r
+    OPEN_EXCLUSIVE\r
+}\r
+PL_OPEN_MODES;\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
+typedef enum\r
+{\r
+    NORMAL_COOL, CRYO_COOL\r
+}\r
+PL_COOL_MODES;\r
 \r
 /************************** Class 2: Name/ID sizes ***************************/\r
 #define CCD_NAME_LEN  17           /* Includes space for the null terminator */\r
@@ -255,90 +59,90 @@ enum
 \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
+typedef enum\r
+{\r
+    MPP_UNKNOWN, MPP_ALWAYS_OFF, MPP_ALWAYS_ON, MPP_SELECTABLE\r
+}\r
+PL_MPP_MODES;\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
+typedef enum\r
 {\r
     SHTR_FAULT, SHTR_OPENING, SHTR_OPEN, SHTR_CLOSING, SHTR_CLOSED,\r
     SHTR_UNKNOWN\r
-};\r
+}\r
+PL_SHTR_MODES;\r
 \r
 /************************ Class 2: Pmode constants ***************************/\r
 /* used with the PARAM_PMODE parameter id.                                   */\r
-enum\r
+typedef 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
+PL_PMODES;\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
+typedef enum\r
+{\r
+    COLOR_NONE, COLOR_RGGB = 2\r
+}\r
+PL_COLOR_MODES;\r
 \r
 /************************ Class 2: Attribute IDs *****************************/\r
 /*\r
   Function: pl_get_param()\r
 */\r
-enum\r
+typedef 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
+PL_PARAM_ATTRIBUTES;\r
 \r
 /************************ Class 2: Access types ******************************/\r
 /*\r
   Function: pl_get_param( ATTR_ACCESS )\r
 */\r
-enum\r
+typedef enum\r
 {\r
     ACC_ERROR, ACC_READ_ONLY, ACC_READ_WRITE, ACC_EXIST_CHECK_ONLY,\r
     ACC_WRITE_ONLY\r
-};\r
+}\r
+PL_PARAM_ACCESS;\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
+typedef enum\r
+{\r
+    IO_TYPE_TTL, IO_TYPE_DAC\r
+}\r
+PL_IO_TYPE;\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
+typedef enum\r
+{\r
+    IO_DIR_INPUT, IO_DIR_OUTPUT, IO_DIR_INPUT_OUTPUT\r
+}\r
+PL_IO_DIRECTION;\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
+typedef 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
+    IO_ATTR_DIR_FIXED, IO_ATTR_DIR_VARIABLE_ALWAYS_READ\r
+}\r
+PL_IO_ACCESS;\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
+typedef enum\r
 {\r
     READOUT_PORT_MULT_GAIN = 0,\r
     READOUT_PORT_NORMAL,\r
@@ -347,60 +151,84 @@ enum
     /* 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
+PL_READOUT_PORTS;\r
 \r
 /************************ Class 2: Clearing mode flags ***********************/\r
 /* used with the PARAM_CLEAR_MODE parameter id.                              */\r
-enum\r
+typedef 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
+PL_CLEAR_MODES;\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
+typedef enum\r
 {\r
     OPEN_NEVER, OPEN_PRE_EXPOSURE, OPEN_PRE_SEQUENCE, OPEN_PRE_TRIGGER,\r
     OPEN_NO_CHANGE\r
-};\r
+}\r
+PL_SHTR_OPEN_MODES;\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
+typedef 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
+    VARIABLE_TIMED_MODE, INT_STROBE_MODE,\r
+    MAX_EXPOSE_MODE\r
+}\r
+PL_EXPOSURE_MODES;\r
+\r
+/**************** Class 2: Post Processing Feature Identifiers ****************/\r
+/* used with the PARAM_PP_FEAT_ID parameter id.                              */\r
+\r
+typedef enum\r
+{\r
+    PP_FEATURE_RING_FUNCTION,\r
+    PP_FEATURE_BIAS, \r
+    PP_FEATURE_BERT,\r
+    PP_FEATURE_QUANT_VIEW,\r
+    PP_FEATURE_BLACK_LOCK,\r
+    PP_FEATURE_TOP_LOCK,\r
+    PP_FEATURE_VARI_BIT,\r
+    PP_FEATURE_DESPECKLE_HIGH,\r
+    PP_FEATURE_DESPECKLE_LOW,\r
+    PP_FEATURE_MAX\r
+}\r
+PP_FEATURE_IDS;\r
+\r
+/**************** Class 2: Post Processing Module Identifiers ****************/\r
+/* used with the PARAM_PP_PARAM_ID parameter id.                             */\r
+\r
+#define PP_MAX_PARAMETERS_PER_FEATURE   10\r
+\r
+typedef enum\r
+{\r
+    PP_PARAMETER_RF_FUNCTION         = (PP_FEATURE_RING_FUNCTION * PP_MAX_PARAMETERS_PER_FEATURE),\r
+    PP_FEATURE_BIAS_ENABLED          = (PP_FEATURE_BIAS * PP_MAX_PARAMETERS_PER_FEATURE), \r
+    PP_FEATURE_BIAS_LEVEL, \r
+    PP_FEATURE_BERT_ENABLED          = (PP_FEATURE_BERT * PP_MAX_PARAMETERS_PER_FEATURE), \r
+    PP_FEATURE_BERT_THRESHOLD,\r
+    PP_FEATURE_QUANT_VIEW_ENABLED    = (PP_FEATURE_QUANT_VIEW * PP_MAX_PARAMETERS_PER_FEATURE),\r
+    PP_FEATURE_QUANT_VIEW_E,\r
+    PP_FEATURE_BLACK_LOCK_ENABLED    = (PP_FEATURE_BLACK_LOCK * PP_MAX_PARAMETERS_PER_FEATURE),\r
+    PP_FEATURE_BLACK_LOCK_BLACK_CLIP,\r
+    PP_FEATURE_TOP_LOCK_ENABLED      = (PP_FEATURE_TOP_LOCK * PP_MAX_PARAMETERS_PER_FEATURE),\r
+    PP_FEATURE_TOP_LOCK_WHITE_CLIP,\r
+    PP_FEATURE_VARI_BIT_ENABLED      = (PP_FEATURE_VARI_BIT * PP_MAX_PARAMETERS_PER_FEATURE),\r
+    PP_FEATURE_VARI_BIT_BIT_DEPTH,\r
+    PP_PARAMETER_ID_MAX\r
+}\r
+PP_PARAMETER_IDS;\r
 \r
 /**************** Class 2: S.M.A.R.T Streaming  ****************/\r
 /* used with the PARAM_PP_PARAM_ID parameter id.                             */\r
@@ -411,146 +239,378 @@ typedef struct
 }\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
+/********************** Class 2: S.M.A.R.T Streaming Modes *******************/\r
+typedef enum\r
+{\r
+    SMTMODE_ARBITRARY_ALL = 0,\r
+    SMTMODE_MAX\r
+}\r
+PL_SMT_MODES;\r
+\r
+/********************** Class 3: Readout status flags ************************/\r
+/*\r
+  Function: pl_exp_check_status()\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
+typedef 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
+PL_IMAGE_STATUSES;\r
+\r
+/********************** Class 3: Abort Exposure flags ************************/\r
+/*\r
+  Function: pl_exp_abort()\r
+*/\r
+typedef enum\r
+{\r
+    CCS_NO_CHANGE = 0, CCS_HALT, CCS_HALT_CLOSE_SHTR, CCS_CLEAR,\r
+    CCS_CLEAR_CLOSE_SHTR, CCS_OPEN_SHTR, CCS_CLEAR_OPEN_SHTR\r
+}\r
+PL_CCS_ABORT_MODES;\r
+\r
+/************************ Class 3: EOF/BOF constants *************************/\r
+/* used with the PARAM_BOF_EOF_ENABLE parameter id.                          */\r
+typedef enum\r
+{\r
+    NO_FRAME_IRQS = 0, BEGIN_FRAME_IRQS, END_FRAME_IRQS, BEGIN_END_FRAME_IRQS\r
+}\r
+PL_IRQ_MODES;\r
+\r
+/************************ Class 3: Continuous Mode constants *****************/\r
+/*\r
+  Function: pl_exp_setup_cont()\r
+*/\r
+typedef enum\r
+{\r
+    CIRC_NONE = 0, CIRC_OVERWRITE, CIRC_NO_OVERWRITE\r
+}\r
+PL_CIRC_MODES;\r
+\r
+/************************ Class 3: Fast Exposure Resolution constants ********/\r
+/* used with the PARAM_EXP_RES parameter id.                                 */\r
+typedef enum\r
+{\r
+    EXP_RES_ONE_MILLISEC = 0, EXP_RES_ONE_MICROSEC, EXP_RES_ONE_SEC\r
+}\r
+PL_EXP_RES_MODES;\r
+\r
+/************************ Class 3: I/O Script Locations **********************/\r
+typedef enum\r
+{\r
+    SCR_PRE_OPEN_SHTR = 0, 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
+PL_SRC_MODES;\r
+\r
+/************************ Class 3: Callback constants *************************/\r
+\r
+typedef enum\r
+{\r
+    PL_CALLBACK_BOF = 0,\r
+    PL_CALLBACK_EOF,\r
+    PL_CALLBACK_CHECK_CAMS,\r
+    PL_CALLBACK_CAM_REMOVED,\r
+    PL_CALLBACK_CAM_RESUMED,\r
+    PL_CALLBACK_MAX\r
+}\r
+PL_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
+typedef enum\r
+{\r
+    PRECISION_INT8 = 0, PRECISION_UNS8, PRECISION_INT16, PRECISION_UNS16,\r
+    PRECISION_INT32, PRECISION_UNS32\r
+}\r
+PL_PRECISION_MODES;\r
+\r
+/********************** Unsupported types ************************************/\r
+typedef struct io_struct\r
+{\r
+    uns16 io_port;                        /* I/O port address                  */\r
+    uns32 io_type;                        /* I/O port type (TTL, DAC, etc.)    */\r
+    flt64 state;                          /* Desired output state for the port */\r
+    struct io_struct PV_PTR_DECL next;    /* Linked list pointer               */\r
+}\r
+io_entry, PV_PTR_DECL io_entry_ptr;\r
+\r
+typedef struct\r
+{\r
+    io_entry pre_open;\r
+    io_entry post_open;\r
+    io_entry pre_flash;\r
+    io_entry post_flash;\r
+    io_entry pre_integrate;\r
+    io_entry post_integrate;\r
+    io_entry pre_readout;\r
+    io_entry post_readout;\r
+    io_entry pre_close;\r
+    io_entry post_close;\r
+}\r
+io_list, PV_PTR_DECL io_list_ptr, PV_PTR_DECL PV_PTR_DECL io_list_ptr_ptr;\r
+\r
+typedef struct\r
+{\r
+    uns16 shutter_close_delay; /* # of milliseconds for the shutter to close   */\r
+    uns16 shutter_open_delay;  /* # of milliseconds for the shutter to open    */\r
+    uns16 rows;                /* Parallel size of the CCD active area         */\r
+    uns16 cols;                /* Serial size of the CCD active area           */\r
+    uns16 prescan;             /* Serial pixels before the active area         */\r
+    uns16 postscan;            /* Serial pixels after the active area          */\r
+    uns16 premask;             /* Parallel rows before the active area         */\r
+    uns16 postmask;            /* Parallel rows after the active area          */\r
+    uns16 preflash;            /* # of milliseconds to flash the diode ring    */\r
+    uns16 clear_count;         /* # of times to clear the CCD before exposure  */\r
+    uns16 preamp_delay;        /* # of milliseconds for the preamp to settle   */\r
+    rs_bool mpp_selectable;    /* Indicates MPP mode can be selected           */\r
+    rs_bool frame_selectable;  /* Indicates frame transfer can be selected     */\r
+    int16 do_clear;            /* Clear: Never, Each Exposure, Each Sequence   */\r
+    int16 open_shutter;        /* Open: Never, Each Exposure, Each Sequence    */\r
+    rs_bool mpp_mode;          /* Enable or disable MPP mode                   */\r
+    rs_bool frame_transfer;    /* Enable or disable frame transfer operation   */\r
+    rs_bool alt_mode;          /* Enable or disable Alternate Parallel mode    */\r
+    uns32 exp_res;             /* Exposure resolution                          */\r
+    io_list_ptr io_hdr;        /* Pointer to list of I/O script control cmds   */\r
+}\r
+active_camera_type, PV_PTR_DECL active_camera_ptr;\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
+#if defined  _MSC_VER\r
+\r
+/***************** Content which is needed to communicate **********************/\r
+/***************** with the PVCAM DLLs *****************************************/\r
+\r
+typedef int16 pm_script_hook (int16 hcam,\r
+                              uns16 exp_total,\r
+                              uns16 rgn_total,\r
+                              rgn_const_ptr rgn_array,\r
+                              int16 mode,\r
+                              uns32 exposure_time,\r
+                              uns32_ptr pixels, active_camera_ptr);\r
+\r
+/* Data type used by pl_get_param with attribute type (ATTR_TYPE).           */\r
+#define TYPE_INT16                  1\r
+#define TYPE_INT32                  2\r
+#define TYPE_FLT64                  4\r
+#define TYPE_UNS8                   5\r
+#define TYPE_UNS16                  6\r
+#define TYPE_UNS32                  7\r
+#define TYPE_UNS64                  8\r
+#define TYPE_ENUM                   9\r
+#define TYPE_BOOLEAN               11\r
+#define TYPE_INT8                  12\r
+#define TYPE_CHAR_PTR              13\r
+#define TYPE_VOID_PTR              14\r
+#define TYPE_VOID_PTR_PTR          15\r
+#define TYPE_INT64                 16\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 CLASS2      2          /* Configuration/Setup                        */\r
+#define CLASS3      3          /* Data Acuisition                            */\r
+#define CLASS93     93         /* Fast frame operations (PIV/ACCUM/Kinetics) */\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
+/* Camera Parameters Class 2 variables */\r
+\r
+/* Class 2 (next available index for class two = 544) */\r
+\r
+/* CCD skip parameters                                                       */\r
+\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
+/* General parameters */\r
 \r
-/********************** Class 3: Readout status flags ************************/\r
-/*\r
-  Function: pl_exp_check_status()\r
-  PI Conversion: PICM_LockCurrentFrame()\r
-                 PICM_Chk_Data()\r
+/* Readout time of current ROI, in ms */\r
+#define PARAM_READOUT_TIME          ((CLASS2<<16) + (TYPE_FLT64<<24)     + 179)\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
+/* CAMERA PARAMETERS (CLASS 2) */\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
-*/\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
+/* 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
-/********************** 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
+/* Exsposure mode, timed strobed etc, etc */\r
+#define PARAM_EXPOSURE_MODE         ((CLASS2<<16) + (TYPE_ENUM<<24)      + 535)\r
+#define PARAM_EXPOSE_OUT_MODE       ((CLASS2<<16) + (TYPE_ENUM<<24)      + 560)\r
 \r
-/************************ Class 3: Event constants ***************************/\r
-enum\r
-{ EVENT_START_READOUT, EVENT_END_READOUT };\r
+/* SPEED TABLE PARAMETERS (CLASS 2) */\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
+#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
-/************************ Class 3: Continuous Mode constants *****************/\r
-/*\r
-  Function: pl_exp_setup_cont()\r
-*/\r
-enum\r
-{ CIRC_NONE, CIRC_OVERWRITE, CIRC_NO_OVERWRITE };\r
+/* SHUTTER PARAMETERS (CLASS 2) */\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
+#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
-/************************ 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
+/* I/O PARAMETERS (CLASS 2) */\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
+#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
-/************************* 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
+/* GAIN MULTIPLIER PARAMETERS (CLASS 2) */\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
+#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
-/************************** 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
+/*  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
+#define PARAM_PP_FEAT_ID            ((CLASS2<<16) + (TYPE_UNS16<<24)    +  549)\r
+#define PARAM_PP_PARAM_ID           ((CLASS2<<16) + (TYPE_UNS16<<24)    +  550)\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
+/* Digital image correction parameters (CLASS 2) */\r
+#define PARAM_COLUMN_CORRECTION_STATE        ((CLASS2<<16) + (TYPE_BOOLEAN<<24)    +  704)\r
 \r
+/* ACQUISITION PARAMETERS (CLASS 3) */\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
+/* 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
 \r
 /**************************** Function Prototypes ****************************/\r
 #ifdef PV_C_PLUS_PLUS\r
@@ -558,7 +618,6 @@ extern "C"
 {\r
 #endif\r
 \r
-\r
     /*****************************************************************************/\r
     /*****************************************************************************/\r
     /*                                                                           */\r
@@ -594,7 +653,6 @@ extern "C"
 \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
@@ -602,21 +660,10 @@ extern "C"
 \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_ex2(int16 hcam, PL_CALLBACK_EVENT CallbackEvent, void *Callback);\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
@@ -721,9 +768,6 @@ extern "C"
 \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
@@ -750,87 +794,17 @@ extern "C"
     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
@@ -954,8 +928,8 @@ extern "C"
     /* 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
+    /* Other functions that should not be used.  They are included for           */\r
+    /* compatibility 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
@@ -964,6 +938,75 @@ extern "C"
                                       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
+    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_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_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
+    rs_bool PV_DECL pl_buf_get_bits (int16 hbuf, int16_ptr bit_depth);\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
+       rs_bool PV_DECL pv_cam_get_ccs_mem (int16 hcam, uns16_ptr size);\r
+    rs_bool PV_DECL pv_cam_send_debug (int16 hcam, char_ptr debug_str,\r
+                                       uns16 reply_len, char_ptr reply_str);\r
+    rs_bool PV_DECL pv_cam_write_read (int16 hcam, uns8 c_class, uns16 write_bytes,\r
+                                       uns8_ptr write_array, uns8_ptr read_array);\r
+    rs_bool PV_DECL pv_dd_active (int16 hcam, void_ptr pixel_stream);\r
+    rs_bool PV_DECL pv_exp_get_bytes (int16 hcam, uns32_ptr exp_bytes);\r
+    rs_bool PV_DECL pv_exp_get_script (int16 hcam, rs_bool_ptr script_valid);\r
+    rs_bool PV_DECL pv_exp_get_status (int16 hcam, int16_ptr status,\r
+                                       uns32_ptr byte_cnt, uns32_ptr frame_cnt);\r
+    rs_bool PV_DECL pv_exp_set_bytes (int16 hcam, uns32 frame_count,\r
+                                      uns32 seq_bytes, void_ptr pixel_stream);\r
+    rs_bool PV_DECL pv_exp_set_script (int16 hcam, rs_bool script_valid);\r
+    rs_bool PV_DECL pv_set_error_code (int16 omode,int16 err_code);\r
+    rs_bool PV_DECL pv_cam_do_reads (int16 hcam);\r
+    rs_bool  PV_DECL pv_free (void_ptr block, int16 heap);\r
+    void_ptr PV_DECL pv_malloc (uns32 size, int16 heap);\r
+    void_ptr PV_DECL pv_realloc(void_ptr block, uns32 size, int16 heap);\r
+    rs_bool PV_DECL pv_script_set_hook (pm_script_hook PV_PTR_DECL pfn);\r
+    rs_bool PV_DECL pv_ccd_get_accum_capable (int16 hcam,\r
+                                              rs_bool_ptr accum_capable);\r
+    rs_bool PV_DECL pv_exp_get_frames (int16 hcam, uns32_ptr exp_frames);\r
+    rs_bool PV_DECL pv_exp_set_frames (int16 hcam, uns32 exp_frames);\r
+    rs_bool PV_DECL pv_exp_set_no_readout_timeout (int16 hcam);\r
+    rs_bool PV_DECL pv_exp_reset_no_readout_timeout (int16 hcam);\r
+    rs_bool PV_DECL pm_cam_write_read (int16 hcam, uns8 c_class, uns16 write_bytes,\r
+                                       uns8_ptr write_array, uns8_ptr read_array);\r
+    rs_bool PV_DECL pl_ddi_get_ver (uns16_ptr ddi_version);\r
+    rs_bool PV_DECL pl_cam_get_diags (int16 hcam);\r
 \r
     /*****************************************************************************/\r
     /* End of function definitions.                                              */\r
@@ -974,35 +1017,6 @@ extern "C"
 };\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
+#endif\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
deleted file mode 100644 (file)
index 7790035..0000000
Binary files a/Photometrics/PVCAM/SDK/Libs/Win32/pv_icl32.lib and /dev/null differ
index d12a03b..8cf79a5 100644 (file)
Binary files a/Photometrics/PVCAM/SDK/Libs/Win32/pvcam32.lib and b/Photometrics/PVCAM/SDK/Libs/Win32/pvcam32.lib differ
index ec247b2..f65eaec 100644 (file)
Binary files a/Photometrics/PVCAM/SDK/Libs/x64/pvcam64.lib and b/Photometrics/PVCAM/SDK/Libs/x64/pvcam64.lib differ