// // Coreco API - Camera feature functions. // #ifndef _CAPIFEATURE_H_ #define _CAPIFEATURE_H_ #include "capidef.h" /**************************************************************************** * Feature Parameters ****************************************************************************/ #define CORFEATURE_PRM_FIRST 0 #define CORFEATURE_PRM( n, size) ((((n) + CORFEATURE_PRM_FIRST) << 16) | (size)) #define CORFEATURE_PRM_NAME CORFEATURE_PRM( 0, 64) // String #define CORFEATURE_PRM_TYPE CORFEATURE_PRM( 1, 4) // Enum #define CORFEATURE_PRM_STANDARD CORFEATURE_PRM( 2, 4) // Bool #define CORFEATURE_PRM_ACCESS_MODE CORFEATURE_PRM( 3, 4) // Enum #define CORFEATURE_PRM_POLLING_TIME CORFEATURE_PRM( 4, 4) // Integer #define CORFEATURE_PRM_TOOL_TIP CORFEATURE_PRM( 5, 256) // String #define CORFEATURE_PRM_DISPLAY_NAME CORFEATURE_PRM( 6, 64) // String #define CORFEATURE_PRM_REPRESENTATION CORFEATURE_PRM( 7, 4) // Enum #define CORFEATURE_PRM_SIGN CORFEATURE_PRM( 8, 4) // Enum #define CORFEATURE_PRM_SI_UNIT CORFEATURE_PRM( 9, 32) // String #define CORFEATURE_PRM_CATEGORY CORFEATURE_PRM( 10, 64) // String #define CORFEATURE_PRM_WRITE_MODE CORFEATURE_PRM( 11, 4) // Enum #define CORFEATURE_PRM_SAVED_TO_CONFIG_FILE CORFEATURE_PRM( 12, 4) // Bool #define CORFEATURE_PRM_SI_TO_NATIVE_EXP10 CORFEATURE_PRM( 13, 4) // Integer #define CORFEATURE_PRM_VISIBILITY CORFEATURE_PRM( 14, 4) // Enum #define CORFEATURE_PRM_SELECTOR CORFEATURE_PRM( 15, 4) // Bool #define CORFEATURE_PRM_ARRAY_LENGTH CORFEATURE_PRM( 16, 4) // Integer #define CORFEATURE_PRM_DESCRIPTION CORFEATURE_PRM( 17, 1024)// String #define CORFEATURE_PRM_IS_DEPRECATED CORFEATURE_PRM( 18, 4) // Bool #define CORFEATURE_PRM_DOC_URL CORFEATURE_PRM( 19, 1024) // String #define CORFEATURE_PRM_INCREMENT_TYPE CORFEATURE_PRM( 20, 4) // Enum #define CORFEATURE_PRM_VALID_VALUE_COUNT CORFEATURE_PRM( 21, 4) // Integer #define CORFEATURE_PRM_CATEGORY_COUNT CORFEATURE_PRM( 22, 4) // Integer #define CORFEATURE_PRM_CATEGORY_LIST CORFEATURE_PRM( 23, 128) // List of Integer #define CORFEATURE_PRM_FLOAT_PRECISION CORFEATURE_PRM( 24, 8) // Integer #define CORFEATURE_PRM_FLOAT_NOTATION CORFEATURE_PRM( 25, 4) // Enum #define CORFEATURE_PRM_LAST (CORFEATURE_PRM_FIRST + 25) /**************************************************************************** * Enumeration Parameters ****************************************************************************/ #define CORFEATURE_ENUM_PRM_FIRST 1000 #define CORFEATURE_ENUM_PRM( n, size) ((((n) + CORFEATURE_ENUM_PRM_FIRST) << 16) | (size)) #define CORFEATURE_ENUM_PRM_NAME CORFEATURE_ENUM_PRM( 0, 64) // String #define CORFEATURE_ENUM_PRM_STANDARD CORFEATURE_ENUM_PRM( 1, 4) // Bool #define CORFEATURE_ENUM_PRM_TOOL_TIP CORFEATURE_ENUM_PRM( 2, 256) // String #define CORFEATURE_ENUM_PRM_DISPLAY_NAME CORFEATURE_ENUM_PRM( 3, 64) // String #define CORFEATURE_ENUM_PRM_VISIBILITY CORFEATURE_ENUM_PRM( 4, 4) // Enum #define CORFEATURE_ENUM_PRM_DESCRIPTION CORFEATURE_ENUM_PRM( 5, 1024)// String #define CORFEATURE_ENUM_PRM_IS_DEPRECATED CORFEATURE_ENUM_PRM( 6, 4) // Bool #define CORFEATURE_ENUM_PRM_LAST (CORFEATURE_ENUM_PRM_FIRST + 7) /**************************************************************************** * Feature Values ****************************************************************************/ // Data Types #define CORFEATURE_VAL_TYPE_UNDEFINED 0 #define CORFEATURE_VAL_TYPE_INT32 1 #define CORFEATURE_VAL_TYPE_INT64 2 #define CORFEATURE_VAL_TYPE_FLOAT 3 #define CORFEATURE_VAL_TYPE_DOUBLE 4 #define CORFEATURE_VAL_TYPE_BOOL 5 #define CORFEATURE_VAL_TYPE_ENUM 6 #define CORFEATURE_VAL_TYPE_STRING 7 #define CORFEATURE_VAL_TYPE_BUFFER 8 #define CORFEATURE_VAL_TYPE_LUT 9 #define CORFEATURE_VAL_TYPE_ARRAY 10 #define CORFEATURE_VAL_TYPE_ACTION 11 // Access Modes #define CORFEATURE_VAL_ACCESS_MODE_UNDEFINED 0 // Undefined #define CORFEATURE_VAL_ACCESS_MODE_RW 1 // Read and Write #define CORFEATURE_VAL_ACCESS_MODE_RO 2 // Read Only #define CORFEATURE_VAL_ACCESS_MODE_WO 3 // Write Only #define CORFEATURE_VAL_ACCESS_MODE_NP 4 // Not present #define CORFEATURE_VAL_ACCESS_MODE_NE 5 // Not enabled // Data Representations (for float and integer) #define CORFEATURE_VAL_REPRESENTATION_UNDEFINED 0 #define CORFEATURE_VAL_REPRESENTATION_LINEAR 1 #define CORFEATURE_VAL_REPRESENTATION_LOGARITHMIC 2 #define CORFEATURE_VAL_REPRESENTATION_PURENUMBER 4 // integer only #define CORFEATURE_VAL_REPRESENTATION_BOOLEAN 3 #define CORFEATURE_VAL_REPRESENTATION_HEXNUMBER 5 #define CORFEATURE_VAL_REPRESENTATION_IPV4ADDRESS 6 #define CORFEATURE_VAL_REPRESENTATION_MACADDR 7 // Data Sign #define CORFEATURE_VAL_SIGN_UNDEFINED 0 #define CORFEATURE_VAL_SIGN_SIGNED 1 #define CORFEATURE_VAL_SIGN_UNSIGNED 2 // Restriction on writing when access mode is read-write or write only #define CORFEATURE_VAL_WRITE_MODE_UNDEFINED 0 // Undefined #define CORFEATURE_VAL_WRITE_MODE_ALWAYS 1 // Always writable #define CORFEATURE_VAL_WRITE_MODE_NOT_ACQUIRING 2 // Writable when not acquiring #define CORFEATURE_VAL_WRITE_MODE_NOT_CONNECTED 3 // Writable when not connected // Visibility Types #define CORFEATURE_VAL_VISIBILITY_UNDEFINED 0 // Undefined #define CORFEATURE_VAL_VISIBILITY_BEGINNER 1 // Always visible #define CORFEATURE_VAL_VISIBILITY_EXPERT 2 // Visible for experts or Gurus #define CORFEATURE_VAL_VISIBILITY_GURU 3 // Visible for Gurus #define CORFEATURE_VAL_VISIBILITY_INVISIBLE 4 // Not Visible // Increment Type #define CORFEATURE_VAL_INCREMENT_TYPE_UNDEFINED 0 // Undefined #define CORFEATURE_VAL_INCREMENT_TYPE_NONE 1 // Feature has no increment #define CORFEATURE_VAL_INCREMENT_TYPE_LINEAR 2 // Increment by a fix number #define CORFEATURE_VAL_INCREMENT_TYPE_LIST 3 // Valid value are provided in a list // Float Notation #define CORFEATURE_VAL_FLOAT_NOTATION_UNDEFINED 0 // Undefined #define CORFEATURE_VAL_FLOAT_NOTATION_FIXED 1 // GUI should use fixed notation, i.e. 123.4 #define CORFEATURE_VAL_FLOAT_NOTATION_SCIENTIFIC 2 // GUI should use scientific notation, i.e. 1.234e-5 /**************************************************************************** * Application programming interface ****************************************************************************/ #ifdef __cplusplus extern "C" { #endif // Creation/destruction CORSTATUS CORAPIFUNC CorFeatureNew(CORSERVER server, PCORFEATURE feature); CORSTATUS CORAPIFUNC CorFeatureFree(CORFEATURE feature); // General Parameters CORSTATUS CORAPIFUNC CorFeatureGetPrm (CORFEATURE feature, UINT32 prm, void *value); CORSTATUS CORAPIFUNC CorFeatureSetPrm (CORFEATURE feature, UINT32 prm, UINT32 value); CORSTATUS CORAPIFUNC CorFeatureSetPrmEx(CORFEATURE feature, UINT32 prm, const void *value); // Integer/float-specific Parameters CORSTATUS CORAPIFUNC CorFeatureGetMin(CORFEATURE feature, void *minVal, UINT32 valSize); CORSTATUS CORAPIFUNC CorFeatureGetMax(CORFEATURE feature, void *maxVal, UINT32 valSize); CORSTATUS CORAPIFUNC CorFeatureGetInc(CORFEATURE feature, void *incVal, UINT32 valSize); CORSTATUS CORAPIFUNC CorFeatureGetValidValue(CORFEATURE feature, UINT32 valueIndex, void *val, UINT32 valSize); // Enumeration-specific Parameters CORSTATUS CORAPIFUNC CorFeatureGetEnumCount(CORFEATURE feature, PUINT32 count); CORSTATUS CORAPIFUNC CorFeatureGetEnumString(CORFEATURE feature, UINT32 index, PSTR enumString, UINT32 stringSize); CORSTATUS CORAPIFUNC CorFeatureGetEnumValue(CORFEATURE feature, UINT32 index, PUINT32 value); CORSTATUS CORAPIFUNC CorFeatureIsEnumEnabled(CORFEATURE feature, UINT32 index, PUINT32 enabled); CORSTATUS CORAPIFUNC CorFeatureGetEnumStringFromValue(CORFEATURE feature, UINT32 value, PSTR enumString, UINT32 stringSize); CORSTATUS CORAPIFUNC CorFeatureGetEnumValueFromString(CORFEATURE feature, PCSTR enumString, PUINT32 value); CORSTATUS CORAPIFUNC CorFeatureGetEnumPrm(CORFEATURE feature, UINT32 enumIndex, UINT32 enumPrm, void *value); // Selector-specific Parameters CORSTATUS CORAPIFUNC CorFeatureGetSelectedCount(CORFEATURE feature, PUINT32 count); CORSTATUS CORAPIFUNC CorFeatureGetSelectedIndex(CORFEATURE feature, UINT32 selectedIndex, PUINT32 featureIndex); CORSTATUS CORAPIFUNC CorFeatureGetSelectedName(CORFEATURE feature, UINT32 selectedIndex, PSTR featureName, UINT32 nameSize); CORSTATUS CORAPIFUNC CorFeatureGetSelectingCount(CORFEATURE feature, PUINT32 count); CORSTATUS CORAPIFUNC CorFeatureGetSelectingIndex(CORFEATURE feature, UINT32 selectingIndex, PUINT32 featureIndex); CORSTATUS CORAPIFUNC CorFeatureGetSelectingName(CORFEATURE feature, UINT32 selectingIndex, PSTR featureName, UINT32 nameSize); #ifdef __cplusplus } #endif #endif // _CAPIFEATURE_H_