quDIS
qudis.h
Go to the documentation of this file.
1 /*****************************************************************************
2  *
3  * Project: quDIS Control Library
4  *
5  * Filename: qudis.h
6  *
7  * Author: NHands GmbH & Co KG
8  */
9 /*****************************************************************************/
28 /*****************************************************************************/
36 /******************************************************************/
37 /* $Id: qudis.h,v 1.14 2021/08/10 13:58:08 trurl Exp $ */
38 
39 #ifndef __QUDIS_H__
40 #define __QUDIS_H__
41 
47 #ifdef __cplusplus
48 #define EXTC extern "C"
49 #else
50 #define EXTC extern
51 #endif
52 
53 #ifdef unix
54 #define QDS_API EXTC
55 #define WINCC
56 #else
57 #define WINCC __stdcall
58 #ifdef QDS_EXPORTS
59 #define QDS_API EXTC __declspec(dllexport)
60 #else
61 #define QDS_API EXTC __declspec(dllimport)
62 #endif
63 #endif
64 
66 #ifdef _MSC_VER
67 typedef __int32 Int32;
68 #else
69 #include <inttypes.h>
70 typedef int32_t Int32;
71 #endif
72 
73 
79 #define QDS_AXES_CNT 3
88 #define QDS_Ok 0
89 #define QDS_Error -1
90 #define QDS_Timeout 1
91 #define QDS_NotConnected 2
92 #define QDS_DriverError 3
93 #define QDS_DeviceLocked 7
94 #define QDS_Unknown 8
95 #define QDS_NoDevice 9
96 #define QDS_NoAxis 10
97 #define QDS_ParamOutOfRg 11
108 #define QDS_FeatureAbsolute 0x01
112 typedef int bln32;
117 typedef enum { IfNone = 0x00,
118  IfUsb3 = 0x10,
119  IfTcp = 0x02,
120  IfAll = 0x12
121 } QDS_InterfaceType;
122 
123 
126 typedef enum { LcOk = 0x00,
127  LcFail = 0x01,
128  LcCalib = 0x02
129 } QDS_LCtlState;
130 
131 
134 typedef enum { MrkOff = 0x00,
135  Mrk1Cnt = 0x01,
136  MrkNone = 0x02
137 } QDS_MrkMode;
138 
139 
142 typedef struct {
143  double contrast;
144  double reserved1;
145  double reserved2;
146  double reserved3;
147 } QDS_QMeasure;
148 
149 
183 typedef void (* QDS_PositionCallback) ( unsigned int devNo,
184  unsigned int length,
185  unsigned int index,
186  const double * const positions[QDS_AXES_CNT],
187  const Int32 * const markers[QDS_AXES_CNT] );
188 
189 
205  unsigned int * devCount );
206 
207 
224 QDS_API int WINCC QDS_getDeviceInfo( unsigned int devNo,
225  int * id,
226  char * serialNo,
227  char * address );
228 
229 
248 QDS_API int WINCC QDS_registerExternalIp( const char * hostname );
249 
250 
258 QDS_API int WINCC QDS_connect( unsigned int devNo );
259 
260 
267 QDS_API int WINCC QDS_disconnect( unsigned int devNo );
268 
269 
279 QDS_API int WINCC QDS_getDeviceConfig( unsigned int devNo,
280  unsigned int * axisCount,
281  int * features );
282 
283 
296 QDS_API int WINCC QDS_getLambdaControlState( unsigned int devNo,
297  QDS_LCtlState * state );
298 
299 
311 QDS_API int WINCC QDS_setSampleTime( unsigned int devNo,
312  unsigned int lbSampleTm );
313 
314 
323 QDS_API int WINCC QDS_getSampleTime( unsigned int devNo,
324  unsigned int * lbSampleTm );
325 
326 
334 QDS_API int WINCC QDS_resetRelPosition( unsigned int devNo,
335  unsigned int axisNo );
336 
337 
351 QDS_API int WINCC QDS_getPositions( unsigned int devNo,
352  double * positionsRel,
353  double * positionsAbs );
354 
355 
366 QDS_API int WINCC QDS_estimateSignalQuality( unsigned int devNo,
367  unsigned int axisNo,
368  QDS_QMeasure * qData );
369 
370 
384 QDS_API int WINCC QDS_setPositionCallback( unsigned int devNo,
385  QDS_PositionCallback cbRel,
386  QDS_PositionCallback cbAbs );
387 
388 
389 
402 QDS_API int WINCC QDS_enableMarkers( unsigned int devNo,
403  QDS_MrkMode mode,
404  unsigned int timeout );
405 
406 
415 QDS_API int WINCC QDS_resetMarkerCounter( unsigned int devNo );
416 
417 
439 QDS_API int WINCC QDS_setHsslParams( unsigned int devNo,
440  unsigned int axisNo,
441  bln32 enable,
442  bln32 useLvds,
443  unsigned int clock,
444  unsigned int gap,
445  unsigned int bits,
446  unsigned int lbResol,
447  unsigned int lbAvgTime );
448 
449 
468 QDS_API int WINCC QDS_setQuadratureParams( unsigned int devNo,
469  unsigned int axisNo,
470  bln32 enable,
471  bln32 zeroOnReset,
472  unsigned int resolution,
473  unsigned int clock,
474  unsigned int lbAvgTime );
475 
490 QDS_API int WINCC QDS_enableAngularMode( unsigned int devNo,
491  bln32 enable,
492  unsigned int base1_2,
493  unsigned int base1_3 );
494 
495 #endif
496 
QDS_LCtlState
Laser wavelength control status.
Definition: qudis.h:126
QDS_API int WINCC QDS_resetRelPosition(unsigned int devNo, unsigned int axisNo)
Reset relative position.
QDS_InterfaceType
Interface types.
Definition: qudis.h:117
QDS_API int WINCC QDS_setQuadratureParams(unsigned int devNo, unsigned int axisNo, bln32 enable, bln32 zeroOnReset, unsigned int resolution, unsigned int clock, unsigned int lbAvgTime)
Set quadrature parameters.
#define QDS_AXES_CNT
Number of axes.
Definition: qudis.h:79
QDS_API int WINCC QDS_getDeviceInfo(unsigned int devNo, int *id, char *serialNo, char *address)
Device information.
double reserved2
Reserved for future use.
Definition: qudis.h:145
QDS_MrkMode
Marker modes.
Definition: qudis.h:134
QDS_API int WINCC QDS_setHsslParams(unsigned int devNo, unsigned int axisNo, bln32 enable, bln32 useLvds, unsigned int clock, unsigned int gap, unsigned int bits, unsigned int lbResol, unsigned int lbAvgTime)
Set HSSL parameters.
QDS_API int WINCC QDS_setSampleTime(unsigned int devNo, unsigned int lbSampleTm)
Set sample time.
QDS_API int WINCC QDS_discover(QDS_InterfaceType ifaces, unsigned int *devCount)
Discover devices.
Wavelength control failed.
Definition: qudis.h:127
Marker feature off.
Definition: qudis.h:134
QDS_API int WINCC QDS_estimateSignalQuality(unsigned int devNo, unsigned int axisNo, QDS_QMeasure *qData)
Estimate signal quality.
void(* QDS_PositionCallback)(unsigned int devNo, unsigned int length, unsigned int index, const double *const positions[QDS_AXES_CNT], const Int32 *const markers[QDS_AXES_CNT])
Position callback function.
Definition: qudis.h:183
double contrast
Interferogram contrast in % of optimum.
Definition: qudis.h:143
double reserved1
Reserved for future use.
Definition: qudis.h:144
QDS_API int WINCC QDS_getSampleTime(unsigned int devNo, unsigned int *lbSampleTm)
Read back sample time.
QDS_API int WINCC QDS_enableMarkers(unsigned int devNo, QDS_MrkMode mode, unsigned int timeout)
Enable marker function.
double reserved3
Reserved for future use.
Definition: qudis.h:146
QDS_API int WINCC QDS_getDeviceConfig(unsigned int devNo, unsigned int *axisCount, int *features)
Read device configuration.
int bln32
Boolean; to avoid troubles with incomplete C99 implementations.
Definition: qudis.h:112
QDS_API int WINCC QDS_disconnect(unsigned int devNo)
Disconnect device.
QDS_API int WINCC QDS_connect(unsigned int devNo)
Connect device.
One single marker input, with counter.
Definition: qudis.h:135
QDS_API int WINCC QDS_getLambdaControlState(unsigned int devNo, QDS_LCtlState *state)
Get wavelength control status.
Temperature calibration is running.
Definition: qudis.h:128
QDS_API int WINCC QDS_getPositions(unsigned int devNo, double *positionsRel, double *positionsAbs)
Read positions.
#define QDS_API
For external use of this header.
Definition: qudis.h:61
__int32 Int32
Definition: qudis.h:67
QDS_API int WINCC QDS_enableAngularMode(unsigned int devNo, bln32 enable, unsigned int base1_2, unsigned int base1_3)
Enable Angular Measurement.
QDS_API int WINCC QDS_resetMarkerCounter(unsigned int devNo)
Reset marker counter.
QDS_API int WINCC QDS_setPositionCallback(unsigned int devNo, QDS_PositionCallback cbRel, QDS_PositionCallback cbAbs)
Register callback function.
#define WINCC
Calling convention for Windows.
Definition: qudis.h:57
Wavelength under control.
Definition: qudis.h:126
Signal quality measures.
Definition: qudis.h:142
Reserved for future marker modes.
Definition: qudis.h:136
QDS_API int WINCC QDS_registerExternalIp(const char *hostname)
Register IP device in external Network.