ps6000Api.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962
  1. /****************************************************************************
  2. *
  3. * Filename: ps6000Api.h
  4. * Author: MAS
  5. * Description:
  6. *
  7. * This header defines the interface to driver routines for the
  8. * PicoScope 6000 Series PC Oscilloscopes.
  9. *
  10. * Copyright � 2009 - 2022 Pico Technology Ltd. All rights reserved.
  11. *
  12. ****************************************************************************/
  13. #ifndef __PS6000API_H__
  14. #define __PS6000API_H__
  15. #include <stdint.h>
  16. #include "PicoStatus.h"
  17. #ifdef PREF0
  18. #undef PREF0
  19. #endif
  20. #ifdef PREF1
  21. #undef PREF1
  22. #endif
  23. #ifdef PREF2
  24. #undef PREF2
  25. #endif
  26. #ifdef PREF3
  27. #undef PREF3
  28. #endif
  29. #ifdef __cplusplus
  30. #define PREF0 extern "C"
  31. #else
  32. #define PREF0
  33. #endif
  34. #ifdef WIN32
  35. // If you are dynamically linking ps6000.dll into your project #define DYNLINK here
  36. #ifdef DYNLINK
  37. #define PREF1 typedef
  38. #define PREF2
  39. #define PREF3(x) (__stdcall *x)
  40. #else
  41. #define PREF1
  42. #ifdef _USRDLL
  43. #define PREF2 __declspec(dllexport) __stdcall
  44. #else
  45. #define PREF2 __declspec(dllimport) __stdcall
  46. #endif
  47. #define PREF3(x) x
  48. #endif
  49. #define PREF4 __stdcall
  50. #else
  51. #ifdef DYNLINK
  52. #define PREF1 typedef
  53. #define PREF2
  54. #define PREF3(x) (*x)
  55. #else
  56. #ifdef _USRDLL
  57. #define PREF1 __attribute__((visibility("default")))
  58. #else
  59. #define PREF1
  60. #endif
  61. #define PREF2
  62. #define PREF3(x) x
  63. #endif
  64. #define PREF4
  65. #endif
  66. #define PS6000_MAX_OVERSAMPLE_8BIT 256
  67. /* Although the PS6000 uses an 8-bit ADC, it is usually possible to
  68. * oversample (collect multiple readings at each time) by up to 256.
  69. * the results are therefore ALWAYS scaled up to 16-bits, even if
  70. * oversampling is not used.
  71. *
  72. * The maximum and minimum values returned are therefore as follows:
  73. */
  74. #define PS6000_MAX_VALUE 32512
  75. #define PS6000_MIN_VALUE -32512
  76. #define MAX_PULSE_WIDTH_QUALIFIER_COUNT 16777215L
  77. #define MAX_SIG_GEN_BUFFER_SIZE 16384
  78. #define PS640X_C_D_MAX_SIG_GEN_BUFFER_SIZE 65536
  79. #define MIN_SIG_GEN_BUFFER_SIZE 1
  80. #define MIN_DWELL_COUNT 3
  81. #define MAX_SWEEPS_SHOTS ((1 << 30) - 1)
  82. #define MAX_WAVEFORMS_PER_SECOND 1000000
  83. // supported by the PS6402 and PS6403
  84. // for other devices use GetAnalogueOffset also
  85. // PS6402 and PS6403 supports this function
  86. #define MAX_ANALOGUE_OFFSET_50MV_200MV 0.500f
  87. #define MIN_ANALOGUE_OFFSET_50MV_200MV -0.500f
  88. #define MAX_ANALOGUE_OFFSET_500MV_2V 2.500f
  89. #define MIN_ANALOGUE_OFFSET_500MV_2V -2.500f
  90. #define MAX_ANALOGUE_OFFSET_5V_20V 20.f
  91. #define MIN_ANALOGUE_OFFSET_5V_20V -20.f
  92. #define PS6000_MAX_ETS_CYCLES 250
  93. #define PS6000_MAX_INTERLEAVE 50
  94. typedef enum enPS6000ExternalFrequency
  95. {
  96. PS6000_FREQUENCY_OFF,
  97. PS6000_FREQUENCY_5MHZ,
  98. PS6000_FREQUENCY_10MHZ,
  99. PS6000_FREQUENCY_20MHZ,
  100. PS6000_FREQUENCY_25MHZ,
  101. PS6000_MAX_FREQUENCIES
  102. } PS6000_EXTERNAL_FREQUENCY;
  103. typedef enum enPS6000BandwidthLimiter
  104. {
  105. PS6000_BW_FULL,
  106. PS6000_BW_20MHZ,
  107. PS6000_BW_25MHZ,
  108. } PS6000_BANDWIDTH_LIMITER;
  109. typedef enum enPS6000Channel
  110. {
  111. PS6000_CHANNEL_A,
  112. PS6000_CHANNEL_B,
  113. PS6000_CHANNEL_C,
  114. PS6000_CHANNEL_D,
  115. PS6000_EXTERNAL,
  116. PS6000_MAX_CHANNELS = PS6000_EXTERNAL,
  117. PS6000_TRIGGER_AUX,
  118. PS6000_MAX_TRIGGER_SOURCES
  119. } PS6000_CHANNEL;
  120. typedef enum enPS6000ChannelBufferIndex
  121. {
  122. PS6000_CHANNEL_A_MAX,
  123. PS6000_CHANNEL_A_MIN,
  124. PS6000_CHANNEL_B_MAX,
  125. PS6000_CHANNEL_B_MIN,
  126. PS6000_CHANNEL_C_MAX,
  127. PS6000_CHANNEL_C_MIN,
  128. PS6000_CHANNEL_D_MAX,
  129. PS6000_CHANNEL_D_MIN,
  130. PS6000_MAX_CHANNEL_BUFFERS
  131. } PS6000_CHANNEL_BUFFER_INDEX;
  132. typedef enum enPS6000Range
  133. {
  134. PS6000_10MV,
  135. PS6000_20MV,
  136. PS6000_50MV,
  137. PS6000_100MV,
  138. PS6000_200MV,
  139. PS6000_500MV,
  140. PS6000_1V,
  141. PS6000_2V,
  142. PS6000_5V,
  143. PS6000_10V,
  144. PS6000_20V,
  145. PS6000_50V,
  146. PS6000_MAX_RANGES
  147. } PS6000_RANGE;
  148. typedef enum enPS6000Coupling
  149. {
  150. PS6000_AC,
  151. PS6000_DC_1M,
  152. PS6000_DC_50R
  153. } PS6000_COUPLING;
  154. typedef enum enPS6000EtsMode
  155. {
  156. PS6000_ETS_OFF, // ETS disabled
  157. PS6000_ETS_FAST, // Return ready as soon as requested no of interleaves is available
  158. PS6000_ETS_SLOW, // Return ready every time a new set of no_of_cycles is collected
  159. PS6000_ETS_MODES_MAX
  160. } PS6000_ETS_MODE;
  161. typedef enum enPS6000TimeUnits
  162. {
  163. PS6000_FS,
  164. PS6000_PS,
  165. PS6000_NS,
  166. PS6000_US,
  167. PS6000_MS,
  168. PS6000_S,
  169. PS6000_MAX_TIME_UNITS,
  170. } PS6000_TIME_UNITS;
  171. typedef enum enPS6000SweepType
  172. {
  173. PS6000_UP,
  174. PS6000_DOWN,
  175. PS6000_UPDOWN,
  176. PS6000_DOWNUP,
  177. PS6000_MAX_SWEEP_TYPES
  178. } PS6000_SWEEP_TYPE;
  179. typedef enum enPS6000WaveType
  180. {
  181. PS6000_SINE,
  182. PS6000_SQUARE,
  183. PS6000_TRIANGLE,
  184. PS6000_RAMP_UP,
  185. PS6000_RAMP_DOWN,
  186. PS6000_SINC,
  187. PS6000_GAUSSIAN,
  188. PS6000_HALF_SINE,
  189. PS6000_DC_VOLTAGE,
  190. PS6000_MAX_WAVE_TYPES
  191. } PS6000_WAVE_TYPE;
  192. typedef enum enPS6000ExtraOperations
  193. {
  194. PS6000_ES_OFF,
  195. PS6000_WHITENOISE,
  196. PS6000_PRBS // Pseudo-Random Bit Stream
  197. } PS6000_EXTRA_OPERATIONS;
  198. #define PS6000_PRBS_MAX_FREQUENCY 20000000.f
  199. #define PS6000_SINE_MAX_FREQUENCY 20000000.f
  200. #define PS6000_SQUARE_MAX_FREQUENCY 20000000.f
  201. #define PS6000_TRIANGLE_MAX_FREQUENCY 20000000.f
  202. #define PS6000_SINC_MAX_FREQUENCY 20000000.f
  203. #define PS6000_RAMP_MAX_FREQUENCY 20000000.f
  204. #define PS6000_HALF_SINE_MAX_FREQUENCY 20000000.f
  205. #define PS6000_GAUSSIAN_MAX_FREQUENCY 20000000.f
  206. #define PS6000_MIN_FREQUENCY 0.03f
  207. typedef enum enPS6000SigGenTrigType
  208. {
  209. PS6000_SIGGEN_RISING,
  210. PS6000_SIGGEN_FALLING,
  211. PS6000_SIGGEN_GATE_HIGH,
  212. PS6000_SIGGEN_GATE_LOW
  213. } PS6000_SIGGEN_TRIG_TYPE;
  214. typedef enum enPS6000SigGenTrigSource
  215. {
  216. PS6000_SIGGEN_NONE,
  217. PS6000_SIGGEN_SCOPE_TRIG,
  218. PS6000_SIGGEN_AUX_IN,
  219. PS6000_SIGGEN_EXT_IN,
  220. PS6000_SIGGEN_SOFT_TRIG,
  221. PS6000_SIGGEN_TRIGGER_RAW
  222. } PS6000_SIGGEN_TRIG_SOURCE;
  223. typedef enum enPS6000IndexMode
  224. {
  225. PS6000_SINGLE,
  226. PS6000_DUAL,
  227. PS6000_QUAD,
  228. PS6000_MAX_INDEX_MODES
  229. } PS6000_INDEX_MODE;
  230. typedef enum enPS6000ThresholdMode
  231. {
  232. PS6000_LEVEL,
  233. PS6000_WINDOW
  234. } PS6000_THRESHOLD_MODE;
  235. typedef enum enPS6000ThresholdDirection
  236. {
  237. PS6000_ABOVE, //using upper threshold
  238. PS6000_BELOW, // using upper threshold
  239. PS6000_RISING, // using upper threshold
  240. PS6000_FALLING, // using upper threshold
  241. PS6000_RISING_OR_FALLING, // using upper threshold
  242. PS6000_ABOVE_LOWER, // using lower threshold
  243. PS6000_BELOW_LOWER, // using lower threshold
  244. PS6000_RISING_LOWER, // using lower threshold
  245. PS6000_FALLING_LOWER, // using lower threshold
  246. // Windowing using both thresholds
  247. PS6000_INSIDE = PS6000_ABOVE,
  248. PS6000_OUTSIDE = PS6000_BELOW,
  249. PS6000_ENTER = PS6000_RISING,
  250. PS6000_EXIT = PS6000_FALLING,
  251. PS6000_ENTER_OR_EXIT = PS6000_RISING_OR_FALLING,
  252. PS6000_POSITIVE_RUNT = 9,
  253. PS6000_NEGATIVE_RUNT,
  254. // no trigger set
  255. PS6000_NONE = PS6000_RISING
  256. } PS6000_THRESHOLD_DIRECTION;
  257. typedef enum enPS6000TriggerState
  258. {
  259. PS6000_CONDITION_DONT_CARE,
  260. PS6000_CONDITION_TRUE,
  261. PS6000_CONDITION_FALSE,
  262. PS6000_CONDITION_MAX
  263. } PS6000_TRIGGER_STATE;
  264. #pragma pack(push,1)
  265. typedef struct tPS6000TriggerInfo
  266. {
  267. PICO_STATUS status;
  268. uint32_t segmentIndex;
  269. uint32_t triggerIndex;
  270. int64_t triggerTime;
  271. int16_t timeUnits;
  272. int16_t reserved0;
  273. uint64_t timeStampCounter;
  274. } PS6000_TRIGGER_INFO;
  275. typedef struct tPS6000TriggerConditions
  276. {
  277. PS6000_TRIGGER_STATE channelA;
  278. PS6000_TRIGGER_STATE channelB;
  279. PS6000_TRIGGER_STATE channelC;
  280. PS6000_TRIGGER_STATE channelD;
  281. PS6000_TRIGGER_STATE external;
  282. PS6000_TRIGGER_STATE aux;
  283. PS6000_TRIGGER_STATE pulseWidthQualifier;
  284. } PS6000_TRIGGER_CONDITIONS;
  285. #pragma pack(pop)
  286. #pragma pack(push,1)
  287. typedef struct tPS6000PwqConditions
  288. {
  289. PS6000_TRIGGER_STATE channelA;
  290. PS6000_TRIGGER_STATE channelB;
  291. PS6000_TRIGGER_STATE channelC;
  292. PS6000_TRIGGER_STATE channelD;
  293. PS6000_TRIGGER_STATE external;
  294. PS6000_TRIGGER_STATE aux;
  295. } PS6000_PWQ_CONDITIONS;
  296. #pragma pack(pop)
  297. #pragma pack(push,1)
  298. typedef struct tPS6000TriggerChannelProperties
  299. {
  300. int16_t thresholdUpper;
  301. uint16_t hysteresisUpper;
  302. int16_t thresholdLower;
  303. uint16_t hysteresisLower;
  304. PS6000_CHANNEL channel;
  305. PS6000_THRESHOLD_MODE thresholdMode;
  306. } PS6000_TRIGGER_CHANNEL_PROPERTIES;
  307. #pragma pack(pop)
  308. typedef enum enPS6000RatioMode
  309. {
  310. PS6000_RATIO_MODE_NONE,
  311. PS6000_RATIO_MODE_AGGREGATE = 1,
  312. PS6000_RATIO_MODE_AVERAGE = 2,
  313. PS6000_RATIO_MODE_DECIMATE = 4,
  314. PS6000_RATIO_MODE_DISTRIBUTION = 8
  315. } PS6000_RATIO_MODE;
  316. typedef enum enPS6000PulseWidthType
  317. {
  318. PS6000_PW_TYPE_NONE,
  319. PS6000_PW_TYPE_LESS_THAN,
  320. PS6000_PW_TYPE_GREATER_THAN,
  321. PS6000_PW_TYPE_IN_RANGE,
  322. PS6000_PW_TYPE_OUT_OF_RANGE
  323. } PS6000_PULSE_WIDTH_TYPE;
  324. typedef enum enPS6000Temperatures
  325. {
  326. PS6000_WHAT_ARE_AVAILABLE = 0,
  327. PS6000_INTERNAL_TEMPERATURE = 1
  328. } PS6000_TEMPERATURES;
  329. typedef void (PREF4 *ps6000BlockReady)
  330. (
  331. int16_t handle,
  332. PICO_STATUS status,
  333. void *pParameter
  334. );
  335. typedef void (PREF4 *ps6000StreamingReady)
  336. (
  337. int16_t handle,
  338. uint32_t noOfSamples,
  339. uint32_t startIndex,
  340. int16_t overflow,
  341. uint32_t triggerAt,
  342. int16_t triggered,
  343. int16_t autoStop,
  344. void *pParameter
  345. );
  346. typedef void (PREF4 *ps6000DataReady)
  347. (
  348. int16_t handle,
  349. PICO_STATUS status,
  350. uint32_t noOfSamples,
  351. int16_t overflow,
  352. void *pParameter
  353. );
  354. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000OpenUnit)
  355. (
  356. int16_t *handle,
  357. int8_t *serial
  358. );
  359. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000OpenUnitAsync)
  360. (
  361. int16_t *status,
  362. int8_t *serial
  363. );
  364. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000OpenUnitProgress)
  365. (
  366. int16_t *handle,
  367. int16_t *progressPercent,
  368. int16_t *complete
  369. );
  370. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetUnitInfo)
  371. (
  372. int16_t handle,
  373. int8_t *string,
  374. int16_t stringLength,
  375. int16_t *requiredSize,
  376. PICO_INFO info
  377. );
  378. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000FlashLed)
  379. (
  380. int16_t handle,
  381. int16_t start
  382. );
  383. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000CloseUnit)
  384. (
  385. int16_t handle
  386. );
  387. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000MemorySegments)
  388. (
  389. int16_t handle,
  390. uint32_t nSegments,
  391. uint32_t *nMaxSamples
  392. );
  393. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetChannel)
  394. (
  395. int16_t handle,
  396. PS6000_CHANNEL channel,
  397. int16_t enabled,
  398. PS6000_COUPLING type,
  399. PS6000_RANGE range,
  400. float analogueOffset,
  401. PS6000_BANDWIDTH_LIMITER bandwidth
  402. );
  403. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetTimebase)
  404. (
  405. int16_t handle,
  406. uint32_t timebase,
  407. uint32_t noSamples,
  408. int32_t *timeIntervalNanoseconds,
  409. int16_t oversample,
  410. uint32_t *maxSamples,
  411. uint32_t segmentIndex
  412. );
  413. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetTimebase2)
  414. (
  415. int16_t handle,
  416. uint32_t timebase,
  417. uint32_t noSamples,
  418. float *timeIntervalNanoseconds,
  419. int16_t oversample,
  420. uint32_t *maxSamples,
  421. uint32_t segmentIndex
  422. );
  423. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetSigGenArbitrary)
  424. (
  425. int16_t handle,
  426. int32_t offsetVoltage,
  427. uint32_t pkToPk,
  428. uint32_t startDeltaPhase,
  429. uint32_t stopDeltaPhase,
  430. uint32_t deltaPhaseIncrement,
  431. uint32_t dwellCount,
  432. int16_t *arbitraryWaveform,
  433. int32_t arbitraryWaveformSize,
  434. PS6000_SWEEP_TYPE sweepType,
  435. PS6000_EXTRA_OPERATIONS operation,
  436. PS6000_INDEX_MODE indexMode,
  437. uint32_t shots,
  438. uint32_t sweeps,
  439. PS6000_SIGGEN_TRIG_TYPE triggerType,
  440. PS6000_SIGGEN_TRIG_SOURCE triggerSource,
  441. int16_t extInThreshold
  442. );
  443. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps6000SetSigGenBuiltIn)
  444. (
  445. int16_t handle,
  446. int32_t offsetVoltage,
  447. uint32_t pkToPk,
  448. int16_t waveType,
  449. float startFrequency,
  450. float stopFrequency,
  451. float increment,
  452. float dwellTime,
  453. PS6000_SWEEP_TYPE sweepType,
  454. PS6000_EXTRA_OPERATIONS operation,
  455. uint32_t shots,
  456. uint32_t sweeps,
  457. PS6000_SIGGEN_TRIG_TYPE triggerType,
  458. PS6000_SIGGEN_TRIG_SOURCE triggerSource,
  459. int16_t extInThreshold
  460. );
  461. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps6000SetSigGenBuiltInV2)
  462. (
  463. int16_t handle,
  464. int32_t offsetVoltage,
  465. uint32_t pkToPk,
  466. int16_t waveType,
  467. double startFrequency,
  468. double stopFrequency,
  469. double increment,
  470. double dwellTime,
  471. PS6000_SWEEP_TYPE sweepType,
  472. PS6000_EXTRA_OPERATIONS operation,
  473. uint32_t shots,
  474. uint32_t sweeps,
  475. PS6000_SIGGEN_TRIG_TYPE triggerType,
  476. PS6000_SIGGEN_TRIG_SOURCE triggerSource,
  477. int16_t extInThreshold
  478. );
  479. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetSigGenPropertiesArbitrary)
  480. (
  481. int16_t handle,
  482. int32_t offsetVoltage,
  483. uint32_t pkToPk,
  484. uint32_t startDeltaPhase,
  485. uint32_t stopDeltaPhase,
  486. uint32_t deltaPhaseIncrement,
  487. uint32_t dwellCount,
  488. PS6000_SWEEP_TYPE sweepType,
  489. uint32_t shots,
  490. uint32_t sweeps,
  491. PS6000_SIGGEN_TRIG_TYPE triggerType,
  492. PS6000_SIGGEN_TRIG_SOURCE triggerSource,
  493. int16_t extInThreshold
  494. );
  495. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps6000SetSigGenPropertiesBuiltIn)
  496. (
  497. int16_t handle,
  498. int32_t offsetVoltage,
  499. uint32_t pkToPk,
  500. double startFrequency,
  501. double stopFrequency,
  502. double increment,
  503. double dwellTime,
  504. PS6000_SWEEP_TYPE sweepType,
  505. uint32_t shots,
  506. uint32_t sweeps,
  507. PS6000_SIGGEN_TRIG_TYPE triggerType,
  508. PS6000_SIGGEN_TRIG_SOURCE triggerSource,
  509. int16_t extInThreshold
  510. );
  511. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps6000SigGenFrequencyToPhase)
  512. (
  513. int16_t handle,
  514. double frequency,
  515. PS6000_INDEX_MODE indexMode,
  516. uint32_t bufferLength,
  517. uint32_t * phase
  518. );
  519. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps6000SigGenArbitraryMinMaxValues)
  520. (
  521. int16_t handle,
  522. int16_t * minArbitraryWaveformValue,
  523. int16_t * maxArbitraryWaveformValue,
  524. uint32_t * minArbitraryWaveformSize,
  525. uint32_t * maxArbitraryWaveformSize
  526. );
  527. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SigGenSoftwareControl)
  528. (
  529. int16_t handle,
  530. int16_t state
  531. );
  532. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetSimpleTrigger)
  533. (
  534. int16_t handle,
  535. int16_t enable,
  536. PS6000_CHANNEL source,
  537. int16_t threshold,
  538. PS6000_THRESHOLD_DIRECTION direction,
  539. uint32_t delay,
  540. int16_t autoTrigger_ms
  541. );
  542. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetEts)
  543. (
  544. int16_t handle,
  545. PS6000_ETS_MODE mode,
  546. int16_t etsCycles,
  547. int16_t etsInterleave,
  548. int32_t *sampleTimePicoseconds
  549. );
  550. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetTriggerChannelProperties)
  551. (
  552. int16_t handle,
  553. PS6000_TRIGGER_CHANNEL_PROPERTIES *channelProperties,
  554. int16_t nChannelProperties,
  555. int16_t auxOutputEnable,
  556. int32_t autoTriggerMilliseconds
  557. );
  558. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetTriggerChannelConditions)
  559. (
  560. int16_t handle,
  561. PS6000_TRIGGER_CONDITIONS *conditions,
  562. int16_t nConditions
  563. );
  564. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetTriggerChannelDirections)
  565. (
  566. int16_t handle,
  567. PS6000_THRESHOLD_DIRECTION channelA,
  568. PS6000_THRESHOLD_DIRECTION channelB,
  569. PS6000_THRESHOLD_DIRECTION channelC,
  570. PS6000_THRESHOLD_DIRECTION channelD,
  571. PS6000_THRESHOLD_DIRECTION ext,
  572. PS6000_THRESHOLD_DIRECTION aux
  573. );
  574. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetTriggerDelay)
  575. (
  576. int16_t handle,
  577. uint32_t delay
  578. );
  579. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetPulseWidthQualifier)
  580. (
  581. int16_t handle,
  582. PS6000_PWQ_CONDITIONS *conditions,
  583. int16_t nConditions,
  584. PS6000_THRESHOLD_DIRECTION direction,
  585. uint32_t lower,
  586. uint32_t upper,
  587. PS6000_PULSE_WIDTH_TYPE type
  588. );
  589. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000IsTriggerOrPulseWidthQualifierEnabled)
  590. (
  591. int16_t handle,
  592. int16_t *triggerEnabled,
  593. int16_t *pulseWidthQualifierEnabled
  594. );
  595. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetTriggerTimeOffset)
  596. (
  597. int16_t handle,
  598. uint32_t *timeUpper,
  599. uint32_t *timeLower,
  600. PS6000_TIME_UNITS *timeUnits,
  601. uint32_t segmentIndex
  602. );
  603. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetTriggerTimeOffset64)
  604. (
  605. int16_t handle,
  606. int64_t *time,
  607. PS6000_TIME_UNITS *timeUnits,
  608. uint32_t segmentIndex
  609. );
  610. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetValuesTriggerTimeOffsetBulk)
  611. (
  612. int16_t handle,
  613. uint32_t *timesUpper,
  614. uint32_t *timesLower,
  615. PS6000_TIME_UNITS *timeUnits,
  616. uint32_t fromSegmentIndex,
  617. uint32_t toSegmentIndex
  618. );
  619. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetValuesTriggerTimeOffsetBulk64)
  620. (
  621. int16_t handle,
  622. int64_t *times,
  623. PS6000_TIME_UNITS *timeUnits,
  624. uint32_t fromSegmentIndex,
  625. uint32_t toSegmentIndex
  626. );
  627. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetDataBuffers)
  628. (
  629. int16_t handle,
  630. PS6000_CHANNEL channel,
  631. int16_t *bufferMax,
  632. int16_t *bufferMin,
  633. uint32_t bufferLth,
  634. PS6000_RATIO_MODE downSampleRatioMode
  635. );
  636. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetDataBuffer)
  637. (
  638. int16_t handle,
  639. PS6000_CHANNEL channel,
  640. int16_t *buffer,
  641. uint32_t bufferLth,
  642. PS6000_RATIO_MODE downSampleRatioMode
  643. );
  644. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetDataBufferBulk)
  645. (
  646. int16_t handle,
  647. PS6000_CHANNEL channel,
  648. int16_t *buffer,
  649. uint32_t bufferLth,
  650. uint32_t waveform,
  651. PS6000_RATIO_MODE downSampleRatioMode
  652. );
  653. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetDataBuffersBulk)
  654. (
  655. int16_t handle,
  656. PS6000_CHANNEL channel,
  657. int16_t *bufferMax,
  658. int16_t *bufferMin,
  659. uint32_t bufferLth,
  660. uint32_t waveform,
  661. PS6000_RATIO_MODE downSampleRatioMode
  662. );
  663. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetEtsTimeBuffer)
  664. (
  665. int16_t handle,
  666. int64_t *buffer,
  667. uint32_t bufferLth
  668. );
  669. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetEtsTimeBuffers)
  670. (
  671. int16_t handle,
  672. uint32_t *timeUpper,
  673. uint32_t *timeLower,
  674. uint32_t bufferLth
  675. );
  676. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000RunBlock)
  677. (
  678. int16_t handle,
  679. uint32_t noOfPreTriggerSamples,
  680. uint32_t noOfPostTriggerSamples,
  681. uint32_t timebase,
  682. int16_t oversample,
  683. int32_t *timeIndisposedMs,
  684. uint32_t segmentIndex,
  685. ps6000BlockReady lpReady,
  686. void *pParameter
  687. );
  688. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000IsReady)
  689. (
  690. int16_t handle,
  691. int16_t *ready
  692. );
  693. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000RunStreaming)
  694. (
  695. int16_t handle,
  696. uint32_t *sampleInterval,
  697. PS6000_TIME_UNITS sampleIntervalTimeUnits,
  698. uint32_t maxPreTriggerSamples,
  699. uint32_t maxPostPreTriggerSamples,
  700. int16_t autoStop,
  701. uint32_t downSampleRatio,
  702. PS6000_RATIO_MODE downSampleRatioMode,
  703. uint32_t overviewBufferSize
  704. );
  705. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetStreamingLatestValues)
  706. (
  707. int16_t handle,
  708. ps6000StreamingReady lpPs6000Ready,
  709. void *pParameter
  710. );
  711. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000NoOfStreamingValues)
  712. (
  713. int16_t handle,
  714. uint32_t *noOfValues
  715. );
  716. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetMaxDownSampleRatio)
  717. (
  718. int16_t handle,
  719. uint32_t noOfUnaggreatedSamples,
  720. uint32_t *maxDownSampleRatio,
  721. PS6000_RATIO_MODE downSampleRatioMode,
  722. uint32_t segmentIndex
  723. );
  724. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetValues)
  725. (
  726. int16_t handle,
  727. uint32_t startIndex,
  728. uint32_t *noOfSamples,
  729. uint32_t downSampleRatio,
  730. PS6000_RATIO_MODE downSampleRatioMode,
  731. uint32_t segmentIndex,
  732. int16_t *overflow
  733. );
  734. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetValuesBulk)
  735. (
  736. int16_t handle,
  737. uint32_t *noOfSamples,
  738. uint32_t fromSegmentIndex,
  739. uint32_t toSegmentIndex,
  740. uint32_t downSampleRatio,
  741. PS6000_RATIO_MODE downSampleRatioMode,
  742. int16_t *overflow
  743. );
  744. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetValuesAsync)
  745. (
  746. int16_t handle,
  747. uint32_t startIndex,
  748. uint32_t noOfSamples,
  749. uint32_t downSampleRatio,
  750. PS6000_RATIO_MODE downSampleRatioMode,
  751. uint32_t segmentIndex,
  752. void *lpDataReady,
  753. void *pParameter
  754. );
  755. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetValuesOverlapped)
  756. (
  757. int16_t handle,
  758. uint32_t startIndex,
  759. uint32_t *noOfSamples,
  760. uint32_t downSampleRatio,
  761. PS6000_RATIO_MODE downSampleRatioMode,
  762. uint32_t segmentIndex,
  763. int16_t *overflow
  764. );
  765. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetValuesOverlappedBulk)
  766. (
  767. int16_t handle,
  768. uint32_t startIndex,
  769. uint32_t *noOfSamples,
  770. uint32_t downSampleRatio,
  771. PS6000_RATIO_MODE downSampleRatioMode,
  772. uint32_t fromSegmentIndex,
  773. uint32_t toSegmentIndex,
  774. int16_t *overflow
  775. );
  776. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetValuesBulkAsyc)
  777. (
  778. int16_t handle,
  779. uint32_t startIndex,
  780. uint32_t *noOfSamples,
  781. uint32_t downSampleRatio,
  782. PS6000_RATIO_MODE downSampleRatioMode,
  783. uint32_t fromSegmentIndex,
  784. uint32_t toSegmentIndex,
  785. int16_t *overflow
  786. );
  787. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetNoOfCaptures)
  788. (
  789. int16_t handle,
  790. uint32_t *nCaptures
  791. );
  792. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetNoOfProcessedCaptures)
  793. (
  794. int16_t handle,
  795. uint32_t *nProcessedCaptures
  796. );
  797. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000Stop)
  798. (
  799. int16_t handle
  800. );
  801. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetNoOfCaptures)
  802. (
  803. int16_t handle,
  804. uint32_t nCaptures
  805. );
  806. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetWaveformLimiter)
  807. (
  808. int16_t handle,
  809. uint32_t nWaveformsPerSecond
  810. );
  811. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps6000GetTriggerInfoBulk)
  812. (
  813. int16_t handle,
  814. PS6000_TRIGGER_INFO * triggerInfo,
  815. uint32_t fromSegmentIndex,
  816. uint32_t toSegmentIndex
  817. );
  818. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000EnumerateUnits)
  819. (
  820. int16_t *count,
  821. int8_t *serials,
  822. int16_t *serialLth
  823. );
  824. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000SetExternalClock)
  825. (
  826. int16_t handle,
  827. PS6000_EXTERNAL_FREQUENCY frequency,
  828. int16_t threshold
  829. );
  830. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000PingUnit)
  831. (
  832. int16_t handle
  833. );
  834. PREF0 PREF1 PICO_STATUS PREF2 PREF3 (ps6000GetAnalogueOffset)
  835. (
  836. int16_t handle,
  837. PS6000_RANGE range,
  838. PS6000_COUPLING coupling,
  839. float *maximumVoltage,
  840. float *minimumVoltage
  841. );
  842. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps6000QueryTemperatures)
  843. (
  844. int16_t handle,
  845. PS6000_TEMPERATURES * types,
  846. float * temperatures
  847. );
  848. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps6000QueryOutputEdgeDetect)
  849. (
  850. int16_t handle,
  851. int16_t * state
  852. );
  853. PREF0 PREF1 PICO_STATUS PREF2 PREF3(ps6000SetOutputEdgeDetect)
  854. (
  855. int16_t handle,
  856. int16_t state
  857. );
  858. #endif