123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542 |
- //-----------------------------------------------------------------------------
- // (c) 2008 by Basler Vision Technologies
- // Section: Vision Components
- // Project: GenApi
- // Author: Fritz Dierks
- // $Header$
- //
- // 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 'GenICam_license.pdf'.
- // 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
- \brief Exported C functions for camera link protocol drivers
- */
- #ifndef CLPROTOCOL_CLPROTOCOL_H
- #define CLPROTOCOL_CLPROTOCOL_H
- #include <CLProtocol\CLSerialTypes.h>
- //==============================================================================
- // Macros
- //==============================================================================
- #if (defined(__cplusplus) || defined(__cplusplus__))
- #define USER_EXTERN_C extern "C"
- #define USER_EXTERN_C_START extern "C" {
- #define USER_EXTERN_C_END }
- #else
- #define USER_EXTERN_C
- #define USER_EXTERN_C_START
- #define USER_EXTERN_C_END
- #endif
- #ifdef CLPROTOCOL_EXPORTS
- # define CLPROTOCOLEXPORT USER_EXTERN_C __declspec(dllexport)
- # define CLPROTOCOL_DECL __declspec(dllexport)
- #else
- # define CLPROTOCOLEXPORT USER_EXTERN_C __declspec(dllimport)
- # define CLPROTOCOL_DECL __declspec(dllimport)
- #endif
- #ifndef CLPROTOCOL
- #define CLPROTOCOL __cdecl
- #endif
- //==============================================================================
- // Types and Enums
- //==============================================================================
- typedef void (CLPROTOCOL *clp_logger_t)( CLINT32 level, const char* stringFormat, va_list argptr);
- USER_EXTERN_C_START
- typedef struct clpLogCallback_t
- {
- CLUINT32 id; //! Must be set to 0xeb6e1ca9
- clp_logger_t logger; //! The address of the logging function
- }clpLogCallback_t;
- USER_EXTERN_C_END
- //! Types of parameters to be accessed by clpGetParam/clpSetParam
- enum CLP_PARAMS
- {
- // Global parameters that do not use the Cookie when called.
- CLP_LOG_LEVEL = 1, //! A 32-bit value that contains the current log level.
- //! This parameter expects a value represented by the
- //! CLP_LOG_LEVEL_VALUE constants.
- CLP_LOG_CALLBACK = 2, //! A 32-bit value that contains a clpLogCallback_t pointer to the logger function.
-
- // Device related parameters that require a valid cookie to execute properly.
- CLP_DEVICE_BAUDERATE = -1, //! A 32-bit value that contains the baudrate used to communicate with the device.
- //! This parameter expects a value represented by the
- //! CL_BAUDRATE_XXX constants.
-
- CLP_DEVICE_SUPPORTED_BAUDERATES = -2, //! A 32-bit value that contains the baudrates
- //! supported by the device and the host.
- //! This read only parameter return one or more value(s) represented by the
- //! CL_BAUDRATE_XXX constants.
- };
- enum CLP_LOG_LEVEL_VALUE
- {
- CLP_LOG_FATAL = 0,
- CLP_LOG_ALERT = 100,
- CLP_LOG_CRIT = 200,
- CLP_LOG_ERROR = 300,
- CLP_LOG_WARN = 400,
- CLP_LOG_NOTICE = 500,
- CLP_LOG_INFO = 600,
- CLP_LOG_DEBUG = 700,
- CLP_LOG_NOTSET = 800
- };
- //==============================================================================
- // Exported Functions
- //==============================================================================
- class ISerial;
- /*! \ingroup PublicInterfaces */
- /*@{*/
- /*! \defgroup CLProtocolInterface CLProtocol C-Function Interface */
- /*@{*/
- /*!
- \brief This function is call to initialize the library after it is loaded.
- \param[in] logger A function pointer that contains a logging function.
- \param[in] logLevel The log level default value. This argument expects a value represented
- by the CLP_LOG_LEVEL_VALUE constants.
- \return On completion, this function returns one of the following status codes:
- \retval CL_ERR_NO_ERR No error occurred
- \return CL_ERR_INVALID_PTR The initialisation parameters are invalid.
- \return CL_ERR_IN_USE The library is already open
- */
- CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
- clpInitLib( clp_logger_t logger,
- CLP_LOG_LEVEL_VALUE logLevel);
- /*!
- \brief This function is call to close the library before unloading.
- \return On completion, this function returns one of the following status codes:
- \retval CL_ERR_NO_ERR No error occurred
- */
- CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
- clpCloseLib( void );
- /*!
- \brief This function returns a list of short device templates coded into a single string
- Short device templates can have the following form:
- - <CODE>"CameraManufacturer"</CODE>
- - <CODE>"CameraManufacturer#CameraFamily"</CODE>
- - <CODE>"CameraManufacturer#CameraFamily#CameraModel"</CODE>
-
- As compared to the long version the protocol driver dll's directory and file name is missing at the beginning.
- The device templates are separated by tabulators.
- The whole list is contained in a NULL terminated string.
- \param[out] pShortDeviceTemplates A pointer to a user-allocated buffer into which the function
- copies the list of device template names.
- \param[in,out] pBufferSize As an input, the value contains the size of the buffer that
- is passed through the pShortDeviceTemplates parameter.
- On successful return, this parameter contains the number of bytes written into the buffer,
- including the NULL termination character.
- On CL_ERR_BUFFER_TOO_SMALL, this parameter contains the size of the buffer needed to write
- the data text.
- \return At completion, this function returns one of the following status codes:
- \retval CL_ERR_NO_ERR No error occurred
- \retval CL_ERR_BUFFER_TOO_SMALL The pShortDeviceTemplates is too small
- */
- CLPROTOCOLEXPORT CLINT32 CLPROTOCOL clpGetShortDeviceIDTemplates ( CLINT8* pShortDeviceTemplates, CLUINT32* pBufferSize );
- /*!
- \brief Connects and identifies the device and returns a DeviceID
- This function connects to a device attached to the serial port and attempts to identify it using the DeviceID template as hint.
- If the function is successful it returns a DeviceID as well as a Cookie. The DeviceID has the form:
- <CODE>"CameraManufacturer#CameraFamily#CameraModel#Version.2.3.4#SerialNumber"</CODE>
- The connection is made with 9600 baud which is the power up baud rate as defined by the CameraLink standard.
- This function attempts to re-connect the device if a DeviceID is passed instead of a template as pDeviceIDTemplate.
- \param[in] pSerial Pointer to the interface giving access to the serial port
- \param[in] pDeviceIDTemplate A pointer to NULL-terminated string containing a device ID template
- (in the probe use case) or a device ID (in the connect use case)
- \param[in, out] pDeviceID A pointer to a user-allocated buffer. If DeviceIDTemplate is valid
- and a device is found and identified the DLL copies a device ID to the buffer.
- \param[in,out] pBufferSize As an input, the value contains the size of the buffer that
- is passed through the pDeviceID parameter.
- On successful return, this parameter contains the number of bytes written into the buffer,
- including the NULL termination character.
- On CL_ERR_BUFFER_TOO_SMALL, this parameter contains the size of the buffer needed to write
- the data text.
- \param[out] pCookie A token supplied by the driver dll which must be handed in by all functions
- called later to access the device. The dll's implementation can use this token to
- cache information about the connected device thus avoiding to have to parse the deviceID again.
- Note that the cookie value must not be 0.
- \param[in] TimeOut A timeout value in [ms] used during accessing the device.
- Note that the execution of the function itself can take longer than TimeOut because more than one
- access might be necessary.
- \return At completion, this function returns one of the following status codes:
- \retval CL_ERR_NO_ERR No error occurred
- \retval CL_BUFFER_TOO_SMALL The pDeviceID buffer is too small
- \retval CL_ERR_INVALID_DEVICEID The DeviceID is not recognized as valid by this dll
- \retval CL_ERR_NO_DEVICE_FOUND There was no device found matching the DeviceID
- */
- CLPROTOCOLEXPORT CLINT32 CLPROTOCOL clpProbeDevice( ISerial *pSerial, const CLINT8* pDeviceIDTemplate, CLINT8* pDeviceID, CLUINT32 *pBufferSize, CLUINT32 *pCookie, const CLUINT32 TimeOut );
- /*!
- \brief This function returns a list of XML IDs coded into a single string
- XML IDs have the following form:
- <CODE>"SchemaVersion.1.1@CameraManufacturer#CameraFamily#CameraModel@XMLVersion.2.3.4"</CODE>
- The first part of the XML ID denotes the major and minor version number of the XML schema.
- The last part of the XML ID denotes the major, minor, and subminor version number of the camera.
- Both version numbers mut be the same as given in the attributes of the RegisterDescription node
- of the corrensponding XML file.
- The middle part of the XML ID must be a complete DeviceID.
- The device templates are separated by tabulators.
- The whole list is contained in a NULL terminated string.
- \param[in] pSerial Pointer to the interface giving access to the serial port
- \param[in] Cookie Token supplied by the driver dll via the clpProbeDevice function.
- \param[out] pXMLIDs A pointer to a user-allocated buffer into which the function
- copies the list of XML IDs. The list may be empty in which case is contains of a '0' only.
- \param[in,out] pBufferSize As an input, the value contains the size of the buffer that
- is passed through the pXMLIDs parameter.
- On successful return, this parameter contains the number of bytes written into the buffer,
- including the NULL termination character.
- On CL_ERR_BUFFER_TOO_SMALL, this parameter contains the size of the buffer needed to write
- the data text.
- \param[in] TimeOut A timeout value in [ms] used during accessing the device.
- Note that the execution of the function itself can take longer than TimeOut because more than one
- access might be necessary.
- \return At completion, this function returns one of the following status codes:
- \retval CL_ERR_NO_ERR No error occurred
- \retval CL_ERR_BUFFER_TOO_SMALL The pXMLIDs buffer is too small
- \retval CL_ERR_TIMEOUT A timeout occurred
- \retval CL_ERR_INVALID_COOKIE The cookie supplied is invalid
- */
- CLPROTOCOLEXPORT CLINT32 CLPROTOCOL clpGetXMLIDs ( ISerial *pSerial, const CLUINT32 Cookie, CLINT8* pXMLIDs, CLUINT32* pBufferSize, const CLUINT32 TimeOut );
- /*!
- \brief This function retrieves an XML file from the camera if possible
- The DLL may ask the camera for the XML code, or may have the code as a resource compiled in
- itself or even may have it's own private registry mechanism installed.
- In order to support the latter use case the long DeviceID is supplied which contains
- the driver dll's directory.
- \param[in] pSerial Pointer to the interface giving access to the serial port
- \param[in] Cookie Token supplied by the driver dll via the clpProbeDevice function.
- \param[in] pXMLID A pointer to a NULL terminated string containing the connected device's XML ID
- \param[out] pXMLBuffer A pointer to a user-allocated buffer. Can be NULL if only the size of the
- buffer is requested (see pBufferSize)
- \param[in,out] pBufferSize pBufferSize As an input, the value contains the size of the buffer that
- is passed through the pDeviceID parameter.
- On successful return, this parameter contains the number of bytes written into the buffer,
- including the NULL termination character.
- On CL_ERR_BUFFER_TOO_SMALL, this parameter contains the size of the buffer needed to write
- the data text.
- \param[in] TimeOut A timeout value in [ms] used during accessing the device.
- Note that the execution of the function itself can take longer than TimeOut because more than one
- access might be necessary.
- \return At completion, this function returns one of the following status codes:
- \retval CL_ERR_NO_ERR No error occurred
- \retval CL_ERR_BUFFER_TOO_SMALL The pDeviceID buffer is too small
- \retval CL_ERR_NO_XMLDESCRIPTION_FOUND No XML description could be retrieved for the given XML ID
- \retval CL_ERR_TIMEOUT A timeout occurred
- \retval CL_ERR_INVALID_COOKIE The cookie supplied is invalid
- */
- CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
- clpGetXMLDescription( ISerial *pSerial, const CLUINT32 Cookie, const CLINT8* pXMLID, CLINT8* pXMLBuffer, CLUINT32* pBufferSize, const CLUINT32 TimeOut );
- /*!
- \brief This function reads numBytes from the serial device referred to by serialRef.
- clSerialRead will return when numBytes are available at the serial port or
- when the serialTimeout period has passed.
-
- Upon success, numBytes are copied into buffer.
- In the case of any error, including CL_ERR_TIMEOUT, no data is copied into buffer.
- \param[in] pSerial The interface giving access to the serial port
- \param[in] Cookie Token supplied by the driver dll via the clpProbeDevice function.
- \param[in] Address Address the data is to be read from
- \param[out] pBuffer Points to a user-allocated buffer. Upon a successful call,
- buffer contains the data read from the serial device.
- Caller should ensure that buffer is at least numBytes in size.
- \param[in] BufferSize This is the number of bytes requested by the caller.
- \param[in] TimeOut A timeout value in [ms] used during accessing the device.
- Note that there may be specific commands which may take longer than TimeOut to be
- accessed. Since clpReadRegister is missing a CL_ERR_PENDING_WRITE mechanism the
- CLProcotol DLL may be forced for these commands to delay the return for more than TimeOut.
- \return On completion, this function returns one of the following status codes:
- \retval CL_ERR_NO_ERR No error occurred
- \retval CL_ERR_TIMEOUT A timeout occurred
- \retval CL_ERR_INVALID_COOKIE The cookie supplied is invalid
- */
- CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
- clpReadRegister(ISerial *pSerial, const CLUINT32 Cookie, const CLINT64 Address, CLINT8* pBuffer, const CLINT64 BufferSize, const CLUINT32 TimeOut );
- /*!
- \brief This function writes numBytes to the serial device referred to by serialRef.
- clSerialRead will return when numBytes are available at the serial port or
- when the serialTimeout period has passed.
- Upon success, numBytes are copied into buffer.
- In the case of any error, including CL_ERR_TIMEOUT, no data is copied into buffer.
- \param[in] pSerial The interface giving access to the serial port
- \param[in] Cookie ManToken supplied by the driver dll via the clpProbeDevice function.
- \param[in] Address Address the data is to be read from
- \param[in] pBuffer Points to a containing the data to be written
- Caller should ensure that buffer is at least BufferSize in size.
- \param[in] BufferSize This is the number of bytes to be written.
- \param[in] TimeOut A timeout value in [ms] used during accessing the device.
- If the CLProtocol DLL knowns for specific registers that accessing them will take longer
- than TiemOut for a good reason, e.g., because some re-calibration is triggered, it can
- use the \ref CL_ERR_PENDING_WRITE mechanism to inform the client abou this and prolong
- the waiting time.
- \return On completion, this function returns one of the following status codes:
- \retval CL_ERR_NO_ERR No error occurred
- \retval CL_ERR_TIMEOUT A timeout occurred
- \retval CL_ERR_INVALID_COOKIE The cookie supplied is invalid
- \retval CL_ERR_PENDING_WRITE The timeout has expired but the write is still pending for a good reason.
- The next call must be \ref clpContinueWriteRegister
- */
- CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
- clpWriteRegister(ISerial *pSerial, const CLUINT32 Cookie, const CLINT64 Address, const CLINT8* pBuffer, const CLINT64 BufferSize, const CLUINT32 TimeOut );
- /*!
- \brief Calling This function is called after a write function returned CL_ERR_PENDING_WRITE. It either issues another wait for write cycle or cancels the write action
- This function must be called if clpWriteRegister or clpContinueWriteRegister returns CL_ERR_PENDING_WRITE.
- Note, that the CLProtocol.dll is responsible for preventing an endless number of calls to this
- function by tracking the total time elapsed since the original call and returning CL_ERR_TIMEOUT
- if this time is larger than the write operation should normally take place.
- \param[in] pSerial The interface giving access to the serial port
- \param[in] Cookie ManToken supplied by the driver dll via the clpProbeDevice function.
- \param[in] ContinueWaiting If true the function will block waiting for the previous call to clpWriteRegister to finish. If false the call will be cancelled.
- \param[in] TimeOut A timeout value in [ms] used during accessing the device.
- \return On completion, this function returns one of the following status codes:
- \retval CL_ERR_NO_ERR No error occurred
- \retval CL_ERR_TIMEOUT A timeout occurred
- \retval CL_ERR_INVALID_COOKIE The cookie supplied is invalid
- \retval CL_ERR_PENDING_WRITE The timeout has expired but the write is still pending for a good reason. The next call must be \ref clpContinueWriteRegister
- */
- CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
- clpContinueWriteRegister(ISerial *pSerial, const CLUINT32 Cookie, const BOOL8 ContinueWaiting, const CLUINT32 TimeOut );
- /*!
- \brief This function converts an error code to error text for display in a
- dialog box or in a standard I/O window.
-
- Note: clGetErrorText first looks for the error code in CCTserial.dll.
- If the error code is not found in CCTserial.dll, it is not a standard Camera Link error.
- clGetErrorText then passes the error code to the manufacturer-specific .dll,
- which returns the manufacturer-specific error text.
- \param[in] errorCode The error code used to find the appropriate error text.
- An error code is returned by every function in this library.
- \param[out] errorText A caller-allocated buffer which contains the
- NULL-terminated error text on function return.
- \param[in,out] errorTextSize On success, contains the number of bytes written
- into the buffer, including the NULL-termination character.
- This value should be the size in bytes of the error text
- buffer passed in. On CL_ERR__BUFFER_TOO_SMALL,
- contains the size of the buffer needed to write the error text.
- \param[in] Cookie Used only for CL_ERR_GET_LAST_ERROR. Returns the last error
- fired on the connection identified by the Cookie
- \return On completion, this function returns one of the following status codes:
- \retval CL_ERR_NO_ERR No error occurred
- \retval CL_ERR_BUFFER_TOO_SMALL The pDeviceID buffer is too small
- \retval CL_ERR_ERROR_NOT_FOUND No error string could be retrieved for the given error number
- */
- CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
- clpGetErrorText( CLINT32 errorCode, CLINT8* errorText, CLUINT32* errorTextSize, const CLUINT32 Cookie = NULL);
- /*!
- \brief This function disconnects the DLL from the device
- When this function is called all resources allocated in the driver DLL and associated
- with the Cookie are deleted and the Cookie becomes invalid.
- \param[in] Cookie ManToken supplied by the driver dll via the clpProbeDevice function.
- \return On completion, this function returns one of the following status codes:
- \retval CL_ERR_NO_ERR No error occurred
- \retval CL_ERR_INVALID_COOKIE The cookie supplied is invalid
- */
- CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
- clpDisconnect( const CLUINT32 Cookie );
- /*!
- \brief This function returns the version of the CLProtocol interface version
- The function is required to ensure this interface can be extended.
- \param[out] pVersionMajor If this parameter changes backward compatibility is broken.
- \param[out] pVersionMinor If this parameter changes backward compatibility is maintained.
- \return On completion, this function returns one of the following status codes:
- \retval CL_ERR_NO_ERR No error occurred
- */
- CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
- clpGetCLProtocolVersion( CLUINT32 *pVersionMajor, CLUINT32 *pVersionMinor );
- /*!
- \brief This function is call to read a CLProtocol parameter value.
- \param[in] param The parameter to read.
- \param[in] Cookie Token supplied by the driver dll via the clpProbeDevice function.
- Some parameters ignore the Cookie.
- \param[in] pBuffer Points to a user-allocated buffer. Upon a successful call,
- buffer contains the value of the parameter.
- \param[in] BufferSize This is the number of bytes to be written.
- Caller must ensure that buffer size match the parameters size.
- \param[in] TimeOut A timeout value in [ms] used during accessing the device.
- \return On completion, this function returns one of the following status codes:
- \retval CL_ERR_NO_ERR No error occurred
- \retval CL_ERR_TIMEOUT A timeout occurred
- \retval CL_ERR_PARAM_NOT_SUPPORTED The parameters is not supported
- */
- CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
- clpGetParam( ISerial *pSerial, CLP_PARAMS param, const CLUINT32 Cookie, CLINT8* pBuffer, const CLINT64 BufferSize, const CLUINT32 TimeOut);
- /*!
- \brief This function is call to change a CLProtocol parameter value.
- \param[in] param The parameter to be changed.
- \param[in] Cookie Token supplied by the driver dll via the clpProbeDevice function.
- Some parameters ignore the Cookie.
- \param[in] pBuffer Points to a buffer containing the data to be written
- \param[in] BufferSize This is the number of bytes in the buffer.
- Caller must ensure that buffer size match the parameters size.
- \param[in] TimeOut A timeout value in [ms] used during accessing the device.
- \return On completion, this function returns one of the following status codes:
- \retval CL_ERR_NO_ERR No error occurred
- \retval CL_ERR_TIMEOUT A timeout occurred
- \retval CL_ERR_PARAM_NOT_SUPPORTED The parameters is not supported
- */
- CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
- clpSetParam( ISerial *pSerial, CLP_PARAMS param, const CLUINT32 Cookie, const CLINT8* pBuffer, const CLINT64 BufferSize, const CLUINT32 TimeOut);
- /*!
- \brief This function is call know if a parameter is supported by a CLProtocol.
- \param[in] param The parameter to probe.
- \return On completion, this function returns one of the following status codes:
- \retval CL_ERR_NO_ERR The parameters is supported
- \retval CL_ERR_PARAM_NOT_SUPPORTED The parameters is not supported
- */
- CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
- clpIsParamSupported( CLP_PARAMS param);
- /*!
- \brief This function is call to get a possible event by a CLProtocol.
- \param[in] pSerial Pointer to the interface giving access to the serial port
- \param[in] Cookie Token supplied by the driver dll via the clpProbeDevice function.
- \param[out] pBuffer A pointer to a user-allocated buffer into which the function
- copies the event data.
- \param[in,out] pBufferSize As an input, the value contains the size of the buffer that
- is passed through the pBuffer parameter.
- On successful return, this parameter contains the number of bytes written into the buffer,
- including the NULL termination character.
- On CL_ERR_BUFFER_TOO_SMALL, this parameter contains the size of the buffer needed to write
- the data text.
- \return On completion, this function returns one of the following status codes:
- \retval CL_ERR_NO_ERR The next event is copied to pBuffer
- \retval CL_ERR_TIMEOUT There was no new event received
- \retval CL_ERR_BUFFER_TOO_SMALL The pBuffer is too small
- \retval CL_ERR_INVALID_COOKIE The cookie supplied is invalid
- */
- CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
- clpGetEventData(const CLUINT32 Cookie, CLINT8* pBuffer, CLUINT32* pBufferSize);
- /*@}*/ // CLProtocolInterface
- /*@}*/ // PublicInterfaces
- #endif // CLPROTOCOL_CLPROTOCOL_H
|