CLProtocol 3.5.1
CLProtocol.h
1//-----------------------------------------------------------------------------
2// (c) 2008 by Basler Vision Technologies
3// Section: Vision Components
4// Project: GenApi
5// Author: Fritz Dierks
6// $Header$
7//
8// License: This file is published under the license of the EMVA GenICam Standard Group.
9// A text file describing the legal terms is included in your installation as 'GenICam_license.pdf'.
10// If for some reason you are missing this file please contact the EMVA or visit the website
11// (http://www.genicam.org) for a full copy.
12//
13// THIS SOFTWARE IS PROVIDED BY THE EMVA GENICAM STANDARD GROUP "AS IS"
14// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE EMVA GENICAM STANDARD GROUP
17// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
20// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
21// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
23// POSSIBILITY OF SUCH DAMAGE.
24//-----------------------------------------------------------------------------
29#ifndef CLPROTOCOL_CLPROTOCOL_H
30#define CLPROTOCOL_CLPROTOCOL_H
31
32#include <CLProtocol/ClSerialTypes.h>
33
34#include <stdarg.h>
35
36//==============================================================================
37// Macros
38//==============================================================================
39
40#if (defined(__cplusplus) || defined(__cplusplus__))
41 #define USER_EXTERN_C extern "C"
42 #define USER_EXTERN_C_START extern "C" {
43 #define USER_EXTERN_C_END }
44#else
45 #define USER_EXTERN_C
46 #define USER_EXTERN_C_START
47 #define USER_EXTERN_C_END
48#endif
49
50#ifdef CLPROTOCOL_EXPORTS
51 #if defined(_WIN32)
52 #define CLPROTOCOLEXPORT USER_EXTERN_C __declspec(dllexport)
53 #define CLPROTOCOL_DECL __declspec(dllexport)
54 #else
55 #define CLPROTOCOLEXPORT USER_EXTERN_C __attribute__((visibility("default")))
56 #define CLPROTOCOL_DECL __attribute__((visibility("default")))
57 #endif
58#else
59 #if defined(_WIN32)
60 #define CLPROTOCOLEXPORT USER_EXTERN_C __declspec(dllimport)
61 #define CLPROTOCOL_DECL __declspec(dllimport)
62 #else
63 #define CLPROTOCOLEXPORT USER_EXTERN_C __attribute__((visibility("default")))
64 #define CLPROTOCOL_DECL __attribute__((visibility("default")))
65 #endif
66#endif
67
68#ifndef CLPROTOCOL
69 #if defined(_WIN32)
70 #define CLPROTOCOL __cdecl
71 #else
72 #if !defined(__x86_64) && !defined(__arm__) && !defined(__aarch64__) && !defined(VXWORKS)
73 #define CLPROTOCOL __attribute__((cdecl))
74 #else
75 #define CLPROTOCOL /* use default calling convention */
76 #endif
77 #endif
78#endif
79
80//==============================================================================
81// Types and Enums
82//==============================================================================
83
84typedef void (CLPROTOCOL *clp_logger_t)( CLINT32 level, const char* stringFormat, va_list argptr);
85USER_EXTERN_C_START
86 typedef struct clpLogCallback_t
87 {
88 CLUINT32 id;
89 clp_logger_t logger;
90 }clpLogCallback_t;
91USER_EXTERN_C_END
92
94enum CLP_PARAMS
95{
96// Global parameters that do not use the Cookie when called.
97 CLP_LOG_LEVEL = 1,
100
101 CLP_LOG_CALLBACK = 2,
102
103 CLP_STOP_PROBE_DEVICE = 3,
104
105 // Device related parameters that require a valid cookie to execute properly.
106 CLP_DEVICE_BAUDERATE = -1,
109
110 CLP_DEVICE_SUPPORTED_BAUDERATES = -2
114};
115
116enum CLP_LOG_LEVEL_VALUE
117{
118 CLP_LOG_FATAL = 0,
119 CLP_LOG_ALERT = 100,
120 CLP_LOG_CRIT = 200,
121 CLP_LOG_ERROR = 300,
122 CLP_LOG_WARN = 400,
123 CLP_LOG_NOTICE = 500,
124 CLP_LOG_INFO = 600,
125 CLP_LOG_DEBUG = 700,
126 CLP_LOG_NOTSET = 800
127};
128
129//==============================================================================
130// Exported Functions
131//==============================================================================
132
133class ISerial;
134
137
140
153CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
154clpInitLib( clp_logger_t logger,
155 CLP_LOG_LEVEL_VALUE logLevel);
156
163CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
164clpCloseLib( void );
165
193CLPROTOCOLEXPORT CLINT32 CLPROTOCOL clpGetShortDeviceIDTemplates ( CLINT8* pShortDeviceTemplates, CLUINT32* pBufferSize );
194
238CLPROTOCOLEXPORT CLINT32 CLPROTOCOL clpProbeDevice( ISerial *pSerial, const CLINT8* pDeviceIDTemplate, CLINT8* pDeviceID, CLUINT32 *pBufferSize, CLUINT32 *pCookie, const CLUINT32 TimeOut );
239
240
281CLPROTOCOLEXPORT CLINT32 CLPROTOCOL clpGetXMLIDs ( ISerial *pSerial, const CLUINT32 Cookie, CLINT8* pXMLIDs, CLUINT32* pBufferSize, const CLUINT32 TimeOut );
282
318CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
319clpGetXMLDescription( ISerial *pSerial, const CLUINT32 Cookie, const CLINT8* pXMLID, CLINT8* pXMLBuffer, CLUINT32* pBufferSize, const CLUINT32 TimeOut );
320
351CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
352clpReadRegister(ISerial *pSerial, const CLUINT32 Cookie, const CLINT64 Address, CLINT8* pBuffer, const CLINT64 BufferSize, const CLUINT32 TimeOut );
353
386CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
387clpWriteRegister(ISerial *pSerial, const CLUINT32 Cookie, const CLINT64 Address, const CLINT8* pBuffer, const CLINT64 BufferSize, const CLUINT32 TimeOut );
388
412CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
413clpContinueWriteRegister(ISerial *pSerial, const CLUINT32 Cookie, const BOOL8 ContinueWaiting, const CLUINT32 TimeOut );
414
444CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
445clpGetErrorText( CLINT32 errorCode, CLINT8* errorText, CLUINT32* errorTextSize, const CLUINT32 Cookie = 0);
446
459CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
460clpDisconnect( const CLUINT32 Cookie );
461
473CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
474clpGetCLProtocolVersion( CLUINT32 *pVersionMajor, CLUINT32 *pVersionMinor );
475
495CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
496clpGetParam( ISerial *pSerial, CLP_PARAMS param, const CLUINT32 Cookie, CLINT8* pBuffer, const CLINT64 BufferSize, const CLUINT32 TimeOut);
497
516CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
517clpSetParam( ISerial *pSerial, CLP_PARAMS param, const CLUINT32 Cookie, const CLINT8* pBuffer, const CLINT64 BufferSize, const CLUINT32 TimeOut);
518
528CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
529clpIsParamSupported( CLP_PARAMS param);
530
554CLPROTOCOLEXPORT CLINT32 CLPROTOCOL
555clpGetEventData(const CLUINT32 Cookie, CLINT8* pBuffer, CLUINT32* pBufferSize);
556 // CLProtocolInterface // PublicInterfaces
559
560
561
562#endif // CLPROTOCOL_CLPROTOCOL_H
Abstract interface used by the CLProtocol driver to use a serial port.
Definition ISerial.h:43