#if !defined(__HR_ParamID_H__)
#define __HR_ParamID_H__
///////////////////////////////////////////////////////////////////////////////////////////////////
//
//  File:           HR_ParamID.h
//
//                  Copyright 2005 Imaginant, Inc.
//
//  Source:         Original.
//
//  Description:    Identifiers for API parameters for HR SDK
//
//  Change History:
//          2004.12.03    Started source
//          2005.02.08    Filestream debug added :JMcK:
//
///////////////////////////////////////////////////////////////////////////////////////////////////


typedef enum
{
  HR_PID_UNKNOWN                         = 0,   // should return HR_ERR_XXX_PID_NOT_VALID
  HR_PID_begin                           = 1,   // bounds marker enum, not a real PID

  ////////////////////////////////////////////////////////////////////////
  // Parameter ID's for all objects 100 - 999
  ////////////////////////////////////////////////////////////////////////
  HR_PID_ALL_begin                       = 100, // bounds marker enum, not a real PID
  HR_PID_ALL_HANDLE_CLASS                = 101, // RO HR_ApiObjectEnumType

  HR_PID_ALL_end                         = 999, // bounds marker enum, not a real PID


  ////////////////////////////////////////////////////////////////////////
  // Parameter ID's for the Library Object 1000 - 2999
  ////////////////////////////////////////////////////////////////////////
  HR_PID_LIB_begin                       = 1000, // bounds marker enum, not a real PID
  HR_PID_LIB_VERSION                     = 1001, // RO HR_TYPE_INT32 array of 4 numbers, 
  HR_PID_LIB_NAME                        = 1002, // RO HR_TYPE_STRING
  HR_PID_LIB_OPEN_OPTIONS                = 1003, // RO HR_TYPE_INT32 the inOptionBits arg
  HR_PID_LIB_START_DATE_TIME             = 1004, // RO HR_TYPE_STRING[20] YYYY:MM:DD HH:MM:SS
  HR_PID_LIB_MEMORY_ALLOWED_MB           = 1005, // RW HR_TYPE_INT32 memory to allow for images
  HR_PID_LIB_MEMORY_USED_MB              = 1006, // RO HR_TYPE_INT32 memory currently used
  HR_PID_LIB_DEBUG_FILESTREAM            = 1007, // RW FILE*  file stream to send debug data to
  //HR_PID_LIB_DEBUG_FILESTREAM_NAME_TMP   = 1008, // RW HR_TYPE_STRING

  HR_PID_LIB_end                         = 2999, // bounds marker enum, not a real PID


  ////////////////////////////////////////////////////////////////////////
  // Parameter ID's for a camera object 3000 to 4999
  ////////////////////////////////////////////////////////////////////////
  HR_PID_CAM_begin                       = 3000, // bounds marker enum, not a real PID

  HR_PID_CAM_STATE                       = 3001, // RO HR_TYPE_ENUM HR_CamStateEnumType
  HR_PID_CAM_RUN_PREVIEW                 = 3002, // RW HR_TYPE_BOOL turns Preview mode on/off
  HR_PID_CAM_CAPTURE_FILE_TYPE           = 3003, // RW HR_TYPE_ENUM HR_ImgDataFormatEnumType
  HR_PID_CAM_JPEG_QUALITY                = 3004, // RW HR_TYPE_INT32 HiQual=100, lowQual=1

  HR_PID_CAM_CHANS_PER_PIXEL             = 3005, // RO HR_TYPE_INT32 3=color, 1=mono
  HR_PID_CAM_BYTES_PER_CHAN              = 3006, // RO HR_TYPE_INT32 max of this camera typ=2    

  HR_PID_CAM_NAME                        = 3010, // RW HR_TYPE_STRING Application can change this
  HR_PID_CAM_CONN_DATE_TIME              = 3011, // RO HR_TYPE_STRING[20] time camera connected
  HR_PID_CAM_CAMERA_MAKE                 = 3012, // RO HR_TYPE_STRING "Imaginant"
  HR_PID_CAM_CAMERA_MODEL                = 3013, // RO HR_TYPE_STRING the camera model
  HR_PID_CAM_FIRMWARE_VERSION            = 3014, // RO HR_TYPE_STRING version of camera firmware
  HR_PID_CAM_SERIAL_NUMBER               = 3015, // RO HR_TYPE_STRING serial number of the camera

  HR_PID_CAM_WHITE_BALANCE               = 3020, // RW HR_TYPE_FLOAT array[3] red, green, blue
  HR_PID_CAM_WHITE_BALANCE_MIN           = 3021, // RO HR_TYPE_FLOAT > 0.0 
  HR_PID_CAM_WHITE_BALANCE_MAX           = 3022, // RO HR_TYPE_FLOAT < 2.0 

  HR_PID_CAM_COLOR_CORRECTION_MATRIX     = 3023, // RW HR_TYPE_FLOAT array of 9

  HR_PID_CAM_JPEG_ROI_RECT               = 3030, // RW HR_TYPE_RECT region of interest Rect
  HR_PID_CAM_JPEG_WIDTH                  = 3031, // RO HR_TYPE_INT32 full image width in px
  HR_PID_CAM_JPEG_HEIGHT                 = 3032, // RO HR_TYPE_INT32 full image height in px

  HR_PID_CAM_PREVIEW_ROI_RECT            = 3035, // RW HR_TYPE_RECT region of interest Rect
  HR_PID_CAM_PREVIEW_WIDTH               = 3036, // RO HR_TYPE_INT32 full image width in px
  HR_PID_CAM_PREVIEW_HEIGHT              = 3037, // RO HR_TYPE_INT32 full image height in px

  HR_PID_CAM_FOCUS_POSITION              = 3050, // RW HR_TYPE_INT32 MIN=closest, MAX=infinity
  HR_PID_CAM_FOCUS_POSITION_MIN          = 3051, // RO HR_TYPE_INT32 value=0  close
  HR_PID_CAM_FOCUS_POSITION_MAX          = 3052, // RO HR_TYPE_INT32 value=10,000  infinity

  HR_PID_CAM_ISO                         = 3053, // RW HR_TYPE_INT32 camera sensitivity
  HR_PID_CAM_ISO_MIN                     = 3054, // RO HR_TYPE_INT32 function of camera
  HR_PID_CAM_ISO_MAX                     = 3055, // RO HR_TYPE_INT32 function of camera
    
  HR_PID_CAM_SHUTTER_SPEED_SECONDS       = 3056, // RW HR_TYPE_FLOAT aka integration time.
  HR_PID_CAM_SHUTTER_SPEED_SECONDS_MIN   = 3057, // RO HR_TYPE_FLOAT   these are in seconds,
  HR_PID_CAM_SHUTTER_SPEED_SECONDS_MAX   = 3058, // RO HR_TYPE_FLOAT   not 1/seconds

  HR_PID_CAM_APERTURE_F_NUMBER           = 3059, // RW HR_TYPE_FLOAT e.g. 2.8 or 5.6
  HR_PID_CAM_APERTURE_F_NUMBER_MIN       = 3060, // RO HR_TYPE_FLOAT
  HR_PID_CAM_APERTURE_F_NUMBER_MAX       = 3061, // RO HR_TYPE_FLOAT
    
  HR_PID_CAM_TRIGGER_ENABLE              = 3100, // RW HR_TYPE_BOOL set false while changing seq.
  HR_PID_CAM_IMAGE_ACQ_MODE              = 3101, // RW HR_ENUM_TYPE HR_ImageAquisitionEnumType

  HR_PID_CAM_NUM_IMAGES_IN_SEQUENCE      = 3102, // RW HR_TYPE_INT32 how many exposures
  HR_PID_CAM_NUM_IMAGES_IN_SEQUENCE_MIN  = 3103, // RO HR_TYPE_INT32
  HR_PID_CAM_NUM_IMAGES_IN_SEQUENCE_MAX  = 3104, // RO HR_TYPE_INT32 based on camera type

  HR_PID_CAM_TRIGGER_DELAYS_SECONDS      = 3105, // RW HR_TYPE_FLOAT array NUM_IMAGES_IN_SEQUENCE 
  HR_PID_CAM_TRIGGER_DELAY_0_SECONDS_MIN = 3106, // RO HR_TYPE_FLOAT min for image index 0
  HR_PID_CAM_TRIGGER_DELAY_X_SECONDS_MIN = 3107, // RO HR_TYPE_FLOAT min for image index > 0
  HR_PID_CAM_TRIGGER_DELAY_SECONDS_MAX   = 3108, // RO HR_TYPE_FLOAT

  HR_PID_CAM_TRIGGER_DISABLES_SECONDS    = 3109, // RW HR_TYPE_FLOAT array NUM_IMAGES_IN_SEQUENCE
  HR_PID_CAM_TRIGGER_DISABLE_TIMED_MIN   = 3110, // RO HR_TYPE_FLOAT for timed mode
  HR_PID_CAM_TRIGGER_DISABLE_TIMED_MAX   = 3111, // RO HR_TYPE_FLOAT for timed mode
  HR_PID_CAM_TRIGGER_DISABLE_TRIG_MIN    = 3112, // RO HR_TYPE_FLOAT for triggered mode 
  HR_PID_CAM_TRIGGER_DISABLE_TRIG_MAX    = 3113, // RO HR_TYPE_FLOAT for triggered mode

  HR_PID_CAM_STROBE_TRIGGER_SELECT_MASK  = 3120, // RO HR_TYPE_INT32 bits that can be used
  HR_PID_CAM_STROBE_TRIGGERS_SELECTS     = 3121, // RW HR_TYPE_INT32 array NUM_IMAGES_IN_SEQUENCE

  HR_PID_CAM_STROBE_ADVANCE_SECONDS      = 3122, // RW HR_TYPE_FLOAT single value for all images
  HR_PID_CAM_STROBE_ADVANCE_SECONDS_MIN  = 3123, // RO HR_TYPE_FLOAT 
  HR_PID_CAM_STROBE_ADVANCE_SECONDS_MAX  = 3124, // RO HR_TYPE_FLOAT

  HR_PID_CAM_TRIGGER_ELAPSE_TIMEOUT      = 3125, // RW HR_TYPE_FLOAT value in seconds
  HR_PID_CAM_TRIGGER_ELAPSE_TIMEOUT_MIN  = 3126, // R0 HR_TYPE_FLOAT
  HR_PID_CAM_TRIGGER_ELAPSE_TIMEOUT_MAX  = 3127, // R0 HR_TYPE_FLOAT

  HR_PID_CAM_PREVIEW_MODDE               = 3128,

  HR_PID_CAM_end                         = 5999, // bounds marker enum, not a real PID

  ////////////////////////////////////////////////////////////////////////
  // Parameters for an image object  6000  to 8999
  ////////////////////////////////////////////////////////////////////////

  HR_PID_IMG_begin                       = 6000, // bounds marker enum, not a real PID

  HR_PID_IMG_FILE_TYPE                   = 6001, // RO HR_ImgDataFormatEnumType of this image
  HR_PID_IMG_WIDTH                       = 6002, // RO HR_TYPE_INT32 width of full image: pixels
  HR_PID_IMG_HEIGHT                      = 6003, // RO HR_TYPE_INT32 height of full image: lines
  HR_PID_IMG_CHANS_PER_PIXEL             = 6004, // RO HR_TYPE_INT32 3=color 1=mono
  HR_PID_IMG_BYTES_PER_CHAN              = 6005, // RO HR_TYPE_INT32 value will be 1 or 2
  HR_PID_IMG_WHITE_BALANCE               = 6006, // RO HR_TYPE_FLOAT[3] camera setting at capture 
  HR_PID_IMG_IMAGE_BUFFER_STRUCT         = 6007, // RO HR_TYPE_ENUM HR_BufferStructType
  HR_PID_IMG_WHOLE_IMAGE_BYTE_COUNT      = 6008, // RO HR_TYPE_INT32 

  HR_PID_IMG_COLLECTION_COMPLETE         = 6009, // RO HR_TYPE_BOOL true when transfer complete
  HR_PID_IMG_BYTES_COLLECTED             = 6010, // RO HR_TYPE_INT32 changes during collection

  HR_PID_IMG_DATE_TIME_EXIF              = 6011, // RO HR_TYPE_STRING[20] YYYY:MM:DD HH:MM:SS 

  HR_PID_IMG_SEQUENCE_NUMBER             = 6012, // RO HR_TYPE_INT32 starts at 0 at cam. reset

  HR_PID_IMG_STRIP_COUNT                 = 6013, // RO HR_TYPE_INT32 num of strips of image data
  HR_PID_IMG_STRIP_OFFSETS               = 6014, // RO HR_TYPE_INT32 count= 1 or STRIP_COUNT
  HR_PID_IMG_STRIP_BYTE_COUNTS           = 6015, // RO HR_TYPE_INT32 count= 1 or STRIP_COUNT

  HR_PID_IMG_CAM_MODEL                   = 6016, // RO HR_TYPE_STRING the model of camera
  HR_PID_IMG_CAM_SERIAL_NUMBER           = 6017, // RO HR_TYPE_STRING serial number of the camera
  HR_PID_IMG_CAM_NAME                    = 6018, // RO HR_TYPE_STRING HR_PID_CAM_NAME at-capture
  HR_PID_IMG_CAM_HANDLE                  = 6019, // RO HR_TYPE_CAM_HANDLE source of this image
  HR_PID_IMG_CAM_MAKE                    = 6020, // RO HR_TYPE_STRING manufacturer of the camera
  HR_PID_IMG_CAM_FIRMWARE_VERSION        = 6021, // RO HR_TYPE_STRING version of camera firmware

  HR_PID_IMG_end                         = 8999, // bounds marker enum, not a real PID

  HR_PID_end                             = 10000 // bounds marker enum, not a real PID

} HR_ParamIdEnumType ;     // An Identifier enum for a parameter


#endif //__HR_ParamID_H__

