GenTL_v1_5.h
Go to the documentation of this file.
00001 /****************************************************************************
00002 (c) 2004-2015 by GenICam GenTL Subcommittee
00003 
00004 License: This file is published under the license of the EMVA GenICam Standard Group.
00005 A text file describing the legal terms is included in your installation as 'license.txt'.
00006 If for some reason you are missing this file please contact the EMVA or visit the website
00007 (http://www.genicam.org) for a full copy.
00008 
00009 THIS SOFTWARE IS PROVIDED BY THE EMVA GENICAM STANDARD GROUP "AS IS"
00010 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
00011 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00012 PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE EMVA GENICAM STANDARD  GROUP
00013 OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,  SPECIAL,
00014 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT  LIMITED TO,
00015 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,  DATA, OR PROFITS;
00016 OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY  THEORY OF LIABILITY,
00017 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)
00018 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00019 POSSIBILITY OF SUCH DAMAGE.
00020 
00021 ******************************************************************************/
00022 
00023 /*  \file     GenTL.h
00024  *  \brief    GenICam Transport Layer Client Interface
00025  *  \version  1.5
00026  *  \author   GenTL Subcommittee
00027  *  \date     2015
00028  *
00029  *  \par Version history
00030  *  \li Version 0.1.0   First official version from the meeting in Pilsen
00031  *  \li Version 0.1.1   rst (SI) 0.4.160
00032  *                      - added _E_INTERFACE_INFO_CMD_LIST_T_ enum name
00033  *                      - added _E_DEVICE_ACCCESS_STATUS_TYPE_T_ to be used
00034  *                      with the /a IFGetDeviceInfo and DevGetInfo
00035  *                      - rename of the enum value DEVICE_INFO_ACCESSMODE to
00036  *                      DEVICE_INFO_ACCESS_STATUS which now refers to
00037  *                      _E_DEVICE_ACCCESS_STATUS_TYPE_T_
00038  *                      - added Timeout parameter to update interface list and
00039  *                      device list.
00040  *  \li Version 0.1.2   - change datatype of timeout parameter of
00041  *                      TLUpdateInterfaceList and IFUpdateDeviceList to
00042  *                      uint64_t to match with the timeout in the event object.
00043  *                      - changed all enums to have a typedef to uint32_t
00044  *                      with them to allow custom ids
00045  *                      - changed type of string constants to be char * instead
00046  *                      of gcstring
00047  *  \li Version 0.1.3 rst (SI), cbi (IDS) 0.4.163
00048  *                      - adjusted parameter names to be closer aligned with
00049  *                      the standard text
00050  *                      - changed typedefs for enums from uint32_t to int32_t
00051  *                      - removed default parameter
00052  *                      - added parameter name to DevGetPort function
00053  *  \li Version 0.1.4 jb (LV)
00054  *                      - fixes to align the file with standard text
00055  *                      - make the file self-contained, independent on GenApi
00056  *  \li Version 0.1.5 rst (SI) cbi (IDS) jb (LV) tho (MVTec)
00057  *                      - Adjust it for Linux
00058  *                      - Cosmetics
00059  *  \li Version 1.0   rst (SI) cbi (IDS) jb (LV) tho (MVTec)
00060  *                      - Adjust for Standard 1.0
00061  *                      - Make it plain C compliant
00062  *                      - Cosmetics
00063  *  \li Version 1.2   rst (SI) jb (LV) tho (MVTec)
00064  *                      - Adjust for Standard 1.2
00065  *                      - adjust packing
00066  *                      - Cosmetics
00067  *  \li Version 1.3   (Stemmer, Leutron, Matrix Vision, MVTec, MathWorks)
00068  *                      - Adjust for Standard 1.3
00069  *                      - added chunk handling
00070  *                      - added Mac OS X
00071  *                      - Cosmetics
00072  *  \li Version 1.3.1 (MathWorks)
00073  *                      - Spelling corrections in comments
00074  *  \li Version 1.4    GenTL Subcommittee
00075  *  \li Version 1.5    GenTL Subcommittee
00076  *                      - Changed namespace to GenTL
00077  *                      - Changes for GenTL 1.5, Please refer to the GenTL spec 
00078  *                        for a list of changes. 
00079  */
00080 
00081 
00082 #ifndef GC_TLI_CLIENT_H_
00083 #define GC_TLI_CLIENT_H_ 1
00084 
00085 #ifndef GC_USER_DEFINED_TYPES
00086 /* The types should be the same as defined in GCTypes.h from GenApi. But in
00087  * case you do not have this header the necessary types are defined here. */
00088 #  if defined(_WIN32)
00089 #    if defined(_MSC_VER) && _MSC_VER >= 1600 /* VS2010 provides stdint.h */
00090 #      include <stdint.h>
00091 #    elif !defined _STDINT_H && !defined _STDINT
00092        /* stdint.h is usually not available under Windows */
00093        typedef unsigned char uint8_t;
00094        typedef __int32 int32_t;
00095        typedef unsigned __int32 uint32_t;
00096        typedef unsigned __int64 uint64_t;
00097 #    endif
00098 #  else
00099 #    include <stdint.h>
00100 #  endif
00101 
00102 #  ifdef __cplusplus
00103      typedef bool bool8_t;
00104 #  else
00105      typedef uint8_t bool8_t;
00106 #  endif
00107 #endif /* GC_DEFINE_TYPES */
00108 
00109 #include <stddef.h>
00110 
00111 
00112 /* Function declaration modifiers */
00113 #if defined (_WIN32)
00114 #  ifndef GCTLI_NO_DECLSPEC_STATEMENTS
00115 #    ifdef GCTLIDLL
00116 #      define GC_IMPORT_EXPORT __declspec(dllexport)
00117 #    else
00118 #      define GC_IMPORT_EXPORT __declspec(dllimport)
00119 #    endif
00120 #  else
00121 #      define GC_IMPORT_EXPORT
00122 #  endif /* #  ifndef GCTLI_NO_DECLSPEC_STATEMENTS */
00123 #  if defined (_M_IX86) || defined (__i386__)
00124 #    define GC_CALLTYPE __stdcall
00125 #  else
00126 #    define GC_CALLTYPE /* default */
00127 #  endif
00128 #  ifndef EXTERN_C
00129 #    define EXTERN_C extern "C"
00130 #  endif
00131 
00132 #elif defined (__GNUC__) && (__GNUC__ >= 4) && (defined (__linux__) || defined (__APPLE__))
00133 #  define GC_IMPORT_EXPORT __attribute__((visibility("default")))
00134 #  if defined (__i386__)
00135 #    define GC_CALLTYPE __attribute__((stdcall))
00136 #  else
00137 #    define GC_CALLTYPE /* default */
00138 #  endif
00139 #  ifndef EXTERN_C
00140 #    define EXTERN_C extern "C"
00141 #  endif
00142 
00143 #else
00144 #  error Unknown platform, file needs adaption
00145 #endif
00146 
00147 #ifdef __cplusplus
00148 extern "C" {
00149   namespace GenTL {
00150 #endif
00151 
00152     /* Errors */
00153     enum GC_ERROR_LIST
00154     {
00155       GC_ERR_SUCCESS             = 0,
00156       GC_ERR_ERROR               = -1001,
00157       GC_ERR_NOT_INITIALIZED     = -1002,
00158       GC_ERR_NOT_IMPLEMENTED     = -1003,
00159       GC_ERR_RESOURCE_IN_USE     = -1004,
00160       GC_ERR_ACCESS_DENIED       = -1005,
00161       GC_ERR_INVALID_HANDLE      = -1006,
00162       GC_ERR_INVALID_ID          = -1007,
00163       GC_ERR_NO_DATA             = -1008,
00164       GC_ERR_INVALID_PARAMETER   = -1009,
00165       GC_ERR_IO                  = -1010,
00166       GC_ERR_TIMEOUT             = -1011,
00167       GC_ERR_ABORT               = -1012, /* GenTL v1.1 */
00168       GC_ERR_INVALID_BUFFER      = -1013, /* GenTL v1.1 */
00169       GC_ERR_NOT_AVAILABLE       = -1014, /* GenTL v1.2 */
00170       GC_ERR_INVALID_ADDRESS     = -1015, /* GenTL v1.3 */
00171       GC_ERR_BUFFER_TOO_SMALL    = -1016, /* GenTL v1.4 */
00172       GC_ERR_INVALID_INDEX       = -1017, /* GenTL v1.4 */
00173       GC_ERR_PARSING_CHUNK_DATA  = -1018, /* GenTL v1.4 */
00174       GC_ERR_INVALID_VALUE       = -1019, /* GenTL v1.4 */
00175       GC_ERR_RESOURCE_EXHAUSTED  = -1020, /* GenTL v1.4 */
00176       GC_ERR_OUT_OF_MEMORY       = -1021, /* GenTL v1.4 */
00177       GC_ERR_BUSY                = -1022, /* GenTL v1.5 */
00178 
00179       GC_ERR_CUSTOM_ID           = -10000
00180     };
00181     typedef int32_t GC_ERROR;
00182 
00183 #   ifndef GC_GENTL_HEADER_VERSION
00184 
00185 #     define GenTLMajorVersion       1 /* defines the major version of the GenICam GenTL standard version this header is based on */
00186 #     define GenTLMinorVersion       5 /* defines the minor version of the GenICam GenTL standard version this header is based on */
00187 #     define GenTLSubMinorVersion    0 /* defines the sub minor version of the GenICam GenTL standard version this header is based on */
00188 
00189 #     define GC_GENTL_HEADER_VERSION_CODE(major,minor,subminor) (((major)<<24)+((minor)<<16)+(subminor))
00190 #     define GC_GENTL_HEADER_VERSION GC_GENTL_HEADER_VERSION_CODE(GenTLMajorVersion,GenTLMinorVersion,GenTLSubMinorVersion)
00191 
00192 #   endif /* GC_GENTL_HEADER_VERSION */
00193 
00194 #   ifndef GC_GENTL_DONT_USE_TYPE_DEFINITIONS
00195 #     define TLTypeMixedName           "Mixed"    /* Type to use for several supported technologies */
00196 #     define TLTypeCustomName          "Custom"   /* Type to use for custom technologies */
00197 #     define TLTypeGEVName             "GEV"      /* Type to use for GigE Vision technology */
00198 #     define TLTypeCLName              "CL"       /* Type to use for Camera Link technology */
00199 #     define TLTypeIIDCName            "IIDC"     /* Type to use for IIDC 1394 technology */
00200 #     define TLTypeUVCName             "UVC"      /* Type to use for USB video class devices */
00201 #     define TLTypeCXPName             "CXP"      /* Type to use for CoaXPress, V1.3 */
00202 #     define TLTypeCLHSName            "CLHS"     /* Type to use for Camera Link HS, V1.3 */
00203 #     define TLTypeU3VName             "U3V"      /* Type to use for USB3 Vision Standard, V1.4 */
00204 #     define TLTypeETHERNETName        "Ethernet" /* Type to use for Ethernet devices, V1.3 */
00205 #     define TLTypePCIName             "PCI"      /* Type to use for PCI/PCIe devices, V1.3 */
00206 #   endif  /* GC_GENTL_DONT_USE_TYPE_DEFINITIONS */
00207 
00208 #   ifndef GC_GENTL_DONT_USE_MODULE_NAMES
00209 #     define TLSystemModuleName        "TLSystem"     /* Name to identify a system module */
00210 #     define TLInterfaceModuleName     "TLInterface"  /* Name to identify a interface module */
00211 #     define TLDeviceModuleName        "TLDevice"     /* Name to identify a device module */
00212 #     define TLDataStreamModuleName    "TLDataStream" /* Name to identify a data stream module */
00213 #     define TLBufferModuleName        "TLBuffer"     /* Name to identify a buffer module */
00214 #     define TLRemoteDeviceModuleName  "Device"       /* Name to identify a remote device module */
00215 #   endif /* GC_GENTL_DONT_USE_MODULE_NAMES */
00216 
00217     /* Handles */
00218     typedef void *  TL_HANDLE;         /* Transport Layer handle, obtained through the TLOpen */
00219     typedef void *  IF_HANDLE;         /* Interface handle, obtained through ::TLOpenInterface */
00220     typedef void *  DEV_HANDLE;        /* Device Handle, obtained through the ::IFOpenDevice */
00221     typedef void *  DS_HANDLE;         /* Handle to an image stream object, obtained through DevOpenDataStream */
00222     typedef void *  PORT_HANDLE;       /* A Port handle is used to access the register space of a port */
00223                     /*  a PORT_HANDLE can be one of the following TL_HANDLE, IF_HANDLE, */
00224                     /*  DEV_HANDLE, handle to a device port, obtained through ::DevGetPort, */
00225                     /*  DS_HANDLE, BUFFER_HANDLE */
00226 
00227     typedef void *  BUFFER_HANDLE;     /* BufferHandle, obtained through the ::DSAnnounceBuffer function */
00228     typedef void *  EVENTSRC_HANDLE;   /* A Event source handle is used to register a OS Event and to retrieve a GenTL event handle */
00229                     /* a EVENTSRC_HANDLE can be on of the following TL_HANDLE, */
00230                     /* IF_HANDLE, DEV_HANDLE, A handle to a device port, obtained through ::DevGetPort */
00231                     /* DS_HANDLE, BUFFER_HANDLE */
00232     typedef void *  EVENT_HANDLE;      /* Event Handle */
00233 
00234 #   define GENTL_INVALID_HANDLE  NULL                /* Invalid handle value, V1.4 */ 
00235 #   define GENTL_INFINITE        0xFFFFFFFFFFFFFFFFULL  /* Infinite value to be used in various function calls, V1.4 */
00236 
00237     /* Defines the data type possible for the various Info functions. */
00238     enum INFO_DATATYPE_LIST
00239     {
00240       INFO_DATATYPE_UNKNOWN     = 0,       /* Unknown data type */
00241       INFO_DATATYPE_STRING      = 1,       /* NULL-terminated C string (ASCII encoded). */
00242       INFO_DATATYPE_STRINGLIST  = 2,       /* Concatenated INFO_DATATYPE_STRING list. End of list is signaled with an additional NULL. */
00243       INFO_DATATYPE_INT16       = 3,       /* Signed 16 bit integer. */
00244       INFO_DATATYPE_UINT16      = 4,       /* Unsigned 16 bit integer */
00245       INFO_DATATYPE_INT32       = 5,       /* Signed 32 bit integer */
00246       INFO_DATATYPE_UINT32      = 6,       /* Unsigned 32 bit integer */
00247       INFO_DATATYPE_INT64       = 7,       /* Signed 64 bit integer */
00248       INFO_DATATYPE_UINT64      = 8,       /* Unsigned 64 bit integer */
00249       INFO_DATATYPE_FLOAT64     = 9,       /* Signed 64 bit floating point number. */
00250       INFO_DATATYPE_PTR         = 10,      /* Pointer type (void*). Size is platform dependent (32 bit on 32 bit platforms). */
00251       INFO_DATATYPE_BOOL8       = 11,      /* Boolean value occupying 8 bit. 0 for false and anything for true. */
00252       INFO_DATATYPE_SIZET       = 12,      /* Platform dependent unsigned integer (32 bit on 32 bit platforms). */
00253       INFO_DATATYPE_BUFFER      = 13,      /* Like a INFO_DATATYPE_STRING but with arbitrary data and no NULL termination. */
00254       INFO_DATATYPE_PTRDIFF     = 14,      /* Platform dependent signed integer (32 bit on 32 bit platforms). GenTL v1.3 */
00255 
00256       INFO_DATATYPE_CUSTOM_ID   = 1000     /* Starting value for custom IDs. */
00257     };
00258     typedef int32_t INFO_DATATYPE;
00259 
00260     /* Defines char encoding schemes used by the producer, GenTL v1.4 */
00261     enum TL_CHAR_ENCODING_LIST
00262     {
00263       TL_CHAR_ENCODING_ASCII    = 0,
00264       TL_CHAR_ENCODING_UTF8     = 1
00265     };
00266     typedef int32_t TL_CHAR_ENCODING;       /* GenTL v1.4 */
00267 
00268     /* System module information commands for the GenICam::TL::Client::TLGetInfo and GenICam::TL::Client::GCGetInfo functions. */
00269     enum  TL_INFO_CMD_LIST
00270     {
00271       TL_INFO_ID              = 0,    /* STRING    Transport layer ID. */
00272       TL_INFO_VENDOR          = 1,    /* STRING    Transport layer vendor name. */
00273       TL_INFO_MODEL           = 2,    /* STRING    Transport layer model name. */
00274       TL_INFO_VERSION         = 3,    /* STRING    Transport layer version. */
00275       TL_INFO_TLTYPE          = 4,    /* STRING    Transport layer technology that is supported. */
00276       TL_INFO_NAME            = 5,    /* STRING    File name including extension of the library. */
00277       TL_INFO_PATHNAME        = 6,    /* STRING    Full path including file name and extension of the library. */
00278       TL_INFO_DISPLAYNAME     = 7,    /* STRING    User readable name of the device. If this is not defined in the device this should be VENDOR MODEL (ID). */
00279       TL_INFO_CHAR_ENCODING   = 8,    /* INT32     Reporting the char encoding used by this Producer, GenTL v1.4 */
00280       TL_INFO_GENTL_VER_MAJOR = 9,    /* UINT32    Major number of the GenTL spec this producer complies with, GenTL v1.5 */
00281       TL_INFO_GENTL_VER_MINOR = 10,   /* UINT32    Minor number of the GenTL spec this producer complies with, GenTL v1.5 */
00282       TL_INFO_CUSTOM_ID       = 1000  /* Starting value for custom IDs. */
00283     };
00284     typedef int32_t TL_INFO_CMD;
00285 
00286     /* This enumeration defines commands to retrieve information with the GenICam::TL::Client::IFGetInfo function from the Interface module. */
00287     enum INTERFACE_INFO_CMD_LIST
00288     {
00289       INTERFACE_INFO_ID              = 0,     /* STRING     Unique ID of the interface. */
00290       INTERFACE_INFO_DISPLAYNAME     = 1,     /* STRING     User readable name of the interface. */
00291       INTERFACE_INFO_TLTYPE          = 2,     /* STRING     Transport layer technology that is supported. */
00292 
00293       INTERFACE_INFO_CUSTOM_ID       = 1000   /* Starting value for GenTL Producer custom IDs. */
00294     };
00295     typedef int32_t INTERFACE_INFO_CMD;
00296 
00297     /* This enumeration defines flags of how a device is to be opened with the GenICam::TL::Client::IFOpenDevice function. */
00298     enum DEVICE_ACCESS_FLAGS_LIST
00299     {
00300       DEVICE_ACCESS_UNKNOWN   = 0,         /* Not used in a command. Can be used to initialize a variable to query that information. */
00301       DEVICE_ACCESS_NONE      = 1,         /* This either means that the device is not open because it was not opened before or the access to it was denied. */
00302       DEVICE_ACCESS_READONLY  = 2,         /* Open the device read only. All Port functions can only read from the device. */
00303       DEVICE_ACCESS_CONTROL   = 3,         /* Open the device in a way that other hosts/processes can have read only access to the device. Device access level is read/write for this process. */
00304       DEVICE_ACCESS_EXCLUSIVE = 4,         /* Open the device in a way that only this host/process can have access to the device. Device access level is read/write for this process. */
00305 
00306       DEVICE_ACCESS_CUSTOM_ID = 1000       /*  Starting value for GenTL Producer custom IDs. */
00307     };
00308     typedef int32_t DEVICE_ACCESS_FLAGS;
00309 
00310     /* This enumeration defines values for the accessibility of the device to be returned in the GenICam::TL::Client::DevGetInfo function on a device handle. */
00311     enum DEVICE_ACCESS_STATUS_LIST
00312     {
00313       DEVICE_ACCESS_STATUS_UNKNOWN        = 0, /* The device accessibility is not known. */
00314       DEVICE_ACCESS_STATUS_READWRITE      = 1, /* The device is available for read/write access. */
00315       DEVICE_ACCESS_STATUS_READONLY       = 2, /* The device is available for read only access. */
00316       DEVICE_ACCESS_STATUS_NOACCESS       = 3, /* The device is not accessible. */
00317       DEVICE_ACCESS_STATUS_BUSY           = 4, /* The device has already been opened by another process/host. GenTL v1.5 */
00318       DEVICE_ACCESS_STATUS_OPEN_READWRITE = 5, /* The device has already been opened by this process. GenTL v1.5 */
00319       DEVICE_ACCESS_STATUS_OPEN_READONLY  = 6, /* The device has already been opened by this process. GenTL v1.5 */
00320 
00321       DEVICE_ACCESS_STATUS_CUSTOM_ID = 1000 /* Starting value for custom IDs. */
00322     };
00323     typedef int32_t DEVICE_ACCESS_STATUS;
00324 
00325     /* This enumeration defines commands to retrieve information with the GenICam::TL::Client::DevGetInfo function on a device handle. */
00326     enum DEVICE_INFO_CMD_LIST
00327     {
00328       DEVICE_INFO_ID                  = 0,    /* STRING     Unique ID of the device. */
00329       DEVICE_INFO_VENDOR              = 1,    /* STRING     Device vendor name. */
00330       DEVICE_INFO_MODEL               = 2,    /* STRING     Device model name. */
00331       DEVICE_INFO_TLTYPE              = 3,    /* STRING     Transport layer technology that is supported. */
00332       DEVICE_INFO_DISPLAYNAME         = 4,    /* STRING     String containing a display name for the device ( including a unique id ) */
00333       DEVICE_INFO_ACCESS_STATUS       = 5,    /* INT32      Gets the access mode the GenTL Producer has on the opened device. (DEVICE_ACCESS_STATUS enumeration value). */
00334       DEVICE_INFO_USER_DEFINED_NAME   = 6,    /* STRING     String containing the user defined name, GenTL v1.4  */
00335       DEVICE_INFO_SERIAL_NUMBER       = 7,    /* STRING     String containing the device's serial number, GenTL v1.4  */
00336       DEVICE_INFO_VERSION             = 8,    /* STRING     String containing the device version, GenTL v1.4  */
00337       DEVICE_INFO_TIMESTAMP_FREQUENCY = 9,    /* UINT64     Tick-frequency of the time stamp clock, GenTL v1.4 */
00338 
00339       DEVICE_INFO_CUSTOM_ID       = 1000    /* Starting value for GenTL Producer custom IDs. */
00340     };
00341     typedef int32_t DEVICE_INFO_CMD;
00342 
00343     /* This enumeration defines special stop flags for the acquisition engine. The function used is GenICam::TL::Client::DSStopAcquisition. */
00344     enum ACQ_STOP_FLAGS_LIST
00345     {
00346       ACQ_STOP_FLAGS_DEFAULT    = 0,         /* Stop the acquisition engine when the currently running tasks like filling a buffer are completed (default behavior). */
00347       ACQ_STOP_FLAGS_KILL       = 1,         /* Stop the acquisition engine immediately and leave buffers currently being filled in the Input Buffer Pool. */
00348 
00349       ACQ_STOP_FLAGS_CUSTOM_ID  = 1000       /* Starting value for GenTL Producer custom IDs. */
00350     };
00351     typedef int32_t ACQ_STOP_FLAGS;
00352 
00353     /* This enumeration defines special start flags for the acquisition engine. The function used is GenICam::TL::Client::DSStartAcquisition. */
00354     enum ACQ_START_FLAGS_LIST
00355     {
00356       ACQ_START_FLAGS_DEFAULT     = 0,      /* Default behavior. */
00357 
00358       ACQ_START_FLAGS_CUSTOM_ID   = 1000    /* Starting value for GenTL Producer custom IDs. */
00359     };
00360     typedef int32_t ACQ_START_FLAGS;
00361 
00362     /* This enumeration commands from which to which queue/pool buffers are flushed with the GenICam::TL::Client::DSFlushQueue function. */
00363     enum ACQ_QUEUE_TYPE_LIST
00364     {
00365       ACQ_QUEUE_INPUT_TO_OUTPUT           = 0,    /* Flushes the input pool to the output queue and if necessary adds entries in the New Buffer event data queue. */
00366       ACQ_QUEUE_OUTPUT_DISCARD            = 1,    /* Discards all buffers in the output queue and if necessary remove the entries from the event data queue. */
00367       ACQ_QUEUE_ALL_TO_INPUT              = 2,    /* Puts all buffers in the input pool. Even those in the output queue and discard entries in the event data queue. */
00368       ACQ_QUEUE_UNQUEUED_TO_INPUT         = 3,    /* Puts all buffers that are not in the input pool or the output queue in the input pool. */
00369       ACQ_QUEUE_ALL_DISCARD               = 4,    /* Discards all buffers in the input pool and output queue. */
00370 
00371       ACQ_QUEUE_CUSTOM_ID                 = 1000  /* Starting value for GenTL Producer custom IDs. */
00372     };
00373     typedef int32_t ACQ_QUEUE_TYPE;
00374 
00375     /* This enumeration defines commands to retrieve information with the GenICam::TL::Client::DSGetInfo function on a data stream handle */
00376     enum STREAM_INFO_CMD_LIST
00377     {
00378       STREAM_INFO_ID                         =  0,   /* STRING     Unique ID of the data stream. */
00379       STREAM_INFO_NUM_DELIVERED              =  1,   /* UINT64     Number of delivered buffers since last acquisition start. */
00380       STREAM_INFO_NUM_UNDERRUN               =  2,   /* UINT64     Number of lost buffers due to queue underrun. */
00381       STREAM_INFO_NUM_ANNOUNCED              =  3,   /* SIZET      Number of announced buffers. */
00382       STREAM_INFO_NUM_QUEUED                 =  4,   /* SIZET      Number of buffers in the input pool. */
00383       STREAM_INFO_NUM_AWAIT_DELIVERY         =  5,   /* SIZET      Number of buffers in the output queue. */
00384       STREAM_INFO_NUM_STARTED                =  6,   /* UINT64     Number of buffers started in the acquisition engine. */
00385       STREAM_INFO_PAYLOAD_SIZE               =  7,   /* SIZET      Size of the expected data in bytes. */
00386       STREAM_INFO_IS_GRABBING                =  8,   /* BOOL8      Flag indicating whether the acquisition engine is started or not. */
00387       STREAM_INFO_DEFINES_PAYLOADSIZE        =  9,   /* BOOL8      Flag that indicated that this data stream defines a payload size independent from the remote device. */
00388       STREAM_INFO_TLTYPE                     = 10,   /* STRING     Transport layer technology that is supported. */
00389       STREAM_INFO_NUM_CHUNKS_MAX             = 11,   /* SIZET      Max number of chunks in a buffer, if known. GenTL v1.3 */
00390       STREAM_INFO_BUF_ANNOUNCE_MIN           = 12,   /* SIZET      Min number of buffers to announce before acq can start, if known. GenTL v1.3 */
00391       STREAM_INFO_BUF_ALIGNMENT              = 13,   /* SIZET      Buffer alignment in bytes. GenTL v1.3 */
00392 
00393       STREAM_INFO_CUSTOM_ID                  = 1000  /* Starting value for GenTL Producer custom IDs. */
00394     };
00395     typedef int32_t STREAM_INFO_CMD;
00396 
00397     /* This enumeration defines commands to retrieve information with the GenICam::TL::Client::DSGetBufferInfo function on a buffer handle. */
00398     enum  BUFFER_INFO_CMD_LIST
00399     {
00400       BUFFER_INFO_BASE                            = 0,  /* PTR        Base address of the buffer memory. */
00401       BUFFER_INFO_SIZE                            = 1,  /* SIZET      Size of the buffer in bytes. */
00402       BUFFER_INFO_USER_PTR                        = 2,  /* PTR        Private data pointer of the GenTL Consumer. */
00403       BUFFER_INFO_TIMESTAMP                       = 3,  /* UINT64     Timestamp the buffer was acquired. */
00404       BUFFER_INFO_NEW_DATA                        = 4,  /* BOOL8      Flag to indicate that the buffer contains new data since the last call. */
00405       BUFFER_INFO_IS_QUEUED                       = 5,  /* BOOL8      Flag to indicate if the buffer is in the input pool or output queue. */
00406       BUFFER_INFO_IS_ACQUIRING                    = 6,  /* BOOL8      Flag to indicate that the buffer is currently being filled with data. */
00407       BUFFER_INFO_IS_INCOMPLETE                   = 7,  /* BOOL8      Flag to indicate that a buffer was filled but an error occurred during that process. */
00408       BUFFER_INFO_TLTYPE                          = 8,  /* STRING     Transport layer technology that is supported. */
00409       BUFFER_INFO_SIZE_FILLED                     = 9,  /* SIZET      Number of bytes written into the buffer last time it has been filled. This value is reset to 0 when the buffer is placed into the Input Buffer Pool. */
00410       BUFFER_INFO_WIDTH                           = 10, /* SIZET      GenTL v1.2 */
00411       BUFFER_INFO_HEIGHT                          = 11, /* SIZET      GenTL v1.2 */
00412       BUFFER_INFO_XOFFSET                         = 12, /* SIZET      GenTL v1.2 */
00413       BUFFER_INFO_YOFFSET                         = 13, /* SIZET      GenTL v1.2 */
00414       BUFFER_INFO_XPADDING                        = 14, /* SIZET      GenTL v1.2 */
00415       BUFFER_INFO_YPADDING                        = 15, /* SIZET      GenTL v1.2 */
00416       BUFFER_INFO_FRAMEID                         = 16, /* UINT64     GenTL v1.2 */
00417       BUFFER_INFO_IMAGEPRESENT                    = 17, /* BOOL8      GenTL v1.2 */
00418       BUFFER_INFO_IMAGEOFFSET                     = 18, /* SIZET      GenTL v1.2 */
00419       BUFFER_INFO_PAYLOADTYPE                     = 19, /* SIZET      GenTL v1.2 */
00420       BUFFER_INFO_PIXELFORMAT                     = 20, /* UINT64     GenTL v1.2 */
00421       BUFFER_INFO_PIXELFORMAT_NAMESPACE           = 21, /* UINT64     GenTL v1.2 */
00422       BUFFER_INFO_DELIVERED_IMAGEHEIGHT           = 22, /* SIZET      GenTL v1.2 */
00423       BUFFER_INFO_DELIVERED_CHUNKPAYLOADSIZE      = 23, /* SIZET      GenTL v1.2 */
00424       BUFFER_INFO_CHUNKLAYOUTID                   = 24, /* UINT64     GenTL v1.2 */
00425       BUFFER_INFO_FILENAME                        = 25, /* STRING     GenTL v1.2 */
00426       BUFFER_INFO_PIXEL_ENDIANNESS                = 26, /* INT32      GenTL v1.4 */
00427       BUFFER_INFO_DATA_SIZE                       = 27, /* SIZET      GenTL v1.4 */
00428       BUFFER_INFO_TIMESTAMP_NS                    = 28, /* UINT64     GenTL v1.4 */
00429       BUFFER_INFO_DATA_LARGER_THAN_BUFFER         = 29, /* BOOL8      GenTL v1.4 */
00430       BUFFER_INFO_CONTAINS_CHUNKDATA              = 30, /* BOOL8      GenTL v1.4 */
00431 
00432       BUFFER_INFO_CUSTOM_ID                       = 1000 /* Starting value for GenTL Producer custom IDs. */
00433     };
00434     typedef int32_t BUFFER_INFO_CMD;
00435 
00436     /* This enumeration defines commands to retrieve information about individual data parts in a multi-part buffer
00437      using the GenICam::TL::Client::DSGetBufferPartInfo function. Introduced in GenTL v1.5. */
00438     enum  BUFFER_PART_INFO_CMD_LIST
00439     {
00440       BUFFER_PART_INFO_BASE                       = 0,  /* PTR        Base address of the buffer part memory. */
00441       BUFFER_PART_INFO_DATA_SIZE                  = 1,  /* SIZET      Size of the buffer part in bytes. */
00442       BUFFER_PART_INFO_DATA_TYPE                  = 2,  /* SIZET      Type of the data in given part (PARTDATATYPE_ID enumeration value). */
00443       BUFFER_PART_INFO_DATA_FORMAT                = 3,  /* UINT64     Format of individual items (such as pixels) in the buffer part. */
00444       BUFFER_PART_INFO_DATA_FORMAT_NAMESPACE      = 4,  /* UINT64     Allows interpretation of BUFFER_PART_INFO_DATA_FORMAT (PIXELFORMAT_NAMESPACE_ID enumeration value). */
00445       BUFFER_PART_INFO_WIDTH                      = 5,  /* SIZET      Width of data in the buffer part in pixels. */
00446       BUFFER_PART_INFO_HEIGHT                     = 6,  /* SIZET      Expected height of data in the buffer part in pixels . */
00447       BUFFER_PART_INFO_XOFFSET                    = 7,  /* SIZET      Horizontal offset of data in the buffer part in pixels. */
00448       BUFFER_PART_INFO_YOFFSET                    = 8,  /* SIZET      Vertical offset of data in the buffer part in pixels. */
00449       BUFFER_PART_INFO_XPADDING                   = 9,  /* SIZET      Horizontal padding of data in the buffer part in pixels. */
00450       BUFFER_PART_INFO_SOURCE_ID                  = 10, /* UINT64     Identifier allowing to group data parts belonging to the same source. */
00451       BUFFER_PART_INFO_DELIVERED_IMAGEHEIGHT      = 11, /* SIZET      Height of the data currently in the buffer part in pixels*/
00452       BUFFER_PART_INFO_CUSTOM_ID                  = 1000 /* Starting value for GenTL Producer custom IDs. */
00453     };
00454     typedef int32_t BUFFER_PART_INFO_CMD;   /* GenTL v1.5 */
00455 
00456     /* Enumeration of TLType dependent payload types. Introduced in GenTL v1.2 */
00457     enum PAYLOADTYPE_INFO_IDS
00458     {
00459       PAYLOAD_TYPE_UNKNOWN         =  0,   /* GenTL v1.2 */
00460       PAYLOAD_TYPE_IMAGE           =  1,   /* GenTL v1.2 */
00461       PAYLOAD_TYPE_RAW_DATA        =  2,   /* GenTL v1.2 */
00462       PAYLOAD_TYPE_FILE            =  3,   /* GenTL v1.2 */
00463       PAYLOAD_TYPE_CHUNK_DATA      =  4,   /* GenTL v1.2, Deprecated in GenTL 1.5*/
00464       PAYLOAD_TYPE_JPEG            =  5,   /* GenTL v1.4 */
00465       PAYLOAD_TYPE_JPEG2000        =  6,   /* GenTL v1.4 */
00466       PAYLOAD_TYPE_H264            =  7,   /* GenTL v1.4 */
00467       PAYLOAD_TYPE_CHUNK_ONLY      =  8,   /* GenTL v1.4 */
00468       PAYLOAD_TYPE_DEVICE_SPECIFIC =  9,   /* GenTL v1.4 */
00469       PAYLOAD_TYPE_MULTI_PART      =  10,  /* GenTL v1.5 */
00470 
00471       PAYLOAD_TYPE_CUSTOM_ID       = 1000  /* Starting value for GenTL Producer custom IDs. */
00472     };
00473     typedef int32_t PAYLOADTYPE_INFO_ID;
00474 
00475     /* Enumeration of TLType dependent pixel format namespaces introduced GenTL v1.2 */
00476     enum PIXELFORMAT_NAMESPACE_IDS
00477     {
00478       PIXELFORMAT_NAMESPACE_UNKNOWN      = 0,   /* GenTL v1.2 */
00479       PIXELFORMAT_NAMESPACE_GEV          = 1,   /* GenTL v1.2 */
00480       PIXELFORMAT_NAMESPACE_IIDC         = 2,   /* GenTL v1.2 */
00481       PIXELFORMAT_NAMESPACE_PFNC_16BIT   = 3,   /* GenTL v1.4 */
00482       PIXELFORMAT_NAMESPACE_PFNC_32BIT   = 4,   /* GenTL v1.4 */
00483 
00484       PIXELFORMAT_NAMESPACE_CUSTOM_ID    = 1000 /* Starting value for GenTL Producer custom IDs. */
00485     };
00486     typedef int32_t PIXELFORMAT_NAMESPACE_ID;   /* GenTL v1.2 */
00487 
00488     /* Enumeration of pixel endianness values. Introduced in GenTL v1.4 */
00489     enum PIXELENDIANNESS_IDS
00490     {
00491       PIXELENDIANNESS_UNKNOWN  = 0,    /* Unknown pixel endianness. GenTL v1.4 */
00492       PIXELENDIANNESS_LITTLE   = 1,    /* Little endian pixel data. GenTL v1.4 */
00493       PIXELENDIANNESS_BIG      = 2     /* Big endian pixel data. GenTL v1.4 */
00494     };
00495     typedef int32_t PIXELENDIANNESS_ID; /* GenTL v1.4*/ 
00496 
00497     /* Enumeration describing which data type is present in given buffer part. Introduced in GenTL v1.5 */
00498     enum PARTDATATYPE_IDS
00499     {
00500       PART_DATATYPE_UNKNOWN              =  0,   /* Unknown data type */
00501       PART_DATATYPE_2D_IMAGE             =  1,   /* Color or monochrome 2D image. */
00502       PART_DATATYPE_2D_PLANE_BIPLANAR    =  2,   /* Single color plane of a planar 2D image consisting of 2 planes. */
00503       PART_DATATYPE_2D_PLANE_TRIPLANAR   =  3,   /* Single color plane of a planar 2D image consisting of 3 planes. */
00504       PART_DATATYPE_2D_PLANE_QUADPLANAR  =  4,   /* Single color plane of a planar 2D image consisting of 4 planes. */
00505       PART_DATATYPE_3D_IMAGE             =  5,   /* 3D image (pixel coordinates). */
00506       PART_DATATYPE_3D_PLANE_BIPLANAR    =  6,   /* Single plane of a planar 3D image consisting of 2 planes. */
00507       PART_DATATYPE_3D_PLANE_TRIPLANAR   =  7,   /* Single plane of a planar 3D image consisting of 3 planes. */
00508       PART_DATATYPE_3D_PLANE_QUADPLANAR  =  8,   /* Single plane of a planar 3D image consisting of 4 planes. */
00509       PART_DATATYPE_CONFIDENCE_MAP       =  9,   /* Confidence of the individual pixel values. */
00510 
00511       PART_DATATYPE_CUSTOM_ID            = 1000  /* Starting value for GenTL Producer custom IDs. */
00512     };
00513     typedef int32_t PARTDATATYPE_ID; /* GenTL v1.5*/
00514 
00515     /* This enumeration defines commands to retrieve information with the GenICam::TL::Client::GCGetPortInfo function on a module or remote device handle. */
00516     enum PORT_INFO_CMD_LIST
00517     {
00518       PORT_INFO_ID              = 0,       /* STRING     Unique ID of the port. */
00519       PORT_INFO_VENDOR          = 1,       /* STRING     Port vendor name. */
00520       PORT_INFO_MODEL           = 2,       /* STRING     Port model name. */
00521       PORT_INFO_TLTYPE          = 3,       /* STRING     Transport layer technology that is supported. */
00522       PORT_INFO_MODULE          = 4,       /* STRING     GenTL Module the port refers to. */
00523       PORT_INFO_LITTLE_ENDIAN   = 5,       /* BOOL8      Flag indicating that the port data is little endian. */
00524       PORT_INFO_BIG_ENDIAN      = 6,       /* BOOL8      Flag indicating that the port data is big endian. */
00525       PORT_INFO_ACCESS_READ     = 7,       /* BOOL8      Port has read access. */
00526       PORT_INFO_ACCESS_WRITE    = 8,       /* BOOL8      Port has write access. */
00527       PORT_INFO_ACCESS_NA       = 9,       /* BOOL8      Port is not accessible. */
00528       PORT_INFO_ACCESS_NI       = 10,      /* BOOL8      Port is not implemented. */
00529       PORT_INFO_VERSION         = 11,      /* STRING     Version of the port. */
00530       PORT_INFO_PORTNAME        = 12,      /* STRING     Name of the port as referenced in the XML description. */
00531 
00532       PORT_INFO_CUSTOM_ID       = 1000     /* Starting value for GenTL Producer custom IDs. */
00533     };
00534     typedef int32_t PORT_INFO_CMD;
00535 
00536     /* This enumeration defines enum values returned by the URL_INFO_SCHEME command.
00537      introduced in GenTL v1.5 */
00538     enum URL_SCHEME_IDS
00539     {
00540       URL_SCHEME_LOCAL         = 0,        /* The XML can be read from the local register map */
00541       URL_SCHEME_HTTP          = 1,        /* The XML can be downloaded from a http server */
00542       URL_SCHEME_FILE          = 2,        /* The XML can be read from the local hard drive */
00543 
00544       URL_SCHEME_CUSTOM_ID     = 1000      /* Starting value for custom scheme locations */
00545     };
00546     typedef int32_t URL_SCHEME_ID;
00547 
00548     /* This enumeration defines commands to retrieve information with the GenICam::TL::Client::GCGetPortURLInfo
00549      function on a module or remote device handle. Introduced in GenTL v1.1 */
00550     enum URL_INFO_CMD_LIST
00551     {
00552       URL_INFO_URL                   = 0,  /* STRING     URL as defined in chapter 4.1.2 GenTL v1.1  */
00553       URL_INFO_SCHEMA_VER_MAJOR      = 1,  /* INT32      Major version of the schema this URL refers to. GenTL v1.1 */
00554       URL_INFO_SCHEMA_VER_MINOR      = 2,  /* INT32      Minor version of the schema this URL refers to. GenTL v1.1 */
00555       URL_INFO_FILE_VER_MAJOR        = 3,  /* INT32      Major version of the XML-file this URL refers to. GenTL v1.1 */
00556       URL_INFO_FILE_VER_MINOR        = 4,  /* INT32      Minor version of the XML-file this URL refers to. GenTL v1.1 */
00557       URL_INFO_FILE_VER_SUBMINOR     = 5,  /* INT32      Subminor version of the XML-file this URL refers to. GenTL v1.1 */
00558       URL_INFO_FILE_SHA1_HASH        = 6,  /* BUFFER     160-bit SHA1 Hash code of XML-file. GenTL v1.4 */
00559       URL_INFO_FILE_REGISTER_ADDRESS = 7,  /* UINT64     Register address in the device's register map. GenTL v1.5 */
00560       URL_INFO_FILE_SIZE             = 8,  /* UINT64     File size in bytes. GenTL v1.5 */
00561       URL_INFO_SCHEME                = 9,  /* INT32      Scheme of the URL as defined in URL_SCHEME_IDS. GenTL v1.5 */
00562       URL_INFO_FILENAME              = 10, /* STRING     File name if the scheme of the URL is file. GenTL v1.5 */
00563 
00564       URL_INFO_CUSTOM_ID             = 1000     /* Starting value for GenTL Producer custom IDs. */
00565     };
00566     typedef int32_t URL_INFO_CMD;  /* GenTL v1.1 */
00567 
00568     /* Known event types that can be registered on certain modules with the GenICam::TL::Client::GCRegisterEvent function. */
00569     enum EVENT_TYPE_LIST
00570     {
00571       EVENT_ERROR               = 0,     /* Notification on module errors. */
00572       EVENT_NEW_BUFFER          = 1,     /* Notification on newly filled buffers. */
00573       EVENT_FEATURE_INVALIDATE  = 2,     /* Notification if a feature was changed by the GenTL Producer library and thus needs to be invalidated in the GenICam GenApi instance using the module. */
00574       EVENT_FEATURE_CHANGE      = 3,     /* Notification if the GenTL Producer library wants to manually set a feature in the GenICam GenApi instance using the module. */
00575       EVENT_REMOTE_DEVICE       = 4,     /* Notification if the GenTL Producer wants to inform the GenICam GenApi instance of the remote device that a GenApi compatible event was fired. */
00576       EVENT_MODULE              = 5,     /* Notification if the GenTL Producer wants to inform the GenICam GenApi instance of the module that a GenApi compatible event was fired.  GenTL v1.4 */
00577 
00578       EVENT_CUSTOM_ID           = 1000   /* Starting value for GenTL Producer custom IDs. */
00579     };
00580     typedef int32_t  EVENT_TYPE;
00581 
00582     /* Event info command */
00583     enum EVENT_INFO_CMD_LIST
00584     {
00585       EVENT_EVENT_TYPE            = 0,    /* INT32      The event type of the event handle (EVENT_TYPE enum value). */
00586       EVENT_NUM_IN_QUEUE          = 1,    /* SIZET      Number of events in the event data queue. */
00587       EVENT_NUM_FIRED             = 2,    /* UINT64     Number of events that were fired since the creation of the module. */
00588       EVENT_SIZE_MAX              = 3,    /* SIZET      Max size of data carried with an event in bytes. GenTL v1.2 */
00589       EVENT_INFO_DATA_SIZE_MAX    = 4,    /* SIZET      Max size of data provided through EventGetDataInfo in bytes. GenTL v1.2 */
00590 
00591       EVENT_INFO_CUSTOM_ID        = 1000  /* Starting value for GenTL Producer custom IDs. */
00592     };
00593     typedef int32_t EVENT_INFO_CMD;
00594 
00595     /* Event data info command */
00596     enum EVENT_DATA_INFO_CMD_LIST
00597     {
00598       EVENT_DATA_ID           = 0,      /* Event specific    Unique Event ID (String or Number)*/
00599       EVENT_DATA_VALUE        = 1,      /* Event specific Data */
00600       EVENT_DATA_NUMID        = 2,      /* UINT64   Numeric representation of the unique Event ID, GenTL v1.3. */
00601 
00602       EVENT_DATA_CUSTOM_ID    = 1000    /* Starting value for GenTL Producer custom IDs. */
00603     };
00604     typedef int32_t EVENT_DATA_INFO_CMD;
00605 
00606     /* Structure of the data returned from a signaled "New Buffer" event. */
00607 #   pragma pack (push, 1)
00608     typedef struct S_EVENT_NEW_BUFFER
00609     {
00610       BUFFER_HANDLE   BufferHandle;        /* Buffer handle which contains new data. */
00611       void*           pUserPointer;        /* User pointer provided at announcement of the buffer. */
00612     } EVENT_NEW_BUFFER_DATA;
00613 #   pragma pack (pop)
00614 
00615     /* Structure to be use with GCWritePortStacked and GCReadPortStacked. */
00616 #   pragma pack (push, 1)
00617     typedef struct S_PORT_REGISTER_STACK_ENTRY
00618     {
00619       uint64_t   Address;        /* Address of the register. */
00620       void*      pBuffer;        /* Pointer to the buffer containing the data. */
00621       size_t     Size;           /* Number of bytes to read write. */
00622     } PORT_REGISTER_STACK_ENTRY;
00623 #   pragma pack (pop)
00624 
00625 #   pragma pack (push, 1)
00626     /* Structure carrying information about a single chunk in the buffer, V1.3 */
00627     typedef struct S_SINGLE_CHUNK_DATA
00628     {
00629       uint64_t ChunkID;       /* Numeric representation of ChunkID */
00630       ptrdiff_t ChunkOffset;  /* Chunk offset in the buffer */
00631       size_t ChunkLength;     /* Size of the chunk data */
00632     } SINGLE_CHUNK_DATA;
00633 #   pragma pack (pop)
00634 
00635 
00636     /* C API Interface Functions */
00637 #   define GC_API GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE
00638     GC_API GCGetInfo               ( TL_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00639 
00640     GC_API GCGetLastError          ( GC_ERROR *piErrorCode, char *sErrText, size_t *piSize );
00641 
00642     GC_API GCInitLib               ( void );
00643     GC_API GCCloseLib              ( void );
00644 
00645     GC_API GCReadPort              ( PORT_HANDLE hPort, uint64_t iAddress, void *pBuffer, size_t *piSize );
00646     GC_API GCWritePort             ( PORT_HANDLE hPort, uint64_t iAddress, const void *pBuffer, size_t *piSize );
00647     GC_API GCGetPortURL            ( PORT_HANDLE hPort, char *sURL, size_t *piSize );
00648 
00649     GC_API GCGetPortInfo           ( PORT_HANDLE hPort, PORT_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00650 
00651     GC_API GCRegisterEvent         ( EVENTSRC_HANDLE hEventSrc, EVENT_TYPE iEventID, EVENT_HANDLE *phEvent );
00652     GC_API GCUnregisterEvent       ( EVENTSRC_HANDLE hEventSrc, EVENT_TYPE iEventID );
00653 
00654     GC_API EventGetData            ( EVENT_HANDLE hEvent, void *pBuffer, size_t *piSize, uint64_t iTimeout );
00655     GC_API EventGetDataInfo        ( EVENT_HANDLE hEvent, const void *pInBuffer, size_t iInSize, EVENT_DATA_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pOutBuffer, size_t *piOutSize );
00656     GC_API EventGetInfo            ( EVENT_HANDLE hEvent, EVENT_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00657     GC_API EventFlush              ( EVENT_HANDLE hEvent );
00658     GC_API EventKill               ( EVENT_HANDLE hEvent );
00659 
00660     GC_API TLOpen                  ( TL_HANDLE *phTL );
00661     GC_API TLClose                 ( TL_HANDLE hTL );
00662     GC_API TLGetInfo               ( TL_HANDLE hTL, TL_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00663 
00664     GC_API TLGetNumInterfaces      ( TL_HANDLE hTL, uint32_t *piNumIfaces );
00665     GC_API TLGetInterfaceID        ( TL_HANDLE hTL, uint32_t iIndex,  char *sID, size_t *piSize );
00666     GC_API TLGetInterfaceInfo      ( TL_HANDLE hTL, const char *sIfaceID, INTERFACE_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00667     GC_API TLOpenInterface         ( TL_HANDLE hTL, const char *sIfaceID, IF_HANDLE *phIface );
00668     GC_API TLUpdateInterfaceList   ( TL_HANDLE hTL, bool8_t *pbChanged, uint64_t iTimeout );
00669 
00670     GC_API IFClose                 ( IF_HANDLE hIface );
00671     GC_API IFGetInfo               ( IF_HANDLE hIface, INTERFACE_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00672 
00673     GC_API IFGetNumDevices         ( IF_HANDLE hIface, uint32_t *piNumDevices );
00674     GC_API IFGetDeviceID           ( IF_HANDLE hIface, uint32_t iIndex, char *sIDeviceID, size_t *piSize );
00675     GC_API IFUpdateDeviceList      ( IF_HANDLE hIface, bool8_t *pbChanged, uint64_t iTimeout );
00676     GC_API IFGetDeviceInfo         ( IF_HANDLE hIface, const char *sDeviceID, DEVICE_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00677     GC_API IFOpenDevice            ( IF_HANDLE hIface, const char *sDeviceID, DEVICE_ACCESS_FLAGS iOpenFlags, DEV_HANDLE *phDevice );
00678 
00679     GC_API DevGetPort              ( DEV_HANDLE hDevice, PORT_HANDLE *phRemoteDevice );
00680     GC_API DevGetNumDataStreams    ( DEV_HANDLE hDevice, uint32_t *piNumDataStreams );
00681     GC_API DevGetDataStreamID      ( DEV_HANDLE hDevice, uint32_t iIndex, char *sDataStreamID, size_t *piSize );
00682     GC_API DevOpenDataStream       ( DEV_HANDLE hDevice, const char *sDataStreamID, DS_HANDLE *phDataStream );
00683     GC_API DevGetInfo              ( DEV_HANDLE hDevice, DEVICE_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00684     GC_API DevClose                ( DEV_HANDLE hDevice );
00685 
00686     GC_API DSAnnounceBuffer        ( DS_HANDLE hDataStream, void *pBuffer, size_t iSize, void *pPrivate, BUFFER_HANDLE *phBuffer );
00687     GC_API DSAllocAndAnnounceBuffer( DS_HANDLE hDataStream, size_t iSize, void *pPrivate, BUFFER_HANDLE *phBuffer );
00688     GC_API DSFlushQueue            ( DS_HANDLE hDataStream, ACQ_QUEUE_TYPE iOperation );
00689     GC_API DSStartAcquisition      ( DS_HANDLE hDataStream, ACQ_START_FLAGS iStartFlags, uint64_t iNumToAcquire );
00690     GC_API DSStopAcquisition       ( DS_HANDLE hDataStream, ACQ_STOP_FLAGS iStopFlags );
00691     GC_API DSGetInfo               ( DS_HANDLE hDataStream, STREAM_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00692     GC_API DSGetBufferID           ( DS_HANDLE hDataStream, uint32_t iIndex, BUFFER_HANDLE *phBuffer );
00693     GC_API DSClose                 ( DS_HANDLE hDataStream );
00694 
00695     GC_API DSRevokeBuffer          ( DS_HANDLE hDataStream, BUFFER_HANDLE hBuffer, void **pBuffer, void **pPrivate );
00696     GC_API DSQueueBuffer           ( DS_HANDLE hDataStream, BUFFER_HANDLE hBuffer );
00697     GC_API DSGetBufferInfo         ( DS_HANDLE hDataStream, BUFFER_HANDLE hBuffer, BUFFER_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00698 
00699     /* GenTL v1.1 */
00700     GC_API GCGetNumPortURLs        ( PORT_HANDLE hPort, uint32_t *piNumURLs );
00701     GC_API GCGetPortURLInfo        ( PORT_HANDLE hPort, uint32_t iURLIndex, URL_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00702     GC_API GCReadPortStacked       ( PORT_HANDLE hPort, PORT_REGISTER_STACK_ENTRY *pEntries, size_t *piNumEntries );
00703     GC_API GCWritePortStacked      ( PORT_HANDLE hPort, PORT_REGISTER_STACK_ENTRY *pEntries, size_t *piNumEntries );
00704 
00705     /* GenTL v1.3 */
00706     GC_API DSGetBufferChunkData    ( DS_HANDLE hDataStream, BUFFER_HANDLE hBuffer, SINGLE_CHUNK_DATA *pChunkData, size_t *piNumChunks );
00707 
00708     /* GenTL v1.4 */
00709     GC_API IFGetParentTL           ( IF_HANDLE hIface, TL_HANDLE *phSystem ); 
00710     GC_API DevGetParentIF          ( DEV_HANDLE hDevice, IF_HANDLE *phIface );
00711     GC_API DSGetParentDev          ( DS_HANDLE hDataStream, DEV_HANDLE *phDevice );
00712 
00713     /* GenTL v1.5 */
00714     GC_API DSGetNumBufferParts     ( DS_HANDLE hDataStream, BUFFER_HANDLE hBuffer, uint32_t *piNumParts );
00715     GC_API DSGetBufferPartInfo     ( DS_HANDLE hDataStream, BUFFER_HANDLE hBuffer, uint32_t iPartIndex, BUFFER_PART_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00716 
00717     /* typedefs for dynamic loading */
00718 #   define GC_API_P(function) typedef GC_ERROR( GC_CALLTYPE *function )
00719     GC_API_P(PGCGetInfo               )( TL_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00720     GC_API_P(PGCGetLastError          )( GC_ERROR *piErrorCode, char *sErrText, size_t *piSize );
00721     GC_API_P(PGCInitLib               )( void );
00722     GC_API_P(PGCCloseLib              )( void );
00723     GC_API_P(PGCReadPort              )( PORT_HANDLE hPort, uint64_t iAddress, void *pBuffer, size_t *piSize );
00724     GC_API_P(PGCWritePort             )( PORT_HANDLE hPort, uint64_t iAddress, const void *pBuffer, size_t *piSize );
00725     GC_API_P(PGCGetPortURL            )( PORT_HANDLE hPort, char *sURL, size_t *piSize );
00726     GC_API_P(PGCGetPortInfo           )( PORT_HANDLE hPort, PORT_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00727 
00728     GC_API_P(PGCRegisterEvent         )( EVENTSRC_HANDLE hEventSrc, EVENT_TYPE iEventID, EVENT_HANDLE *phEvent );
00729     GC_API_P(PGCUnregisterEvent       )( EVENTSRC_HANDLE hEventSrc, EVENT_TYPE iEventID );
00730     GC_API_P(PEventGetData            )( EVENT_HANDLE hEvent, void *pBuffer, size_t *piSize, uint64_t iTimeout );
00731     GC_API_P(PEventGetDataInfo        )( EVENT_HANDLE hEvent, const void *pInBuffer, size_t iInSize, EVENT_DATA_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pOutBuffer, size_t *piOutSize );
00732     GC_API_P(PEventGetInfo            )( EVENT_HANDLE hEvent, EVENT_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00733     GC_API_P(PEventFlush              )( EVENT_HANDLE hEvent );
00734     GC_API_P(PEventKill               )( EVENT_HANDLE hEvent );
00735     GC_API_P(PTLOpen                  )( TL_HANDLE *phTL );
00736     GC_API_P(PTLClose                 )( TL_HANDLE hTL );
00737     GC_API_P(PTLGetInfo               )( TL_HANDLE hTL, TL_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00738     GC_API_P(PTLGetNumInterfaces      )( TL_HANDLE hTL, uint32_t *piNumIfaces );
00739     GC_API_P(PTLGetInterfaceID        )( TL_HANDLE hTL, uint32_t iIndex, char *sID, size_t *piSize );
00740     GC_API_P(PTLGetInterfaceInfo      )( TL_HANDLE hTL, const char *sIfaceID, INTERFACE_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00741     GC_API_P(PTLOpenInterface         )( TL_HANDLE hTL, const char *sIfaceID, IF_HANDLE *phIface );
00742     GC_API_P(PTLUpdateInterfaceList   )( TL_HANDLE hTL, bool8_t *pbChanged, uint64_t iTimeout );
00743     GC_API_P(PIFClose                 )( IF_HANDLE hIface );
00744     GC_API_P(PIFGetInfo               )( IF_HANDLE hIface, INTERFACE_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00745     GC_API_P(PIFGetNumDevices         )( IF_HANDLE hIface, uint32_t *piNumDevices );
00746     GC_API_P(PIFGetDeviceID           )( IF_HANDLE hIface, uint32_t iIndex, char *sIDeviceID, size_t *piSize );
00747     GC_API_P(PIFUpdateDeviceList      )( IF_HANDLE hIface, bool8_t *pbChanged, uint64_t iTimeout );
00748     GC_API_P(PIFGetDeviceInfo         )( IF_HANDLE hIface, const char *sDeviceID, DEVICE_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00749     GC_API_P(PIFOpenDevice            )( IF_HANDLE hIface, const char *sDeviceID, DEVICE_ACCESS_FLAGS iOpenFlags, DEV_HANDLE *phDevice );
00750 
00751     GC_API_P(PDevGetPort              )( DEV_HANDLE hDevice, PORT_HANDLE *phRemoteDevice );
00752     GC_API_P(PDevGetNumDataStreams    )( DEV_HANDLE hDevice, uint32_t *piNumDataStreams );
00753     GC_API_P(PDevGetDataStreamID      )( DEV_HANDLE hDevice, uint32_t iIndex, char *sDataStreamID, size_t *piSize );
00754     GC_API_P(PDevOpenDataStream       )( DEV_HANDLE hDevice, const char *sDataStreamID, DS_HANDLE *phDataStream );
00755     GC_API_P(PDevGetInfo              )( DEV_HANDLE hDevice, DEVICE_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00756     GC_API_P(PDevClose                )( DEV_HANDLE hDevice );
00757 
00758     GC_API_P(PDSAnnounceBuffer        )( DS_HANDLE hDataStream, void *pBuffer, size_t iSize, void *pPrivate, BUFFER_HANDLE *phBuffer );
00759     GC_API_P(PDSAllocAndAnnounceBuffer)( DS_HANDLE hDataStream, size_t iSize, void *pPrivate, BUFFER_HANDLE *phBuffer );
00760     GC_API_P(PDSFlushQueue            )( DS_HANDLE hDataStream, ACQ_QUEUE_TYPE iOperation );
00761     GC_API_P(PDSStartAcquisition      )( DS_HANDLE hDataStream, ACQ_START_FLAGS iStartFlags, uint64_t iNumToAcquire );
00762     GC_API_P(PDSStopAcquisition       )( DS_HANDLE hDataStream, ACQ_STOP_FLAGS iStopFlags );
00763     GC_API_P(PDSGetInfo               )( DS_HANDLE hDataStream, STREAM_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00764     GC_API_P(PDSGetBufferID           )( DS_HANDLE hDataStream, uint32_t iIndex, BUFFER_HANDLE *phBuffer );
00765     GC_API_P(PDSClose                 )( DS_HANDLE hDataStream );
00766     GC_API_P(PDSRevokeBuffer          )( DS_HANDLE hDataStream, BUFFER_HANDLE hBuffer, void **pBuffer, void **pPrivate );
00767     GC_API_P(PDSQueueBuffer           )( DS_HANDLE hDataStream, BUFFER_HANDLE hBuffer );
00768     GC_API_P(PDSGetBufferInfo         )( DS_HANDLE hDataStream, BUFFER_HANDLE hBuffer, BUFFER_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00769 
00770     /* GenTL v1.1 */
00771     GC_API_P(PGCGetNumPortURLs        )( PORT_HANDLE hPort, uint32_t *iNumURLs );
00772     GC_API_P(PGCGetPortURLInfo        )( PORT_HANDLE hPort, uint32_t iURLIndex, URL_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00773     GC_API_P(PGCReadPortStacked       )( PORT_HANDLE hPort, PORT_REGISTER_STACK_ENTRY *pEntries, size_t *piNumEntries );
00774     GC_API_P(PGCWritePortStacked      )( PORT_HANDLE hPort, PORT_REGISTER_STACK_ENTRY *pEntries, size_t *piNumEntries );
00775 
00776     /* GenTL v1.3 */
00777     GC_API_P(PDSGetBufferChunkData    )( DS_HANDLE hDataStream, BUFFER_HANDLE hBuffer, SINGLE_CHUNK_DATA *pChunkData, size_t *piNumChunks );
00778 
00779     /* GenTL v1.4 */
00780     GC_API_P(PIFGetParentTL           )( IF_HANDLE hIface, TL_HANDLE *phSystem ); 
00781     GC_API_P(PDevGetParentIF          )( DEV_HANDLE hDevice, IF_HANDLE *phIface );
00782     GC_API_P(PDSGetParentDev          )( DS_HANDLE hDataStream, DEV_HANDLE *phDevice );
00783 
00784     /* GenTL v1.5 */
00785     GC_API_P(PDSGetNumBufferParts     )( DS_HANDLE hDataStream, BUFFER_HANDLE hBuffer, uint32_t *piNumParts );
00786     GC_API_P(PDSGetBufferPartInfo     )( DS_HANDLE hDataStream, BUFFER_HANDLE hBuffer, uint32_t iPartIndex, BUFFER_PART_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize );
00787 #ifdef __cplusplus
00788   } /* end of namespace GenTL */
00789 } /* end of extern "C" */
00790 #endif
00791 #endif /* GC_TLI_CLIENT_H_ */


rc_visard_driver
Author(s): Heiko Hirschmueller , Christian Emmerich , Felix Ruess
autogenerated on Thu Jun 6 2019 20:43:02