Program Listing for File VmbCTypeDefinitions.h
↰ Return to documentation for file (include/VmbC/VmbCTypeDefinitions.h
)
/*=============================================================================
Copyright (C) 2012 - 2021 Allied Vision Technologies. All Rights Reserved.
Redistribution of this header file, in original or modified form, without
prior written consent of Allied Vision Technologies is prohibited.
-------------------------------------------------------------------------------
File: VmbCTypeDefinitions.h
-------------------------------------------------------------------------------
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF TITLE,
NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
=============================================================================*/
#ifndef VMBC_TYPE_DEFINITIONS_H_INCLUDE_
#define VMBC_TYPE_DEFINITIONS_H_INCLUDE_
#include <stddef.h>
#include <stdint.h>
#include <VmbC/VmbCommonTypes.h>
#if defined (_WIN32)
#if defined AVT_VMBAPI_C_EXPORTS // DLL exports
#define IMEXPORTC // We export via the .def file
#elif defined AVT_VMBAPI_C_LIB // static LIB
#define IMEXPORTC
#else // import
#define IMEXPORTC __declspec(dllimport)
#endif
#ifndef _WIN64
// Calling convention
#define VMB_CALL __stdcall
#else
// Calling convention
#define VMB_CALL
#endif
#elif defined (__GNUC__) && (__GNUC__ >= 4) && defined (__ELF__)
// SO exports (requires compiler option -fvisibility=hidden)
#ifdef AVT_VMBAPI_C_EXPORTS
#define IMEXPORTC __attribute__((visibility("default")))
#else
#define IMEXPORTC
#endif
#ifdef __i386__
// Calling convention
#define VMB_CALL __attribute__((stdcall))
#else
// Calling convention
#define VMB_CALL
#endif
#elif defined (__APPLE__)
#define IMEXPORTC __attribute__((visibility("default")))
// Calling convention
#define VMB_CALL
#else
#error Unknown platform, file needs adaption
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef enum VmbTransportLayerType
{
VmbTransportLayerTypeUnknown = 0,
VmbTransportLayerTypeGEV = 1,
VmbTransportLayerTypeCL = 2,
VmbTransportLayerTypeIIDC = 3,
VmbTransportLayerTypeUVC = 4,
VmbTransportLayerTypeCXP = 5,
VmbTransportLayerTypeCLHS = 6,
VmbTransportLayerTypeU3V = 7,
VmbTransportLayerTypeEthernet = 8,
VmbTransportLayerTypePCI = 9,
VmbTransportLayerTypeCustom = 10,
VmbTransportLayerTypeMixed = 11,
} VmbTransportLayerType;
typedef VmbUint32_t VmbTransportLayerType_t;
typedef struct VmbTransportLayerInfo
{
const char* transportLayerIdString;
const char* transportLayerName;
const char* transportLayerModelName;
const char* transportLayerVendor;
const char* transportLayerVersion;
const char* transportLayerPath;
VmbHandle_t transportLayerHandle;
VmbTransportLayerType_t transportLayerType;
} VmbTransportLayerInfo_t;
typedef struct VmbInterfaceInfo
{
const char* interfaceIdString;
const char* interfaceName;
VmbHandle_t interfaceHandle;
VmbHandle_t transportLayerHandle;
VmbTransportLayerType_t interfaceType;
} VmbInterfaceInfo_t;
typedef enum VmbAccessModeType
{
VmbAccessModeNone = 0,
VmbAccessModeFull = 1,
VmbAccessModeRead = 2,
VmbAccessModeUnknown = 4,
VmbAccessModeExclusive = 8,
} VmbAccessModeType;
typedef VmbUint32_t VmbAccessMode_t;
typedef struct VmbCameraInfo
{
const char* cameraIdString;
const char* cameraIdExtended;
const char* cameraName;
const char* modelName;
const char* serialString;
VmbHandle_t transportLayerHandle;
VmbHandle_t interfaceHandle;
VmbHandle_t localDeviceHandle;
VmbHandle_t const* streamHandles;
VmbUint32_t streamCount;
VmbAccessMode_t permittedAccess;
} VmbCameraInfo_t;
typedef enum VmbFeatureDataType
{
VmbFeatureDataUnknown = 0,
VmbFeatureDataInt = 1,
VmbFeatureDataFloat = 2,
VmbFeatureDataEnum = 3,
VmbFeatureDataString = 4,
VmbFeatureDataBool = 5,
VmbFeatureDataCommand = 6,
VmbFeatureDataRaw = 7,
VmbFeatureDataNone = 8,
} VmbFeatureDataType;
typedef VmbUint32_t VmbFeatureData_t;
typedef enum VmbFeatureVisibilityType
{
VmbFeatureVisibilityUnknown = 0,
VmbFeatureVisibilityBeginner = 1,
VmbFeatureVisibilityExpert = 2,
VmbFeatureVisibilityGuru = 3,
VmbFeatureVisibilityInvisible = 4,
} VmbFeatureVisibilityType;
typedef VmbUint32_t VmbFeatureVisibility_t;
typedef enum VmbFeatureFlagsType
{
VmbFeatureFlagsNone = 0,
VmbFeatureFlagsRead = 1,
VmbFeatureFlagsWrite = 2,
VmbFeatureFlagsVolatile = 8,
VmbFeatureFlagsModifyWrite = 16,
} VmbFeatureFlagsType;
typedef VmbUint32_t VmbFeatureFlags_t;
typedef struct VmbFeatureInfo
{
const char* name;
const char* category;
const char* displayName;
const char* tooltip;
const char* description;
const char* sfncNamespace;
const char* unit;
const char* representation;
VmbFeatureData_t featureDataType;
VmbFeatureFlags_t featureFlags;
VmbUint32_t pollingTime;
VmbFeatureVisibility_t visibility;
VmbBool_t isStreamable;
VmbBool_t hasSelectedFeatures;
} VmbFeatureInfo_t;
typedef struct VmbFeatureEnumEntry
{
const char* name;
const char* displayName;
const char* tooltip;
const char* description;
VmbInt64_t intValue;
const char* sfncNamespace;
VmbFeatureVisibility_t visibility;
} VmbFeatureEnumEntry_t;
typedef enum VmbFrameStatusType
{
VmbFrameStatusComplete = 0,
VmbFrameStatusIncomplete = -1,
VmbFrameStatusTooSmall = -2,
VmbFrameStatusInvalid = -3,
} VmbFrameStatusType;
typedef VmbInt32_t VmbFrameStatus_t;
typedef enum VmbFrameFlagsType
{
VmbFrameFlagsNone = 0,
VmbFrameFlagsDimension = 1,
VmbFrameFlagsOffset = 2,
VmbFrameFlagsFrameID = 4,
VmbFrameFlagsTimestamp = 8,
VmbFrameFlagsImageData = 16,
VmbFrameFlagsPayloadType = 32,
VmbFrameFlagsChunkDataPresent = 64,
} VmbFrameFlagsType;
typedef VmbUint32_t VmbFrameFlags_t;
typedef enum VmbPayloadType
{
VmbPayloadTypeUnknown = 0,
VmbPayloadTypeImage = 1,
VmbPayloadTypeRaw = 2,
VmbPayloadTypeFile = 3,
VmbPayloadTypeJPEG = 5,
VmbPayloadTypJPEG2000 = 6,
VmbPayloadTypeH264 = 7,
VmbPayloadTypeChunkOnly = 8,
VmbPayloadTypeDeviceSpecific = 9,
VmbPayloadTypeGenDC = 11,
} VmbPayloadType;
typedef VmbUint32_t VmbPayloadType_t;
typedef VmbUint32_t VmbImageDimension_t;
typedef struct VmbFrame
{
void* buffer;
VmbUint32_t bufferSize;
void* context[4];
VmbFrameStatus_t receiveStatus;
VmbUint64_t frameID;
VmbUint64_t timestamp;
VmbUint8_t* imageData;
VmbFrameFlags_t receiveFlags;
VmbPixelFormat_t pixelFormat;
VmbImageDimension_t width;
VmbImageDimension_t height;
VmbImageDimension_t offsetX;
VmbImageDimension_t offsetY;
VmbPayloadType_t payloadType;
VmbBool_t chunkDataPresent;
} VmbFrame_t;
typedef enum VmbFeaturePersistType
{
VmbFeaturePersistAll = 0,
VmbFeaturePersistStreamable = 1,
VmbFeaturePersistNoLUT = 2
} VmbFeaturePersistType;
typedef VmbUint32_t VmbFeaturePersist_t;
typedef enum VmbModulePersistFlagsType
{
VmbModulePersistFlagsNone = 0x00,
VmbModulePersistFlagsTransportLayer = 0x01,
VmbModulePersistFlagsInterface = 0x02,
VmbModulePersistFlagsRemoteDevice = 0x04,
VmbModulePersistFlagsLocalDevice = 0x08,
VmbModulePersistFlagsStreams = 0x10,
VmbModulePersistFlagsAll = 0xff
} VmbModulePersistFlagsType;
typedef VmbUint32_t VmbModulePersistFlags_t;
typedef enum VmbLogLevel
{
VmbLogLevelNone = 0,
VmbLogLevelError,
VmbLogLevelDebug,
VmbLogLevelWarn,
VmbLogLevelTrace,
VmbLogLevelAll = VmbLogLevelTrace,
} VmbLogLevel;
typedef VmbUint32_t VmbLogLevel_t;
typedef struct VmbFeaturePersistSettings
{
VmbFeaturePersist_t persistType;
VmbModulePersistFlags_t modulePersistFlags;
VmbUint32_t maxIterations;
VmbLogLevel_t loggingLevel;
} VmbFeaturePersistSettings_t;
typedef void (VMB_CALL* VmbInvalidationCallback)(const VmbHandle_t handle, const char* name, void* userContext);
typedef void (VMB_CALL* VmbFrameCallback)(const VmbHandle_t cameraHandle, const VmbHandle_t streamHandle, VmbFrame_t* frame);
typedef VmbError_t(VMB_CALL* VmbChunkAccessCallback)(VmbHandle_t featureAccessHandle, void* userContext);
#ifdef __cplusplus
}
#endif
#endif // VMBC_TYPE_DEFINITIONS_H_INCLUDE_