/**************************************************************************** (c) 2004-2008 by STEMMER IMAGING GmbH License: This file is published under the license of the EMVA GenICam Standard Group. A text file describing the legal terms is included in your installation as 'license.txt'. If for some reason you are missing this file please contact the EMVA or visit the website (http://www.genicam.org) for a full copy. THIS SOFTWARE IS PROVIDED BY THE EMVA GENICAM STANDARD GROUP "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE EMVA GENICAM STANDARD GROUP OR CONTRIBUTORS 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. ****************************************************************************/ /// \file $Source:$ /// \brief GenICam Transport Layer Client Interface /// \version $Revision:$ /// \author rst ( SI ), cbi (IDS) /// \date $Date:$ /// \par Version history /// \li Version 0.1.0 First official version from the meeting in Pilsen /// \li Version 0.1.1 rst ( SI ) 0.4.160 /// added _E_INTERFACE_INFO_CMD_LIST_T_ enum name /// added _E_DEVICE_ACCCESS_STATUS_TYPE_T_ to be used with the /a IFGetDeviceInfo and DevGetInfo /// rename of the enum value DEVICE_INFO_ACCESSMODE to DEVICE_INFO_ACCESS_STATUS which now refers to _E_DEVICE_ACCCESS_STATUS_TYPE_T_ /// added Timeout parameter to update interface list and device list. /// \li Version 0.1.2 change datatype of timeout parameter of TLUpdateInterfaceList and IFUpdateDeviceList to uint64_t to match with the timeout in the event object. /// changed all enums to have a typedef to uint32_t with them to allow custom ids /// changed type of string constants to be char * instead of gcstring /// \li Version 0.1.3 rst (SI ), cbi (IDS) 0.4.163 /// adjusted parameter names to be closer aligned with the standard text /// changed typedefs for enums from uint32_t to int32_t /// removed default parameter /// added parameter name to DevGetPort function #ifndef GC_TLI_CLIENT_H_ #define GC_TLI_CLIENT_H_ #include #include #include #ifdef __cplusplus extern "C" { #endif namespace GenICam { namespace Client { # define STRING_BUF_SIZE 256 const uint32_t GenTLMajorVersion = 0; ///< defines the major version of the GenICam GenTL standard version this header is based on const uint32_t GenTLMinorVersion = 4; ///< defines the minor version of the GenICam GenTL standard version this header is based on const uint32_t GenTLSubMinorVersion = 163; ///< defines the sub minor version of the GenICam GenTL standard version this header is based on static const char *TLTypeMixedName = "Mixed"; ///< Type to use for several supported technologies static const char *TLTypeCustomName = "Custom"; ///< Type to use for custom technologies static const char *TLTypeGEVName = "GEV"; ///< Type to use for GigE Vision technology static const char *TLTypeCLName = "CL"; ///< Type to use for Camera Link technology static const char *TLTypeIIDCName = "IIDC"; ///< Type to use for IIDC 1394 technology static const char *TLTypeUVCName = "UVC"; ///< Type to use for USB video class devices static const char *TLSystemModuleName = "TLSystem"; ///< Name to identify a port belongs to the system module static const char *TLInterfaceModuleName = "TLInterface"; ///< Name to identify a port belongs to the interface module static const char *TLDeviceModuleName = "TLDevice"; ///< Name to identify a port belongs to the device module static const char *TLDataStreamModuleName = "TLDataStream"; ///< Name to identify a port belongs to the data stream module static const char *TLBufferModuleName = "TLBuffer"; ///< Name to identify a port belongs to the buffer module static const char *TLRemoteDeviceModuleName = "Device"; ///< Name to identify a port belongs to the remote device module // Handles typedef void * TL_HANDLE; ///< Transport Layer handle, obtained through the TLOpen typedef void * IF_HANDLE; ///< Interface handle, obtained through ::TLOpenInterface typedef void * DEV_HANDLE; ///< Device Handle, obtained through the ::TLOpenDevice typedef void * DS_HANDLE; ///< Handle to an image stream object, obtained through CreateDatastream typedef void * PORT_HANDLE; ///< A Port handle is used to access the register space of a port
/// a PORT_HANDLE can be on of the following
/// \li TL_HANDLE /// \li IF_HANDLE /// \li DEV_HANDLE /// \li A handle to a device port, obtained through ::DevGetPort /// \li DS_HANDLE /// \li BUFFER_HANDLE typedef void * BUFFER_HANDLE; ///< BufferHandle, obtained through the ::DSAnnounceBuffer function typedef void * EVENTSRC_HANDLE; ///< A Event source handle is used to register a OS Event and to retrieve a GenTL event handle
/// a EVENTSRC_HANDLE can be on of the following
/// \li TL_HANDLE /// \li IF_HANDLE /// \li DEV_HANDLE /// \li A handle to a device port, obtained through ::DevGetPort /// \li DS_HANDLE /// \li BUFFER_HANDLE typedef void * EVENT_HANDLE; ///< Event Handle /// \addtogroup LibEnums Library and System Enumerations /// @{ /// Defines the data type possible for the various Info functions. enum INFO_DATATYPE_LIST { INFO_DATATYPE_UNKNOWN = 0, ///< Unknown data type INFO_DATATYPE_STRING = 1, ///< 0-terminated C string (ASCII encoded). INFO_DATATYPE_STRINGLIST = 2, ///< Concatenated INFO_DATATYPE_STRING list. End of list is signaled with an additional 0. INFO_DATATYPE_INT16 = 3, ///< Signed 16 bit integer. INFO_DATATYPE_UINT16 = 4, ///< unsigned 16 bit integer INFO_DATATYPE_INT32 = 5, ///< signed 32 bit integer INFO_DATATYPE_UINT32 = 6, ///< unsigned 32 bit integer INFO_DATATYPE_INT64 = 7, ///< signed 64 bit integer INFO_DATATYPE_UINT64 = 8, ///< unsingned64 bit integer INFO_DATATYPE_FLOAT64 = 9, ///< Signed 64 bit floating point number. INFO_DATATYPE_PTR = 10, ///< Pointer type (void*). Size is platform dependent (32 bit on 32 bit platforms). INFO_DATATYPE_BOOL8 = 11, ///< Boolean value occupying 8 bit. 0 for false and anything for true. INFO_DATATYPE_SIZET = 12, ///< Platform dependent unsigned integer (32 bit on 32 bit platforms). INFO_DATATYPE_BUFFER = 13, ///< Like a INFO_DATATYPE_STRING but with arbitrary data and no 0 termination. INFO_DATATYPE_CUSTOM_ID = 1000 ///< Starting value for custom IDs. } ; typedef int32_t INFO_DATATYPE; /// System module information commands for the \a GenICam::TL::Client::TLGetInfo and \a GenICam::TL::Client::GCGetInfo functions. enum TL_INFO_CMD_LIST { TL_INFO_ID = 0, ///< STRING Transport layer vendor name. TL_INFO_VENDOR = 1, ///< STRING Transport layer vendor name. TL_INFO_MODEL = 2, ///< STRING Transport layer model name. TL_INFO_VERSION = 3, ///< STRING Transport layer revision. TL_INFO_TLTYPE = 4, ///< STRING Transport layer technologies that are supported. TL_INFO_NAME = 5, ///< STRING File name including extension of the library. TL_INFO_PATHNAME = 6, ///< STRING Full path including file name and extension of the library. 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). TL_INFO_CUSTOM_ID = 1000, ///< Starting value for custom IDs. } ; typedef int32_t TL_INFO_CMD; /// @} /// \addtogroup InterfaceEnums Interface Enumerations /// @{ /// This enumeration defines commands to retrieve information with the \a GenICam::TL::Client::IFGetInfo function from the Interface module. enum INTERFACE_INFO_CMD_LIST { INTERFACE_INFO_ID = 0, ///< STRING Unique ID of the interface. INTERFACE_INFO_DISPLAYNAME = 1, ///< STRING User readable name of the interface. INTERFACE_INFO_TLTYPE = 2, ///< STRING Transport layer technologies that are supported. INTERFACE_INFO_CUSTOM_ID = 1000 ///< Starting value for GenTL Producer custom IDs. } ; typedef int32_t INTERFACE_INFO_CMD; /// @} /// \addtogroup DevEnums Device Enumerations /// @{ /// This enumeration defines flags how a device is to be opened with the \a GenICam::TL::Client::IFOpenDevice function. enum DEVICE_ACCESS_FLAGS_LIST { DEVICE_ACCESS_UNKNOWN = 0, ///< Not used in a command. Can be used to initialize a variable to query that information. 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. DEVICE_ACCESS_READONLY = 2, ///< Open the device read only. All Port functions can only read from the device. 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. 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. DEVICE_ACCESS_CUSTOM_ID = 1000, ///< Starting value for GenTL Producer custom IDs. }; typedef int32_t DEVICE_ACCESS_FLAGS; /// This enumeration defines values for the accessibility of the device to be returned in the \a GenICam::TL::Client::DevGetInfo function on a device handle. enum DEVICE_ACCCESS_STATUS_LIST { DEVICE_ACCESS_STATUS_UNKNOWN = 0, ///< The device accessibility is not known DEVICE_ACCESS_STATUS_READWRITE = 1, ///< The device is available for read/write access DEVICE_ACCESS_STATUS_READONLY = 2, ///< The device is available for readonly access DEVICE_ACCESS_STATUS_NOACCESS = 3, ///< The device is not accessible DEVICE_ACCESS_STATUS_CUSTOM_ID = 1000 ///< Starting value for custom IDs. }; typedef int32_t DEVICE_ACCESS_STATUS; /// This enumeration defines commands to retrieve information with the \a GenICam::TL::Client::DevGetInfo function on a device handle. enum DEVICE_INFO_CMD_LIST { DEVICE_INFO_ID = 0, ///< STRING Unique ID of the device. DEVICE_INFO_VENDOR = 1, ///< STRING Device vendor name. DEVICE_INFO_MODEL = 2, ///< STRING Device model name. DEVICE_INFO_TLTYPE = 3, ///< STRING Transport layer technologies that are supported. DEVICE_INFO_DISPLAYNAME = 4, ///< STRING String containing a display name for the device ( including a unique id ) DEVICE_INFO_ACCESS_STATUS = 5, ///< INT32 Gets the access mode the GenTL Producer has on the opened device. (DEVICE_ACCESS_STATUS enumeration value). DEVICE_INFO_CUSTOM_ID = 1000, ///< Starting value for GenTL Producer custom IDs. } ; typedef int32_t DEVICE_INFO_CMD; /// @} /// \addtogroup DsEnums Data Stream Enumerations /// @{ /// Acquisition stop flags /// This enumeration defines special stop flags for the acquisition engine. The function used is \a GenICam::TL::Client::DSStopAcquisition. enum ACQ_STOP_FLAGS_LIST { /// So Stop Flag set ACQ_STOP_FLAGS_DEFAULT = 0, ///< Stop the acquisition engine when the currently running tasks like filling a buffer are completed (default behavior). ACQ_STOP_FLAG_KILL = 1, ///< Stop the acquisition engine immediately and leave buffers currently being filled in the Input Buffer Pool. ACQ_STOP_CUSTOM_ID = 1000 ///< Starting value for GenTL Producer custom IDs. } ; typedef int32_t ACQ_STOP_FLAGS; /// Acquisition start flags /// This enumeration defines special start flags for the acquisition engine. The function used is \a GenICam::TL::Client::DSStartAcquisition. enum ACQ_START_FLAGS_LIST { ACQ_START_FLAGS_DEFAULT = 0, ///< Default behavior. ACQ_START_FLAGS_CUSTOM_ID = 1000, ///< Starting value for GenTL Producer custom IDs. } ; typedef int32_t ACQ_START_FLAGS; /// This enumeration commands from which to which queue/pool buffers are flushed with the \a GenICam::TL::Client::DSFlushQueue function. enum ACQ_QUEUE_TYPE_LIST { 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. ACQ_QUEUE_OUTPUT_DISCARD = 1, ///< Discards all buffers in the output queue and if necessary remove the entries from the event data queue. 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. ACQ_QUEUE_UNQUEUED_TO_INPUT = 3, ///< Puts all buffers that are not in the input pool or the output queue in the input pool. ACQ_QUEUE_ALL_DISCARD = 4, ///< Discards all buffers in the input pool and output queue. ACQ_QUEUE_CUSTOM_ID = 1000, ///< Starting value for GenTL Producer custom IDs. }; typedef int32_t ACQ_QUEUE_TYPE; /// This enumeration defines commands to retrieve information with the \a GenICam::TL::Client::DSGetInfo function on a data stream handle enum STREAM_INFO_CMD_LIST { STREAM_INFO_ID = 0, ///< STRING Unique ID of the data stream. STREAM_INFO_NUM_DELIVERED = 1, ///< UINT64 Number of acquired frames since last acquisition start. STREAM_INFO_NUM_UNDERRUN = 2, ///< UINT64 Number of lost frames due to queue underrun. STREAM_INFO_NUM_ANNOUNCED = 3, ///< SIZET Number of announced buffers. STREAM_INFO_NUM_QUEUED = 4, ///< SIZET Number of buffers in the input pool. STREAM_INFO_NUM_AWAIT_DELIVERY = 5, ///< SIZET Number of buffers in the output queue. STREAM_INFO_NUM_STARTED = 6, ///< UINT64 Number of frames started in the acquisition engine. STREAM_INFO_PAYLOAD_SIZE = 7, ///< SIZET Size of the expected data in bytes. STREAM_INFO_IS_GRABBING = 8, ///< BOOL8 Flag indicating whether the acquisition engine is started or not. STREAM_INFO_DEFINES_PAYLOADSIZE = 9, ///< BOOL8 Flag that indicated that this data stream defines a payload size independent from the remote device. STREAM_INFO_TLTYPE = 10, ///< STRING Transport layer technologies that are supported. STREAM_INFO_CUSTOM_ID = 1000, ///< Starting value for GenTL Producer custom IDs. }; typedef int32_t STREAM_INFO_CMD; /// This enumeration defines commands to retrieve information with the \a GenICam::TL::Client::DSGetBufferInfo function on a buffer handle. enum BUFFER_INFO_CMD_LIST { BUFFER_INFO_BASE = 0, ///< PTR Base address of the buffer memory. BUFFER_INFO_SIZE = 1, ///< SIZET Size of the buffer in bytes. BUFFER_INFO_USER_PTR = 2, ///< PTR Private data pointer of the GenTL Consumer. BUFFER_INFO_TIMESTAMP = 3, ///< UINT64 Timestamp the buffer was acquired. BUFFER_INFO_NEW_DATA = 4, ///< BOOL8 Flag to indicate that the buffer contains new data since the last call. BUFFER_INFO_ISQUEUED = 5, ///< BOOL8 Flag to indicate if the buffer is in the input pool or output queue. BUFFER_INFO_ISACQUIERING = 6, ///< BOOL8 Flag to indicate that the buffer is currently being filled with data. BUFFER_INFO_ISINCOMPLETE = 7, ///< BOOL8 Flag to indicate that a buffer was filled but an error occurred during that process. BUFFER_INFO_TLTYPE = 8, ///< STRING Transport layer technologies that are supported. 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. BUFFER_INFO_CUSTOM_ID = 1000, ///< Starting value for GenTL Producer custom IDs. }; typedef int32_t BUFFER_INFO_CMD; /// @} /// \addtogroup PortEnums Port Enumerations /// @{ /// This enumeration defines commands to retrieve information with the \a GenICam::TL::Client::GCGetPortInfo function on a module or remote device handle. enum PORT_INFO_CMD_LIST { PORT_INFO_ID = 0, ///< STRING Unique ID of the port. PORT_INFO_VENDOR = 1, ///< STRING Port vendor name. PORT_INFO_MODEL = 2, ///< STRING Port model name. PORT_INFO_TLTYPE = 3, ///< STRING Transport layer technologies that are supported. PORT_INFO_MODULE = 4, ///< STRING GenTL Module the port refers to. PORT_INFO_LITTLE_ENDIAN = 5, ///< BOOL8 Flag indicating that the port’s data is little endian. PORT_INFO_BIG_ENDIAN = 6, ///< BOOL8 Flag indicating that the port’s data is big endian. PORT_INFO_ACCESS_READ = 7, ///< BOOL8 Port has read access. PORT_INFO_ACCESS_WRITE = 8, ///< BOOL8 Port has write access. PORT_INFO_ACCESS_NA = 9, ///< BOOL8 Port in not accessible. PORT_INFO_ACCESS_NI = 10, ///< BOOL8 Port is not implemented. PORT_INFO_VERSION = 11, ///< STRING Revision of the port. PORT_INFO_PORTNAME = 12, ///< STRING Name of the port as referenced in the XML description. PORT_INFO_CUSTOM_ID = 1000, ///< Starting value for GenTL Producer custom IDs. }; typedef int32_t PORT_INFO_CMD; /// @} /// \addtogroup EventEnums Signaling Enumerations /// @{ /// Known event types that can be registered on certain modules with the \a GenICam::TL::Client::GCRegisterEvent function. enum EVENT_TYPE_LIST { EVENT_ERROR = 0, ///< Notification on module errors. EVENT_NEW_BUFFER = 1, ///< Notification on newly filled buffers. 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. EVENT_FEATURE_CHANGE = 3, ///< Notification if the GenTL Producer library wants to manually set a feature in the GenICam GenApi instance using the module. EVENT_FEATURE_DEVEVENT = 4, ///< Notification if the GenTL Producer wants to inform the GenICam GenApi instance of the remote device that a GenApi compatible event was fired. EVENT_CUSTOM_ID = 1000, ///< Starting value for GenTL Producer custom events. }; typedef int32_t EVENT_TYPE; // Event info command enum EVENT_INFO_CMD_LIST { EVENT_EVENT_TYPE = 0, ///< INT32 The event type of the event handle (EVENT_TYPE enum value). EVENT_NUM_IN_QUEUE = 1, ///< SIZET Number of events in the event data queue. EVENT_NUM_FIRED = 2, ///< UINT64 Number of events that were fired since the creation of the module. EVENT_INFO_CUSTOM_ID = 1000, ///< Starting value for GenTL Producer custom IDs. }; typedef int32_t EVENT_INFO_CMD; // Event data info command u enum EVENT_DATA_INFO_CMD_LIST { EVENT_DATA_ID = 0, ///< GEV Event ID EVENT_DATA_VALUE = 1, ///< Device Data //EVENT_DATA_STREAMCHANNELINDEX = 2, ///< Stream channel index, mandatory only for GigE //EVENT_DATA_BLOCKID = 3, ///< Block id, mandatory only for GigE //EVENT_DATA_TIMESTAMP = 4, ///< Timestamp, mandatory only for GigE EVENT_DATA_CUSTOM_ID = 1000, ///< Device Data } ; typedef int32_t EVENT_DATA_INFO_CMD; /// @} /// \addtogroup EventStructs Signaling Structures /// @{ /// Structure of the data returned from a signaled “New Buffer” event. typedef struct _S_EVENT_NEW_BUFFER { BUFFER_HANDLE BufferHandle; ///< Buffer handle which contains new data. void* UserPointer; ///< User pointer provided at announcement of the buffer. }EVENT_NEW_BUFFER_DATA; /// @} /// \addtogroup DLLInfo TL Global Info Function /// @{ EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE GCGetInfo ( TL_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize ); /// @} /// \addtogroup TLError Error handling /// @{ EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE GCGetLastError ( GC_ERROR *piErrorCode, char *sErrText, size_t *piSize); /// @} /// @} /// \addtogroup LibInit Library Initialization Functions /// @{ EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE GCInitLib ( void ); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE GCCloseLib ( void ); /// @} /// @} /// \addtogroup PortInterface Port Functions /// @{ EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE GCReadPort ( PORT_HANDLE hPort, uint64_t iAddress, void *pBuffer, size_t *piSize); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE GCWritePort ( PORT_HANDLE hPort, uint64_t iAddress, const void *pBuffer, size_t *piSize); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE GCGetPortURL ( PORT_HANDLE hPort, char *sURL, size_t *piSize ); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE GCGetPortInfo ( PORT_HANDLE hPort, PORT_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize ); /// @} /// \addtogroup EventSourceInterface Event Source functions /// @{ EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE GCRegisterEvent ( EVENTSRC_HANDLE hEventSrc, EVENT_TYPE iEventID, EVENT_HANDLE *phEvent); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE GCUnregisterEvent ( EVENTSRC_HANDLE hEventSrc, EVENT_TYPE iEventID); /// @} /// \addtogroup EventInterface Signaling functions /// @{ EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE EventGetData ( EVENT_HANDLE hEvent, void *pBuffer, size_t *piSize, uint64_t iTimeout); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE EventGetDataInfo ( EVENT_HANDLE hEvent, const void *pInBuffer, size_t iInSize, EVENT_DATA_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pOutBuffer, size_t *piOutSize); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE EventGetInfo ( EVENT_HANDLE hEvent, EVENT_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE EventFlush ( EVENT_HANDLE hEvent ); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE EventKill ( EVENT_HANDLE hEvent ); /// \addtogroup TLAccess TL access functions /// @{ EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE TLOpen ( TL_HANDLE *phTL); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE TLClose ( TL_HANDLE hTL); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE TLGetInfo ( TL_HANDLE hTL, TL_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize ); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE TLGetNumInterfaces ( TL_HANDLE hTL, uint32_t *piNumIfaces ); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE TLGetInterfaceID ( TL_HANDLE hTL, uint32_t iIndex, char * sID, size_t *piSize ); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE TLGetInterfaceInfo ( TL_HANDLE hTL, const char *sIfaceID, INTERFACE_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void * pBuffer, size_t *piSize ); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE TLOpenInterface ( TL_HANDLE hTL, const char *sIfaceID, IF_HANDLE *phIface); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE TLUpdateInterfaceList ( TL_HANDLE hTL, bool8_t *pbChanged, uint64_t iTimeout ); /// @} /// \addtogroup InterfaceAccess Interface access functions /// @{ // obsolete EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE IFClose ( IF_HANDLE hIface); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE IFGetInfo ( IF_HANDLE hIface, INTERFACE_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void * pBuffer, size_t *piSize); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE IFGetNumDevices ( IF_HANDLE hIface, uint32_t *piNumDevices ); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE IFGetDeviceID ( IF_HANDLE hIface, uint32_t iIndex, char * sIDeviceID, size_t *piSize ); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE IFUpdateDeviceList ( IF_HANDLE hIface, bool8_t *pbChanged, uint64_t iTimeout ); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE IFGetDeviceInfo ( IF_HANDLE hIface, const char *sDeviceID, DEVICE_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void* pBuffer, size_t *piSize); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE IFOpenDevice ( IF_HANDLE hIface, const char *sDeviceID, DEVICE_ACCESS_FLAGS iOpenFlags, DEV_HANDLE *phDevive ); /// @} /// \addtogroup DeviceAccess Device access functions /// @{ EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DevGetPort ( DEV_HANDLE hDevice, PORT_HANDLE *phRemoteDevice); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DevGetNumDataStreams ( DEV_HANDLE hDevice, uint32_t *piNumDataStreams); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DevGetDataStreamID ( DEV_HANDLE hDevice, uint32_t iIndex, char * sDataStreamID, size_t *piSize ); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DevOpenDataStream ( DEV_HANDLE hDevice, const char *sDataStreamID, DS_HANDLE *phDataStream); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DevGetInfo ( DEV_HANDLE hDevice, DEVICE_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void* pBuffer, size_t *piSize); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DevClose ( DEV_HANDLE hDevice ); /// @} /// \addtogroup DSFunctions DataStream Functions /// @{ EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DSAnnounceBuffer ( DS_HANDLE hDataStream, void *pBuffer, size_t iSize, void *pPrivate, BUFFER_HANDLE *phBuffer ); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DSAllocAndAnnounceBuffer( DS_HANDLE hDataStream, size_t iSize, void *pPrivate, BUFFER_HANDLE *phBuffer ); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DSFlushQueue ( DS_HANDLE hDataStream, ACQ_QUEUE_TYPE iOperation); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DSStartAcquisition ( DS_HANDLE hDataStream, ACQ_START_FLAGS iStartFlags /*= ACQ_START_FLAGS_DEFAULT*/, uint64_t iNumToAcquire /*= 0xFFFFFFFFFFFFFFFF*/); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DSStopAcquisition ( DS_HANDLE hDataStream, ACQ_STOP_FLAGS iStopFlags /*= ACQ_STOP_FLAGS_DEFAULT*/); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DSGetInfo ( DS_HANDLE hDataStream, STREAM_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DSGetBufferID ( DS_HANDLE hDataStream, uint32_t iIndex, BUFFER_HANDLE *phBuffer); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DSClose ( DS_HANDLE hDataStream ); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DSRevokeBuffer ( DS_HANDLE hDataStream, BUFFER_HANDLE hBuffer, void **pBuffer, void **pPrivate); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DSQueueBuffer ( DS_HANDLE hDataStream, BUFFER_HANDLE hBuffer); EXTERN_C GC_IMPORT_EXPORT GC_ERROR GC_CALLTYPE DSGetBufferInfo ( DS_HANDLE hDataStream, BUFFER_HANDLE hBuffer, BUFFER_INFO_CMD iInfoCmd, INFO_DATATYPE *piType, void *pBuffer, size_t *piSize ); /// @} } // end of namespace Client } // end of namespace GenICam #ifdef __cplusplus } #endif #endif //GC_TLI_CLIENT_H_