pico_sys_dynamic/
ps3000a.rs

1pub const PS3000A_MAX_OVERSAMPLE: u32 = 256;
2pub const PS3207A_MAX_ETS_CYCLES: u32 = 500;
3pub const PS3207A_MAX_INTERLEAVE: u32 = 40;
4pub const PS3206A_MAX_ETS_CYCLES: u32 = 500;
5pub const PS3206A_MAX_INTERLEAVE: u32 = 40;
6pub const PS3206MSO_MAX_INTERLEAVE: u32 = 80;
7pub const PS3205A_MAX_ETS_CYCLES: u32 = 250;
8pub const PS3205A_MAX_INTERLEAVE: u32 = 20;
9pub const PS3205MSO_MAX_INTERLEAVE: u32 = 40;
10pub const PS3204A_MAX_ETS_CYCLES: u32 = 125;
11pub const PS3204A_MAX_INTERLEAVE: u32 = 10;
12pub const PS3204MSO_MAX_INTERLEAVE: u32 = 20;
13pub const PS3000A_EXT_MAX_VALUE: u32 = 32767;
14pub const PS3000A_EXT_MIN_VALUE: i32 = -32767;
15pub const PS3000A_MAX_LOGIC_LEVEL: u32 = 32767;
16pub const PS3000A_MIN_LOGIC_LEVEL: i32 = -32767;
17pub const MIN_SIG_GEN_FREQ: f64 = 0.0;
18pub const MAX_SIG_GEN_FREQ: f64 = 20000000.0;
19pub const PS3207B_MAX_SIG_GEN_BUFFER_SIZE: u32 = 32768;
20pub const PS3206B_MAX_SIG_GEN_BUFFER_SIZE: u32 = 16384;
21pub const MAX_SIG_GEN_BUFFER_SIZE: u32 = 8192;
22pub const MIN_SIG_GEN_BUFFER_SIZE: u32 = 1;
23pub const MIN_DWELL_COUNT: u32 = 3;
24pub const MAX_SWEEPS_SHOTS: u32 = 1073741823;
25pub const MAX_ANALOGUE_OFFSET_50MV_200MV: f64 = 0.25;
26pub const MIN_ANALOGUE_OFFSET_50MV_200MV: f64 = -0.25;
27pub const MAX_ANALOGUE_OFFSET_500MV_2V: f64 = 2.5;
28pub const MIN_ANALOGUE_OFFSET_500MV_2V: f64 = -2.5;
29pub const MAX_ANALOGUE_OFFSET_5V_20V: f64 = 20.0;
30pub const MIN_ANALOGUE_OFFSET_5V_20V: f64 = -20.0;
31pub const PS3000A_SHOT_SWEEP_TRIGGER_CONTINUOUS_RUN: u32 = 4294967295;
32pub const PS3000A_SINE_MAX_FREQUENCY: f64 = 1000000.0;
33pub const PS3000A_SQUARE_MAX_FREQUENCY: f64 = 1000000.0;
34pub const PS3000A_TRIANGLE_MAX_FREQUENCY: f64 = 1000000.0;
35pub const PS3000A_SINC_MAX_FREQUENCY: f64 = 1000000.0;
36pub const PS3000A_RAMP_MAX_FREQUENCY: f64 = 1000000.0;
37pub const PS3000A_HALF_SINE_MAX_FREQUENCY: f64 = 1000000.0;
38pub const PS3000A_GAUSSIAN_MAX_FREQUENCY: f64 = 1000000.0;
39pub const PS3000A_PRBS_MAX_FREQUENCY: f64 = 1000000.0;
40pub const PS3000A_PRBS_MIN_FREQUENCY: f64 = 0.03;
41pub const PS3000A_MIN_FREQUENCY: f64 = 0.03;
42pub type PICO_POINTER = *mut ::std::os::raw::c_void;
43pub type PICO_INFO = u32;
44pub type PICO_STATUS = u32;
45pub const enPicoStringValue_PICO_SV_MEMORY: enPicoStringValue = 0;
46pub const enPicoStringValue_PICO_SV_MEMORY_NO_OF_SEGMENTS: enPicoStringValue = 1;
47pub const enPicoStringValue_PICO_SV_MEMORY_MAX_SAMPLES: enPicoStringValue = 2;
48pub const enPicoStringValue_PICO_SV_NO_OF_CHANNELS: enPicoStringValue = 3;
49pub const enPicoStringValue_PICO_SV_ARRAY_OF_CHANNELS: enPicoStringValue = 4;
50pub const enPicoStringValue_PICO_SV_CHANNEL: enPicoStringValue = 5;
51pub const enPicoStringValue_PICO_SV_CHANNEL_NAME: enPicoStringValue = 6;
52pub const enPicoStringValue_PICO_SV_CHANNEL_RANGE: enPicoStringValue = 7;
53pub const enPicoStringValue_PICO_SV_CHANNEL_COUPLING: enPicoStringValue = 8;
54pub const enPicoStringValue_PICO_SV_CHANNEL_ENABLED: enPicoStringValue = 9;
55pub const enPicoStringValue_PICO_SV_CHANNEL_ANALOGUE_OFFSET: enPicoStringValue = 10;
56pub const enPicoStringValue_PICO_SV_CHANNEL_FILTER: enPicoStringValue = 11;
57pub const enPicoStringValue_PICO_SV_TRIGGER: enPicoStringValue = 12;
58pub const enPicoStringValue_PICO_SV_TRIGGER_AUXIO_OUTPUT_ENABLED: enPicoStringValue = 13;
59pub const enPicoStringValue_PICO_SV_TRIGGER_AUTO_TRIGGER_MICROSECONDS: enPicoStringValue = 14;
60pub const enPicoStringValue_PICO_SV_TRIGGER_PROPERTIES: enPicoStringValue = 15;
61pub const enPicoStringValue_PICO_SV_NO_OF_TRIGGER_PROPERTIES: enPicoStringValue = 16;
62pub const enPicoStringValue_PICO_SV_TRIGGER_PROPERTIES_CHANNEL: enPicoStringValue = 17;
63pub const enPicoStringValue_PICO_SV_TRIGGER_PROPERTIES_THRESHOLD_UPPER: enPicoStringValue = 18;
64pub const enPicoStringValue_PICO_SV_TRIGGER_PROPERTIES_THRESHOLD_UPPER_HYSTERESIS:
65    enPicoStringValue = 19;
66pub const enPicoStringValue_PICO_SV_TRIGGER_PROPERTIES_THRESHOLD_LOWER: enPicoStringValue = 20;
67pub const enPicoStringValue_PICO_SV_TRIGGER_PROPERTIES_THRESHOLD_LOWER_HYSTERESIS:
68    enPicoStringValue = 21;
69pub const enPicoStringValue_PICO_SV_TRIGGER_PROPERTIES_THRESHOLD_MODE: enPicoStringValue = 22;
70pub const enPicoStringValue_PICO_SV_TRIGGER_ARRAY_OF_BLOCK_CONDITIONS: enPicoStringValue = 23;
71pub const enPicoStringValue_PICO_SV_TRIGGER_NO_OF_BLOCK_CONDITIONS: enPicoStringValue = 24;
72pub const enPicoStringValue_PICO_SV_TRIGGER_CONDITIONS: enPicoStringValue = 25;
73pub const enPicoStringValue_PICO_SV_TRIGGER_NO_OF_CONDITIONS: enPicoStringValue = 26;
74pub const enPicoStringValue_PICO_SV_TRIGGER_CONDITION_SOURCE: enPicoStringValue = 27;
75pub const enPicoStringValue_PICO_SV_TRIGGER_CONDITION_STATE: enPicoStringValue = 28;
76pub const enPicoStringValue_PICO_SV_TRIGGER_DIRECTION: enPicoStringValue = 29;
77pub const enPicoStringValue_PICO_SV_TRIGGER_NO_OF_DIRECTIONS: enPicoStringValue = 30;
78pub const enPicoStringValue_PICO_SV_TRIGGER_DIRECTION_CHANNEL: enPicoStringValue = 31;
79pub const enPicoStringValue_PICO_SV_TRIGGER_DIRECTION_DIRECTION: enPicoStringValue = 32;
80pub const enPicoStringValue_PICO_SV_TRIGGER_DELAY: enPicoStringValue = 33;
81pub const enPicoStringValue_PICO_SV_TRIGGER_DELAY_MS: enPicoStringValue = 34;
82pub const enPicoStringValue_PICO_SV_FREQUENCY_COUNTER: enPicoStringValue = 35;
83pub const enPicoStringValue_PICO_SV_FREQUENCY_COUNTER_ENABLED: enPicoStringValue = 36;
84pub const enPicoStringValue_PICO_SV_FREQUENCY_COUNTER_CHANNEL: enPicoStringValue = 37;
85pub const enPicoStringValue_PICO_SV_FREQUENCY_COUNTER_RANGE: enPicoStringValue = 38;
86pub const enPicoStringValue_PICO_SV_FREQUENCY_COUNTER_TRESHOLDMAJOR: enPicoStringValue = 39;
87pub const enPicoStringValue_PICO_SV_FREQUENCY_COUNTER_TRESHOLDMINOR: enPicoStringValue = 40;
88pub const enPicoStringValue_PICO_SV_PULSE_WIDTH_PROPERTIES: enPicoStringValue = 41;
89pub const enPicoStringValue_PICO_SV_PULSE_WIDTH_PROPERTIES_DIRECTION: enPicoStringValue = 42;
90pub const enPicoStringValue_PICO_SV_PULSE_WIDTH_PROPERTIES_LOWER: enPicoStringValue = 43;
91pub const enPicoStringValue_PICO_SV_PULSE_WIDTH_PROPERTIES_UPPER: enPicoStringValue = 44;
92pub const enPicoStringValue_PICO_SV_PULSE_WIDTH_PROPERTIES_TYPE: enPicoStringValue = 45;
93pub const enPicoStringValue_PICO_SV_PULSE_WIDTH_ARRAY_OF_BLOCK_CONDITIONS: enPicoStringValue = 46;
94pub const enPicoStringValue_PICO_SV_PULSE_WIDTH_NO_OF_BLOCK_CONDITIONS: enPicoStringValue = 47;
95pub const enPicoStringValue_PICO_SV_PULSE_WIDTH_CONDITIONS: enPicoStringValue = 48;
96pub const enPicoStringValue_PICO_SV_PULSE_WIDTH_NO_OF_CONDITIONS: enPicoStringValue = 49;
97pub const enPicoStringValue_PICO_SV_PULSE_WIDTH_CONDITIONS_SOURCE: enPicoStringValue = 50;
98pub const enPicoStringValue_PICO_SV_PULSE_WIDTH_CONDITIONS_STATE: enPicoStringValue = 51;
99pub const enPicoStringValue_PICO_SV_SAMPLE_PROPERTIES: enPicoStringValue = 52;
100pub const enPicoStringValue_PICO_SV_SAMPLE_PROPERTIES_PRE_TRIGGER_SAMPLES: enPicoStringValue = 53;
101pub const enPicoStringValue_PICO_SV_SAMPLE_PROPERTIES_POST_TRIGGER_SAMPLES: enPicoStringValue = 54;
102pub const enPicoStringValue_PICO_SV_SAMPLE_PROPERTIES_TIMEBASE: enPicoStringValue = 55;
103pub const enPicoStringValue_PICO_SV_SAMPLE_PROPERTIES_NO_OF_CAPTURES: enPicoStringValue = 56;
104pub const enPicoStringValue_PICO_SV_SAMPLE_PROPERTIES_RESOLUTION: enPicoStringValue = 57;
105pub const enPicoStringValue_PICO_SV_SAMPLE_PROPERTIES_OVERLAPPED: enPicoStringValue = 58;
106pub const enPicoStringValue_PICO_SV_SAMPLE_PROPERTIES_OVERLAPPED_DOWN_SAMPLE_RATIO:
107    enPicoStringValue = 59;
108pub const enPicoStringValue_PICO_SV_SAMPLE_PROPERTIES_OVERLAPPED_DOWN_SAMPLE_RATIO_MODE:
109    enPicoStringValue = 60;
110pub const enPicoStringValue_PICO_SV_SAMPLE_PROPERTIES_OVERLAPPED_REQUERSTED_NO_OF_SAMPLES:
111    enPicoStringValue = 61;
112pub const enPicoStringValue_PICO_SV_SAMPLE_PROPERTIES_OVERLAPPED_SEGMENT_INDEX_FROM:
113    enPicoStringValue = 62;
114pub const enPicoStringValue_PICO_SV_SAMPLE_PROPERTIES_OVERLAPPED_SEGMENT_INDEX_TO:
115    enPicoStringValue = 63;
116pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR: enPicoStringValue = 64;
117pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_BUILT_IN: enPicoStringValue = 65;
118pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_BUILT_IN_WAVE_TYPE: enPicoStringValue = 66;
119pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_BUILT_IN_START_FREQUENCY: enPicoStringValue =
120    67;
121pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_BUILT_IN_STOP_FREQUENCY: enPicoStringValue =
122    68;
123pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_BUILT_IN_INCREMENT: enPicoStringValue = 69;
124pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_BUILT_IN_DWELL_TIME: enPicoStringValue = 70;
125pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_AWG: enPicoStringValue = 71;
126pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_AWG_START_DELTA_PHASE: enPicoStringValue = 72;
127pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_AWG_STOP_DELTA_PHASE: enPicoStringValue = 73;
128pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_AWG_DELTA_PHASE_INCREMENT: enPicoStringValue =
129    74;
130pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_AWG_DWELL_COUNT: enPicoStringValue = 75;
131pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_AWG_INDEX_MODE: enPicoStringValue = 76;
132pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_AWG_WAVEFORM_SIZE: enPicoStringValue = 77;
133pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_ARRAY_OF_AWG_WAVEFORM_VALUES:
134    enPicoStringValue = 78;
135pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_OFFSET_VOLTAGE: enPicoStringValue = 79;
136pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_PK_TO_PK: enPicoStringValue = 80;
137pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_OPERATION: enPicoStringValue = 81;
138pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_SHOTS: enPicoStringValue = 82;
139pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_SWEEPS: enPicoStringValue = 83;
140pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_SWEEP_TYPE: enPicoStringValue = 84;
141pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_TRIGGER_TYPE: enPicoStringValue = 85;
142pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_TRIGGER_SOURCE: enPicoStringValue = 86;
143pub const enPicoStringValue_PICO_SV_SIGNAL_GENERATOR_EXT_IN_THRESHOLD: enPicoStringValue = 87;
144pub const enPicoStringValue_PICO_SV_ETS: enPicoStringValue = 88;
145pub const enPicoStringValue_PICO_SV_ETS_STATE: enPicoStringValue = 89;
146pub const enPicoStringValue_PICO_SV_ETS_CYCLE: enPicoStringValue = 90;
147pub const enPicoStringValue_PICO_SV_ETS_INTERLEAVE: enPicoStringValue = 91;
148pub const enPicoStringValue_PICO_SV_ETS_SAMPLE_TIME_PICOSECONDS: enPicoStringValue = 92;
149pub type enPicoStringValue = ::std::os::raw::c_uint;
150pub use self::enPicoStringValue as PICO_STRING_VALUE;
151pub const enPS3000ABandwidthLimiter_PS3000A_BW_FULL: enPS3000ABandwidthLimiter = 0;
152pub const enPS3000ABandwidthLimiter_PS3000A_BW_20MHZ: enPS3000ABandwidthLimiter = 1;
153pub type enPS3000ABandwidthLimiter = ::std::os::raw::c_uint;
154pub use self::enPS3000ABandwidthLimiter as PS3000A_BANDWIDTH_LIMITER;
155pub const enPS3000AChannelBufferIndex_PS3000A_CHANNEL_A_MAX: enPS3000AChannelBufferIndex = 0;
156pub const enPS3000AChannelBufferIndex_PS3000A_CHANNEL_A_MIN: enPS3000AChannelBufferIndex = 1;
157pub const enPS3000AChannelBufferIndex_PS3000A_CHANNEL_B_MAX: enPS3000AChannelBufferIndex = 2;
158pub const enPS3000AChannelBufferIndex_PS3000A_CHANNEL_B_MIN: enPS3000AChannelBufferIndex = 3;
159pub const enPS3000AChannelBufferIndex_PS3000A_CHANNEL_C_MAX: enPS3000AChannelBufferIndex = 4;
160pub const enPS3000AChannelBufferIndex_PS3000A_CHANNEL_C_MIN: enPS3000AChannelBufferIndex = 5;
161pub const enPS3000AChannelBufferIndex_PS3000A_CHANNEL_D_MAX: enPS3000AChannelBufferIndex = 6;
162pub const enPS3000AChannelBufferIndex_PS3000A_CHANNEL_D_MIN: enPS3000AChannelBufferIndex = 7;
163pub const enPS3000AChannelBufferIndex_PS3000A_MAX_CHANNEL_BUFFERS: enPS3000AChannelBufferIndex = 8;
164pub type enPS3000AChannelBufferIndex = ::std::os::raw::c_uint;
165pub use self::enPS3000AChannelBufferIndex as PS3000A_CHANNEL_BUFFER_INDEX;
166pub const enPS3000AChannel_PS3000A_CHANNEL_A: enPS3000AChannel = 0;
167pub const enPS3000AChannel_PS3000A_CHANNEL_B: enPS3000AChannel = 1;
168pub const enPS3000AChannel_PS3000A_CHANNEL_C: enPS3000AChannel = 2;
169pub const enPS3000AChannel_PS3000A_CHANNEL_D: enPS3000AChannel = 3;
170pub const enPS3000AChannel_PS3000A_EXTERNAL: enPS3000AChannel = 4;
171pub const enPS3000AChannel_PS3000A_MAX_CHANNELS: enPS3000AChannel = 4;
172pub const enPS3000AChannel_PS3000A_TRIGGER_AUX: enPS3000AChannel = 5;
173pub const enPS3000AChannel_PS3000A_MAX_TRIGGER_SOURCES: enPS3000AChannel = 6;
174pub type enPS3000AChannel = ::std::os::raw::c_uint;
175pub use self::enPS3000AChannel as PS3000A_CHANNEL;
176pub const enPS3000ADigitalPort_PS3000A_DIGITAL_PORT0: enPS3000ADigitalPort = 128;
177pub const enPS3000ADigitalPort_PS3000A_DIGITAL_PORT1: enPS3000ADigitalPort = 129;
178pub const enPS3000ADigitalPort_PS3000A_DIGITAL_PORT2: enPS3000ADigitalPort = 130;
179pub const enPS3000ADigitalPort_PS3000A_DIGITAL_PORT3: enPS3000ADigitalPort = 131;
180pub const enPS3000ADigitalPort_PS3000A_MAX_DIGITAL_PORTS: enPS3000ADigitalPort = 4;
181pub type enPS3000ADigitalPort = ::std::os::raw::c_uint;
182pub use self::enPS3000ADigitalPort as PS3000A_DIGITAL_PORT;
183pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_0: enPS3000ADigitalChannel = 0;
184pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_1: enPS3000ADigitalChannel = 1;
185pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_2: enPS3000ADigitalChannel = 2;
186pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_3: enPS3000ADigitalChannel = 3;
187pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_4: enPS3000ADigitalChannel = 4;
188pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_5: enPS3000ADigitalChannel = 5;
189pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_6: enPS3000ADigitalChannel = 6;
190pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_7: enPS3000ADigitalChannel = 7;
191pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_8: enPS3000ADigitalChannel = 8;
192pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_9: enPS3000ADigitalChannel = 9;
193pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_10: enPS3000ADigitalChannel = 10;
194pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_11: enPS3000ADigitalChannel = 11;
195pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_12: enPS3000ADigitalChannel = 12;
196pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_13: enPS3000ADigitalChannel = 13;
197pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_14: enPS3000ADigitalChannel = 14;
198pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_15: enPS3000ADigitalChannel = 15;
199pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_16: enPS3000ADigitalChannel = 16;
200pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_17: enPS3000ADigitalChannel = 17;
201pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_18: enPS3000ADigitalChannel = 18;
202pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_19: enPS3000ADigitalChannel = 19;
203pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_20: enPS3000ADigitalChannel = 20;
204pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_21: enPS3000ADigitalChannel = 21;
205pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_22: enPS3000ADigitalChannel = 22;
206pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_23: enPS3000ADigitalChannel = 23;
207pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_24: enPS3000ADigitalChannel = 24;
208pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_25: enPS3000ADigitalChannel = 25;
209pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_26: enPS3000ADigitalChannel = 26;
210pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_27: enPS3000ADigitalChannel = 27;
211pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_28: enPS3000ADigitalChannel = 28;
212pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_29: enPS3000ADigitalChannel = 29;
213pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_30: enPS3000ADigitalChannel = 30;
214pub const enPS3000ADigitalChannel_PS3000A_DIGITAL_CHANNEL_31: enPS3000ADigitalChannel = 31;
215pub const enPS3000ADigitalChannel_PS3000A_MAX_DIGITAL_CHANNELS: enPS3000ADigitalChannel = 32;
216pub type enPS3000ADigitalChannel = ::std::os::raw::c_uint;
217pub use self::enPS3000ADigitalChannel as PS3000A_DIGITAL_CHANNEL;
218pub const enPS3000ARange_PS3000A_10MV: enPS3000ARange = 0;
219pub const enPS3000ARange_PS3000A_20MV: enPS3000ARange = 1;
220pub const enPS3000ARange_PS3000A_50MV: enPS3000ARange = 2;
221pub const enPS3000ARange_PS3000A_100MV: enPS3000ARange = 3;
222pub const enPS3000ARange_PS3000A_200MV: enPS3000ARange = 4;
223pub const enPS3000ARange_PS3000A_500MV: enPS3000ARange = 5;
224pub const enPS3000ARange_PS3000A_1V: enPS3000ARange = 6;
225pub const enPS3000ARange_PS3000A_2V: enPS3000ARange = 7;
226pub const enPS3000ARange_PS3000A_5V: enPS3000ARange = 8;
227pub const enPS3000ARange_PS3000A_10V: enPS3000ARange = 9;
228pub const enPS3000ARange_PS3000A_20V: enPS3000ARange = 10;
229pub const enPS3000ARange_PS3000A_50V: enPS3000ARange = 11;
230pub const enPS3000ARange_PS3000A_MAX_RANGES: enPS3000ARange = 12;
231pub type enPS3000ARange = ::std::os::raw::c_uint;
232pub use self::enPS3000ARange as PS3000A_RANGE;
233pub const enPS3000ACoupling_PS3000A_AC: enPS3000ACoupling = 0;
234pub const enPS3000ACoupling_PS3000A_DC: enPS3000ACoupling = 1;
235pub type enPS3000ACoupling = ::std::os::raw::c_uint;
236pub use self::enPS3000ACoupling as PS3000A_COUPLING;
237pub const enPS3000AChannelInfo_PS3000A_CI_RANGES: enPS3000AChannelInfo = 0;
238pub type enPS3000AChannelInfo = ::std::os::raw::c_uint;
239pub use self::enPS3000AChannelInfo as PS3000A_CHANNEL_INFO;
240pub const enPS3000AEtsMode_PS3000A_ETS_OFF: enPS3000AEtsMode = 0;
241pub const enPS3000AEtsMode_PS3000A_ETS_FAST: enPS3000AEtsMode = 1;
242pub const enPS3000AEtsMode_PS3000A_ETS_SLOW: enPS3000AEtsMode = 2;
243pub const enPS3000AEtsMode_PS3000A_ETS_MODES_MAX: enPS3000AEtsMode = 3;
244pub type enPS3000AEtsMode = ::std::os::raw::c_uint;
245pub use self::enPS3000AEtsMode as PS3000A_ETS_MODE;
246pub const enPS3000ATimeUnits_PS3000A_FS: enPS3000ATimeUnits = 0;
247pub const enPS3000ATimeUnits_PS3000A_PS: enPS3000ATimeUnits = 1;
248pub const enPS3000ATimeUnits_PS3000A_NS: enPS3000ATimeUnits = 2;
249pub const enPS3000ATimeUnits_PS3000A_US: enPS3000ATimeUnits = 3;
250pub const enPS3000ATimeUnits_PS3000A_MS: enPS3000ATimeUnits = 4;
251pub const enPS3000ATimeUnits_PS3000A_S: enPS3000ATimeUnits = 5;
252pub const enPS3000ATimeUnits_PS3000A_MAX_TIME_UNITS: enPS3000ATimeUnits = 6;
253pub type enPS3000ATimeUnits = ::std::os::raw::c_uint;
254pub use self::enPS3000ATimeUnits as PS3000A_TIME_UNITS;
255pub const enPS3000ASweepType_PS3000A_UP: enPS3000ASweepType = 0;
256pub const enPS3000ASweepType_PS3000A_DOWN: enPS3000ASweepType = 1;
257pub const enPS3000ASweepType_PS3000A_UPDOWN: enPS3000ASweepType = 2;
258pub const enPS3000ASweepType_PS3000A_DOWNUP: enPS3000ASweepType = 3;
259pub const enPS3000ASweepType_PS3000A_MAX_SWEEP_TYPES: enPS3000ASweepType = 4;
260pub type enPS3000ASweepType = ::std::os::raw::c_uint;
261pub use self::enPS3000ASweepType as PS3000A_SWEEP_TYPE;
262pub const enPS3000AWaveType_PS3000A_SINE: enPS3000AWaveType = 0;
263pub const enPS3000AWaveType_PS3000A_SQUARE: enPS3000AWaveType = 1;
264pub const enPS3000AWaveType_PS3000A_TRIANGLE: enPS3000AWaveType = 2;
265pub const enPS3000AWaveType_PS3000A_RAMP_UP: enPS3000AWaveType = 3;
266pub const enPS3000AWaveType_PS3000A_RAMP_DOWN: enPS3000AWaveType = 4;
267pub const enPS3000AWaveType_PS3000A_SINC: enPS3000AWaveType = 5;
268pub const enPS3000AWaveType_PS3000A_GAUSSIAN: enPS3000AWaveType = 6;
269pub const enPS3000AWaveType_PS3000A_HALF_SINE: enPS3000AWaveType = 7;
270pub const enPS3000AWaveType_PS3000A_DC_VOLTAGE: enPS3000AWaveType = 8;
271pub const enPS3000AWaveType_PS3000A_MAX_WAVE_TYPES: enPS3000AWaveType = 9;
272pub type enPS3000AWaveType = ::std::os::raw::c_uint;
273pub use self::enPS3000AWaveType as PS3000A_WAVE_TYPE;
274pub const enPS3000AExtraOperations_PS3000A_ES_OFF: enPS3000AExtraOperations = 0;
275pub const enPS3000AExtraOperations_PS3000A_WHITENOISE: enPS3000AExtraOperations = 1;
276pub const enPS3000AExtraOperations_PS3000A_PRBS: enPS3000AExtraOperations = 2;
277pub type enPS3000AExtraOperations = ::std::os::raw::c_uint;
278pub use self::enPS3000AExtraOperations as PS3000A_EXTRA_OPERATIONS;
279pub const enPS3000ASigGenTrigType_PS3000A_SIGGEN_RISING: enPS3000ASigGenTrigType = 0;
280pub const enPS3000ASigGenTrigType_PS3000A_SIGGEN_FALLING: enPS3000ASigGenTrigType = 1;
281pub const enPS3000ASigGenTrigType_PS3000A_SIGGEN_GATE_HIGH: enPS3000ASigGenTrigType = 2;
282pub const enPS3000ASigGenTrigType_PS3000A_SIGGEN_GATE_LOW: enPS3000ASigGenTrigType = 3;
283pub type enPS3000ASigGenTrigType = ::std::os::raw::c_uint;
284pub use self::enPS3000ASigGenTrigType as PS3000A_SIGGEN_TRIG_TYPE;
285pub const enPS3000ASigGenTrigSource_PS3000A_SIGGEN_NONE: enPS3000ASigGenTrigSource = 0;
286pub const enPS3000ASigGenTrigSource_PS3000A_SIGGEN_SCOPE_TRIG: enPS3000ASigGenTrigSource = 1;
287pub const enPS3000ASigGenTrigSource_PS3000A_SIGGEN_AUX_IN: enPS3000ASigGenTrigSource = 2;
288pub const enPS3000ASigGenTrigSource_PS3000A_SIGGEN_EXT_IN: enPS3000ASigGenTrigSource = 3;
289pub const enPS3000ASigGenTrigSource_PS3000A_SIGGEN_SOFT_TRIG: enPS3000ASigGenTrigSource = 4;
290pub type enPS3000ASigGenTrigSource = ::std::os::raw::c_uint;
291pub use self::enPS3000ASigGenTrigSource as PS3000A_SIGGEN_TRIG_SOURCE;
292pub const enPS3000AIndexMode_PS3000A_SINGLE: enPS3000AIndexMode = 0;
293pub const enPS3000AIndexMode_PS3000A_DUAL: enPS3000AIndexMode = 1;
294pub const enPS3000AIndexMode_PS3000A_QUAD: enPS3000AIndexMode = 2;
295pub const enPS3000AIndexMode_PS3000A_MAX_INDEX_MODES: enPS3000AIndexMode = 3;
296pub type enPS3000AIndexMode = ::std::os::raw::c_uint;
297pub use self::enPS3000AIndexMode as PS3000A_INDEX_MODE;
298pub const enPS3000A_ThresholdMode_PS3000A_LEVEL: enPS3000A_ThresholdMode = 0;
299pub const enPS3000A_ThresholdMode_PS3000A_WINDOW: enPS3000A_ThresholdMode = 1;
300pub type enPS3000A_ThresholdMode = ::std::os::raw::c_uint;
301pub use self::enPS3000A_ThresholdMode as PS3000A_THRESHOLD_MODE;
302pub const enPS3000AThresholdDirection_PS3000A_ABOVE: enPS3000AThresholdDirection = 0;
303pub const enPS3000AThresholdDirection_PS3000A_BELOW: enPS3000AThresholdDirection = 1;
304pub const enPS3000AThresholdDirection_PS3000A_RISING: enPS3000AThresholdDirection = 2;
305pub const enPS3000AThresholdDirection_PS3000A_FALLING: enPS3000AThresholdDirection = 3;
306pub const enPS3000AThresholdDirection_PS3000A_RISING_OR_FALLING: enPS3000AThresholdDirection = 4;
307pub const enPS3000AThresholdDirection_PS3000A_ABOVE_LOWER: enPS3000AThresholdDirection = 5;
308pub const enPS3000AThresholdDirection_PS3000A_BELOW_LOWER: enPS3000AThresholdDirection = 6;
309pub const enPS3000AThresholdDirection_PS3000A_RISING_LOWER: enPS3000AThresholdDirection = 7;
310pub const enPS3000AThresholdDirection_PS3000A_FALLING_LOWER: enPS3000AThresholdDirection = 8;
311pub const enPS3000AThresholdDirection_PS3000A_INSIDE: enPS3000AThresholdDirection = 0;
312pub const enPS3000AThresholdDirection_PS3000A_OUTSIDE: enPS3000AThresholdDirection = 1;
313pub const enPS3000AThresholdDirection_PS3000A_ENTER: enPS3000AThresholdDirection = 2;
314pub const enPS3000AThresholdDirection_PS3000A_EXIT: enPS3000AThresholdDirection = 3;
315pub const enPS3000AThresholdDirection_PS3000A_ENTER_OR_EXIT: enPS3000AThresholdDirection = 4;
316pub const enPS3000AThresholdDirection_PS3000A_POSITIVE_RUNT: enPS3000AThresholdDirection = 9;
317pub const enPS3000AThresholdDirection_PS3000A_NEGATIVE_RUNT: enPS3000AThresholdDirection = 10;
318pub const enPS3000AThresholdDirection_PS3000A_NONE: enPS3000AThresholdDirection = 2;
319pub type enPS3000AThresholdDirection = ::std::os::raw::c_uint;
320pub use self::enPS3000AThresholdDirection as PS3000A_THRESHOLD_DIRECTION;
321pub const enPS3000ADigitalDirection_PS3000A_DIGITAL_DONT_CARE: enPS3000ADigitalDirection = 0;
322pub const enPS3000ADigitalDirection_PS3000A_DIGITAL_DIRECTION_LOW: enPS3000ADigitalDirection = 1;
323pub const enPS3000ADigitalDirection_PS3000A_DIGITAL_DIRECTION_HIGH: enPS3000ADigitalDirection = 2;
324pub const enPS3000ADigitalDirection_PS3000A_DIGITAL_DIRECTION_RISING: enPS3000ADigitalDirection = 3;
325pub const enPS3000ADigitalDirection_PS3000A_DIGITAL_DIRECTION_FALLING: enPS3000ADigitalDirection =
326    4;
327pub const enPS3000ADigitalDirection_PS3000A_DIGITAL_DIRECTION_RISING_OR_FALLING:
328    enPS3000ADigitalDirection = 5;
329pub const enPS3000ADigitalDirection_PS3000A_DIGITAL_MAX_DIRECTION: enPS3000ADigitalDirection = 6;
330pub type enPS3000ADigitalDirection = ::std::os::raw::c_uint;
331pub use self::enPS3000ADigitalDirection as PS3000A_DIGITAL_DIRECTION;
332pub const enPS3000ATriggerState_PS3000A_CONDITION_DONT_CARE: enPS3000ATriggerState = 0;
333pub const enPS3000ATriggerState_PS3000A_CONDITION_TRUE: enPS3000ATriggerState = 1;
334pub const enPS3000ATriggerState_PS3000A_CONDITION_FALSE: enPS3000ATriggerState = 2;
335pub const enPS3000ATriggerState_PS3000A_CONDITION_MAX: enPS3000ATriggerState = 3;
336pub type enPS3000ATriggerState = ::std::os::raw::c_uint;
337pub use self::enPS3000ATriggerState as PS3000A_TRIGGER_STATE;
338#[repr(C, packed)]
339#[derive(Debug, Copy, Clone)]
340pub struct tPS3000ATriggerConditions {
341    pub channelA: PS3000A_TRIGGER_STATE,
342    pub channelB: PS3000A_TRIGGER_STATE,
343    pub channelC: PS3000A_TRIGGER_STATE,
344    pub channelD: PS3000A_TRIGGER_STATE,
345    pub external: PS3000A_TRIGGER_STATE,
346    pub aux: PS3000A_TRIGGER_STATE,
347    pub pulseWidthQualifier: PS3000A_TRIGGER_STATE,
348}
349
350pub type PS3000A_TRIGGER_CONDITIONS = tPS3000ATriggerConditions;
351#[repr(C, packed)]
352#[derive(Debug, Copy, Clone)]
353pub struct tPS3000ATriggerConditionsV2 {
354    pub channelA: PS3000A_TRIGGER_STATE,
355    pub channelB: PS3000A_TRIGGER_STATE,
356    pub channelC: PS3000A_TRIGGER_STATE,
357    pub channelD: PS3000A_TRIGGER_STATE,
358    pub external: PS3000A_TRIGGER_STATE,
359    pub aux: PS3000A_TRIGGER_STATE,
360    pub pulseWidthQualifier: PS3000A_TRIGGER_STATE,
361    pub digital: PS3000A_TRIGGER_STATE,
362}
363
364pub type PS3000A_TRIGGER_CONDITIONS_V2 = tPS3000ATriggerConditionsV2;
365#[repr(C, packed)]
366#[derive(Debug, Copy, Clone)]
367pub struct tPS3000APwqConditions {
368    pub channelA: PS3000A_TRIGGER_STATE,
369    pub channelB: PS3000A_TRIGGER_STATE,
370    pub channelC: PS3000A_TRIGGER_STATE,
371    pub channelD: PS3000A_TRIGGER_STATE,
372    pub external: PS3000A_TRIGGER_STATE,
373    pub aux: PS3000A_TRIGGER_STATE,
374}
375
376pub type PS3000A_PWQ_CONDITIONS = tPS3000APwqConditions;
377#[repr(C, packed)]
378#[derive(Debug, Copy, Clone)]
379pub struct tPS3000APwqConditionsV2 {
380    pub channelA: PS3000A_TRIGGER_STATE,
381    pub channelB: PS3000A_TRIGGER_STATE,
382    pub channelC: PS3000A_TRIGGER_STATE,
383    pub channelD: PS3000A_TRIGGER_STATE,
384    pub external: PS3000A_TRIGGER_STATE,
385    pub aux: PS3000A_TRIGGER_STATE,
386    pub digital: PS3000A_TRIGGER_STATE,
387}
388
389pub type PS3000A_PWQ_CONDITIONS_V2 = tPS3000APwqConditionsV2;
390#[repr(C, packed)]
391#[derive(Debug, Copy, Clone)]
392pub struct tPS3000ADigitalChannelDirections {
393    pub channel: PS3000A_DIGITAL_CHANNEL,
394    pub direction: PS3000A_DIGITAL_DIRECTION,
395}
396
397pub type PS3000A_DIGITAL_CHANNEL_DIRECTIONS = tPS3000ADigitalChannelDirections;
398#[repr(C, packed)]
399#[derive(Debug, Copy, Clone)]
400pub struct tPS3000ATriggerChannelProperties {
401    pub thresholdUpper: i16,
402    pub thresholdUpperHysteresis: u16,
403    pub thresholdLower: i16,
404    pub thresholdLowerHysteresis: u16,
405    pub channel: PS3000A_CHANNEL,
406    pub thresholdMode: PS3000A_THRESHOLD_MODE,
407}
408
409pub type PS3000A_TRIGGER_CHANNEL_PROPERTIES = tPS3000ATriggerChannelProperties;
410#[repr(C, packed)]
411#[derive(Debug, Copy, Clone)]
412pub struct tPS3000ATriggerInfo {
413    pub status: PICO_STATUS,
414    pub segmentIndex: u32,
415    pub reserved0: u32,
416    pub triggerTime: i64,
417    pub timeUnits: i16,
418    pub reserved1: i16,
419    pub timeStampCounter: u64,
420}
421
422pub type PS3000A_TRIGGER_INFO = tPS3000ATriggerInfo;
423#[repr(C, packed)]
424#[derive(Debug, Copy, Clone)]
425pub struct tPS3000AScalingFactors {
426    pub channelOrPort: PS3000A_CHANNEL,
427    pub range: PS3000A_RANGE,
428    pub offset: i16,
429    pub scalingFactor: f64,
430}
431
432pub type PS3000A_SCALING_FACTORS_VALUES = tPS3000AScalingFactors;
433pub const enPS3000ARatioMode_PS3000A_RATIO_MODE_NONE: enPS3000ARatioMode = 0;
434pub const enPS3000ARatioMode_PS3000A_RATIO_MODE_AGGREGATE: enPS3000ARatioMode = 1;
435pub const enPS3000ARatioMode_PS3000A_RATIO_MODE_DECIMATE: enPS3000ARatioMode = 2;
436pub const enPS3000ARatioMode_PS3000A_RATIO_MODE_AVERAGE: enPS3000ARatioMode = 4;
437pub type enPS3000ARatioMode = ::std::os::raw::c_uint;
438pub use self::enPS3000ARatioMode as PS3000A_RATIO_MODE;
439pub const enPS3000APulseWidthType_PS3000A_PW_TYPE_NONE: enPS3000APulseWidthType = 0;
440pub const enPS3000APulseWidthType_PS3000A_PW_TYPE_LESS_THAN: enPS3000APulseWidthType = 1;
441pub const enPS3000APulseWidthType_PS3000A_PW_TYPE_GREATER_THAN: enPS3000APulseWidthType = 2;
442pub const enPS3000APulseWidthType_PS3000A_PW_TYPE_IN_RANGE: enPS3000APulseWidthType = 3;
443pub const enPS3000APulseWidthType_PS3000A_PW_TYPE_OUT_OF_RANGE: enPS3000APulseWidthType = 4;
444pub type enPS3000APulseWidthType = ::std::os::raw::c_uint;
445pub use self::enPS3000APulseWidthType as PS3000A_PULSE_WIDTH_TYPE;
446pub const enPS3000AHoldOffType_PS3000A_TIME: enPS3000AHoldOffType = 0;
447pub const enPS3000AHoldOffType_PS3000A_EVENT: enPS3000AHoldOffType = 1;
448pub const enPS3000AHoldOffType_PS3000A_MAX_HOLDOFF_TYPE: enPS3000AHoldOffType = 2;
449pub type enPS3000AHoldOffType = ::std::os::raw::c_uint;
450pub use self::enPS3000AHoldOffType as PS3000A_HOLDOFF_TYPE;
451pub type ps3000aBlockReady = ::std::option::Option<
452    extern "C" fn(handle: i16, status: PICO_STATUS, pParameter: *mut ::std::os::raw::c_void),
453>;
454pub type ps3000aStreamingReady = ::std::option::Option<
455    unsafe extern "C" fn(
456        handle: i16,
457        noOfSamples: i32,
458        startIndex: u32,
459        overflow: i16,
460        triggerAt: u32,
461        triggered: i16,
462        autoStop: i16,
463        pParameter: *mut ::std::os::raw::c_void,
464    ),
465>;
466pub type ps3000aDataReady = ::std::option::Option<
467    unsafe extern "C" fn(
468        handle: i16,
469        status: PICO_STATUS,
470        noOfSamples: u32,
471        overflow: i16,
472        pParameter: *mut ::std::os::raw::c_void,
473    ),
474>;
475
476extern crate libloading;
477pub struct PS3000ALoader {
478    __library: ::libloading::Library,
479    pub ps3000aApplyFix: Result<unsafe extern "C" fn(u32, u16), ::libloading::Error>,
480    pub ps3000aOpenUnit: Result<
481        unsafe extern "C" fn(handle: *mut i16, serial: *mut i8) -> PICO_STATUS,
482        ::libloading::Error,
483    >,
484    pub ps3000aOpenUnitAsync: Result<
485        unsafe extern "C" fn(status: *mut i16, serial: *mut i8) -> PICO_STATUS,
486        ::libloading::Error,
487    >,
488    pub ps3000aOpenUnitProgress: Result<
489        unsafe extern "C" fn(
490            handle: *mut i16,
491            progressPercent: *mut i16,
492            complete: *mut i16,
493        ) -> PICO_STATUS,
494        ::libloading::Error,
495    >,
496    pub ps3000aGetUnitInfo: Result<
497        unsafe extern "C" fn(
498            handle: i16,
499            string: *mut i8,
500            stringLength: i16,
501            requiredSize: *mut i16,
502            info: PICO_INFO,
503        ) -> PICO_STATUS,
504        ::libloading::Error,
505    >,
506    pub ps3000aFlashLed:
507        Result<unsafe extern "C" fn(handle: i16, start: i16) -> PICO_STATUS, ::libloading::Error>,
508    pub ps3000aCloseUnit:
509        Result<unsafe extern "C" fn(handle: i16) -> PICO_STATUS, ::libloading::Error>,
510    pub ps3000aMemorySegments: Result<
511        unsafe extern "C" fn(handle: i16, nSegments: u32, nMaxSamples: *mut i32) -> PICO_STATUS,
512        ::libloading::Error,
513    >,
514    pub ps3000aSetChannel: Result<
515        unsafe extern "C" fn(
516            handle: i16,
517            channel: PS3000A_CHANNEL,
518            enabled: i16,
519            type_: PS3000A_COUPLING,
520            range: PS3000A_RANGE,
521            analogOffset: f32,
522        ) -> PICO_STATUS,
523        ::libloading::Error,
524    >,
525    pub ps3000aSetDigitalPort: Result<
526        unsafe extern "C" fn(
527            handle: i16,
528            port: PS3000A_DIGITAL_PORT,
529            enabled: i16,
530            logicLevel: i16,
531        ) -> PICO_STATUS,
532        ::libloading::Error,
533    >,
534    pub ps3000aSetBandwidthFilter: Result<
535        unsafe extern "C" fn(
536            handle: i16,
537            channel: PS3000A_CHANNEL,
538            bandwidth: PS3000A_BANDWIDTH_LIMITER,
539        ) -> PICO_STATUS,
540        ::libloading::Error,
541    >,
542    pub ps3000aSetNoOfCaptures: Result<
543        unsafe extern "C" fn(handle: i16, nCaptures: u32) -> PICO_STATUS,
544        ::libloading::Error,
545    >,
546    pub ps3000aGetTimebase: Result<
547        unsafe extern "C" fn(
548            handle: i16,
549            timebase: u32,
550            noSamples: i32,
551            timeIntervalNanoseconds: *mut i32,
552            oversample: i16,
553            maxSamples: *mut i32,
554            segmentIndex: u32,
555        ) -> PICO_STATUS,
556        ::libloading::Error,
557    >,
558    pub ps3000aGetTimebase2: Result<
559        unsafe extern "C" fn(
560            handle: i16,
561            timebase: u32,
562            noSamples: i32,
563            timeIntervalNanoseconds: *mut f32,
564            oversample: i16,
565            maxSamples: *mut i32,
566            segmentIndex: u32,
567        ) -> PICO_STATUS,
568        ::libloading::Error,
569    >,
570    pub ps3000aSetSigGenArbitrary: Result<
571        unsafe extern "C" fn(
572            handle: i16,
573            offsetVoltage: i32,
574            pkToPk: u32,
575            startDeltaPhase: u32,
576            stopDeltaPhase: u32,
577            deltaPhaseIncrement: u32,
578            dwellCount: u32,
579            arbitraryWaveform: *mut i16,
580            arbitraryWaveformSize: i32,
581            sweepType: PS3000A_SWEEP_TYPE,
582            operation: PS3000A_EXTRA_OPERATIONS,
583            indexMode: PS3000A_INDEX_MODE,
584            shots: u32,
585            sweeps: u32,
586            triggerType: PS3000A_SIGGEN_TRIG_TYPE,
587            triggerSource: PS3000A_SIGGEN_TRIG_SOURCE,
588            extInThreshold: i16,
589        ) -> PICO_STATUS,
590        ::libloading::Error,
591    >,
592    pub ps3000aSetSigGenBuiltIn: Result<
593        unsafe extern "C" fn(
594            handle: i16,
595            offsetVoltage: i32,
596            pkToPk: u32,
597            waveType: i16,
598            startFrequency: f32,
599            stopFrequency: f32,
600            increment: f32,
601            dwellTime: f32,
602            sweepType: PS3000A_SWEEP_TYPE,
603            operation: PS3000A_EXTRA_OPERATIONS,
604            shots: u32,
605            sweeps: u32,
606            triggerType: PS3000A_SIGGEN_TRIG_TYPE,
607            triggerSource: PS3000A_SIGGEN_TRIG_SOURCE,
608            extInThreshold: i16,
609        ) -> PICO_STATUS,
610        ::libloading::Error,
611    >,
612    pub ps3000aSetSigGenBuiltInV2: Result<
613        unsafe extern "C" fn(
614            handle: i16,
615            offsetVoltage: i32,
616            pkToPk: u32,
617            waveType: i16,
618            startFrequency: f64,
619            stopFrequency: f64,
620            increment: f64,
621            dwellTime: f64,
622            sweepType: PS3000A_SWEEP_TYPE,
623            operation: PS3000A_EXTRA_OPERATIONS,
624            shots: u32,
625            sweeps: u32,
626            triggerType: PS3000A_SIGGEN_TRIG_TYPE,
627            triggerSource: PS3000A_SIGGEN_TRIG_SOURCE,
628            extInThreshold: i16,
629        ) -> PICO_STATUS,
630        ::libloading::Error,
631    >,
632    pub ps3000aSetSigGenPropertiesArbitrary: Result<
633        unsafe extern "C" fn(
634            handle: i16,
635            startDeltaPhase: u32,
636            stopDeltaPhase: u32,
637            deltaPhaseIncrement: u32,
638            dwellCount: u32,
639            sweepType: PS3000A_SWEEP_TYPE,
640            shots: u32,
641            sweeps: u32,
642            triggerType: PS3000A_SIGGEN_TRIG_TYPE,
643            triggerSource: PS3000A_SIGGEN_TRIG_SOURCE,
644            extInThreshold: i16,
645        ) -> PICO_STATUS,
646        ::libloading::Error,
647    >,
648    pub ps3000aSetSigGenPropertiesBuiltIn: Result<
649        unsafe extern "C" fn(
650            handle: i16,
651            startFrequency: f64,
652            stopFrequency: f64,
653            increment: f64,
654            dwellTime: f64,
655            sweepType: PS3000A_SWEEP_TYPE,
656            shots: u32,
657            sweeps: u32,
658            triggerType: PS3000A_SIGGEN_TRIG_TYPE,
659            triggerSource: PS3000A_SIGGEN_TRIG_SOURCE,
660            extInThreshold: i16,
661        ) -> PICO_STATUS,
662        ::libloading::Error,
663    >,
664    pub ps3000aSigGenFrequencyToPhase: Result<
665        unsafe extern "C" fn(
666            handle: i16,
667            frequency: f64,
668            indexMode: PS3000A_INDEX_MODE,
669            bufferLength: u32,
670            phase: *mut u32,
671        ) -> PICO_STATUS,
672        ::libloading::Error,
673    >,
674    pub ps3000aSigGenArbitraryMinMaxValues: Result<
675        unsafe extern "C" fn(
676            handle: i16,
677            minArbitraryWaveformValue: *mut i16,
678            maxArbitraryWaveformValue: *mut i16,
679            minArbitraryWaveformSize: *mut u32,
680            maxArbitraryWaveformSize: *mut u32,
681        ) -> PICO_STATUS,
682        ::libloading::Error,
683    >,
684    pub ps3000aGetMaxEtsValues: Result<
685        unsafe extern "C" fn(
686            handle: i16,
687            etsCycles: *mut i16,
688            etsInterleave: *mut i16,
689        ) -> PICO_STATUS,
690        ::libloading::Error,
691    >,
692    pub ps3000aSigGenSoftwareControl:
693        Result<unsafe extern "C" fn(handle: i16, state: i16) -> PICO_STATUS, ::libloading::Error>,
694    pub ps3000aSetEts: Result<
695        unsafe extern "C" fn(
696            handle: i16,
697            mode: PS3000A_ETS_MODE,
698            etsCycles: i16,
699            etsInterleave: i16,
700            sampleTimePicoseconds: *mut i32,
701        ) -> PICO_STATUS,
702        ::libloading::Error,
703    >,
704    pub ps3000aSetSimpleTrigger: Result<
705        unsafe extern "C" fn(
706            handle: i16,
707            enable: i16,
708            source: PS3000A_CHANNEL,
709            threshold: i16,
710            direction: PS3000A_THRESHOLD_DIRECTION,
711            delay: u32,
712            autoTrigger_ms: i16,
713        ) -> PICO_STATUS,
714        ::libloading::Error,
715    >,
716    pub ps3000aSetTriggerDigitalPortProperties: Result<
717        unsafe extern "C" fn(
718            handle: i16,
719            directions: *mut PS3000A_DIGITAL_CHANNEL_DIRECTIONS,
720            nDirections: i16,
721        ) -> PICO_STATUS,
722        ::libloading::Error,
723    >,
724    pub ps3000aSetPulseWidthDigitalPortProperties: Result<
725        unsafe extern "C" fn(
726            handle: i16,
727            directions: *mut PS3000A_DIGITAL_CHANNEL_DIRECTIONS,
728            nDirections: i16,
729        ) -> PICO_STATUS,
730        ::libloading::Error,
731    >,
732    pub ps3000aSetTriggerChannelProperties: Result<
733        unsafe extern "C" fn(
734            handle: i16,
735            channelProperties: *mut PS3000A_TRIGGER_CHANNEL_PROPERTIES,
736            nChannelProperties: i16,
737            auxOutputEnable: i16,
738            autoTriggerMilliseconds: i32,
739        ) -> PICO_STATUS,
740        ::libloading::Error,
741    >,
742    pub ps3000aSetTriggerChannelConditions: Result<
743        unsafe extern "C" fn(
744            handle: i16,
745            conditions: *mut PS3000A_TRIGGER_CONDITIONS,
746            nConditions: i16,
747        ) -> PICO_STATUS,
748        ::libloading::Error,
749    >,
750    pub ps3000aSetTriggerChannelConditionsV2: Result<
751        unsafe extern "C" fn(
752            handle: i16,
753            conditions: *mut PS3000A_TRIGGER_CONDITIONS_V2,
754            nConditions: i16,
755        ) -> PICO_STATUS,
756        ::libloading::Error,
757    >,
758    pub ps3000aSetTriggerChannelDirections: Result<
759        unsafe extern "C" fn(
760            handle: i16,
761            channelA: PS3000A_THRESHOLD_DIRECTION,
762            channelB: PS3000A_THRESHOLD_DIRECTION,
763            channelC: PS3000A_THRESHOLD_DIRECTION,
764            channelD: PS3000A_THRESHOLD_DIRECTION,
765            ext: PS3000A_THRESHOLD_DIRECTION,
766            aux: PS3000A_THRESHOLD_DIRECTION,
767        ) -> PICO_STATUS,
768        ::libloading::Error,
769    >,
770    pub ps3000aSetTriggerDelay:
771        Result<unsafe extern "C" fn(handle: i16, delay: u32) -> PICO_STATUS, ::libloading::Error>,
772    pub ps3000aSetPulseWidthQualifier: Result<
773        unsafe extern "C" fn(
774            handle: i16,
775            conditions: *mut PS3000A_PWQ_CONDITIONS,
776            nConditions: i16,
777            direction: PS3000A_THRESHOLD_DIRECTION,
778            lower: u32,
779            upper: u32,
780            type_: PS3000A_PULSE_WIDTH_TYPE,
781        ) -> PICO_STATUS,
782        ::libloading::Error,
783    >,
784    pub ps3000aSetPulseWidthQualifierV2: Result<
785        unsafe extern "C" fn(
786            handle: i16,
787            conditions: *mut PS3000A_PWQ_CONDITIONS_V2,
788            nConditions: i16,
789            direction: PS3000A_THRESHOLD_DIRECTION,
790            lower: u32,
791            upper: u32,
792            type_: PS3000A_PULSE_WIDTH_TYPE,
793        ) -> PICO_STATUS,
794        ::libloading::Error,
795    >,
796    pub ps3000aIsTriggerOrPulseWidthQualifierEnabled: Result<
797        unsafe extern "C" fn(
798            handle: i16,
799            triggerEnabled: *mut i16,
800            pulseWidthQualifierEnabled: *mut i16,
801        ) -> PICO_STATUS,
802        ::libloading::Error,
803    >,
804    pub ps3000aGetTriggerTimeOffset: Result<
805        unsafe extern "C" fn(
806            handle: i16,
807            timeUpper: *mut u32,
808            timeLower: *mut u32,
809            timeUnits: *mut PS3000A_TIME_UNITS,
810            segmentIndex: u32,
811        ) -> PICO_STATUS,
812        ::libloading::Error,
813    >,
814    pub ps3000aGetTriggerTimeOffset64: Result<
815        unsafe extern "C" fn(
816            handle: i16,
817            time: *mut i64,
818            timeUnits: *mut PS3000A_TIME_UNITS,
819            segmentIndex: u32,
820        ) -> PICO_STATUS,
821        ::libloading::Error,
822    >,
823    pub ps3000aGetValuesTriggerTimeOffsetBulk: Result<
824        unsafe extern "C" fn(
825            handle: i16,
826            timesUpper: *mut u32,
827            timesLower: *mut u32,
828            timeUnits: *mut PS3000A_TIME_UNITS,
829            fromSegmentIndex: u32,
830            toSegmentIndex: u32,
831        ) -> PICO_STATUS,
832        ::libloading::Error,
833    >,
834    pub ps3000aGetValuesTriggerTimeOffsetBulk64: Result<
835        unsafe extern "C" fn(
836            handle: i16,
837            times: *mut i64,
838            timeUnits: *mut PS3000A_TIME_UNITS,
839            fromSegmentIndex: u32,
840            toSegmentIndex: u32,
841        ) -> PICO_STATUS,
842        ::libloading::Error,
843    >,
844    pub ps3000aGetNoOfCaptures: Result<
845        unsafe extern "C" fn(handle: i16, nCaptures: *mut u32) -> PICO_STATUS,
846        ::libloading::Error,
847    >,
848    pub ps3000aGetNoOfProcessedCaptures: Result<
849        unsafe extern "C" fn(handle: i16, nProcessedCaptures: *mut u32) -> PICO_STATUS,
850        ::libloading::Error,
851    >,
852    pub ps3000aSetDataBuffer: Result<
853        unsafe extern "C" fn(
854            handle: i16,
855            channelOrPort: PS3000A_CHANNEL,
856            buffer: *mut i16,
857            bufferLth: i32,
858            segmentIndex: u32,
859            mode: PS3000A_RATIO_MODE,
860        ) -> PICO_STATUS,
861        ::libloading::Error,
862    >,
863    pub ps3000aSetDataBuffers: Result<
864        unsafe extern "C" fn(
865            handle: i16,
866            channelOrPort: PS3000A_CHANNEL,
867            bufferMax: *mut i16,
868            bufferMin: *mut i16,
869            bufferLth: i32,
870            segmentIndex: u32,
871            mode: PS3000A_RATIO_MODE,
872        ) -> PICO_STATUS,
873        ::libloading::Error,
874    >,
875    pub ps3000aSetUnscaledDataBuffers: Result<
876        unsafe extern "C" fn(
877            handle: i16,
878            channelOrPort: PS3000A_CHANNEL,
879            bufferMax: *mut i8,
880            bufferMin: *mut i8,
881            bufferLth: i32,
882            segmentIndex: u32,
883            mode: PS3000A_RATIO_MODE,
884        ) -> PICO_STATUS,
885        ::libloading::Error,
886    >,
887    pub ps3000aSetEtsTimeBuffer: Result<
888        unsafe extern "C" fn(handle: i16, buffer: *mut i64, bufferLth: i32) -> PICO_STATUS,
889        ::libloading::Error,
890    >,
891    pub ps3000aSetEtsTimeBuffers: Result<
892        unsafe extern "C" fn(
893            handle: i16,
894            timeUpper: *mut u32,
895            timeLower: *mut u32,
896            bufferLth: i32,
897        ) -> PICO_STATUS,
898        ::libloading::Error,
899    >,
900    pub ps3000aIsReady: Result<
901        unsafe extern "C" fn(handle: i16, ready: *mut i16) -> PICO_STATUS,
902        ::libloading::Error,
903    >,
904    pub ps3000aRunBlock: Result<
905        unsafe extern "C" fn(
906            handle: i16,
907            noOfPreTriggerSamples: i32,
908            noOfPostTriggerSamples: i32,
909            timebase: u32,
910            oversample: i16,
911            timeIndisposedMs: *mut i32,
912            segmentIndex: u32,
913            lpReady: ps3000aBlockReady,
914            pParameter: *mut ::std::os::raw::c_void,
915        ) -> PICO_STATUS,
916        ::libloading::Error,
917    >,
918    pub ps3000aRunStreaming: Result<
919        unsafe extern "C" fn(
920            handle: i16,
921            sampleInterval: *mut u32,
922            sampleIntervalTimeUnits: PS3000A_TIME_UNITS,
923            maxPreTriggerSamples: u32,
924            maxPostPreTriggerSamples: u32,
925            autoStop: i16,
926            downSampleRatio: u32,
927            downSampleRatioMode: PS3000A_RATIO_MODE,
928            overviewBufferSize: u32,
929        ) -> PICO_STATUS,
930        ::libloading::Error,
931    >,
932    pub ps3000aGetStreamingLatestValues: Result<
933        unsafe extern "C" fn(
934            handle: i16,
935            lpPs3000aReady: ps3000aStreamingReady,
936            pParameter: *mut ::std::os::raw::c_void,
937        ) -> PICO_STATUS,
938        ::libloading::Error,
939    >,
940    pub ps3000aNoOfStreamingValues: Result<
941        unsafe extern "C" fn(handle: i16, noOfValues: *mut u32) -> PICO_STATUS,
942        ::libloading::Error,
943    >,
944    pub ps3000aGetMaxDownSampleRatio: Result<
945        unsafe extern "C" fn(
946            handle: i16,
947            noOfUnaggreatedSamples: u32,
948            maxDownSampleRatio: *mut u32,
949            downSampleRatioMode: PS3000A_RATIO_MODE,
950            segmentIndex: u32,
951        ) -> PICO_STATUS,
952        ::libloading::Error,
953    >,
954    pub ps3000aGetValues: Result<
955        unsafe extern "C" fn(
956            handle: i16,
957            startIndex: u32,
958            noOfSamples: *mut u32,
959            downSampleRatio: u32,
960            downSampleRatioMode: PS3000A_RATIO_MODE,
961            segmentIndex: u32,
962            overflow: *mut i16,
963        ) -> PICO_STATUS,
964        ::libloading::Error,
965    >,
966    pub ps3000aGetValuesBulk: Result<
967        unsafe extern "C" fn(
968            handle: i16,
969            noOfSamples: *mut u32,
970            fromSegmentIndex: u32,
971            toSegmentIndex: u32,
972            downSampleRatio: u32,
973            downSampleRatioMode: PS3000A_RATIO_MODE,
974            overflow: *mut i16,
975        ) -> PICO_STATUS,
976        ::libloading::Error,
977    >,
978    pub ps3000aGetValuesAsync: Result<
979        unsafe extern "C" fn(
980            handle: i16,
981            startIndex: u32,
982            noOfSamples: u32,
983            downSampleRatio: u32,
984            downSampleRatioMode: PS3000A_RATIO_MODE,
985            segmentIndex: u32,
986            lpDataReady: *mut ::std::os::raw::c_void,
987            pParameter: *mut ::std::os::raw::c_void,
988        ) -> PICO_STATUS,
989        ::libloading::Error,
990    >,
991    pub ps3000aGetValuesOverlapped: Result<
992        unsafe extern "C" fn(
993            handle: i16,
994            startIndex: u32,
995            noOfSamples: *mut u32,
996            downSampleRatio: u32,
997            downSampleRatioMode: PS3000A_RATIO_MODE,
998            segmentIndex: u32,
999            overflow: *mut i16,
1000        ) -> PICO_STATUS,
1001        ::libloading::Error,
1002    >,
1003    pub ps3000aGetValuesOverlappedBulk: Result<
1004        unsafe extern "C" fn(
1005            handle: i16,
1006            startIndex: u32,
1007            noOfSamples: *mut u32,
1008            downSampleRatio: u32,
1009            downSampleRatioMode: PS3000A_RATIO_MODE,
1010            fromSegmentIndex: u32,
1011            toSegmentIndex: u32,
1012            overflow: *mut i16,
1013        ) -> PICO_STATUS,
1014        ::libloading::Error,
1015    >,
1016    pub ps3000aGetTriggerInfoBulk: Result<
1017        unsafe extern "C" fn(
1018            handle: i16,
1019            triggerInfo: *mut PS3000A_TRIGGER_INFO,
1020            fromSegmentIndex: u32,
1021            toSegmentIndex: u32,
1022        ) -> PICO_STATUS,
1023        ::libloading::Error,
1024    >,
1025    pub ps3000aStop: Result<unsafe extern "C" fn(handle: i16) -> PICO_STATUS, ::libloading::Error>,
1026    pub ps3000aHoldOff: Result<
1027        unsafe extern "C" fn(handle: i16, holdoff: u64, type_: PS3000A_HOLDOFF_TYPE) -> PICO_STATUS,
1028        ::libloading::Error,
1029    >,
1030    pub ps3000aGetChannelInformation: Result<
1031        unsafe extern "C" fn(
1032            handle: i16,
1033            info: PS3000A_CHANNEL_INFO,
1034            probe: i32,
1035            ranges: *mut i32,
1036            length: *mut i32,
1037            channels: i32,
1038        ) -> PICO_STATUS,
1039        ::libloading::Error,
1040    >,
1041    pub ps3000aEnumerateUnits: Result<
1042        unsafe extern "C" fn(count: *mut i16, serials: *mut i8, serialLth: *mut i16) -> PICO_STATUS,
1043        ::libloading::Error,
1044    >,
1045    pub ps3000aPingUnit:
1046        Result<unsafe extern "C" fn(handle: i16) -> PICO_STATUS, ::libloading::Error>,
1047    pub ps3000aMaximumValue: Result<
1048        unsafe extern "C" fn(handle: i16, value: *mut i16) -> PICO_STATUS,
1049        ::libloading::Error,
1050    >,
1051    pub ps3000aMinimumValue: Result<
1052        unsafe extern "C" fn(handle: i16, value: *mut i16) -> PICO_STATUS,
1053        ::libloading::Error,
1054    >,
1055    pub ps3000aGetAnalogueOffset: Result<
1056        unsafe extern "C" fn(
1057            handle: i16,
1058            range: PS3000A_RANGE,
1059            coupling: PS3000A_COUPLING,
1060            maximumVoltage: *mut f32,
1061            minimumVoltage: *mut f32,
1062        ) -> PICO_STATUS,
1063        ::libloading::Error,
1064    >,
1065    pub ps3000aGetMaxSegments: Result<
1066        unsafe extern "C" fn(handle: i16, maxSegments: *mut u32) -> PICO_STATUS,
1067        ::libloading::Error,
1068    >,
1069    pub ps3000aChangePowerSource: Result<
1070        unsafe extern "C" fn(handle: i16, powerState: PICO_STATUS) -> PICO_STATUS,
1071        ::libloading::Error,
1072    >,
1073    pub ps3000aCurrentPowerSource:
1074        Result<unsafe extern "C" fn(handle: i16) -> PICO_STATUS, ::libloading::Error>,
1075    pub ps3000aQueryOutputEdgeDetect: Result<
1076        unsafe extern "C" fn(handle: i16, state: *mut i16) -> PICO_STATUS,
1077        ::libloading::Error,
1078    >,
1079    pub ps3000aSetOutputEdgeDetect:
1080        Result<unsafe extern "C" fn(handle: i16, state: i16) -> PICO_STATUS, ::libloading::Error>,
1081    pub ps3000aGetScalingValues: Result<
1082        unsafe extern "C" fn(
1083            handle: i16,
1084            scalingValues: *mut PS3000A_SCALING_FACTORS_VALUES,
1085            nChannels: i16,
1086        ) -> PICO_STATUS,
1087        ::libloading::Error,
1088    >,
1089}
1090impl PS3000ALoader {
1091    pub unsafe fn new<P>(path: P) -> Result<Self, ::libloading::Error>
1092    where
1093        P: AsRef<::std::ffi::OsStr>,
1094    {
1095        let __library = ::libloading::Library::new(path)?;
1096        let ps3000aApplyFix = __library.get(b"ps3000aApplyFix\0").map(|sym| *sym);
1097        let ps3000aOpenUnit = __library.get(b"ps3000aOpenUnit\0").map(|sym| *sym);
1098        let ps3000aOpenUnitAsync = __library.get(b"ps3000aOpenUnitAsync\0").map(|sym| *sym);
1099        let ps3000aOpenUnitProgress = __library.get(b"ps3000aOpenUnitProgress\0").map(|sym| *sym);
1100        let ps3000aGetUnitInfo = __library.get(b"ps3000aGetUnitInfo\0").map(|sym| *sym);
1101        let ps3000aFlashLed = __library.get(b"ps3000aFlashLed\0").map(|sym| *sym);
1102        let ps3000aCloseUnit = __library.get(b"ps3000aCloseUnit\0").map(|sym| *sym);
1103        let ps3000aMemorySegments = __library.get(b"ps3000aMemorySegments\0").map(|sym| *sym);
1104        let ps3000aSetChannel = __library.get(b"ps3000aSetChannel\0").map(|sym| *sym);
1105        let ps3000aSetDigitalPort = __library.get(b"ps3000aSetDigitalPort\0").map(|sym| *sym);
1106        let ps3000aSetBandwidthFilter = __library
1107            .get(b"ps3000aSetBandwidthFilter\0")
1108            .map(|sym| *sym);
1109        let ps3000aSetNoOfCaptures = __library.get(b"ps3000aSetNoOfCaptures\0").map(|sym| *sym);
1110        let ps3000aGetTimebase = __library.get(b"ps3000aGetTimebase\0").map(|sym| *sym);
1111        let ps3000aGetTimebase2 = __library.get(b"ps3000aGetTimebase2\0").map(|sym| *sym);
1112        let ps3000aSetSigGenArbitrary = __library
1113            .get(b"ps3000aSetSigGenArbitrary\0")
1114            .map(|sym| *sym);
1115        let ps3000aSetSigGenBuiltIn = __library.get(b"ps3000aSetSigGenBuiltIn\0").map(|sym| *sym);
1116        let ps3000aSetSigGenBuiltInV2 = __library
1117            .get(b"ps3000aSetSigGenBuiltInV2\0")
1118            .map(|sym| *sym);
1119        let ps3000aSetSigGenPropertiesArbitrary = __library
1120            .get(b"ps3000aSetSigGenPropertiesArbitrary\0")
1121            .map(|sym| *sym);
1122        let ps3000aSetSigGenPropertiesBuiltIn = __library
1123            .get(b"ps3000aSetSigGenPropertiesBuiltIn\0")
1124            .map(|sym| *sym);
1125        let ps3000aSigGenFrequencyToPhase = __library
1126            .get(b"ps3000aSigGenFrequencyToPhase\0")
1127            .map(|sym| *sym);
1128        let ps3000aSigGenArbitraryMinMaxValues = __library
1129            .get(b"ps3000aSigGenArbitraryMinMaxValues\0")
1130            .map(|sym| *sym);
1131        let ps3000aGetMaxEtsValues = __library.get(b"ps3000aGetMaxEtsValues\0").map(|sym| *sym);
1132        let ps3000aSigGenSoftwareControl = __library
1133            .get(b"ps3000aSigGenSoftwareControl\0")
1134            .map(|sym| *sym);
1135        let ps3000aSetEts = __library.get(b"ps3000aSetEts\0").map(|sym| *sym);
1136        let ps3000aSetSimpleTrigger = __library.get(b"ps3000aSetSimpleTrigger\0").map(|sym| *sym);
1137        let ps3000aSetTriggerDigitalPortProperties = __library
1138            .get(b"ps3000aSetTriggerDigitalPortProperties\0")
1139            .map(|sym| *sym);
1140        let ps3000aSetPulseWidthDigitalPortProperties = __library
1141            .get(b"ps3000aSetPulseWidthDigitalPortProperties\0")
1142            .map(|sym| *sym);
1143        let ps3000aSetTriggerChannelProperties = __library
1144            .get(b"ps3000aSetTriggerChannelProperties\0")
1145            .map(|sym| *sym);
1146        let ps3000aSetTriggerChannelConditions = __library
1147            .get(b"ps3000aSetTriggerChannelConditions\0")
1148            .map(|sym| *sym);
1149        let ps3000aSetTriggerChannelConditionsV2 = __library
1150            .get(b"ps3000aSetTriggerChannelConditionsV2\0")
1151            .map(|sym| *sym);
1152        let ps3000aSetTriggerChannelDirections = __library
1153            .get(b"ps3000aSetTriggerChannelDirections\0")
1154            .map(|sym| *sym);
1155        let ps3000aSetTriggerDelay = __library.get(b"ps3000aSetTriggerDelay\0").map(|sym| *sym);
1156        let ps3000aSetPulseWidthQualifier = __library
1157            .get(b"ps3000aSetPulseWidthQualifier\0")
1158            .map(|sym| *sym);
1159        let ps3000aSetPulseWidthQualifierV2 = __library
1160            .get(b"ps3000aSetPulseWidthQualifierV2\0")
1161            .map(|sym| *sym);
1162        let ps3000aIsTriggerOrPulseWidthQualifierEnabled = __library
1163            .get(b"ps3000aIsTriggerOrPulseWidthQualifierEnabled\0")
1164            .map(|sym| *sym);
1165        let ps3000aGetTriggerTimeOffset = __library
1166            .get(b"ps3000aGetTriggerTimeOffset\0")
1167            .map(|sym| *sym);
1168        let ps3000aGetTriggerTimeOffset64 = __library
1169            .get(b"ps3000aGetTriggerTimeOffset64\0")
1170            .map(|sym| *sym);
1171        let ps3000aGetValuesTriggerTimeOffsetBulk = __library
1172            .get(b"ps3000aGetValuesTriggerTimeOffsetBulk\0")
1173            .map(|sym| *sym);
1174        let ps3000aGetValuesTriggerTimeOffsetBulk64 = __library
1175            .get(b"ps3000aGetValuesTriggerTimeOffsetBulk64\0")
1176            .map(|sym| *sym);
1177        let ps3000aGetNoOfCaptures = __library.get(b"ps3000aGetNoOfCaptures\0").map(|sym| *sym);
1178        let ps3000aGetNoOfProcessedCaptures = __library
1179            .get(b"ps3000aGetNoOfProcessedCaptures\0")
1180            .map(|sym| *sym);
1181        let ps3000aSetDataBuffer = __library.get(b"ps3000aSetDataBuffer\0").map(|sym| *sym);
1182        let ps3000aSetDataBuffers = __library.get(b"ps3000aSetDataBuffers\0").map(|sym| *sym);
1183        let ps3000aSetUnscaledDataBuffers = __library
1184            .get(b"ps3000aSetUnscaledDataBuffers\0")
1185            .map(|sym| *sym);
1186        let ps3000aSetEtsTimeBuffer = __library.get(b"ps3000aSetEtsTimeBuffer\0").map(|sym| *sym);
1187        let ps3000aSetEtsTimeBuffers = __library.get(b"ps3000aSetEtsTimeBuffers\0").map(|sym| *sym);
1188        let ps3000aIsReady = __library.get(b"ps3000aIsReady\0").map(|sym| *sym);
1189        let ps3000aRunBlock = __library.get(b"ps3000aRunBlock\0").map(|sym| *sym);
1190        let ps3000aRunStreaming = __library.get(b"ps3000aRunStreaming\0").map(|sym| *sym);
1191        let ps3000aGetStreamingLatestValues = __library
1192            .get(b"ps3000aGetStreamingLatestValues\0")
1193            .map(|sym| *sym);
1194        let ps3000aNoOfStreamingValues = __library
1195            .get(b"ps3000aNoOfStreamingValues\0")
1196            .map(|sym| *sym);
1197        let ps3000aGetMaxDownSampleRatio = __library
1198            .get(b"ps3000aGetMaxDownSampleRatio\0")
1199            .map(|sym| *sym);
1200        let ps3000aGetValues = __library.get(b"ps3000aGetValues\0").map(|sym| *sym);
1201        let ps3000aGetValuesBulk = __library.get(b"ps3000aGetValuesBulk\0").map(|sym| *sym);
1202        let ps3000aGetValuesAsync = __library.get(b"ps3000aGetValuesAsync\0").map(|sym| *sym);
1203        let ps3000aGetValuesOverlapped = __library
1204            .get(b"ps3000aGetValuesOverlapped\0")
1205            .map(|sym| *sym);
1206        let ps3000aGetValuesOverlappedBulk = __library
1207            .get(b"ps3000aGetValuesOverlappedBulk\0")
1208            .map(|sym| *sym);
1209        let ps3000aGetTriggerInfoBulk = __library
1210            .get(b"ps3000aGetTriggerInfoBulk\0")
1211            .map(|sym| *sym);
1212        let ps3000aStop = __library.get(b"ps3000aStop\0").map(|sym| *sym);
1213        let ps3000aHoldOff = __library.get(b"ps3000aHoldOff\0").map(|sym| *sym);
1214        let ps3000aGetChannelInformation = __library
1215            .get(b"ps3000aGetChannelInformation\0")
1216            .map(|sym| *sym);
1217        let ps3000aEnumerateUnits = __library.get(b"ps3000aEnumerateUnits\0").map(|sym| *sym);
1218        let ps3000aPingUnit = __library.get(b"ps3000aPingUnit\0").map(|sym| *sym);
1219        let ps3000aMaximumValue = __library.get(b"ps3000aMaximumValue\0").map(|sym| *sym);
1220        let ps3000aMinimumValue = __library.get(b"ps3000aMinimumValue\0").map(|sym| *sym);
1221        let ps3000aGetAnalogueOffset = __library.get(b"ps3000aGetAnalogueOffset\0").map(|sym| *sym);
1222        let ps3000aGetMaxSegments = __library.get(b"ps3000aGetMaxSegments\0").map(|sym| *sym);
1223        let ps3000aChangePowerSource = __library.get(b"ps3000aChangePowerSource\0").map(|sym| *sym);
1224        let ps3000aCurrentPowerSource = __library
1225            .get(b"ps3000aCurrentPowerSource\0")
1226            .map(|sym| *sym);
1227        let ps3000aQueryOutputEdgeDetect = __library
1228            .get(b"ps3000aQueryOutputEdgeDetect\0")
1229            .map(|sym| *sym);
1230        let ps3000aSetOutputEdgeDetect = __library
1231            .get(b"ps3000aSetOutputEdgeDetect\0")
1232            .map(|sym| *sym);
1233        let ps3000aGetScalingValues = __library.get(b"ps3000aGetScalingValues\0").map(|sym| *sym);
1234        Ok(PS3000ALoader {
1235            __library,
1236            ps3000aApplyFix,
1237            ps3000aOpenUnit,
1238            ps3000aOpenUnitAsync,
1239            ps3000aOpenUnitProgress,
1240            ps3000aGetUnitInfo,
1241            ps3000aFlashLed,
1242            ps3000aCloseUnit,
1243            ps3000aMemorySegments,
1244            ps3000aSetChannel,
1245            ps3000aSetDigitalPort,
1246            ps3000aSetBandwidthFilter,
1247            ps3000aSetNoOfCaptures,
1248            ps3000aGetTimebase,
1249            ps3000aGetTimebase2,
1250            ps3000aSetSigGenArbitrary,
1251            ps3000aSetSigGenBuiltIn,
1252            ps3000aSetSigGenBuiltInV2,
1253            ps3000aSetSigGenPropertiesArbitrary,
1254            ps3000aSetSigGenPropertiesBuiltIn,
1255            ps3000aSigGenFrequencyToPhase,
1256            ps3000aSigGenArbitraryMinMaxValues,
1257            ps3000aGetMaxEtsValues,
1258            ps3000aSigGenSoftwareControl,
1259            ps3000aSetEts,
1260            ps3000aSetSimpleTrigger,
1261            ps3000aSetTriggerDigitalPortProperties,
1262            ps3000aSetPulseWidthDigitalPortProperties,
1263            ps3000aSetTriggerChannelProperties,
1264            ps3000aSetTriggerChannelConditions,
1265            ps3000aSetTriggerChannelConditionsV2,
1266            ps3000aSetTriggerChannelDirections,
1267            ps3000aSetTriggerDelay,
1268            ps3000aSetPulseWidthQualifier,
1269            ps3000aSetPulseWidthQualifierV2,
1270            ps3000aIsTriggerOrPulseWidthQualifierEnabled,
1271            ps3000aGetTriggerTimeOffset,
1272            ps3000aGetTriggerTimeOffset64,
1273            ps3000aGetValuesTriggerTimeOffsetBulk,
1274            ps3000aGetValuesTriggerTimeOffsetBulk64,
1275            ps3000aGetNoOfCaptures,
1276            ps3000aGetNoOfProcessedCaptures,
1277            ps3000aSetDataBuffer,
1278            ps3000aSetDataBuffers,
1279            ps3000aSetUnscaledDataBuffers,
1280            ps3000aSetEtsTimeBuffer,
1281            ps3000aSetEtsTimeBuffers,
1282            ps3000aIsReady,
1283            ps3000aRunBlock,
1284            ps3000aRunStreaming,
1285            ps3000aGetStreamingLatestValues,
1286            ps3000aNoOfStreamingValues,
1287            ps3000aGetMaxDownSampleRatio,
1288            ps3000aGetValues,
1289            ps3000aGetValuesBulk,
1290            ps3000aGetValuesAsync,
1291            ps3000aGetValuesOverlapped,
1292            ps3000aGetValuesOverlappedBulk,
1293            ps3000aGetTriggerInfoBulk,
1294            ps3000aStop,
1295            ps3000aHoldOff,
1296            ps3000aGetChannelInformation,
1297            ps3000aEnumerateUnits,
1298            ps3000aPingUnit,
1299            ps3000aMaximumValue,
1300            ps3000aMinimumValue,
1301            ps3000aGetAnalogueOffset,
1302            ps3000aGetMaxSegments,
1303            ps3000aChangePowerSource,
1304            ps3000aCurrentPowerSource,
1305            ps3000aQueryOutputEdgeDetect,
1306            ps3000aSetOutputEdgeDetect,
1307            ps3000aGetScalingValues,
1308        })
1309    }
1310    pub unsafe fn ps3000aApplyFix(&self, a: u32, b: u16) {
1311        let sym = self
1312            .ps3000aApplyFix
1313            .as_ref()
1314            .expect("Expected function, got error.");
1315        (sym)(a, b)
1316    }
1317    pub unsafe fn ps3000aOpenUnit(&self, handle: *mut i16, serial: *mut i8) -> PICO_STATUS {
1318        let sym = self
1319            .ps3000aOpenUnit
1320            .as_ref()
1321            .expect("Expected function, got error.");
1322        (sym)(handle, serial)
1323    }
1324    pub unsafe fn ps3000aOpenUnitAsync(&self, status: *mut i16, serial: *mut i8) -> PICO_STATUS {
1325        let sym = self
1326            .ps3000aOpenUnitAsync
1327            .as_ref()
1328            .expect("Expected function, got error.");
1329        (sym)(status, serial)
1330    }
1331    pub unsafe fn ps3000aOpenUnitProgress(
1332        &self,
1333        handle: *mut i16,
1334        progressPercent: *mut i16,
1335        complete: *mut i16,
1336    ) -> PICO_STATUS {
1337        let sym = self
1338            .ps3000aOpenUnitProgress
1339            .as_ref()
1340            .expect("Expected function, got error.");
1341        (sym)(handle, progressPercent, complete)
1342    }
1343    pub unsafe fn ps3000aGetUnitInfo(
1344        &self,
1345        handle: i16,
1346        string: *mut i8,
1347        stringLength: i16,
1348        requiredSize: *mut i16,
1349        info: PICO_INFO,
1350    ) -> PICO_STATUS {
1351        let sym = self
1352            .ps3000aGetUnitInfo
1353            .as_ref()
1354            .expect("Expected function, got error.");
1355        (sym)(handle, string, stringLength, requiredSize, info)
1356    }
1357    pub unsafe fn ps3000aFlashLed(&self, handle: i16, start: i16) -> PICO_STATUS {
1358        let sym = self
1359            .ps3000aFlashLed
1360            .as_ref()
1361            .expect("Expected function, got error.");
1362        (sym)(handle, start)
1363    }
1364    pub unsafe fn ps3000aCloseUnit(&self, handle: i16) -> PICO_STATUS {
1365        let sym = self
1366            .ps3000aCloseUnit
1367            .as_ref()
1368            .expect("Expected function, got error.");
1369        (sym)(handle)
1370    }
1371    pub unsafe fn ps3000aMemorySegments(
1372        &self,
1373        handle: i16,
1374        nSegments: u32,
1375        nMaxSamples: *mut i32,
1376    ) -> PICO_STATUS {
1377        let sym = self
1378            .ps3000aMemorySegments
1379            .as_ref()
1380            .expect("Expected function, got error.");
1381        (sym)(handle, nSegments, nMaxSamples)
1382    }
1383    pub unsafe fn ps3000aSetChannel(
1384        &self,
1385        handle: i16,
1386        channel: PS3000A_CHANNEL,
1387        enabled: i16,
1388        type_: PS3000A_COUPLING,
1389        range: PS3000A_RANGE,
1390        analogOffset: f32,
1391    ) -> PICO_STATUS {
1392        let sym = self
1393            .ps3000aSetChannel
1394            .as_ref()
1395            .expect("Expected function, got error.");
1396        (sym)(handle, channel, enabled, type_, range, analogOffset)
1397    }
1398    pub unsafe fn ps3000aSetDigitalPort(
1399        &self,
1400        handle: i16,
1401        port: PS3000A_DIGITAL_PORT,
1402        enabled: i16,
1403        logicLevel: i16,
1404    ) -> PICO_STATUS {
1405        let sym = self
1406            .ps3000aSetDigitalPort
1407            .as_ref()
1408            .expect("Expected function, got error.");
1409        (sym)(handle, port, enabled, logicLevel)
1410    }
1411    pub unsafe fn ps3000aSetBandwidthFilter(
1412        &self,
1413        handle: i16,
1414        channel: PS3000A_CHANNEL,
1415        bandwidth: PS3000A_BANDWIDTH_LIMITER,
1416    ) -> PICO_STATUS {
1417        let sym = self
1418            .ps3000aSetBandwidthFilter
1419            .as_ref()
1420            .expect("Expected function, got error.");
1421        (sym)(handle, channel, bandwidth)
1422    }
1423    pub unsafe fn ps3000aSetNoOfCaptures(&self, handle: i16, nCaptures: u32) -> PICO_STATUS {
1424        let sym = self
1425            .ps3000aSetNoOfCaptures
1426            .as_ref()
1427            .expect("Expected function, got error.");
1428        (sym)(handle, nCaptures)
1429    }
1430    pub unsafe fn ps3000aGetTimebase(
1431        &self,
1432        handle: i16,
1433        timebase: u32,
1434        noSamples: i32,
1435        timeIntervalNanoseconds: *mut i32,
1436        oversample: i16,
1437        maxSamples: *mut i32,
1438        segmentIndex: u32,
1439    ) -> PICO_STATUS {
1440        let sym = self
1441            .ps3000aGetTimebase
1442            .as_ref()
1443            .expect("Expected function, got error.");
1444        (sym)(
1445            handle,
1446            timebase,
1447            noSamples,
1448            timeIntervalNanoseconds,
1449            oversample,
1450            maxSamples,
1451            segmentIndex,
1452        )
1453    }
1454    pub unsafe fn ps3000aGetTimebase2(
1455        &self,
1456        handle: i16,
1457        timebase: u32,
1458        noSamples: i32,
1459        timeIntervalNanoseconds: *mut f32,
1460        oversample: i16,
1461        maxSamples: *mut i32,
1462        segmentIndex: u32,
1463    ) -> PICO_STATUS {
1464        let sym = self
1465            .ps3000aGetTimebase2
1466            .as_ref()
1467            .expect("Expected function, got error.");
1468        (sym)(
1469            handle,
1470            timebase,
1471            noSamples,
1472            timeIntervalNanoseconds,
1473            oversample,
1474            maxSamples,
1475            segmentIndex,
1476        )
1477    }
1478    pub unsafe fn ps3000aSetSigGenArbitrary(
1479        &self,
1480        handle: i16,
1481        offsetVoltage: i32,
1482        pkToPk: u32,
1483        startDeltaPhase: u32,
1484        stopDeltaPhase: u32,
1485        deltaPhaseIncrement: u32,
1486        dwellCount: u32,
1487        arbitraryWaveform: *mut i16,
1488        arbitraryWaveformSize: i32,
1489        sweepType: PS3000A_SWEEP_TYPE,
1490        operation: PS3000A_EXTRA_OPERATIONS,
1491        indexMode: PS3000A_INDEX_MODE,
1492        shots: u32,
1493        sweeps: u32,
1494        triggerType: PS3000A_SIGGEN_TRIG_TYPE,
1495        triggerSource: PS3000A_SIGGEN_TRIG_SOURCE,
1496        extInThreshold: i16,
1497    ) -> PICO_STATUS {
1498        let sym = self
1499            .ps3000aSetSigGenArbitrary
1500            .as_ref()
1501            .expect("Expected function, got error.");
1502        (sym)(
1503            handle,
1504            offsetVoltage,
1505            pkToPk,
1506            startDeltaPhase,
1507            stopDeltaPhase,
1508            deltaPhaseIncrement,
1509            dwellCount,
1510            arbitraryWaveform,
1511            arbitraryWaveformSize,
1512            sweepType,
1513            operation,
1514            indexMode,
1515            shots,
1516            sweeps,
1517            triggerType,
1518            triggerSource,
1519            extInThreshold,
1520        )
1521    }
1522    pub unsafe fn ps3000aSetSigGenBuiltIn(
1523        &self,
1524        handle: i16,
1525        offsetVoltage: i32,
1526        pkToPk: u32,
1527        waveType: i16,
1528        startFrequency: f32,
1529        stopFrequency: f32,
1530        increment: f32,
1531        dwellTime: f32,
1532        sweepType: PS3000A_SWEEP_TYPE,
1533        operation: PS3000A_EXTRA_OPERATIONS,
1534        shots: u32,
1535        sweeps: u32,
1536        triggerType: PS3000A_SIGGEN_TRIG_TYPE,
1537        triggerSource: PS3000A_SIGGEN_TRIG_SOURCE,
1538        extInThreshold: i16,
1539    ) -> PICO_STATUS {
1540        let sym = self
1541            .ps3000aSetSigGenBuiltIn
1542            .as_ref()
1543            .expect("Expected function, got error.");
1544        (sym)(
1545            handle,
1546            offsetVoltage,
1547            pkToPk,
1548            waveType,
1549            startFrequency,
1550            stopFrequency,
1551            increment,
1552            dwellTime,
1553            sweepType,
1554            operation,
1555            shots,
1556            sweeps,
1557            triggerType,
1558            triggerSource,
1559            extInThreshold,
1560        )
1561    }
1562    pub unsafe fn ps3000aSetSigGenBuiltInV2(
1563        &self,
1564        handle: i16,
1565        offsetVoltage: i32,
1566        pkToPk: u32,
1567        waveType: i16,
1568        startFrequency: f64,
1569        stopFrequency: f64,
1570        increment: f64,
1571        dwellTime: f64,
1572        sweepType: PS3000A_SWEEP_TYPE,
1573        operation: PS3000A_EXTRA_OPERATIONS,
1574        shots: u32,
1575        sweeps: u32,
1576        triggerType: PS3000A_SIGGEN_TRIG_TYPE,
1577        triggerSource: PS3000A_SIGGEN_TRIG_SOURCE,
1578        extInThreshold: i16,
1579    ) -> PICO_STATUS {
1580        let sym = self
1581            .ps3000aSetSigGenBuiltInV2
1582            .as_ref()
1583            .expect("Expected function, got error.");
1584        (sym)(
1585            handle,
1586            offsetVoltage,
1587            pkToPk,
1588            waveType,
1589            startFrequency,
1590            stopFrequency,
1591            increment,
1592            dwellTime,
1593            sweepType,
1594            operation,
1595            shots,
1596            sweeps,
1597            triggerType,
1598            triggerSource,
1599            extInThreshold,
1600        )
1601    }
1602    pub unsafe fn ps3000aSetSigGenPropertiesArbitrary(
1603        &self,
1604        handle: i16,
1605        startDeltaPhase: u32,
1606        stopDeltaPhase: u32,
1607        deltaPhaseIncrement: u32,
1608        dwellCount: u32,
1609        sweepType: PS3000A_SWEEP_TYPE,
1610        shots: u32,
1611        sweeps: u32,
1612        triggerType: PS3000A_SIGGEN_TRIG_TYPE,
1613        triggerSource: PS3000A_SIGGEN_TRIG_SOURCE,
1614        extInThreshold: i16,
1615    ) -> PICO_STATUS {
1616        let sym = self
1617            .ps3000aSetSigGenPropertiesArbitrary
1618            .as_ref()
1619            .expect("Expected function, got error.");
1620        (sym)(
1621            handle,
1622            startDeltaPhase,
1623            stopDeltaPhase,
1624            deltaPhaseIncrement,
1625            dwellCount,
1626            sweepType,
1627            shots,
1628            sweeps,
1629            triggerType,
1630            triggerSource,
1631            extInThreshold,
1632        )
1633    }
1634    pub unsafe fn ps3000aSetSigGenPropertiesBuiltIn(
1635        &self,
1636        handle: i16,
1637        startFrequency: f64,
1638        stopFrequency: f64,
1639        increment: f64,
1640        dwellTime: f64,
1641        sweepType: PS3000A_SWEEP_TYPE,
1642        shots: u32,
1643        sweeps: u32,
1644        triggerType: PS3000A_SIGGEN_TRIG_TYPE,
1645        triggerSource: PS3000A_SIGGEN_TRIG_SOURCE,
1646        extInThreshold: i16,
1647    ) -> PICO_STATUS {
1648        let sym = self
1649            .ps3000aSetSigGenPropertiesBuiltIn
1650            .as_ref()
1651            .expect("Expected function, got error.");
1652        (sym)(
1653            handle,
1654            startFrequency,
1655            stopFrequency,
1656            increment,
1657            dwellTime,
1658            sweepType,
1659            shots,
1660            sweeps,
1661            triggerType,
1662            triggerSource,
1663            extInThreshold,
1664        )
1665    }
1666    pub unsafe fn ps3000aSigGenFrequencyToPhase(
1667        &self,
1668        handle: i16,
1669        frequency: f64,
1670        indexMode: PS3000A_INDEX_MODE,
1671        bufferLength: u32,
1672        phase: *mut u32,
1673    ) -> PICO_STATUS {
1674        let sym = self
1675            .ps3000aSigGenFrequencyToPhase
1676            .as_ref()
1677            .expect("Expected function, got error.");
1678        (sym)(handle, frequency, indexMode, bufferLength, phase)
1679    }
1680    pub unsafe fn ps3000aSigGenArbitraryMinMaxValues(
1681        &self,
1682        handle: i16,
1683        minArbitraryWaveformValue: *mut i16,
1684        maxArbitraryWaveformValue: *mut i16,
1685        minArbitraryWaveformSize: *mut u32,
1686        maxArbitraryWaveformSize: *mut u32,
1687    ) -> PICO_STATUS {
1688        let sym = self
1689            .ps3000aSigGenArbitraryMinMaxValues
1690            .as_ref()
1691            .expect("Expected function, got error.");
1692        (sym)(
1693            handle,
1694            minArbitraryWaveformValue,
1695            maxArbitraryWaveformValue,
1696            minArbitraryWaveformSize,
1697            maxArbitraryWaveformSize,
1698        )
1699    }
1700    pub unsafe fn ps3000aGetMaxEtsValues(
1701        &self,
1702        handle: i16,
1703        etsCycles: *mut i16,
1704        etsInterleave: *mut i16,
1705    ) -> PICO_STATUS {
1706        let sym = self
1707            .ps3000aGetMaxEtsValues
1708            .as_ref()
1709            .expect("Expected function, got error.");
1710        (sym)(handle, etsCycles, etsInterleave)
1711    }
1712    pub unsafe fn ps3000aSigGenSoftwareControl(&self, handle: i16, state: i16) -> PICO_STATUS {
1713        let sym = self
1714            .ps3000aSigGenSoftwareControl
1715            .as_ref()
1716            .expect("Expected function, got error.");
1717        (sym)(handle, state)
1718    }
1719    pub unsafe fn ps3000aSetEts(
1720        &self,
1721        handle: i16,
1722        mode: PS3000A_ETS_MODE,
1723        etsCycles: i16,
1724        etsInterleave: i16,
1725        sampleTimePicoseconds: *mut i32,
1726    ) -> PICO_STATUS {
1727        let sym = self
1728            .ps3000aSetEts
1729            .as_ref()
1730            .expect("Expected function, got error.");
1731        (sym)(
1732            handle,
1733            mode,
1734            etsCycles,
1735            etsInterleave,
1736            sampleTimePicoseconds,
1737        )
1738    }
1739    pub unsafe fn ps3000aSetSimpleTrigger(
1740        &self,
1741        handle: i16,
1742        enable: i16,
1743        source: PS3000A_CHANNEL,
1744        threshold: i16,
1745        direction: PS3000A_THRESHOLD_DIRECTION,
1746        delay: u32,
1747        autoTrigger_ms: i16,
1748    ) -> PICO_STATUS {
1749        let sym = self
1750            .ps3000aSetSimpleTrigger
1751            .as_ref()
1752            .expect("Expected function, got error.");
1753        (sym)(
1754            handle,
1755            enable,
1756            source,
1757            threshold,
1758            direction,
1759            delay,
1760            autoTrigger_ms,
1761        )
1762    }
1763    pub unsafe fn ps3000aSetTriggerDigitalPortProperties(
1764        &self,
1765        handle: i16,
1766        directions: *mut PS3000A_DIGITAL_CHANNEL_DIRECTIONS,
1767        nDirections: i16,
1768    ) -> PICO_STATUS {
1769        let sym = self
1770            .ps3000aSetTriggerDigitalPortProperties
1771            .as_ref()
1772            .expect("Expected function, got error.");
1773        (sym)(handle, directions, nDirections)
1774    }
1775    pub unsafe fn ps3000aSetPulseWidthDigitalPortProperties(
1776        &self,
1777        handle: i16,
1778        directions: *mut PS3000A_DIGITAL_CHANNEL_DIRECTIONS,
1779        nDirections: i16,
1780    ) -> PICO_STATUS {
1781        let sym = self
1782            .ps3000aSetPulseWidthDigitalPortProperties
1783            .as_ref()
1784            .expect("Expected function, got error.");
1785        (sym)(handle, directions, nDirections)
1786    }
1787    pub unsafe fn ps3000aSetTriggerChannelProperties(
1788        &self,
1789        handle: i16,
1790        channelProperties: *mut PS3000A_TRIGGER_CHANNEL_PROPERTIES,
1791        nChannelProperties: i16,
1792        auxOutputEnable: i16,
1793        autoTriggerMilliseconds: i32,
1794    ) -> PICO_STATUS {
1795        let sym = self
1796            .ps3000aSetTriggerChannelProperties
1797            .as_ref()
1798            .expect("Expected function, got error.");
1799        (sym)(
1800            handle,
1801            channelProperties,
1802            nChannelProperties,
1803            auxOutputEnable,
1804            autoTriggerMilliseconds,
1805        )
1806    }
1807    pub unsafe fn ps3000aSetTriggerChannelConditions(
1808        &self,
1809        handle: i16,
1810        conditions: *mut PS3000A_TRIGGER_CONDITIONS,
1811        nConditions: i16,
1812    ) -> PICO_STATUS {
1813        let sym = self
1814            .ps3000aSetTriggerChannelConditions
1815            .as_ref()
1816            .expect("Expected function, got error.");
1817        (sym)(handle, conditions, nConditions)
1818    }
1819    pub unsafe fn ps3000aSetTriggerChannelConditionsV2(
1820        &self,
1821        handle: i16,
1822        conditions: *mut PS3000A_TRIGGER_CONDITIONS_V2,
1823        nConditions: i16,
1824    ) -> PICO_STATUS {
1825        let sym = self
1826            .ps3000aSetTriggerChannelConditionsV2
1827            .as_ref()
1828            .expect("Expected function, got error.");
1829        (sym)(handle, conditions, nConditions)
1830    }
1831    pub unsafe fn ps3000aSetTriggerChannelDirections(
1832        &self,
1833        handle: i16,
1834        channelA: PS3000A_THRESHOLD_DIRECTION,
1835        channelB: PS3000A_THRESHOLD_DIRECTION,
1836        channelC: PS3000A_THRESHOLD_DIRECTION,
1837        channelD: PS3000A_THRESHOLD_DIRECTION,
1838        ext: PS3000A_THRESHOLD_DIRECTION,
1839        aux: PS3000A_THRESHOLD_DIRECTION,
1840    ) -> PICO_STATUS {
1841        let sym = self
1842            .ps3000aSetTriggerChannelDirections
1843            .as_ref()
1844            .expect("Expected function, got error.");
1845        (sym)(handle, channelA, channelB, channelC, channelD, ext, aux)
1846    }
1847    pub unsafe fn ps3000aSetTriggerDelay(&self, handle: i16, delay: u32) -> PICO_STATUS {
1848        let sym = self
1849            .ps3000aSetTriggerDelay
1850            .as_ref()
1851            .expect("Expected function, got error.");
1852        (sym)(handle, delay)
1853    }
1854    pub unsafe fn ps3000aSetPulseWidthQualifier(
1855        &self,
1856        handle: i16,
1857        conditions: *mut PS3000A_PWQ_CONDITIONS,
1858        nConditions: i16,
1859        direction: PS3000A_THRESHOLD_DIRECTION,
1860        lower: u32,
1861        upper: u32,
1862        type_: PS3000A_PULSE_WIDTH_TYPE,
1863    ) -> PICO_STATUS {
1864        let sym = self
1865            .ps3000aSetPulseWidthQualifier
1866            .as_ref()
1867            .expect("Expected function, got error.");
1868        (sym)(
1869            handle,
1870            conditions,
1871            nConditions,
1872            direction,
1873            lower,
1874            upper,
1875            type_,
1876        )
1877    }
1878    pub unsafe fn ps3000aSetPulseWidthQualifierV2(
1879        &self,
1880        handle: i16,
1881        conditions: *mut PS3000A_PWQ_CONDITIONS_V2,
1882        nConditions: i16,
1883        direction: PS3000A_THRESHOLD_DIRECTION,
1884        lower: u32,
1885        upper: u32,
1886        type_: PS3000A_PULSE_WIDTH_TYPE,
1887    ) -> PICO_STATUS {
1888        let sym = self
1889            .ps3000aSetPulseWidthQualifierV2
1890            .as_ref()
1891            .expect("Expected function, got error.");
1892        (sym)(
1893            handle,
1894            conditions,
1895            nConditions,
1896            direction,
1897            lower,
1898            upper,
1899            type_,
1900        )
1901    }
1902    pub unsafe fn ps3000aIsTriggerOrPulseWidthQualifierEnabled(
1903        &self,
1904        handle: i16,
1905        triggerEnabled: *mut i16,
1906        pulseWidthQualifierEnabled: *mut i16,
1907    ) -> PICO_STATUS {
1908        let sym = self
1909            .ps3000aIsTriggerOrPulseWidthQualifierEnabled
1910            .as_ref()
1911            .expect("Expected function, got error.");
1912        (sym)(handle, triggerEnabled, pulseWidthQualifierEnabled)
1913    }
1914    pub unsafe fn ps3000aGetTriggerTimeOffset(
1915        &self,
1916        handle: i16,
1917        timeUpper: *mut u32,
1918        timeLower: *mut u32,
1919        timeUnits: *mut PS3000A_TIME_UNITS,
1920        segmentIndex: u32,
1921    ) -> PICO_STATUS {
1922        let sym = self
1923            .ps3000aGetTriggerTimeOffset
1924            .as_ref()
1925            .expect("Expected function, got error.");
1926        (sym)(handle, timeUpper, timeLower, timeUnits, segmentIndex)
1927    }
1928    pub unsafe fn ps3000aGetTriggerTimeOffset64(
1929        &self,
1930        handle: i16,
1931        time: *mut i64,
1932        timeUnits: *mut PS3000A_TIME_UNITS,
1933        segmentIndex: u32,
1934    ) -> PICO_STATUS {
1935        let sym = self
1936            .ps3000aGetTriggerTimeOffset64
1937            .as_ref()
1938            .expect("Expected function, got error.");
1939        (sym)(handle, time, timeUnits, segmentIndex)
1940    }
1941    pub unsafe fn ps3000aGetValuesTriggerTimeOffsetBulk(
1942        &self,
1943        handle: i16,
1944        timesUpper: *mut u32,
1945        timesLower: *mut u32,
1946        timeUnits: *mut PS3000A_TIME_UNITS,
1947        fromSegmentIndex: u32,
1948        toSegmentIndex: u32,
1949    ) -> PICO_STATUS {
1950        let sym = self
1951            .ps3000aGetValuesTriggerTimeOffsetBulk
1952            .as_ref()
1953            .expect("Expected function, got error.");
1954        (sym)(
1955            handle,
1956            timesUpper,
1957            timesLower,
1958            timeUnits,
1959            fromSegmentIndex,
1960            toSegmentIndex,
1961        )
1962    }
1963    pub unsafe fn ps3000aGetValuesTriggerTimeOffsetBulk64(
1964        &self,
1965        handle: i16,
1966        times: *mut i64,
1967        timeUnits: *mut PS3000A_TIME_UNITS,
1968        fromSegmentIndex: u32,
1969        toSegmentIndex: u32,
1970    ) -> PICO_STATUS {
1971        let sym = self
1972            .ps3000aGetValuesTriggerTimeOffsetBulk64
1973            .as_ref()
1974            .expect("Expected function, got error.");
1975        (sym)(handle, times, timeUnits, fromSegmentIndex, toSegmentIndex)
1976    }
1977    pub unsafe fn ps3000aGetNoOfCaptures(&self, handle: i16, nCaptures: *mut u32) -> PICO_STATUS {
1978        let sym = self
1979            .ps3000aGetNoOfCaptures
1980            .as_ref()
1981            .expect("Expected function, got error.");
1982        (sym)(handle, nCaptures)
1983    }
1984    pub unsafe fn ps3000aGetNoOfProcessedCaptures(
1985        &self,
1986        handle: i16,
1987        nProcessedCaptures: *mut u32,
1988    ) -> PICO_STATUS {
1989        let sym = self
1990            .ps3000aGetNoOfProcessedCaptures
1991            .as_ref()
1992            .expect("Expected function, got error.");
1993        (sym)(handle, nProcessedCaptures)
1994    }
1995    pub unsafe fn ps3000aSetDataBuffer(
1996        &self,
1997        handle: i16,
1998        channelOrPort: PS3000A_CHANNEL,
1999        buffer: *mut i16,
2000        bufferLth: i32,
2001        segmentIndex: u32,
2002        mode: PS3000A_RATIO_MODE,
2003    ) -> PICO_STATUS {
2004        let sym = self
2005            .ps3000aSetDataBuffer
2006            .as_ref()
2007            .expect("Expected function, got error.");
2008        (sym)(handle, channelOrPort, buffer, bufferLth, segmentIndex, mode)
2009    }
2010    pub unsafe fn ps3000aSetDataBuffers(
2011        &self,
2012        handle: i16,
2013        channelOrPort: PS3000A_CHANNEL,
2014        bufferMax: *mut i16,
2015        bufferMin: *mut i16,
2016        bufferLth: i32,
2017        segmentIndex: u32,
2018        mode: PS3000A_RATIO_MODE,
2019    ) -> PICO_STATUS {
2020        let sym = self
2021            .ps3000aSetDataBuffers
2022            .as_ref()
2023            .expect("Expected function, got error.");
2024        (sym)(
2025            handle,
2026            channelOrPort,
2027            bufferMax,
2028            bufferMin,
2029            bufferLth,
2030            segmentIndex,
2031            mode,
2032        )
2033    }
2034    pub unsafe fn ps3000aSetUnscaledDataBuffers(
2035        &self,
2036        handle: i16,
2037        channelOrPort: PS3000A_CHANNEL,
2038        bufferMax: *mut i8,
2039        bufferMin: *mut i8,
2040        bufferLth: i32,
2041        segmentIndex: u32,
2042        mode: PS3000A_RATIO_MODE,
2043    ) -> PICO_STATUS {
2044        let sym = self
2045            .ps3000aSetUnscaledDataBuffers
2046            .as_ref()
2047            .expect("Expected function, got error.");
2048        (sym)(
2049            handle,
2050            channelOrPort,
2051            bufferMax,
2052            bufferMin,
2053            bufferLth,
2054            segmentIndex,
2055            mode,
2056        )
2057    }
2058    pub unsafe fn ps3000aSetEtsTimeBuffer(
2059        &self,
2060        handle: i16,
2061        buffer: *mut i64,
2062        bufferLth: i32,
2063    ) -> PICO_STATUS {
2064        let sym = self
2065            .ps3000aSetEtsTimeBuffer
2066            .as_ref()
2067            .expect("Expected function, got error.");
2068        (sym)(handle, buffer, bufferLth)
2069    }
2070    pub unsafe fn ps3000aSetEtsTimeBuffers(
2071        &self,
2072        handle: i16,
2073        timeUpper: *mut u32,
2074        timeLower: *mut u32,
2075        bufferLth: i32,
2076    ) -> PICO_STATUS {
2077        let sym = self
2078            .ps3000aSetEtsTimeBuffers
2079            .as_ref()
2080            .expect("Expected function, got error.");
2081        (sym)(handle, timeUpper, timeLower, bufferLth)
2082    }
2083    pub unsafe fn ps3000aIsReady(&self, handle: i16, ready: *mut i16) -> PICO_STATUS {
2084        let sym = self
2085            .ps3000aIsReady
2086            .as_ref()
2087            .expect("Expected function, got error.");
2088        (sym)(handle, ready)
2089    }
2090    pub unsafe fn ps3000aRunBlock(
2091        &self,
2092        handle: i16,
2093        noOfPreTriggerSamples: i32,
2094        noOfPostTriggerSamples: i32,
2095        timebase: u32,
2096        oversample: i16,
2097        timeIndisposedMs: *mut i32,
2098        segmentIndex: u32,
2099        lpReady: ps3000aBlockReady,
2100        pParameter: *mut ::std::os::raw::c_void,
2101    ) -> PICO_STATUS {
2102        let sym = self
2103            .ps3000aRunBlock
2104            .as_ref()
2105            .expect("Expected function, got error.");
2106        (sym)(
2107            handle,
2108            noOfPreTriggerSamples,
2109            noOfPostTriggerSamples,
2110            timebase,
2111            oversample,
2112            timeIndisposedMs,
2113            segmentIndex,
2114            lpReady,
2115            pParameter,
2116        )
2117    }
2118    pub unsafe fn ps3000aRunStreaming(
2119        &self,
2120        handle: i16,
2121        sampleInterval: *mut u32,
2122        sampleIntervalTimeUnits: PS3000A_TIME_UNITS,
2123        maxPreTriggerSamples: u32,
2124        maxPostPreTriggerSamples: u32,
2125        autoStop: i16,
2126        downSampleRatio: u32,
2127        downSampleRatioMode: PS3000A_RATIO_MODE,
2128        overviewBufferSize: u32,
2129    ) -> PICO_STATUS {
2130        let sym = self
2131            .ps3000aRunStreaming
2132            .as_ref()
2133            .expect("Expected function, got error.");
2134        (sym)(
2135            handle,
2136            sampleInterval,
2137            sampleIntervalTimeUnits,
2138            maxPreTriggerSamples,
2139            maxPostPreTriggerSamples,
2140            autoStop,
2141            downSampleRatio,
2142            downSampleRatioMode,
2143            overviewBufferSize,
2144        )
2145    }
2146    pub unsafe fn ps3000aGetStreamingLatestValues(
2147        &self,
2148        handle: i16,
2149        lpPs3000aReady: ps3000aStreamingReady,
2150        pParameter: *mut ::std::os::raw::c_void,
2151    ) -> PICO_STATUS {
2152        let sym = self
2153            .ps3000aGetStreamingLatestValues
2154            .as_ref()
2155            .expect("Expected function, got error.");
2156        (sym)(handle, lpPs3000aReady, pParameter)
2157    }
2158    pub unsafe fn ps3000aNoOfStreamingValues(
2159        &self,
2160        handle: i16,
2161        noOfValues: *mut u32,
2162    ) -> PICO_STATUS {
2163        let sym = self
2164            .ps3000aNoOfStreamingValues
2165            .as_ref()
2166            .expect("Expected function, got error.");
2167        (sym)(handle, noOfValues)
2168    }
2169    pub unsafe fn ps3000aGetMaxDownSampleRatio(
2170        &self,
2171        handle: i16,
2172        noOfUnaggreatedSamples: u32,
2173        maxDownSampleRatio: *mut u32,
2174        downSampleRatioMode: PS3000A_RATIO_MODE,
2175        segmentIndex: u32,
2176    ) -> PICO_STATUS {
2177        let sym = self
2178            .ps3000aGetMaxDownSampleRatio
2179            .as_ref()
2180            .expect("Expected function, got error.");
2181        (sym)(
2182            handle,
2183            noOfUnaggreatedSamples,
2184            maxDownSampleRatio,
2185            downSampleRatioMode,
2186            segmentIndex,
2187        )
2188    }
2189    pub unsafe fn ps3000aGetValues(
2190        &self,
2191        handle: i16,
2192        startIndex: u32,
2193        noOfSamples: *mut u32,
2194        downSampleRatio: u32,
2195        downSampleRatioMode: PS3000A_RATIO_MODE,
2196        segmentIndex: u32,
2197        overflow: *mut i16,
2198    ) -> PICO_STATUS {
2199        let sym = self
2200            .ps3000aGetValues
2201            .as_ref()
2202            .expect("Expected function, got error.");
2203        (sym)(
2204            handle,
2205            startIndex,
2206            noOfSamples,
2207            downSampleRatio,
2208            downSampleRatioMode,
2209            segmentIndex,
2210            overflow,
2211        )
2212    }
2213    pub unsafe fn ps3000aGetValuesBulk(
2214        &self,
2215        handle: i16,
2216        noOfSamples: *mut u32,
2217        fromSegmentIndex: u32,
2218        toSegmentIndex: u32,
2219        downSampleRatio: u32,
2220        downSampleRatioMode: PS3000A_RATIO_MODE,
2221        overflow: *mut i16,
2222    ) -> PICO_STATUS {
2223        let sym = self
2224            .ps3000aGetValuesBulk
2225            .as_ref()
2226            .expect("Expected function, got error.");
2227        (sym)(
2228            handle,
2229            noOfSamples,
2230            fromSegmentIndex,
2231            toSegmentIndex,
2232            downSampleRatio,
2233            downSampleRatioMode,
2234            overflow,
2235        )
2236    }
2237    pub unsafe fn ps3000aGetValuesAsync(
2238        &self,
2239        handle: i16,
2240        startIndex: u32,
2241        noOfSamples: u32,
2242        downSampleRatio: u32,
2243        downSampleRatioMode: PS3000A_RATIO_MODE,
2244        segmentIndex: u32,
2245        lpDataReady: *mut ::std::os::raw::c_void,
2246        pParameter: *mut ::std::os::raw::c_void,
2247    ) -> PICO_STATUS {
2248        let sym = self
2249            .ps3000aGetValuesAsync
2250            .as_ref()
2251            .expect("Expected function, got error.");
2252        (sym)(
2253            handle,
2254            startIndex,
2255            noOfSamples,
2256            downSampleRatio,
2257            downSampleRatioMode,
2258            segmentIndex,
2259            lpDataReady,
2260            pParameter,
2261        )
2262    }
2263    pub unsafe fn ps3000aGetValuesOverlapped(
2264        &self,
2265        handle: i16,
2266        startIndex: u32,
2267        noOfSamples: *mut u32,
2268        downSampleRatio: u32,
2269        downSampleRatioMode: PS3000A_RATIO_MODE,
2270        segmentIndex: u32,
2271        overflow: *mut i16,
2272    ) -> PICO_STATUS {
2273        let sym = self
2274            .ps3000aGetValuesOverlapped
2275            .as_ref()
2276            .expect("Expected function, got error.");
2277        (sym)(
2278            handle,
2279            startIndex,
2280            noOfSamples,
2281            downSampleRatio,
2282            downSampleRatioMode,
2283            segmentIndex,
2284            overflow,
2285        )
2286    }
2287    pub unsafe fn ps3000aGetValuesOverlappedBulk(
2288        &self,
2289        handle: i16,
2290        startIndex: u32,
2291        noOfSamples: *mut u32,
2292        downSampleRatio: u32,
2293        downSampleRatioMode: PS3000A_RATIO_MODE,
2294        fromSegmentIndex: u32,
2295        toSegmentIndex: u32,
2296        overflow: *mut i16,
2297    ) -> PICO_STATUS {
2298        let sym = self
2299            .ps3000aGetValuesOverlappedBulk
2300            .as_ref()
2301            .expect("Expected function, got error.");
2302        (sym)(
2303            handle,
2304            startIndex,
2305            noOfSamples,
2306            downSampleRatio,
2307            downSampleRatioMode,
2308            fromSegmentIndex,
2309            toSegmentIndex,
2310            overflow,
2311        )
2312    }
2313    pub unsafe fn ps3000aGetTriggerInfoBulk(
2314        &self,
2315        handle: i16,
2316        triggerInfo: *mut PS3000A_TRIGGER_INFO,
2317        fromSegmentIndex: u32,
2318        toSegmentIndex: u32,
2319    ) -> PICO_STATUS {
2320        let sym = self
2321            .ps3000aGetTriggerInfoBulk
2322            .as_ref()
2323            .expect("Expected function, got error.");
2324        (sym)(handle, triggerInfo, fromSegmentIndex, toSegmentIndex)
2325    }
2326    pub unsafe fn ps3000aStop(&self, handle: i16) -> PICO_STATUS {
2327        let sym = self
2328            .ps3000aStop
2329            .as_ref()
2330            .expect("Expected function, got error.");
2331        (sym)(handle)
2332    }
2333    pub unsafe fn ps3000aHoldOff(
2334        &self,
2335        handle: i16,
2336        holdoff: u64,
2337        type_: PS3000A_HOLDOFF_TYPE,
2338    ) -> PICO_STATUS {
2339        let sym = self
2340            .ps3000aHoldOff
2341            .as_ref()
2342            .expect("Expected function, got error.");
2343        (sym)(handle, holdoff, type_)
2344    }
2345    pub unsafe fn ps3000aGetChannelInformation(
2346        &self,
2347        handle: i16,
2348        info: PS3000A_CHANNEL_INFO,
2349        probe: i32,
2350        ranges: *mut i32,
2351        length: *mut i32,
2352        channels: i32,
2353    ) -> PICO_STATUS {
2354        let sym = self
2355            .ps3000aGetChannelInformation
2356            .as_ref()
2357            .expect("Expected function, got error.");
2358        (sym)(handle, info, probe, ranges, length, channels)
2359    }
2360    pub unsafe fn ps3000aEnumerateUnits(
2361        &self,
2362        count: *mut i16,
2363        serials: *mut i8,
2364        serialLth: *mut i16,
2365    ) -> PICO_STATUS {
2366        let sym = self
2367            .ps3000aEnumerateUnits
2368            .as_ref()
2369            .expect("Expected function, got error.");
2370        (sym)(count, serials, serialLth)
2371    }
2372    pub unsafe fn ps3000aPingUnit(&self, handle: i16) -> PICO_STATUS {
2373        let sym = self
2374            .ps3000aPingUnit
2375            .as_ref()
2376            .expect("Expected function, got error.");
2377        (sym)(handle)
2378    }
2379    pub unsafe fn ps3000aMaximumValue(&self, handle: i16, value: *mut i16) -> PICO_STATUS {
2380        let sym = self
2381            .ps3000aMaximumValue
2382            .as_ref()
2383            .expect("Expected function, got error.");
2384        (sym)(handle, value)
2385    }
2386    pub unsafe fn ps3000aMinimumValue(&self, handle: i16, value: *mut i16) -> PICO_STATUS {
2387        let sym = self
2388            .ps3000aMinimumValue
2389            .as_ref()
2390            .expect("Expected function, got error.");
2391        (sym)(handle, value)
2392    }
2393    pub unsafe fn ps3000aGetAnalogueOffset(
2394        &self,
2395        handle: i16,
2396        range: PS3000A_RANGE,
2397        coupling: PS3000A_COUPLING,
2398        maximumVoltage: *mut f32,
2399        minimumVoltage: *mut f32,
2400    ) -> PICO_STATUS {
2401        let sym = self
2402            .ps3000aGetAnalogueOffset
2403            .as_ref()
2404            .expect("Expected function, got error.");
2405        (sym)(handle, range, coupling, maximumVoltage, minimumVoltage)
2406    }
2407    pub unsafe fn ps3000aGetMaxSegments(&self, handle: i16, maxSegments: *mut u32) -> PICO_STATUS {
2408        let sym = self
2409            .ps3000aGetMaxSegments
2410            .as_ref()
2411            .expect("Expected function, got error.");
2412        (sym)(handle, maxSegments)
2413    }
2414    pub unsafe fn ps3000aChangePowerSource(
2415        &self,
2416        handle: i16,
2417        powerState: PICO_STATUS,
2418    ) -> PICO_STATUS {
2419        let sym = self
2420            .ps3000aChangePowerSource
2421            .as_ref()
2422            .expect("Expected function, got error.");
2423        (sym)(handle, powerState)
2424    }
2425    pub unsafe fn ps3000aCurrentPowerSource(&self, handle: i16) -> PICO_STATUS {
2426        let sym = self
2427            .ps3000aCurrentPowerSource
2428            .as_ref()
2429            .expect("Expected function, got error.");
2430        (sym)(handle)
2431    }
2432    pub unsafe fn ps3000aQueryOutputEdgeDetect(&self, handle: i16, state: *mut i16) -> PICO_STATUS {
2433        let sym = self
2434            .ps3000aQueryOutputEdgeDetect
2435            .as_ref()
2436            .expect("Expected function, got error.");
2437        (sym)(handle, state)
2438    }
2439    pub unsafe fn ps3000aSetOutputEdgeDetect(&self, handle: i16, state: i16) -> PICO_STATUS {
2440        let sym = self
2441            .ps3000aSetOutputEdgeDetect
2442            .as_ref()
2443            .expect("Expected function, got error.");
2444        (sym)(handle, state)
2445    }
2446    pub unsafe fn ps3000aGetScalingValues(
2447        &self,
2448        handle: i16,
2449        scalingValues: *mut PS3000A_SCALING_FACTORS_VALUES,
2450        nChannels: i16,
2451    ) -> PICO_STATUS {
2452        let sym = self
2453            .ps3000aGetScalingValues
2454            .as_ref()
2455            .expect("Expected function, got error.");
2456        (sym)(handle, scalingValues, nChannels)
2457    }
2458}