Add configuration file and repo description

This commit is contained in:
Francesco Antognazza 2023-11-13 14:40:20 +01:00
parent 4cca288fdc
commit e6f88f11ac
2 changed files with 176 additions and 2 deletions

View File

@ -1,3 +1,37 @@
# picoscope_ltrace_conf
# PicoScope ltrace configuration
Configuration file for ltrace utility used to record and analyze the sequence of function calls to the `libps5000a` shared library
Configuration file for `ltrace` utility created using the [official API documentation](https://www.picotech.com/download/manuals/picoscope-5000-series-a-api-programmers-guide.pdf),
with the ultimate goal of recording and analyzing the sequence of function calls to the `libps5000a` shared library for debug purposes.
The command used to debug the PicoScope GUI program is:
```
ltrace --config <path_to_config_file> -f --demangle -x 'ps5000*' -L --indent 2 --no-signals --output <path_to_output_log> bash -c picoscope
```
An example of the resulting log file is:
```
ps5000aCurrentPowerSource@libps5000a.so.2(1) = PICO_OK
ps5000aStop@libps5000a.so.2(1) = PICO_OK
ps5000aSetDeviceResolution@libps5000a.so.2(1, PS5000A_DR_8BIT) = PICO_OK
ps5000aSetChannel@libps5000a.so.2(1, PS5000A_CHANNEL_A, 1, PS5000A_DC, PS5000A_2V, 0.000000) = PICO_OK
ps5000aSetBandwidthFilter@libps5000a.so.2(1, PS5000A_CHANNEL_A, PS5000A_BW_FULL) = PICO_OK
ps5000aSetChannel@libps5000a.so.2(1, PS5000A_CHANNEL_B, 1, PS5000A_DC, PS5000A_5V, 0.000000) = PICO_OK
ps5000aSetBandwidthFilter@libps5000a.so.2(1, PS5000A_CHANNEL_B, PS5000A_BW_FULL) = PICO_OK
ps5000aGetNoOfCaptures@libps5000a.so.2(1, 0) = PICO_NO_SAMPLES_AVAILABLE
ps5000aSetNoOfCaptures@libps5000a.so.2(1, 50) = PICO_OK
ps5000aMemorySegments@libps5000a.so.2(1, 50, 10737024) = PICO_OK
ps5000aSetEts@libps5000a.so.2(1, PS5000A_ETS_OFF, 1, 1, 0) = PICO_OK
ps5000aNearestSampleIntervalStateless@libps5000a.so.2(1, 3, 0.000000, PS5000A_DR_8BIT, 0, 1, 0.000000) = PICO_OK
ps5000aGetTimebase2@libps5000a.so.2(1, 1, 5004, 2.000000, 5368512, 0) = PICO_OK
ps5000aSetTriggerChannelDirectionsV2@libps5000a.so.2(1, { PS5000A_CHANNEL_A, PS5000A_RISING, PS5000A_LEVEL }, 3) = PICO_OK
ps5000aSetPulseWidthDigitalPortProperties@libps5000a.so.2(1, nil, 0) = 287
ps5000aSetTriggerChannelProperties@libps5000a.so.2(1, { 16384, 1024, 16384, 1024, PS5000A_CHANNEL_A, PS5000A_LEVEL }, 3, 0, 0) = PICO_OK
ps5000aSetTriggerChannelConditionsV2@libps5000a.so.2(1, { PS5000A_CHANNEL_B, PS5000A_CONDITION_TRUE }, 1, 3) = PICO_OK
ps5000aSetPulseWidthQualifierProperties@libps5000a.so.2(1, 0, 0, PS5000A_PW_TYPE_NONE) = PICO_OK
ps5000aSetPulseWidthQualifierConditions@libps5000a.so.2(1, nil, 0, PS5000A_CLEAR) = PICO_OK
ps5000aSetTriggerDelay@libps5000a.so.2(1, 0) = PICO_OK
ps5000aGetNoOfCaptures@libps5000a.so.2(1, 0) = PICO_NO_SAMPLES_AVAILABLE
ps5000aRunBlock@libps5000a.so.2(1, 252, 4752, 1 , 1, 0, 0x7f4bd2d02320, 0) = PICO_OK
ps5000aGetNoOfCaptures@libps5000a.so.2(1, 0) = PICO_OK
```
Note that each line in the configuration file must be shorter than 1000 characters, thus the defined status enum is not complete.

140
picoscope_ps500a.conf Normal file
View File

@ -0,0 +1,140 @@
; ltrace.conf
typedef PS5000A_CI_RANGES = void* ; TODO: could not find the definition
typedef PS5000A_CHANNEL_FLAGS = enum(PS5000A_CHANNEL_A_FLAGS=1, PS5000A_CHANNEL_B_FLAGS=2, PS5000A_CHANNEL_C_FLAGS=4, PS5000A_CHANNEL_D_FLAGS=8, PS5000A_PORT0_FLAGS=65536, PS5000A_PORT1_FLAGS=131072, PS5000A_PORT2_FLAGS=262144, PS5000A_PORT3_FLAGS=524288)
typedef PS5000A_RANGE = enum(PS5000A_10MV, PS5000A_20MV, PS5000A_50MV, PS5000A_100MV, PS5000A_200MV, PS5000A_500MV, PS5000A_1V, PS5000A_2V, PS5000A_5V, PS5000A_10V, PS5000A_20V, PS5000A_50V, PS5000A_MAX_RANGES)
typedef PS5000A_COUPLING = enum(PS5000A_AC, PS5000A_DC)
typedef PS5000A_CHANNEL_INFO = enum(PS5000A_CI_RANGES)
typedef PS5000A_TIME_UNITS = enum(PS5000A_FS, PS5000A_PS, PS5000A_NS, PS5000A_US, PS5000A_MS, PS5000A_S, PS5000A_MAX_TIME_UNITS)
typedef PS5000A_RATIO_MODE = enum(PS5000A_RATIO_MODE_NONE=0, PS5000A_RATIO_MODE_AGGREGATE=1, PS5000A_RATIO_MODE_DECIMATE=2, PS5000A_RATIO_MODE_AVERAGE=4, PS5000A_RATIO_MODE_DISTRIBUTION=8)
typedef PS5000A_BANDWIDTH_LIMITER = enum(PS5000A_BW_FULL, PS5000A_BW_20MHZ)
; typedef PS5000A_CHANNEL = enum(PS5000A_CHANNEL_A, PS5000A_CHANNEL_B, PS5000A_CHANNEL_C, PS5000A_CHANNEL_D, PS5000A_EXTERNAL, PS5000A_MAX_CHANNELS=PS5000A_EXTERNAL, PS5000A_TRIGGER_AUX, PS5000A_MAX_TRIGGER_SOURCES, PS5000A_DIGITAL_PORT0=0x80, PS5000A_DIGITAL_PORT1, PS5000A_DIGITAL_PORT2, PS5000A_DIGITAL_PORT3, PS5000A_PULSE_WIDTH_SOURCE=0x10000000)
typedef PS5000A_CHANNEL = enum(PS5000A_CHANNEL_A, PS5000A_CHANNEL_B, PS5000A_CHANNEL_C, PS5000A_CHANNEL_D, PS5000A_EXTERNAL) ; simplified
typedef PS5000A_DEVICE_RESOLUTION = enum(PS5000A_DR_8BIT, PS5000A_DR_12BIT, PS5000A_DR_14BIT, PS5000A_DR_15BIT, PS5000A_DR_16BIT)
typedef PS5000A_ETS_MODE = enum(PS5000A_ETS_OFF, PS5000A_ETS_FAST, PS5000A_ETS_SLOW, PS5000A_ETS_MODES_MAX)
typedef PS5000A_CONDITIONS_INFO = enum(PS5000A_CLEAR=1, PS5000A_ADD=2)
typedef PS5000A_PULSE_WIDTH_TYPE = enum(PS5000A_PW_TYPE_NONE, PS5000A_PW_TYPE_LESS_THAN, PS5000A_PW_TYPE_GREATER_THAN, PS5000A_PW_TYPE_IN_RANGE, PS5000A_PW_TYPE_OUT_OF_RANGE)
typedef PS5000A_INDEX_MODE = enum(PS5000A_SINGLE, PS5000A_DUAL, PS5000A_QUAD, PS5000A_MAX_INDEX_MODES)
typedef PS5000A_SWEEP_TYPE = enum(PS5000A_UP, PS5000A_DOWN, PS5000A_UPDOWN, PS5000A_DOWNUP, PS5000A_MAX_SWEEP_TYPES)
typedef PS5000A_EXTRA_OPERATIONS = enum(PS5000A_ES_OFF, PS5000A_WHITENOISE, PS5000A_PRBS)
typedef PS5000A_SIGGEN_TRIG_TYPE = enum(PS5000A_SIGGEN_RISING, PS5000A_SIGGEN_FALLING, PS5000A_SIGGEN_GATE_HIGH, PS5000A_SIGGEN_GATE_LOW)
typedef PS5000A_SIGGEN_TRIG_SOURCE = enum(PS5000A_SIGGEN_NONE, PS5000A_SIGGEN_SCOPE_TRIG, PS5000A_SIGGEN_AUX_IN, PS5000A_SIGGEN_EXT_IN, PS5000A_SIGGEN_SOFT_TRIG)
typedef PS5000A_WAVE_TYPE = enum(PS5000A_SINE, PS5000A_SQUARE, PS5000A_TRIANGLE, PS5000A_RAMP_UP, PS5000A_RAMP_DOWN, PS5000A_SINC, PS5000A_GAUSSIAN, PS5000A_HALF_SINE, PS5000A_DC_VOLTAGE, PS5000A_WHITE_NOISE, PS5000A_MAX_WAVE_TYPES)
typedef PS5000A_TRIGGER_STATE = enum(PS5000A_CONDITION_DONT_CARE, PS5000A_CONDITION_TRUE, PS5000A_CONDITION_FALSE, PS5000A_CONDITION_MAX)
; typedef PS5000A_THRESHOLD_DIRECTION = enum(PS5000A_ABOVE, PS5000A_BELOW, PS5000A_RISING, PS5000A_FALLING, PS5000A_RISING_OR_FALLING, PS5000A_ABOVE_LOWER, PS5000A_BELOW_LOWER, PS5000A_RISING_LOWER, PS5000A_FALLING_LOWER, PS5000A_INSIDE=PS5000A_ABOVE, PS5000A_OUTSIDE=PS5000A_BELOW, PS5000A_ENTER=PS5000A_RISING, PS5000A_EXIT=PS5000A_FALLING, PS5000A_ENTER_OR_EXIT=PS5000A_RISING_OR_FALLING, PS5000A_POSITIVE_RUNT=9, PS5000A_NEGATIVE_RUNT, PS5000A_NONE=PS5000A_RISING)
typedef PS5000A_THRESHOLD_DIRECTION = enum(PS5000A_ABOVE, PS5000A_BELOW, PS5000A_RISING, PS5000A_FALLING, PS5000A_RISING_OR_FALLING, PS5000A_ABOVE_LOWER, PS5000A_BELOW_LOWER, PS5000A_RISING_LOWER, PS5000A_FALLING_LOWER) ; simplified
typedef PS5000A_THRESHOLD_MODE = enum(PS5000A_LEVEL, PS5000A_WINDOW)
typedef PS5000A_DIGITAL_CHANNEL = enum(PS5000A_DIGITAL_CHANNEL_0, PS5000A_DIGITAL_CHANNEL_1, PS5000A_DIGITAL_CHANNEL_2, PS5000A_DIGITAL_CHANNEL_3, PS5000A_DIGITAL_CHANNEL_4, PS5000A_DIGITAL_CHANNEL_5, PS5000A_DIGITAL_CHANNEL_6, PS5000A_DIGITAL_CHANNEL_7, PS5000A_DIGITAL_CHANNEL_8, PS5000A_DIGITAL_CHANNEL_9, PS5000A_DIGITAL_CHANNEL_10, PS5000A_DIGITAL_CHANNEL_11, PS5000A_DIGITAL_CHANNEL_12, PS5000A_DIGITAL_CHANNEL_13, PS5000A_DIGITAL_CHANNEL_14, PS5000A_DIGITAL_CHANNEL_15, PS5000A_DIGITAL_CHANNEL_16, PS5000A_DIGITAL_CHANNEL_17, PS5000A_DIGITAL_CHANNEL_18, PS5000A_DIGITAL_CHANNEL_19, PS5000A_DIGITAL_CHANNEL_20, PS5000A_DIGITAL_CHANNEL_21, PS5000A_DIGITAL_CHANNEL_22, PS5000A_DIGITAL_CHANNEL_23, PS5000A_DIGITAL_CHANNEL_24, PS5000A_DIGITAL_CHANNEL_25, PS5000A_DIGITAL_CHANNEL_26, PS5000A_DIGITAL_CHANNEL_27, PS5000A_DIGITAL_CHANNEL_28, PS5000A_DIGITAL_CHANNEL_29, PS5000A_DIGITAL_CHANNEL_30, PS5000A_DIGITAL_CHANNEL_31, PS5000A_MAX_DIGITAL_CHANNELS)
typedef PS5000A_DIGITAL_DIRECTION = enum(PS5000A_DIGITAL_DONT_CARE, PS5000A_DIGITAL_DIRECTION_LOW, PS5000A_DIGITAL_DIRECTION_HIGH, PS5000A_DIGITAL_DIRECTION_RISING, PS5000A_DIGITAL_DIRECTION_FALLING, PS5000A_DIGITAL_DIRECTION_RISING_OR_FALLING, PS5000A_DIGITAL_MAX_DIRECTION)
typedef PS5000A_TRIGGER_WITHIN_PRE_TRIGGER = enum(PS5000A_DISABLE, PS5000A_ARM)
typedef PICO_INFO = enum(PICO_DRIVER_VERSION, PICO_USB_VERSION, PICO_HARDWARE_VERSION, PICO_VARIANT_INFO, PICO_BATCH_AND_SERIAL, PICO_CAL_DATE, PICO_KERNEL_VERSION, PICO_DIGITAL_HARDWARE_VERSION, PICO_ANALOGUE_HARDWARE_VERSION, PICO_FIRMWARE_VERSION_1, PICO_FIRMWARE_VERSION_2)
; each line cannot be longer than 1000 chars, but there is no way to create this enum over multiple lines
typedef PICO_STATUS = enum(PICO_OK=0, PICO_MAX_UNITS_OPENED=1, PICO_MEMORY_FAIL=2, PICO_NOT_FOUND=3, PICO_FW_FAIL=4, PICO_OPEN_OPERATION_IN_PROGRESS=5, PICO_OPERATION_FAILED=6, PICO_NOT_RESPONDING=7, PICO_CONFIG_FAIL=8, PICO_KERNEL_DRIVER_TOO_OLD=9, PICO_EEPROM_CORRUPT=10, PICO_OS_NOT_SUPPORTED=11, PICO_INVALID_HANDLE=12, PICO_INVALID_PARAMETER=13, PICO_INVALID_TIMEBASE=14, PICO_INVALID_VOLTAGE_RANGE=15, PICO_INVALID_CHANNEL=16, PICO_INVALID_TRIGGER_CHANNEL=17, PICO_INVALID_CONDITION_CHANNEL=18, PICO_NO_SIGNAL_GENERATOR=19, PICO_STREAMING_FAILED=20, PICO_BLOCK_MODE_FAILED=21, PICO_NULL_PARAMETER=22, PICO_ETS_MODE_SET=23, PICO_DATA_NOT_AVAILABLE=24, PICO_STRING_BUFFER_TO_SMALL=25, PICO_ETS_NOT_SUPPORTED=26, PICO_AUTO_TRIGGER_TIME_TO_SHORT=27, PICO_BUFFER_STALL=28, PICO_TOO_MANY_SAMPLES=29, PICO_TOO_MANY_SEGMENTS=30, PICO_PULSE_WIDTH_QUALIFIER=31, PICO_DELAY=32, PICO_SOURCE_DETAILS=33, PICO_CONDITIONS=34, PICO_USER_CALLBACK=35, PICO_DEVICE_SAMPLING=36, PICO_NO_SAMPLES_AVAILABLE=37) ;,
; PICO_SEGMENT_OUT_OF_RANGE=38, PICO_BUSY=39, PICO_STARTINDEX_INVALID=40, PICO_INVALID_INFO=41, PICO_INFO_UNAVAILABLE=42, PICO_INVALID_SAMPLE_INTERVAL=43, PICO_TRIGGER_ERROR=44, PICO_MEMORY=45, PICO_SIG_GEN_PARAM=46, PICO_SHOTS_SWEEPS_WARNING=47, PICO_SIGGEN_TRIGGER_SOURCE=48, PICO_AUX_OUTPUT_CONFLICT=49, PICO_AUX_OUTPUT_ETS_CONFLICT=50, PICO_WARNING_EXT_THRESHOLD_CONFLICT=51, PICO_WARNING_AUX_OUTPUT_CONFLICT=52, PICO_SIGGEN_OUTPUT_OVER_VOLTAGE=53, PICO_DELAY_NULL=54, PICO_INVALID_BUFFER=55, PICO_SIGGEN_OFFSET_VOLTAGE=56, PICO_SIGGEN_PK_TO_PK=57, PICO_CANCELLED=58, PICO_SEGMENT_NOT_USED=59, PICO_INVALID_CALL=60, PICO_GET_VALUES_INTERRUPTED=61, PICO_NOT_USED=63, PICO_INVALID_SAMPLERATIO=64, PICO_INVALID_STATE=65, PICO_NOT_ENOUGH_SEGMENTS=66, PICO_DRIVER_FUNCTION=67, PICO_RESERVED=68, PICO_INVALID_COUPLING=69, PICO_BUFFERS_NOT_SET=70, PICO_RATIO_MODE_NOT_SUPPORTED=71, PICO_RAPID_NOT_SUPPORT_AGGREGATION=72, PICO_INVALID_TRIGGER_PROPERTY=73, PICO_INTERFACE_NOT_CONNECTED=74,
; PICO_RESISTANCE_AND_PROBE_NOT_ALLOWED=75, PICO_POWER_FAILED=76, PICO_SIGGEN_WAVEFORM_SETUP_FAILED=77, PICO_FPGA_FAIL=78, PICO_POWER_MANAGER=79, PICO_INVALID_ANALOGUE_OFFSET=80, PICO_PLL_LOCK_FAILED=81, PICO_ANALOG_BOARD=82, PICO_CONFIG_FAIL_AWG=83, PICO_INITIALISE_FPGA=84, PICO_EXTERNAL_FREQUENCY_INVALID=86, PICO_CLOCK_CHANGE_ERROR=87, PICO_TRIGGER_AND_EXTERNAL_CLOCK_CLASH=88, PICO_PWQ_AND_EXTERNAL_CLOCK_CLASH=89, PICO_UNABLE_TO_OPEN_SCALING_FILE=90, PICO_MEMORY_CLOCK_FREQUENCY=91, PICO_I2C_NOT_RESPONDING=92, PICO_NO_CAPTURES_AVAILABLE=93, PICO_NOT_USED_IN_THIS_CAPTURE_MODE=94, PICO_TOO_MANY_TRIGGER_CHANNELS_IN_USE=95, PICO_INVALID_TRIGGER_DIRECTION=96, PICO_INVALID_TRIGGER_STATES=97, PICO_GET_DATA_ACTIVE=259, PICO_IP_NETWORKED=260, PICO_INVALID_IP_ADDRESS=261, PICO_IPSOCKET_FAILED=262, PICO_IPSOCKET_TIMEDOUT=263, PICO_SETTINGS_FAILED=264, PICO_NETWORK_FAILED=265, PICO_WS2_32_DLL_NOT_LOADED=266, PICO_INVALID_IP_PORT=267, PICO_COUPLING_NOT_SUPPORTED=268,
; PICO_BANDWIDTH_NOT_SUPPORTED=269, PICO_INVALID_BANDWIDTH=270, PICO_AWG_NOT_SUPPORTED=271, PICO_ETS_NOT_RUNNING=272, PICO_SIG_GEN_WHITENOISE_NOT_SUPPORTED=273, PICO_SIG_GEN_WAVETYPE_NOT_SUPPORTED=274, PICO_INVALID_DIGITAL_PORT=275, PICO_INVALID_DIGITAL_CHANNEL=276, PICO_INVALID_DIGITAL_TRIGGER_DIRECTION=277, PICO_SIG_GEN_PRBS_NOT_SUPPORTED=278, PICO_ETS_NOT_AVAILABLE_WITH_LOGIC_CHANNELS=279, PICO_WARNING_REPEAT_VALUE=280, PICO_POWER_SUPPLY_CONNECTED=281, PICO_POWER_SUPPLY_NOT_CONNECTED=282, PICO_POWER_SUPPLY_REQUEST_INVALID=283, PICO_POWER_SUPPLY_UNDERVOLTAGE=284, PICO_CAPTURING_DATA=285, PICO_USB3_0_DEVICE_NON_USB3_0_PORT=286, PICO_NOT_SUPPORTED_BY_THIS_DEVICE=287, PICO_INVALID_DEVICE_RESOLUTION=288, PICO_INVALID_NUMBER_CHANNELS_FOR_RESOLUTION=289, PICO_CHANNEL_DISABLED_DUE_TO_USB_POWERED=290, PICO_SIGGEN_DC_VOLTAGE_NOT_CONFIGURABLE=291, PICO_NO_TRIGGER_ENABLED_FOR_TRIGGER_IN_PRE_TRIG=292, PICO_TRIGGER_WITHIN_PRE_TRIG_NOT_ARMED=293,
; PICO_TRIGGER_WITHIN_PRE_NOT_ALLOWED_WITH_DELAY=294, PICO_TRIGGER_INDEX_UNAVAILABLE=295, PICO_AWG_CLOCK_FREQUENCY=296, PICO_TOO_MANY_CHANNELS_IN_USE=297, PICO_NULL_CONDITIONS=298, PICO_DUPLICATE_CONDITION_SOURCE=299, PICO_INVALID_CONDITION_INFO=300, PICO_SETTINGS_READ_FAILED=301, PICO_SETTINGS_WRITE_FAILED=302, PICO_ARGUMENT_OUT_OF_RANGE=303, PICO_HARDWARE_VERSION_NOT_SUPPORTED=304, PICO_DIGITAL_HARDWARE_VERSION_NOT_SUPPORTED=305, PICO_ANALOGUE_HARDWARE_VERSION_NOT_SUPPORTED=306, PICO_UNABLE_TO_CONVERT_TO_RESISTANCE=307, PICO_DUPLICATED_CHANNEL=308, PICO_INVALID_RESISTANCE_CONVERSION=309, PICO_INVALID_VALUE_IN_MAX_BUFFER=310, PICO_INVALID_VALUE_IN_MIN_BUFFER=311, PICO_SIGGEN_FREQUENCY_OUT_OF_RANGE=312, PICO_EEPROM2_CORRUPT=313, PICO_EEPROM2_FAIL=314, PICO_SERIAL_BUFFER_TOO_SMALL=315, PICO_SIGGEN_TRIGGER_AND_EXTERNAL_CLOCK_CLASH=316, PICO_WARNING_SIGGEN_AUXIO_TRIGGER_DISABLED=317, PICO_SIGGEN_GATING_AUXIO_NOT_AVAILABLE=318, PICO_SIGGEN_GATING_AUXIO_ENABLED=319,
; PICO_RESOURCE_ERROR=320, PICO_TEMPERATURE_TYPE_INVALID=321, PICO_TEMPERATURE_TYPE_NOT_SUPPORTED=322, PICO_TIMEOUT=323, PICO_DEVICE_NOT_FUNCTIONING=324, PICO_INTERNAL_ERROR=325, PICO_MULTIPLE_DEVICES_FOUND=326, PICO_WARNING_NUMBER_OF_SEGMENTS_REDUCED=327, PICO_CAL_PINS_STATES=328, PICO_CAL_PINS_FREQUENCY=329, PICO_CAL_PINS_AMPLITUDE=330, PICO_CAL_PINS_WAVETYPE=331, PICO_CAL_PINS_OFFSET=332, PICO_PROBE_FAULT=333, PICO_PROBE_IDENTITY_UNKNOWN=334, PICO_PROBE_POWER_DC_POWER_SUPPLE_REQUIRED=335, PICO_PROBE_NOT_POWERED_THROUGH_DC_POWER_SUPPLY=336, PICO_PROBE_CONFIG_FAILURE=337, PICO_PROBE_INTERACTION_CALLBACK=338, PICO_UNKNOWN_INTELLIGENT_PROBE=339, PICO_INTELLIGENT_PROBE_CORRUPT=340, PICO_PROBE_COLLECTION_NOT_STARTED=341, PICO_PROBE_POWER_CONSUMPTION_EXCEEDED=342, PICO_WARNING_PROBE_CHANNEL_OUT_OF_SYNC=343, PICO_ENDPOINT_MISSING=344, PICO_UNKNOWN_ENDPOINT_REQUEST=345, PICO_ADC_TYPE_ERROR=346, PICO_FPGA2_FAILED=347, PICO_FPGA2_DEVICE_STATUS=348, PICO_ENABLED_PROGRAM_FPGA2_FAILED=349,
; PICO_NO_CANNELS_OR_PORTS_ENABLED=350, PICO_INVALID_RATIO_MODE=351, PICO_READS_NOT_SUPPORTED_IN_CURRENT_CAPTURE_MODE=352, PICO_TRIGGER_READ_SELECTION_CHECK_FAILED=353, PICO_DATA_READ1_SELECTION_CHECK_FAILED=354, PICO_DATA_READ2_SELECTION_CHECK_FAILED=356, PICO_DATA_READ3_SELECTION_CHECK_FAILED=360, PICO_READ_SELECTION_OUT_OF_RANGE=368, PICO_MULTIPLE_RATIO_MODES=369, PICO_NO_SAMPLES_READ=370, PICO_RATIO_MODE_NOT_REQUESTED=371, PICO_NO_USER_READ_REQUESTS=372, PICO_ZERO_SAMPLES_INVALID=373, PICO_ANALOGUE_HARDWARE_MISSING=374, PICO_ANALOGUE_HARDWARE_PINS=375, PICO_ANALOGUE_SMPS_FAULT=376, PICO_DIGITAL_ANALOGUE_HARDWARE_CONFLICT=377, PICO_RATIO_MODE_BUFFER_NOT_SET=378, PICO_RESOLUTION_NOT_SUPPORTED_BY_VARIENT=379, PICO_THRESHOLD_OUT_OF_RANGE=380, PICO_INVALID_SIMPLE_TRIGGER_DIRECTION=381, PICO_AUX_NOT_SUPPORTED=382, PICO_NULL_DIRECTIONS=383, PICO_NULL_CHANNEL_PROPERTIES=384, PICO_TRIGGER_CHANNEL_NOT_ENABLED=385, PICO_CONDITION_HAS_NO_TRIGGER_PROPERTY=386,
; PICO_RATIO_MODE_TRIGGER_MASKING_INVALID=387, PICO_TRIGGER_DATA_REQUIRES_MIN_BUFFER_SIZE_OF_40_SAMPLES=388, PICO_NO_OF_CAPTURES_OUT_OF_RANGE=389, PICO_RATIO_MODE_SEGMENT_HEADER_DOES_NOT_REQUIRE_BUFFERS=390, PICO_FOR_SEGMENT_HEADER_USE_GETTRIGGERINFO=391, PICO_READ_NOT_SET=392, PICO_ADC_SETTING_MISMATCH=393, PICO_DATATYPE_INVALID=394, PICO_RATIO_MODE_DOES_NOT_SUPPORT_DATATYPE=395, PICO_CHANNEL_COMBINATION_NOT_VALID_IN_THIS_RESOLUTION=396, PICO_USE_8BIT_RESOLUTION=397, PICO_AGGREGATE_BUFFERS_SAME_POINTER=398, PICO_OVERLAPPED_READ_VALUES_OUT_OF_RANGE=399, PICO_OVERLAPPED_READ_SEGMENTS_OUT_OF_RANGE=400, PICO_CHANNELFLAGSCOMBINATIONS_ARRAY_SIZE_TOO_SMALL=401, PICO_CAPTURES_EXCEEDS_NO_OF_SUPPORTED_SEGMENTS=402, PICO_TIME_UNITS_OUT_OF_RANGE=403, PICO_NO_SAMPLES_REQUESTED=404, PICO_INVALID_ACTION=405, PICO_NO_OF_SAMPLES_NEED_TO_BE_EQUAL_WHEN_ADDING_BUFFERS=406, PICO_WAITING_FOR_DATA_BUFFERS=407, PICO_STREAMING_ONLY_SUPPORTS_ONE_READ=408, PICO_CLEAR_DATA_BUFFER_INVALID=409,
; PICO_INVALID_ACTION_FLAGS_COMBINATION=410, PICO_PICO_MOTH_MIN_AND_MAX_NULL_BUFFERS_CANNOT_BE_ADDED=411, PICO_CONFLICT_IN_SET_DATA_BUFFERS_CALL_REMOVE_DATA_BUFFER_TO_RESET=412, PICO_REMOVING_DATA_BUFFER_ENTRIES_NOT_ALLOWED_WHILE_DATA_PROCESSING=413, PICO_CYUSB_REQUEST_FAILED=512, PICO_STREAMING_DATA_REQUIRED=513, PICO_INVALID_NUMBER_OF_SAMPLES=514, PICO_INALID_DISTRIBUTION=515, PICO_BUFFER_LENGTH_GREATER_THAN_INT32_T=516, PICO_PLL_MUX_OUT_FAILED=521, PICO_ONE_PULSE_WIDTH_DIRECTION_ALLOWED=522, PICO_EXTERNAL_TRIGGER_NOT_SUPPORTED=523, PICO_NO_TRIGGER_CONDITIONS_SET=524, PICO_NO_OF_CHANNEL_TRIGGER_PROPERTIES_OUT_OF_RANGE=525, PICO_PROBE_COMPNENT_ERROR=526, PICO_INVALID_TRIGGER_CHANNELS_FOR_ETS=528, PICO_NOT_AVALIABLE_WHEN_STREAMING_IS_RUNNING=529, PICO_INVALID_TRIGGER_WITHIN_PRE_TRIGGER_STATE=530, PICO_ZERO_NUMBER_OF_CAPTURES_INVALID=531, PICO_TRIGGER_DELAY_OUT_OF_RANGE=768, PICO_INVALID_THRESHOLD_DIRECTION=769, PICO_INVALID_THRESGOLD_MODE=770, PICO_DEVICE_TIME_STAMP_RESET=16777216,
; PICO_WATCHDOGTIMER=268435456, PICO_IPP_NOT_FOUND=268435457, PICO_IPP_NO_FUNCTION=268435458, PICO_IPP_ERROR=268435459, PICO_SHADOW_CAL_NOT_AVAILABLE=268435460, PICO_SHADOW_CAL_DISABLED=268435461, PICO_SHADOW_CAL_ERROR=268435462, PICO_SHADOW_CAL_CORRUPT=268435463)
typedef uint8_t = char
typedef int8_t = char
typedef uint16_t = ushort
typedef int16_t = short
typedef uint32_t = uint
typedef int32_t = int
typedef uint64_t = ulong
typedef int64_t = long
typedef PS5000A_TRIGGER_INFO = struct(PICO_STATUS, uint32_t, uint32_t, int64_t, int16_t, int16_t, uint64_t)
typedef PS5000A_PWQ_CONDITIONS = struct(PS5000A_TRIGGER_STATE, PS5000A_TRIGGER_STATE, PS5000A_TRIGGER_STATE, PS5000A_TRIGGER_STATE, PS5000A_TRIGGER_STATE, PS5000A_TRIGGER_STATE)
typedef PS5000A_TRIGGER_CONDITIONS = struct(PS5000A_TRIGGER_STATE, PS5000A_TRIGGER_STATE, PS5000A_TRIGGER_STATE, PS5000A_TRIGGER_STATE, PS5000A_TRIGGER_STATE, PS5000A_TRIGGER_STATE, PS5000A_TRIGGER_STATE)
typedef PS5000A_CONDITION = struct(PS5000A_CHANNEL, PS5000A_TRIGGER_STATE)
typedef PS5000A_DIRECTION = struct(PS5000A_CHANNEL, PS5000A_THRESHOLD_DIRECTION, PS5000A_THRESHOLD_MODE)
typedef PS5000A_TRIGGER_CHANNEL_PROPERTIES = struct(int16_t, uint16_t, int16_t, uint16_t, PS5000A_CHANNEL, PS5000A_THRESHOLD_MODE)
typedef PS5000A_TRIGGER_CHANNEL_PROPERTIES_V2 = struct(int16_t, uint16_t, int16_t, uint16_t, PS5000A_CHANNEL)
typedef PS5000A_DIGITAL_CHANNEL_DIRECTIONS = struct(PS5000A_DIGITAL_CHANNEL, PS5000A_DIGITAL_DIRECTION)
PICO_STATUS ps5000aChangePowerSource(int16_t, PICO_STATUS)
PICO_STATUS ps5000aChannelCombinationsStateless(int16_t, +PS5000A_CHANNEL_FLAGS*, +uint32_t*, PS5000A_DEVICE_RESOLUTION, uint32_t, int16_t)
PICO_STATUS ps5000aCloseUnit(int16_t)
PICO_STATUS ps5000aCurrentPowerSource(int16_t)
PICO_STATUS ps5000aEnumerateUnits(+int16_t*, +string[arg3], +int16_t*)
PICO_STATUS ps5000aFlashLed(int16_t, int16_t)
PICO_STATUS ps5000aGetAnalogueOffset(int16_t, PS5000A_RANGE, PS5000A_COUPLING, +float*, +float*)
PICO_STATUS ps5000aGetChannelInformation(int16_t, PS5000A_CHANNEL_INFO, int32_t, int32_t, int32_t, int32_t)
PICO_STATUS ps5000aGetDeviceResolution(int16_t, +PS5000A_DEVICE_RESOLUTION*)
PICO_STATUS ps5000aGetMaxDownSampleRatio(int16_t, uint32_t, +uint32_t*, PS5000A_RATIO_MODE, uint32_t)
PICO_STATUS ps5000aGetMaxSegments(int16_t, +uint32_t*)
PICO_STATUS ps5000aGetMinimumTimebaseStateless(int16_t, PS5000A_CHANNEL_FLAGS, +uint32_t*, +double*, PS5000A_DEVICE_RESOLUTION)
PICO_STATUS ps5000aGetNoOfCaptures(int16_t, +uint32_t*)
PICO_STATUS ps5000aGetNoOfProcessedCaptures(int16_t, +uint32_t*)
PICO_STATUS ps5000aGetStreamingLatestValues(int16_t, void*, void*)
PICO_STATUS ps5000aGetTimebase(int16_t, uint32_t, int32_t, +int32_t*, +int32_t*, uint32_t)
PICO_STATUS ps5000aGetTimebase2(int16_t, uint32_t, int32_t, +float*, +int32_t*, uint32_t)
PICO_STATUS ps5000aGetTriggerInfoBulk(int16_t, +PS5000A_TRIGGER_INFO*, uint32_t, uint32_t)
PICO_STATUS ps5000aGetTriggerTimeOffset(int16_t, +uint32_t*, +uint32_t*, +PS5000A_TIME_UNITS*, uint32_t)
PICO_STATUS ps5000aGetTriggerTimeOffset64(int16_t, +int64_t*, +PS5000A_TIME_UNITS*, uint32_t)
PICO_STATUS ps5000aGetUnitInfo(int16_t, +string[arg4], int16_t, +int16_t*, PICO_INFO)
PICO_STATUS ps5000aGetValues(int16_t, uint32_t, +uint32_t*, uint32_t, PS5000A_RATIO_MODE, uint32_t, +int16_t*)
PICO_STATUS ps5000aGetValuesAsync(int16_t, uint32_t, uint32_t, uint32_t, PS5000A_RATIO_MODE, uint32_t, void*, void*)
PICO_STATUS ps5000aGetValuesBulk(int16_t, +uint32_t*, uint32_t, uint32_t, uint32_t, PS5000A_RATIO_MODE, +array(int16_t,arg4)*)
PICO_STATUS ps5000aGetValuesOverlapped(int16_t, uint32_t, +uint32_t*, uint32_t, PS5000A_RATIO_MODE, uint32_t, +int16_t*)
PICO_STATUS ps5000aGetValuesOverlappedBulk(int16_t, uint32_t, +uint32_t*, uint32_t, PS5000A_RATIO_MODE, uint32_t, uint32_t, +int16_t*)
PICO_STATUS ps5000aGetValuesTriggerTimeOffsetBulk(int16_t, +uint32_t*, +uint32_t*, +PS5000A_TIME_UNITS*, uint32_t, uint32_t)
PICO_STATUS ps5000aGetValuesTriggerTimeOffsetBulk64(int16_t, +int64_t*, +PS5000A_TIME_UNITS*, uint32_t, uint32_t)
PICO_STATUS ps5000aIsLedFlashing(int16_t, +int16_t*)
PICO_STATUS ps5000aIsReady(int16_t, +int16_t*)
PICO_STATUS ps5000aIsTriggerOrPulseWidthQualifierEnabled(int16_t, +int16_t*, +int16_t*)
PICO_STATUS ps5000aMaximumValue(int16_t, +int16_t*)
PICO_STATUS ps5000aMemorySegments(int16_t, uint32_t, +int32_t*)
PICO_STATUS ps5000aMinimumValue(int16_t, +int16_t*)
PICO_STATUS ps5000aNearestSampleIntervalStateless(int16_t, PS5000A_CHANNEL_FLAGS, double, PS5000A_DEVICE_RESOLUTION, uint16_t, +uint32_t*, +double*)
PICO_STATUS ps5000aNoOfStreamingValues(int16_t, +uint32_t*)
PICO_STATUS ps5000aOpenUnit(+int16_t*, +string, PS5000A_DEVICE_RESOLUTION)
PICO_STATUS ps5000aOpenUnitAsync(+int16_t*, +string, PS5000A_DEVICE_RESOLUTION)
PICO_STATUS ps5000aOpenUnitProgress(+int16_t*, +int16_t*, +int16_t*)
PICO_STATUS ps5000aPingUnit(int16_t)
PICO_STATUS ps5000aQueryOutputEdgeDetect(int16_t, +int16_t*)
PICO_STATUS ps5000aRunBlock(int16_t, int32_t, int32_t, uint32_t, +int32_t*, uint32_t, void*, void*)
PICO_STATUS ps5000aRunStreaming(int16_t, +uint32_t*, PS5000A_TIME_UNITS, uint32_t, uint32_t, int16_t, uint32_t, PS5000A_RATIO_MODE, uint32_t)
PICO_STATUS ps5000aSetAutoTriggerMicroSeconds(int16_t, uint64_t)
PICO_STATUS ps5000aSetBandwidthFilter(int16_t, PS5000A_CHANNEL, PS5000A_BANDWIDTH_LIMITER)
PICO_STATUS ps5000aSetChannel(int16_t, PS5000A_CHANNEL, int16_t, PS5000A_COUPLING, PS5000A_RANGE, float)
PICO_STATUS ps5000aSetDataBuffer(int16_t, PS5000A_CHANNEL, int16_t*, int32_t, uint32_t, PS5000A_RATIO_MODE)
PICO_STATUS ps5000aSetDataBuffers(int16_t, PS5000A_CHANNEL, int16_t*, int16_t*, int32_t, uint32_t, PS5000A_RATIO_MODE)
PICO_STATUS ps5000aSetDeviceResolution(int16_t, PS5000A_DEVICE_RESOLUTION)
PICO_STATUS ps5000aSetDigitalPort(int16_t, PS5000A_CHANNEL, int16_t, int16_t)
PICO_STATUS ps5000aSetEts(int16_t, PS5000A_ETS_MODE, int16_t, int16_t, +int32_t*)
PICO_STATUS ps5000aSetEtsTimeBuffer(int16_t, +int64_t*, int32_t)
PICO_STATUS ps5000aSetEtsTimeBuffers(int16_t, +uint32_t*, +uint32_t*, int32_t)
PICO_STATUS ps5000aSetNoOfCaptures(int16_t, uint32_t)
PICO_STATUS ps5000aSetOutputEdgeDetect(int16_t, int16_t)
PICO_STATUS ps5000aSetPulseWidthDigitalPortProperties(int16_t, +PS5000A_DIGITAL_CHANNEL_DIRECTIONS*, int16_t)
PICO_STATUS ps5000aSetPulseWidthQualifier(int16_t, +PS5000A_PWQ_CONDITIONS*, int16_t, PS5000A_THRESHOLD_DIRECTION, uint32_t, uint32_t, PS5000A_PULSE_WIDTH_TYPE)
PICO_STATUS ps5000aSetPulseWidthQualifierConditions(int16_t, +PS5000A_CONDITION*, int16_t, PS5000A_CONDITIONS_INFO)
PICO_STATUS ps5000aSetPulseWidthQualifierDirections(int16_t, +PS5000A_DIRECTION*, int16_t)
PICO_STATUS ps5000aSetPulseWidthQualifierProperties(int16_t, uint32_t, uint32_t, PS5000A_PULSE_WIDTH_TYPE)
PICO_STATUS ps5000aSetSigGenArbitrary(int16_t, int32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, +int16_t*, int32_t, PS5000A_SWEEP_TYPE, PS5000A_EXTRA_OPERATIONS, PS5000A_INDEX_MODE, uint32_t, uint32_t, PS5000A_SIGGEN_TRIG_TYPE, PS5000A_SIGGEN_TRIG_SOURCE, int16_t)
PICO_STATUS ps5000aSetSigGenBuiltIn(int16_t, int32_t, uint32_t, PS5000A_WAVE_TYPE, float, float, float, float, PS5000A_SWEEP_TYPE, PS5000A_EXTRA_OPERATIONS, uint32_t, uint32_t, PS5000A_SIGGEN_TRIG_TYPE, PS5000A_SIGGEN_TRIG_SOURCE, int16_t)
PICO_STATUS ps5000aSetSigGenBuiltInV2(int16_t, int32_t, uint32_t, PS5000A_WAVE_TYPE, double, double, double, double, PS5000A_SWEEP_TYPE, PS5000A_EXTRA_OPERATIONS, uint32_t, uint32_t, PS5000A_SIGGEN_TRIG_TYPE, PS5000A_SIGGEN_TRIG_SOURCE, int16_t)
PICO_STATUS ps5000aSetSigGenPropertiesArbitrary(int16_t, uint32_t, uint32_t, uint32_t, uint32_t, PS5000A_SWEEP_TYPE, uint32_t, uint32_t, PS5000A_SIGGEN_TRIG_TYPE, PS5000A_SIGGEN_TRIG_SOURCE, int16_t)
PICO_STATUS ps5000aSetSigGenPropertiesBuiltIn(int16_t, double, double, double, double, PS5000A_SWEEP_TYPE, uint32_t, uint32_t, PS5000A_SIGGEN_TRIG_TYPE, PS5000A_SIGGEN_TRIG_SOURCE, int16_t)
PICO_STATUS ps5000aSetSimpleTrigger(int16_t, int16_t, PS5000A_CHANNEL, int16_t, PS5000A_THRESHOLD_DIRECTION, uint32_t, int16_t)
PICO_STATUS ps5000aSetTriggerChannelConditions(int16_t, +PS5000A_TRIGGER_CONDITIONS*, int16_t)
PICO_STATUS ps5000aSetTriggerChannelConditionsV2(int16_t, +PS5000A_CONDITION*, int16_t, PS5000A_CONDITIONS_INFO)
PICO_STATUS ps5000aSetTriggerChannelDirections(int16_t, PS5000A_THRESHOLD_DIRECTION, PS5000A_THRESHOLD_DIRECTION, PS5000A_THRESHOLD_DIRECTION, PS5000A_THRESHOLD_DIRECTION, PS5000A_THRESHOLD_DIRECTION, PS5000A_THRESHOLD_DIRECTION)
PICO_STATUS ps5000aSetTriggerChannelDirectionsV2(int16_t, +PS5000A_DIRECTION*, uint16_t)
PICO_STATUS ps5000aSetTriggerChannelProperties(int16_t, +PS5000A_TRIGGER_CHANNEL_PROPERTIES*, int16_t, int16_t, int32_t)
PICO_STATUS ps5000aSetTriggerChannelPropertiesV2(int16_t, +PS5000A_TRIGGER_CHANNEL_PROPERTIES_V2*, int16_t, int16_t)
PICO_STATUS ps5000aSetTriggerDelay(int16_t, uint32_t)
PICO_STATUS ps5000aSetTriggerDigitalPortProperties(int16_t, +PS5000A_DIGITAL_CHANNEL_DIRECTIONS*, int16_t)
PICO_STATUS ps5000aSigGenArbitraryMinMaxValues(int16_t, +int16_t*, +int16_t*, +uint32_t*, +uint32_t*)
PICO_STATUS ps5000aSigGenFrequencyToPhase(int16_t, double, PS5000A_INDEX_MODE, uint32_t, +uint32_t*)
PICO_STATUS ps5000aSigGenSoftwareControl(int16_t, int16_t)
PICO_STATUS ps5000aStop(int16_t)
PICO_STATUS ps5000aTriggerWithinPreTriggerSamples(int16_t, PS5000A_TRIGGER_WITHIN_PRE_TRIGGER)