LibTiePie  0.4.0
Library for interfacing TiePie engineering instruments
 All Files Functions Typedefs Groups Pages
libtiepie.h
Go to the documentation of this file.
1 
6 #ifndef _LIBTIEPIE_H_
7 #define _LIBTIEPIE_H_
8 
9 #if ( defined( __STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L ) || ( defined( __GNUC__ ) && defined( __cplusplus ) )
10  #include <stdint.h>
11 #elif defined( _MSC_VER )
12  #include "stdint.h" // Note: You can find a stdint.h for microsoft compilers at http://msinttypes.googlecode.com/svn/trunk/stdint.h .
13 #else
14  // Assume the file is used from Matlab and define int8_t and similar types as follows:
15  #include <tmwtypes.h>
16 
17  typedef INT8_T int8_t;
18  typedef INT16_T int16_t;
19  typedef INT32_T int32_t;
20  typedef INT64_T int64_t;
21 
22  typedef UINT8_T uint8_t;
23  typedef UINT16_T uint16_t;
24  typedef UINT32_T uint32_t;
25  typedef UINT64_T uint64_t;
26 #endif
27 
28 // Check whether we are on a Windows NT based operating system:
29 #if defined( _WIN32 ) || defined( _WIN64 ) || defined( __WIN32__ ) || defined( __TOS_WIN__ ) || defined( __WINDOWS__ )
30  #ifndef HAVE_WINDOWS_H
31  #define HAVE_WINDOWS_H
32  #endif
33  #include <windows.h>
34 #endif
35 
36 #ifdef __cplusplus
37 extern "C"
38 {
39 #endif
40 
46 #define CKN_COUNT 5
47 
48 
53 #define CKB_DCV 0
54 #define CKB_ACV 1
55 #define CKB_DCA 2
56 #define CKB_ACA 3
57 #define CKB_OHM 4
58 
59 
65 #define CK_UNKNOWN 0x0000000000000000
66 
67 #define CK_DCV ( 1 << CKB_DCV )
68 #define CK_ACV ( 1 << CKB_ACV )
69 #define CK_DCA ( 1 << CKB_DCA )
70 #define CK_ACA ( 1 << CKB_ACA )
71 #define CK_OHM ( 1 << CKB_OHM )
72 
73 
79 #define CKM_V ( CK_DCV | CK_ACV )
80 #define CKM_A ( CK_DCA | CK_ACA )
81 #define CKM_OHM ( CK_OHM )
82 
83 #define CKM_ASYMMETRICRANGE ( CKM_OHM )
84 #define CKM_SYMMETRICRANGE ( CKM_V | CKM_A )
85 
86 
93 #define CON_COUNT 2
94 
95 
100 #define COB_SAMPLE 0
101 #define COB_10MHZ 1
102 
103 
109 #define CO_NONE 0
110 #define CO_SAMPLE ( 1 << COB_SAMPLE )
111 #define CO_10MHZ ( 1 << COB_10MHZ )
112 
113 
120 #define CSN_COUNT 2
121 
122 
127 #define CSB_EXTERNAL 0
128 #define CSB_INTERNAL 1
129 
130 
136 #define CS_EXTERNAL ( 1 << CSB_EXTERNAL )
137 #define CS_INTERNAL ( 1 << CSB_INTERNAL )
138 
139 
146 #define FMN_COUNT 2
147 
148 
153 #define FMB_SIGNALFREQUENCY 0
154 #define FMB_SAMPLEFREQUENCY 1
155 
162 #define FM_UNKNOWN 0x00000000
163 
164 #define FM_SIGNALFREQUENCY ( 1 << FMB_SIGNALFREQUENCY )
165 #define FM_SAMPLEFREQUENCY ( 1 << FMB_SAMPLEFREQUENCY )
166 
174 #define MMN_COUNT 2
175 
176 
181 #define MMB_STREAM 0
182 #define MMB_BLOCK 1
183 
184 
190 #define MM_UNKNOWN 0x00000000
191 
192 #define MM_STREAM ( 1 << MMB_STREAM )
193 #define MM_BLOCK ( 1 << MMB_BLOCK )
194 
195 
202 #define STN_COUNT 6
203 
204 
209 #define STB_SINE 0
210 #define STB_TRIANGLE 1
211 #define STB_SQUARE 2
212 #define STB_DC 3
213 #define STB_NOISE 4
214 #define STB_ARBITRARY 5
215 
222 #define ST_UNKNOWN 0x0000000000000000
223 
224 #define ST_SINE ( 1 << STB_SINE )
225 #define ST_TRIANGLE ( 1 << STB_TRIANGLE )
226 #define ST_SQUARE ( 1 << STB_SQUARE )
227 #define ST_DC ( 1 << STB_DC )
228 #define ST_NOISE ( 1 << STB_NOISE )
229 #define ST_ARBITRARY ( 1 << STB_ARBITRARY )
230 
237 #define STM_AMPLITUDE ( ST_SINE | ST_TRIANGLE | ST_SQUARE | ST_NOISE | ST_ARBITRARY )
238 #define STM_OFFSET ( ST_SINE | ST_TRIANGLE | ST_SQUARE | ST_DC | ST_NOISE | ST_ARBITRARY )
239 #define STM_FREQUENCY ( ST_SINE | ST_TRIANGLE | ST_SQUARE | ST_ARBITRARY )
240 #define STM_PHASE ( ST_SINE | ST_TRIANGLE | ST_SQUARE | ST_ARBITRARY )
241 #define STM_SYMMETRY ( ST_SINE | ST_TRIANGLE | ST_SQUARE )
242 
252 #define TH_ALLPRESAMPLES 0xffffffffffffffff
253 
254 
261 #define TKN_COUNT 7
262 
263 
268 #define TKB_RISING 0
269 #define TKB_FALLING 1
270 #define TKB_INWINDOW 2
271 #define TKB_OUTWINDOW 3
272 #define TKB_EDGE 4
273 #define TKB_DROPINWINDOW 5
274 #define TKB_DROPOUTWINDOW 6
275 
282 #define TK_UNKNOWN 0x0000000000000000ULL
283 
284 #define TK_RISING ( 1ULL << TKB_RISING )
285 #define TK_FALLING ( 1ULL << TKB_FALLING )
286 #define TK_INWINDOW ( 1ULL << TKB_INWINDOW )
287 #define TK_OUTWINDOW ( 1ULL << TKB_OUTWINDOW )
288 #define TK_EDGE ( 1ULL << TKB_EDGE )
289 #define TK_DROPINWINDOW ( 1ULL << TKB_DROPINWINDOW )
290 #define TK_DROPOUTWINDOW ( 1ULL << TKB_DROPOUTWINDOW )
291 
298 #define TKM_NONE 0x0000000000000000ULL
299 #define TKM_EDGE ( TK_RISING | TK_FALLING | TK_EDGE )
300 #define TKM_WINDOW ( TK_INWINDOW | TK_OUTWINDOW | TK_DROPINWINDOW | TK_DROPOUTWINDOW )
301 #define TKM_ALL ( ( 1ULL << TKN_COUNT ) - 1 )
302 
303 
312 #define TO_INFINITY -1
313 
314 
323 #define TS_NONE 0x0000000000000000ULL
324 
325 #define TS_CH1 0x0000000000000001ULL
326 #define TS_CH2 0x0000000000000002ULL
327 #define TS_CH3 0x0000000000000004ULL
328 #define TS_CH4 0x0000000000000008ULL
329 #define TS_CH5 0x0000000000000010ULL
330 #define TS_CH6 0x0000000000000020ULL
331 #define TS_CH7 0x0000000000000040ULL
332 #define TS_CH8 0x0000000000000080ULL
333 #define TS_CH9 0x0000000000000100ULL
334 #define TS_CH10 0x0000000000000200ULL
335 #define TS_CH11 0x0000000000000400ULL
336 #define TS_CH12 0x0000000000000800ULL
337 #define TS_CH13 0x0000000000001000ULL
338 #define TS_CH14 0x0000000000002000ULL
339 #define TS_CH15 0x0000000000004000ULL
340 #define TS_CH16 0x0000000000008000ULL
341 #define TS_CH17 0x0000000000010000ULL
342 #define TS_CH18 0x0000000000020000ULL
343 #define TS_CH19 0x0000000000040000ULL
344 #define TS_CH20 0x0000000000080000ULL
345 #define TS_CH21 0x0000000000100000ULL
346 #define TS_CH22 0x0000000000200000ULL
347 #define TS_CH23 0x0000000000400000ULL
348 #define TS_CH24 0x0000000000800000ULL
349 #define TS_CH25 0x0000000001000000ULL
350 #define TS_CH26 0x0000000002000000ULL
351 #define TS_CH27 0x0000000004000000ULL
352 #define TS_CH28 0x0000000008000000ULL
353 #define TS_CH29 0x0000000010000000ULL
354 #define TS_CH30 0x0000000020000000ULL
355 #define TS_CH31 0x0000000040000000ULL
356 #define TS_CH32 0x0000000080000000ULL
357 
358 #define TS_GENSTOP 0x0400000000000000ULL
359 #define TS_GENNEW 0x0800000000000000ULL
360 #define TS_GENSTART 0x1000000000000000ULL
361 #define TS_EXT2 0x2000000000000000ULL
362 #define TS_EXTANALOG 0x4000000000000000ULL
363 #define TS_EXT 0x8000000000000000ULL
364 
365 
369 #define TSN_CHANNEL_COUNT 32
370 
371 
376 #define TSM_NONE 0x0000000000000000ULL
377 #define TSM_ALL 0xFFFFFFFFFFFFFFFFULL
378 #define TSM_CHANNELS ( ( 1ULL << TSN_CHANNEL_COUNT ) - 1 )
379 #define TSM_NONCHANNELS ( TSM_ALL - TSM_CHANNELS )
380 #define TSM_GENALL ( TS_GENSTART | TS_GENNEW | TS_GENSTOP )
381 
382 
389 typedef void(*TpCallback_t)( void* pData );
390 
483 #define TPDEVICEHANDLE_INVALID 0
484 
485 
491 #define DEVICETYPE_OSCILLOSCOPE 0x00000001
492 #define DEVICETYPE_GENERATOR 0x00000002
493 #define DEVICETYPE_I2CHOST 0x00000004
494 
495 
501 #define IDKIND_DEVICEID 0x00000001
502 #define IDKIND_INDEX 0x00000002
503 #define IDKIND_SERIALNUMBER 0x00000004
504 
505 
515 #define LIBTIEPIESTATUS_SUCCESS 0
516 #define LIBTIEPIESTATUS_VALUE_CLIPPED 1
517 #define LIBTIEPIESTATUS_VALUE_MODIFIED 2
518 #define LIBTIEPIESTATUS_UNSUCCESSFUL -1
519 #define LIBTIEPIESTATUS_NOT_SUPPORTED -2
520 #define LIBTIEPIESTATUS_INVALID_HANDLE -3
521 #define LIBTIEPIESTATUS_INVALID_VALUE -4
522 #define LIBTIEPIESTATUS_INVALID_CHANNEL -5
523 #define LIBTIEPIESTATUS_INVALID_TRIGGER_SOURCE -6
524 #define LIBTIEPIESTATUS_INVALID_DEVICE_TYPE -7
525 #define LIBTIEPIESTATUS_INVALID_DEVICE_INDEX -8
526 #define LIBTIEPIESTATUS_INVALID_DEVICE_ID -9
527 #define LIBTIEPIESTATUS_INVALID_DEVICE_SERIALNUMBER -10
528 #define LIBTIEPIESTATUS_DEVICE_GONE -11
529 #define LIBTIEPIESTATUS_INTERNAL_ADDRESS -12
530 #define LIBTIEPIESTATUS_NOT_CONTROLLABLE -13
531 #define LIBTIEPIESTATUS_BIT_ERROR -14
532 #define LIBTIEPIESTATUS_NO_ACKNOWLEDGE -15
533 
534 
540 #define CONNECTORTYPE_UNKNOWN 0x00000000
541 
542 #define CONNECTORTYPE_BNC 0x00000001
543 #define CONNECTORTYPE_BANANA 0x00000002
544 #define CONNECTORTYPE_POWERPLUG 0x00000004
545 
546 #define CONNECTORTYPE_MASK ( CONNECTORTYPE_BNC | CONNECTORTYPE_BANANA | CONNECTORTYPE_POWERPLUG )
547 
554 #define DATARAWTYPE_UNKNOWN 0x00000000
555 
556 #define DATARAWTYPE_INT8 0x00000001
557 #define DATARAWTYPE_INT16 0x00000002
558 #define DATARAWTYPE_INT32 0x00000004
559 #define DATARAWTYPE_INT64 0x00000008
560 
561 #define DATARAWTYPE_UINT8 0x00000010
562 #define DATARAWTYPE_UINT16 0x00000020
563 #define DATARAWTYPE_UINT32 0x00000040
564 #define DATARAWTYPE_UINT64 0x00000080
565 
566 #define DATARAWTYPE_FLOAT32 0x00000100
567 #define DATARAWTYPE_FLOAT64 0x00000200
568 
575 #define IDM_DEVICEID 0x80000000
576 #define IDM_ALL 0xffffffff
577 
584 #define IDB_HS3 0
585 #define IDB_HS4 1
586 #define IDB_HS4D 2
587 #define IDB_HS805 3
588 #define IDB_HP3 4
589 #define IDB_HS5 5
590 #define IDB_HL0516 6
591 #define IDB_PA1 7
592 
599 #define ID_HS3 ( IDM_DEVICEID | ( 1 << IDB_HS3 ) )
600 #define ID_HS4 ( IDM_DEVICEID | ( 1 << IDB_HS4 ) )
601 #define ID_HS4D ( IDM_DEVICEID | ( 1 << IDB_HS4D ) )
602 #define ID_HS805 ( IDM_DEVICEID | ( 1 << IDB_HS805 ) )
603 #define ID_HP3 ( IDM_DEVICEID | ( 1 << IDB_HP3 ) )
604 #define ID_HS5 ( IDM_DEVICEID | ( 1 << IDB_HS5 ) )
605 #define ID_HL0516 ( IDM_DEVICEID | ( 1 << IDB_HL0516 ) )
606 #define ID_PA1 ( IDM_DEVICEID | ( 1 << IDB_PA1 ) )
607 
608 
614 #define BOOL8_FALSE 0
615 #define BOOL8_TRUE 1
616 
623 #define LIBTIEPIE_TRISTATE_UNDEFINED 0
624 #define LIBTIEPIE_TRISTATE_FALSE 1
625 #define LIBTIEPIE_TRISTATE_TRUE 2
626 
627 
634 typedef int32_t LibTiePieStatus_t;
635 typedef uint32_t TpDeviceHandle_t;
636 typedef uint64_t TpVersion_t;
637 typedef uint32_t TpDate_t;
638 typedef uint8_t bool8_t;
639 typedef uint8_t LibTiePieTriState_t;
640 
647 #define TPVERSION_MAJOR( x ) ( x >> 48 )
648 #define TPVERSION_MINOR( x ) ( ( x >> 32 ) & 0xffff )
649 #define TPVERSION_RELEASE( x ) ( ( x >> 16 ) & 0xffff )
650 #define TPVERSION_BUILD( x ) ( x & 0xffff )
651 
652 #define TPDATE_YEAR( x ) ( x >> 16 )
653 #define TPDATE_MONTH( x ) ( ( x >> 8 ) & 0xff )
654 #define TPDATE_DAY( x ) ( x & 0xff )
655 
656 
660 #ifdef HAVE_WINDOWS_H
661 
667 #define WM_LIBTIEPIE ( WM_USER + 1337 )
668 
669 #define WM_LIBTIEPIE_LST_DEVICEADDED ( WM_LIBTIEPIE + 2 )
670 #define WM_LIBTIEPIE_LST_DEVICEREMOVED ( WM_LIBTIEPIE + 3 )
671 
672 #define WM_LIBTIEPIE_DEV_REMOVED ( WM_LIBTIEPIE + 4 )
673 
674 #define WM_LIBTIEPIE_SCP_DATAREADY ( WM_LIBTIEPIE + 0 )
675 #define WM_LIBTIEPIE_SCP_DATAOVERFLOW ( WM_LIBTIEPIE + 1 )
676 #define WM_LIBTIEPIE_SCP_CONNECTIONTESTCOMPLETED ( WM_LIBTIEPIE + 7 )
677 
678 #define WM_LIBTIEPIE_GEN_BURSTCOMPLETED ( WM_LIBTIEPIE + 5 )
679 #define WM_LIBTIEPIE_GEN_CONTROLLABLECHANGED ( WM_LIBTIEPIE + 6 )
680 
681 
685 #endif
686 
694 // work-a-round: without this line Doxygen adds the documentation below to the group above.
695 
712 TpVersion_t LibGetVersion();
713 
733 uint32_t LibGetConfig( uint8_t* pBuffer , uint32_t dwBufferLength );
734 
746 LibTiePieStatus_t LibGetLastStatus();
747 
759 const char* LibGetLastStatusStr();
760 
767 // work-a-round: without this line Doxygen adds the documentation below to the group above.
768 
774 uint32_t LstGetCount();
775 
784 bool8_t LstGetDeviceCanOpen( uint32_t dwIdKind , uint32_t dwId , uint32_t dwDeviceType );
785 
793 uint32_t LstGetDeviceProductId( uint32_t dwIdKind , uint32_t dwId );
794 
802 uint32_t LstGetDeviceVendorId( uint32_t dwIdKind , uint32_t dwId );
803 
823 uint32_t LstGetDeviceName( uint32_t dwIdKind , uint32_t dwId , char* pBuffer , uint32_t dwBufferLength );
824 
844 uint32_t LstGetDeviceNameShort( uint32_t dwIdKind , uint32_t dwId , char* pBuffer , uint32_t dwBufferLength );
845 
853 uint32_t LstGetDeviceSerialNumber( uint32_t dwIdKind , uint32_t dwId );
854 
877 uint32_t LstGetDeviceTypes( uint32_t dwIdKind , uint32_t dwId );
878 
891 TpDeviceHandle_t LstOpenDevice( uint32_t dwIdKind , uint32_t dwId , uint32_t dwDeviceType );
892 
904 TpDeviceHandle_t LstOpenOscilloscope( uint32_t dwIdKind , uint32_t dwId );
905 
917 TpDeviceHandle_t LstOpenGenerator( uint32_t dwIdKind , uint32_t dwId );
918 
929 TpDeviceHandle_t LstOpenI2CHost( uint32_t dwIdKind , uint32_t dwId );
930 
936 void LstRemoveDevice( uint32_t dwSerialNumber );
937 
953 void LstUpdate( uint32_t dwDeviceIdMask );
954 
960 // work-a-round: without this line Doxygen adds the documentation below to the group above.
961 
968 void LstSetCallbackDeviceAdded( TpCallback_t pCallback , void* pData );
969 
976 void LstSetCallbackDeviceRemoved( TpCallback_t pCallback , void* pData );
977 
978 #ifdef HAVE_WINDOWS_H
979 
986 void LstSetEventDeviceAdded( HANDLE hEvent );
987 
994 void LstSetEventDeviceRemoved( HANDLE hEvent );
995 
1004 void LstSetMessageDeviceAdded( HWND hWnd );
1005 
1014 void LstSetMessageDeviceRemoved( HWND hWnd );
1015 
1016 #endif
1017 
1025 // work-a-round: without this line Doxygen adds the documentation below to the group above.
1026 
1036 void DevClose( TpDeviceHandle_t hDevice );
1037 
1044 bool8_t DevIsRemoved( TpDeviceHandle_t hDevice );
1045 
1063 TpVersion_t DevGetDriverVersion( TpDeviceHandle_t hDevice );
1064 
1082 TpVersion_t DevGetFirmwareVersion( TpDeviceHandle_t hDevice );
1083 
1100 TpDate_t DevGetCalibrationDate( TpDeviceHandle_t hDevice );
1101 
1108 uint32_t DevGetSerialNumber( TpDeviceHandle_t hDevice );
1109 
1116 uint32_t DevGetProductId( TpDeviceHandle_t hDevice );
1117 
1124 uint32_t DevGetVendorId( TpDeviceHandle_t hDevice );
1125 
1132 uint32_t DevGetType( TpDeviceHandle_t hDevice );
1133 
1152 uint32_t DevGetName( TpDeviceHandle_t hDevice , char* pBuffer , uint32_t dwBufferLength );
1153 
1172 uint32_t DevGetNameShort( TpDeviceHandle_t hDevice , char* pBuffer , uint32_t dwBufferLength );
1173 
1179 // work-a-round: without this line Doxygen adds the documentation below to the group above.
1180 
1188 void DevSetCallbackRemoved( TpDeviceHandle_t hDevice , TpCallback_t pCallback , void* pData );
1189 
1190 #ifdef HAVE_WINDOWS_H
1191 
1199 void DevSetEventRemoved( TpDeviceHandle_t hDevice , HANDLE hEvent );
1200 
1210 void DevSetMessageRemoved( TpDeviceHandle_t hDevice , HWND hWnd , WPARAM wParam , LPARAM lParam );
1211 
1212 #endif
1213 
1223 // work-a-round: without this line Doxygen adds the documentation below to the group above.
1224 
1231 uint16_t ScpGetChannelCount( TpDeviceHandle_t hDevice );
1232 
1240 uint32_t ScpGetSharedChannelGroupCount( TpDeviceHandle_t hDevice );
1241 
1252 uint32_t ScpGetSharedChannelGroup( TpDeviceHandle_t hDevice , uint32_t dwGroupIndex , uint16_t* pChannelNumbers , uint32_t dwLength );
1253 
1261 bool8_t ScpChGetAutoRanging( TpDeviceHandle_t hDevice , uint16_t wCh );
1262 
1271 bool8_t ScpChSetAutoRanging( TpDeviceHandle_t hDevice , uint16_t wCh , bool8_t bEnable );
1272 
1280 uint32_t ScpChGetConnectorType( TpDeviceHandle_t hDevice , uint16_t wCh );
1281 
1289 uint64_t ScpChGetCouplings( TpDeviceHandle_t hDevice , uint16_t wCh );
1290 
1298 uint64_t ScpChGetCoupling( TpDeviceHandle_t hDevice , uint16_t wCh );
1299 
1308 uint64_t ScpChSetCoupling( TpDeviceHandle_t hDevice , uint16_t wCh , uint64_t qwCoupling );
1309 
1317 bool8_t ScpChGetEnabled( TpDeviceHandle_t hDevice , uint16_t wCh );
1318 
1327 bool8_t ScpChSetEnabled( TpDeviceHandle_t hDevice , uint16_t wCh , bool8_t bEnable );
1328 
1336 bool8_t ScpChIsDifferential( TpDeviceHandle_t hDevice , uint16_t wCh );
1337 
1345 double ScpChGetProbeGain( TpDeviceHandle_t hDevice , uint16_t wCh );
1346 
1355 double ScpChSetProbeGain( TpDeviceHandle_t hDevice , uint16_t wCh , double dProbeGain );
1356 
1378 uint32_t ScpChGetRanges( TpDeviceHandle_t hDevice , uint16_t wCh , double* pList , uint32_t dwLength );
1379 
1391 uint32_t ScpChGetRangesEx( TpDeviceHandle_t hDevice , uint16_t wCh , uint64_t qwCoupling , double* pList , uint32_t dwLength );
1392 
1400 double ScpChGetRange( TpDeviceHandle_t hDevice , uint16_t wCh );
1401 
1419 double ScpChSetRange( TpDeviceHandle_t hDevice , uint16_t wCh , double dRange );
1420 
1427 // work-a-round: without this line Doxygen adds the documentation below to the group above.
1428 
1439 uint64_t ScpGetData( TpDeviceHandle_t hDevice , float** pBuffers , uint16_t wChannelCount , uint64_t qwStartIndex , uint64_t qwSampleCount );
1440 
1450 uint64_t ScpGetData1Ch( TpDeviceHandle_t hDevice , float* pBufferCh1 , uint64_t qwStartIndex , uint64_t qwSampleCount );
1451 
1462 uint64_t ScpGetData2Ch( TpDeviceHandle_t hDevice , float* pBufferCh1 , float* pBufferCh2 , uint64_t qwStartIndex , uint64_t qwSampleCount );
1463 
1475 uint64_t ScpGetData3Ch( TpDeviceHandle_t hDevice , float *pBufferCh1 , float* pBufferCh2 , float* pBufferCh3 , uint64_t qwStartIndex , uint64_t qwSampleCount );
1476 
1489 uint64_t ScpGetData4Ch( TpDeviceHandle_t hDevice , float* pBufferCh1 , float* pBufferCh2 , float* pBufferCh3 , float* pBufferCh4 , uint64_t qwStartIndex , uint64_t qwSampleCount );
1490 
1501 uint64_t ScpGetDataRaw( TpDeviceHandle_t hDevice , void** pBuffers , uint16_t wChannelCount , uint64_t qwStartIndex , uint64_t qwSampleCount );
1502 
1512 uint64_t ScpGetDataRaw1Ch( TpDeviceHandle_t hDevice , void* pBufferCh1 , uint64_t qwStartIndex , uint64_t qwSampleCount );
1513 
1524 uint64_t ScpGetDataRaw2Ch( TpDeviceHandle_t hDevice , void* pBufferCh1 , void* pBufferCh2 , uint64_t qwStartIndex , uint64_t qwSampleCount );
1525 
1537 uint64_t ScpGetDataRaw3Ch( TpDeviceHandle_t hDevice , void* pBufferCh1 , void* pBufferCh2 , void* pBufferCh3 , uint64_t qwStartIndex , uint64_t qwSampleCount );
1538 
1551 uint64_t ScpGetDataRaw4Ch( TpDeviceHandle_t hDevice , void* pBufferCh1 , void* pBufferCh2 , void* pBufferCh3 , void* pBufferCh4 , uint64_t qwStartIndex , uint64_t qwSampleCount );
1552 
1560 bool8_t ScpChIsRangeMaxReachable( TpDeviceHandle_t hDevice , uint16_t wCh );
1561 
1569 uint32_t ScpChGetDataRawType( TpDeviceHandle_t hDevice , uint16_t wCh );
1570 
1577 uint64_t ScpGetValidPreSampleCount( TpDeviceHandle_t hDevice );
1578 
1589 void ScpChGetDataValueRange( TpDeviceHandle_t hDevice , uint16_t wCh , double* pMin , double* pMax );
1590 
1600 double ScpChGetDataValueMax( TpDeviceHandle_t hDevice , uint16_t wCh );
1601 
1611 double ScpChGetDataValueMin( TpDeviceHandle_t hDevice , uint16_t wCh );
1612 
1625 void ScpChGetDataRawValueRange( TpDeviceHandle_t hDevice , uint16_t wCh , int64_t* pMin , int64_t* pZero , int64_t* pMax );
1626 
1637 int64_t ScpChGetDataRawValueMax( TpDeviceHandle_t hDevice , uint16_t wCh );
1638 
1649 int64_t ScpChGetDataRawValueZero( TpDeviceHandle_t hDevice , uint16_t wCh );
1650 
1661 int64_t ScpChGetDataRawValueMin( TpDeviceHandle_t hDevice , uint16_t wCh );
1662 
1669 // work-a-round: without this line Doxygen adds the documentation below to the group above.
1670 
1678 void ScpSetCallbackDataReady( TpDeviceHandle_t hDevice , TpCallback_t pCallback , void *pData );
1679 
1687 void ScpSetCallbackDataOverflow( TpDeviceHandle_t hDevice , TpCallback_t pCallback , void *pData );
1688 
1696 void ScpSetCallbackConnectionTestCompleted( TpDeviceHandle_t hDevice , TpCallback_t pCallback , void *pData );
1697 
1698 #ifdef HAVE_WINDOWS_H
1699 
1707 void ScpSetEventDataReady( TpDeviceHandle_t hDevice , HANDLE hEvent );
1708 
1716 void ScpSetEventDataOverflow( TpDeviceHandle_t hDevice , HANDLE hEvent );
1717 
1725 void ScpSetEventConnectionTestCompleted( TpDeviceHandle_t hDevice , HANDLE hEvent );
1726 
1736 void ScpSetMessageDataReady( TpDeviceHandle_t hDevice , HWND hWnd , WPARAM wParam , LPARAM lParam );
1737 
1747 void ScpSetMessageDataOverflow( TpDeviceHandle_t hDevice , HWND hWnd , WPARAM wParam , LPARAM lParam );
1748 
1758 void ScpSetMessageConnectionTestCompleted( TpDeviceHandle_t hDevice , HWND hWnd , WPARAM wParam , LPARAM lParam );
1759 
1760 #endif
1761 
1768 // work-a-round: without this line Doxygen adds the documentation below to the group above.
1769 
1776 bool8_t ScpStart( TpDeviceHandle_t hDevice );
1777 
1783 void ScpStop( TpDeviceHandle_t hDevice );
1784 
1790 void ScpForceTrigger( TpDeviceHandle_t hDevice );
1791 
1798 bool8_t ScpIsDataReady( TpDeviceHandle_t hDevice );
1799 
1806 bool8_t ScpIsDataOverflow( TpDeviceHandle_t hDevice );
1807 
1814 bool8_t ScpIsRunning( TpDeviceHandle_t hDevice );
1815 
1822 bool8_t ScpIsTriggered( TpDeviceHandle_t hDevice );
1823 
1830 uint32_t ScpGetMeasureModes( TpDeviceHandle_t hDevice );
1831 
1838 uint32_t ScpGetMeasureMode( TpDeviceHandle_t hDevice );
1839 
1847 uint32_t ScpSetMeasureMode( TpDeviceHandle_t hDevice , uint32_t dwMeasureMode );
1848 
1855 // work-a-round: without this line Doxygen adds the documentation below to the group above.
1856 
1865 uint32_t ScpGetResolutions( TpDeviceHandle_t hDevice , uint8_t *pList , uint32_t dwLength );
1866 
1873 uint8_t ScpGetResolution( TpDeviceHandle_t hDevice );
1874 
1882 uint8_t ScpSetResolution( TpDeviceHandle_t hDevice , uint8_t byResolution );
1883 
1890 bool8_t ScpIsResolutionEnhanced( TpDeviceHandle_t hDevice );
1891 
1899 bool8_t ScpIsResolutionEnhancedEx( TpDeviceHandle_t hDevice , uint8_t byResolution );
1900 
1907 // work-a-round: without this line Doxygen adds the documentation below to the group above.
1908 
1915 uint32_t ScpGetClockSources( TpDeviceHandle_t hDevice );
1916 
1923 uint32_t ScpGetClockSource( TpDeviceHandle_t hDevice );
1924 
1932 uint32_t ScpSetClockSource( TpDeviceHandle_t hDevice , uint32_t dwClockSource );
1933 
1940 uint32_t ScpGetClockOutputs( TpDeviceHandle_t hDevice );
1941 
1948 uint32_t ScpGetClockOutput( TpDeviceHandle_t hDevice );
1949 
1957 uint32_t ScpSetClockOutput( TpDeviceHandle_t hDevice , uint32_t dwClockOutput );
1958 
1965 // work-a-round: without this line Doxygen adds the documentation below to the group above.
1966 
1973 double ScpGetPreSampleRatio( TpDeviceHandle_t hDevice );
1974 
1982 double ScpSetPreSampleRatio( TpDeviceHandle_t hDevice , double dPreSampleRatio );
1983 
1990 uint64_t ScpGetTriggerHoldOffCountMax( TpDeviceHandle_t hDevice );
1991 
1999 uint64_t ScpGetTriggerHoldOffCountMaxEx( TpDeviceHandle_t hDevice , uint32_t dwMeasureMode );
2000 
2007 uint64_t ScpGetTriggerHoldOffCount( TpDeviceHandle_t hDevice );
2008 
2016 uint64_t ScpSetTriggerHoldOffCount( TpDeviceHandle_t hDevice , uint64_t qwTriggerHoldOffCount );
2017 
2024 uint64_t ScpGetRecordLengthMax( TpDeviceHandle_t hDevice );
2025 
2034 uint64_t ScpGetRecordLengthMaxEx( TpDeviceHandle_t hDevice , uint32_t dwMeasureMode , uint8_t byResolution );
2035 
2042 uint64_t ScpGetRecordLength( TpDeviceHandle_t hDevice );
2043 
2051 uint64_t ScpSetRecordLength( TpDeviceHandle_t hDevice , uint64_t qwRecordLength );
2052 
2060 uint64_t ScpVerifyRecordLength( TpDeviceHandle_t hDevice , uint64_t qwRecordLength );
2061 
2072 uint64_t ScpVerifyRecordLengthEx( TpDeviceHandle_t hDevice , uint64_t qwRecordLength , uint32_t dwMeasureMode , uint8_t byResolution , uint64_t qwActiveChannelMask );
2073 
2080 double ScpGetSampleFrequencyMax( TpDeviceHandle_t hDevice );
2081 
2088 double ScpGetSampleFrequency( TpDeviceHandle_t hDevice );
2089 
2097 double ScpSetSampleFrequency( TpDeviceHandle_t hDevice , double dSampleFrequency );
2098 
2106 double ScpVerifySampleFrequency( TpDeviceHandle_t hDevice , double dSampleFrequency );
2107 
2118 double ScpVerifySampleFrequencyEx( TpDeviceHandle_t hDevice , double dSampleFrequency , uint32_t dwMeasureMode , uint8_t byResolution , uint64_t qwActiveChannelMask );
2119 
2126 // work-a-round: without this line Doxygen adds the documentation below to the group above.
2127 
2134 double ScpGetTriggerTimeOut( TpDeviceHandle_t hDevice );
2135 
2143 double ScpSetTriggerTimeOut( TpDeviceHandle_t hDevice , double dTimeout );
2144 
2152 double ScpVerifyTriggerTimeOut( TpDeviceHandle_t hDevice , double dTimeout );
2153 
2160 uint64_t ScpGetTriggerSources( TpDeviceHandle_t hDevice );
2161 
2169 uint64_t ScpGetTriggerSourcesEx( TpDeviceHandle_t hDevice , uint32_t dwMeasureMode );
2170 
2177 uint64_t ScpGetTriggerSourceOR( TpDeviceHandle_t hDevice );
2178 
2186 uint64_t ScpSetTriggerSourceOR( TpDeviceHandle_t hDevice , uint64_t qwTriggerSourceMask );
2187 
2194 uint64_t ScpGetTriggerSourceAND( TpDeviceHandle_t hDevice );
2195 
2203 uint64_t ScpSetTriggerSourceAND( TpDeviceHandle_t hDevice , uint64_t qwTriggerSourceMask );
2204 
2215 uint64_t ScpGetTriggerKinds( TpDeviceHandle_t hDevice , uint64_t qwTriggerSourceMask );
2216 
2228 uint64_t ScpGetTriggerKindsEx( TpDeviceHandle_t hDevice , uint64_t qwTriggerSourceMask , uint32_t dwMeasureMode );
2229 
2237 uint64_t ScpGetTriggerKind( TpDeviceHandle_t hDevice , uint64_t qwTriggerSource );
2238 
2248 uint64_t ScpSetTriggerKind( TpDeviceHandle_t hDevice , uint64_t qwTriggerSource , uint64_t qwTriggerKind );
2249 
2258 double ScpGetTriggerLevel( TpDeviceHandle_t hDevice , uint64_t qwTriggerSource , uint32_t dwIndex );
2259 
2269 double ScpSetTriggerLevel( TpDeviceHandle_t hDevice , uint64_t qwTriggerSource , uint32_t dwIndex , double dLevel );
2270 
2279 double ScpGetTriggerHysteresis( TpDeviceHandle_t hDevice , uint64_t qwTriggerSource , uint32_t dwIndex );
2280 
2290 double ScpSetTriggerHysteresis( TpDeviceHandle_t hDevice , uint64_t qwTriggerSource , uint32_t dwIndex , double dHysteresis );
2291 
2299 uint64_t ScpChGetTriggerKinds( TpDeviceHandle_t hDevice , uint16_t wCh );
2300 
2309 uint64_t ScpChGetTriggerKindsEx( TpDeviceHandle_t hDevice , uint16_t wCh , uint32_t dwMeasureMode );
2310 
2318 uint64_t ScpChGetTriggerKind( TpDeviceHandle_t hDevice , uint16_t wCh );
2319 
2328 uint64_t ScpChSetTriggerKind( TpDeviceHandle_t hDevice , uint16_t wCh , uint64_t qwTriggerKind );
2329 
2338 double ScpChGetTriggerLevel( TpDeviceHandle_t hDevice , uint16_t wCh , uint32_t dwIndex );
2339 
2349 double ScpChSetTriggerLevel( TpDeviceHandle_t hDevice , uint16_t wCh , uint32_t dwIndex , double dLevel );
2350 
2359 double ScpChGetTriggerHysteresis( TpDeviceHandle_t hDevice , uint16_t wCh , uint32_t dwIndex );
2360 
2370 double ScpChSetTriggerHysteresis( TpDeviceHandle_t hDevice , uint16_t wCh , uint32_t dwIndex , double dHysteresis );
2371 
2379 double ScpChGetTriggerPulseTime( TpDeviceHandle_t hDevice , uint16_t wCh );
2380 
2389 double ScpChSetTriggerPulseTime( TpDeviceHandle_t hDevice , uint16_t wCh , double dPulseTime );
2390 
2397 // work-a-round: without this line Doxygen adds the documentation below to the group above.
2398 
2405 bool8_t ScpHasConnectionTest( TpDeviceHandle_t hDevice );
2406 
2414 bool8_t ScpChHasConnectionTest( TpDeviceHandle_t hDevice , uint16_t wCh );
2415 
2423 bool8_t ScpStartConnectionTest( TpDeviceHandle_t hDevice , uint64_t qwChannelMask );
2424 
2431 bool8_t ScpIsConnectionTestCompleted( TpDeviceHandle_t hDevice );
2432 
2441 uint16_t ScpGetConnectionTestData( TpDeviceHandle_t hDevice , LibTiePieTriState_t* pBuffer , uint16_t wChannelCount );
2442 
2452 // work-a-round: without this line Doxygen adds the documentation below to the group above.
2453 
2460 uint32_t GenGetConnectorType( TpDeviceHandle_t hDevice );
2461 
2468 bool8_t GenIsDifferential( TpDeviceHandle_t hDevice );
2469 
2476 double GenGetImpedance( TpDeviceHandle_t hDevice );
2477 
2484 // work-a-round: without this line Doxygen adds the documentation below to the group above.
2485 
2492 bool8_t GenIsControllable( TpDeviceHandle_t hDevice );
2493 
2500 bool8_t GenGetOutputOn( TpDeviceHandle_t hDevice );
2501 
2509 bool8_t GenSetOutputOn( TpDeviceHandle_t hDevice , bool8_t bOutputOn );
2510 
2516 void GenStart( TpDeviceHandle_t hDevice );
2517 
2523 void GenStop( TpDeviceHandle_t hDevice );
2524 
2531 bool8_t GenIsBurstActive( TpDeviceHandle_t hDevice );
2532 
2539 uint64_t GenGetBurstCount( TpDeviceHandle_t hDevice );
2540 
2547 uint64_t GenGetBurstCountMax( TpDeviceHandle_t hDevice );
2548 
2556 uint64_t GenSetBurstCount( TpDeviceHandle_t hDevice , uint64_t qwBurstCount );
2557 
2564 uint32_t GenGetModes( TpDeviceHandle_t hDevice );
2565 
2573 uint32_t GenGetModesEx( TpDeviceHandle_t hDevice , uint32_t dwSignalType );
2574 
2581 uint32_t GenGetMode( TpDeviceHandle_t hDevice );
2582 
2590 uint32_t GenSetMode( TpDeviceHandle_t hDevice , uint32_t dwMode );
2591 
2598 uint32_t GenGetSignalTypes( TpDeviceHandle_t hDevice );
2599 
2606 uint32_t GenGetSignalType( TpDeviceHandle_t hDevice );
2607 
2615 uint32_t GenSetSignalType( TpDeviceHandle_t hDevice , uint32_t dwSignalType );
2616 
2623 double GenGetAmplitudeMax( TpDeviceHandle_t hDevice );
2624 
2631 double GenGetAmplitudeMin( TpDeviceHandle_t hDevice );
2632 
2639 double GenGetAmplitude( TpDeviceHandle_t hDevice );
2640 
2648 double GenSetAmplitude( TpDeviceHandle_t hDevice , double dAmplitude );
2649 
2657 double GenVerifyAmplitude( TpDeviceHandle_t hDevice , double dAmplitude );
2658 
2667 void GenGetFrequencyMinMax( TpDeviceHandle_t hDevice , uint32_t dwMode , double* pMin , double* pMax );
2668 
2675 double GenGetFrequencyMin( TpDeviceHandle_t hDevice );
2676 
2683 double GenGetFrequencyMax( TpDeviceHandle_t hDevice );
2684 
2691 double GenGetFrequency( TpDeviceHandle_t hDevice );
2692 
2700 double GenSetFrequency( TpDeviceHandle_t hDevice , double dFrequency );
2701 
2709 double GenVerifyFrequency( TpDeviceHandle_t hDevice , double dFrequency );
2710 
2719 double GenVerifyFrequencyEx( TpDeviceHandle_t hDevice , double dFrequency , uint32_t dwMode );
2720 
2727 double GenGetOffsetMin( TpDeviceHandle_t hDevice );
2728 
2735 double GenGetOffsetMax( TpDeviceHandle_t hDevice );
2736 
2743 double GenGetOffset( TpDeviceHandle_t hDevice );
2744 
2752 double GenSetOffset( TpDeviceHandle_t hDevice , double dOffset );
2753 
2761 double GenVerifyOffset( TpDeviceHandle_t hDevice , double dOffset );
2762 
2769 double GenGetPhase( TpDeviceHandle_t hDevice );
2770 
2778 double GenSetPhase( TpDeviceHandle_t hDevice , double dPhase );
2779 
2787 double GenVerifyPhase( TpDeviceHandle_t hDevice , double dPhase );
2788 
2795 double GenGetSymmetry( TpDeviceHandle_t hDevice );
2796 
2804 double GenSetSymmetry( TpDeviceHandle_t hDevice , double dSymmetry );
2805 
2813 double GenVerifySymmetry( TpDeviceHandle_t hDevice , double dSymmetry );
2814 
2821 // work-a-round: without this line Doxygen adds the documentation below to the group above.
2822 
2830 void GenSetCallbackBurstCompleted( TpDeviceHandle_t hDevice , TpCallback_t pCallback , void* pData );
2831 
2839 void GenSetCallbackControllableChanged( TpDeviceHandle_t hDevice , TpCallback_t pCallback , void* pData );
2840 
2841 #ifdef HAVE_WINDOWS_H
2842 
2850 void GenSetEventBurstCompleted( TpDeviceHandle_t hDevice , HANDLE hEvent );
2851 
2859 void GenSetEventControllableChanged( TpDeviceHandle_t hDevice , HANDLE hEvent );
2860 
2870 void GenSetMessageBurstCompleted( TpDeviceHandle_t hDevice , HWND hWnd , WPARAM wParam , LPARAM lParam );
2871 
2881 void GenSetMessageControllableChanged( TpDeviceHandle_t hDevice , HWND hWnd , WPARAM wParam , LPARAM lParam );
2882 
2883 #endif
2884 
2891 // work-a-round: without this line Doxygen adds the documentation below to the group above.
2892 
2899 bool8_t GenGetAutoRanging( TpDeviceHandle_t hDevice );
2900 
2908 bool8_t GenSetAutoRanging( TpDeviceHandle_t hDevice , bool8_t bEnable );
2909 
2930 uint32_t GenGetRanges( TpDeviceHandle_t hDevice , double* pList , uint32_t dwLength );
2931 
2938 double GenGetRange( TpDeviceHandle_t hDevice );
2939 
2956 double GenSetRange( TpDeviceHandle_t hDevice , double dRange );
2957 
2964 // work-a-round: without this line Doxygen adds the documentation below to the group above.
2965 
2972 uint64_t GenGetTriggerSources( TpDeviceHandle_t hDevice );
2973 
2980 uint64_t GenGetTriggerSourceAND( TpDeviceHandle_t hDevice );
2981 
2989 uint64_t GenSetTriggerSourceAND( TpDeviceHandle_t hDevice , uint64_t qwTriggerSourceMask );
2990 
2997 uint64_t GenGetTriggerSourceOR( TpDeviceHandle_t hDevice );
2998 
3006 uint64_t GenSetTriggerSourceOR( TpDeviceHandle_t hDevice , uint64_t qwTriggerSourceMask );
3007 
3014 // work-a-round: without this line Doxygen adds the documentation below to the group above.
3015 
3022 uint64_t GenGetDataLengthMax( TpDeviceHandle_t hDevice );
3023 
3030 uint64_t GenGetDataLength( TpDeviceHandle_t hDevice );
3031 
3039 uint64_t GenVerifyDataLength( TpDeviceHandle_t hDevice , uint64_t qwDataLength );
3040 
3047 uint32_t GenGetDataRawType( TpDeviceHandle_t hDevice );
3048 
3056 void GenSetData( TpDeviceHandle_t hDevice , float* pBuffer , uint64_t qwSampleCount );
3057 
3065 void GenSetDataRaw( TpDeviceHandle_t hDevice , void* pBuffer , uint64_t qwSampleCount );
3066 
3074 // work-a-round: without this line Doxygen adds the documentation below to the group above.
3075 
3086 bool8_t I2CRead( TpDeviceHandle_t hDevice , uint16_t wAddress , void* pBuffer , uint32_t dwSize , bool8_t bStop );
3087 
3096 bool8_t I2CReadByte( TpDeviceHandle_t hDevice , uint16_t wAddress , uint8_t* pValue );
3097 
3106 bool8_t I2CReadWord( TpDeviceHandle_t hDevice , uint16_t wAddress , uint16_t* pValue );
3107 
3118 bool8_t I2CWrite( TpDeviceHandle_t hDevice , uint16_t wAddress , void* pBuffer , uint32_t dwSize , bool8_t bStop );
3119 
3128 bool8_t I2CWriteByte( TpDeviceHandle_t hDevice , uint16_t wAddress , uint8_t byValue );
3129 
3139 bool8_t I2CWriteByteByte( TpDeviceHandle_t hDevice , uint16_t wAddress , uint8_t byValue1 , uint8_t byValue2 );
3140 
3150 bool8_t I2CWriteByteWord( TpDeviceHandle_t hDevice , uint16_t wAddress , uint8_t byValue1 , uint16_t wValue2 );
3151 
3160 bool8_t I2CWriteWord( TpDeviceHandle_t hDevice , uint16_t wAddress , uint16_t wValue );
3161 
3168 double I2CGetSpeed( TpDeviceHandle_t hDevice );
3169 
3176 double I2CGetSpeedMax( TpDeviceHandle_t hDevice );
3177 
3185 double I2CSetSpeed( TpDeviceHandle_t hDevice , double dSpeed );
3186 
3194 double I2CVerifySpeed( TpDeviceHandle_t hDevice , double dSpeed );
3195 
3203 bool8_t I2CIsInternalAddress( TpDeviceHandle_t hDevice , uint16_t wAddress );
3204 
3210 #ifdef __cplusplus
3211 }
3212 #endif
3213 
3214 #endif