This is an old revision of the document!


Overview

WaveForms™ provides an interface that allows users to interact with Digilent Analog Design hardware, such as the Analog Discovery™ and Electronics Explorer™. While the WaveForms application offers a refined graphical interface, the WaveForms SDK provides access to a public application programming interface (API) that gives users the ability to create custom PC applications. This WaveForms SDK manual describes the main components and architecture of the WaveForms system and details each function contained in the WaveForms API. The SDK package also offers examples demonstrating how to identify, connect to, and control analog hardware devices.


1 The System

The WaveForms system is comprised of multiple components. The most visible component is the WaveForms Application; a suite of graphical instrument panels that give full access to the analog and digital instruments in the connected hardware. The WaveForms application uses the WaveForms Runtime to control all signal generation and acquisition. The WaveForms Runtime is comprised of the DWF Dynamic Library and several configuration files. This library is located in:

  • Windows in System Directory: C: \Windows\System32\dwf.dll
  • Linux: /usr/lib/libdwf.so.x.x.x

The static library is located on Windows in the install path:

  • Windows 32bit: C:\Program Files\Digilent\WaveFormsSDK\lib\x86
  • Windows 64bit: C:\Program Files (x86)\Digilent\WaveFormsSDK\lib\x64

The C header file is located in:

  • Windows: C:\Program Files\Digilent\WaveFormsSDK\inc
  • Windows 64bit: C:\Program Files (x86)\Digilent\WaveFormsSDK\inc
  • Linux: /usr/local/include/digilent/waveforms

Working code examples are provided with the SDK to demonstrate basic use of each API function set. You can find samples in the installation directory, which are located here:

  • Windows 32bit: C:\Program Files\Digilent\WaveFormsSDK\samples
  • Windows 64bit: C:\Program Files (x86)\Digilent\WaveFormsSDK\samples
  • Linux: /usr/local/share/digilent/waveforms/samples

The DWF Library uses the Adept Runtime, which provides basic communication with the targeted hardware instruments (i.e. Analog Discovery and Electronics Explorer). Although the Adept Runtime is an integral part of the WaveForms System, knowledge of its structure is not required to write custom applications.

The requirements for Linux version are the libusb-1.0-0, Digilent Adept Runtime, and the included FTDI drivers:

$ sudo apt-get install linusb-1.0-0 digilent.adept.runtime_#/ftdi.drivers_# $ sudo bash install.sh digilent.adept.runtime_# $ sudo bash install.sh

1.1 The API

Everything needed to write custom applications is included in the WaveForms SDK, which provides the header/library files and documentation to access the API for the DWF Library. A custom application must properly link to these files to make the appropriate API function calls. Every function in the WaveForms public API is declared in the dwf.h header file.

Basic usage of the WaveForms API can be broken down into the following steps:

  1. Call enumeration functions to discover connected hardware devices.
  2. Call FDwfDeviceOpen function to establish a connection to specific hardware device.
  3. Call function to enable instrument within hardware device.
  4. Call functions to configure instrument and acquire/generate signals.
  5. Call function to disable instrument.
  6. Call FDwfDeviceClose function to disconnect from device.

There are nine main groups of API functions, each named with different prefixes:

Main Groups of API Functions Instrument Function Prefix
Device Enumeration Controls the enumeration of connected and supported devices. DwfEnum
Device Control Controls opening and closing specific devices. DwfDevice
AnalogIn (Oscilloscope) Acquires samples from each enabled channel synchronously. DfwAnalogIn
AnalogOut (Arbitrary Waveform Generator) Drives signals from each channel independently. DfwAnalogOut
AnalogIO Acquires and drives various analog signals. DfwAnalogIO
DigitalIn (Logic Analyzer) Acquires samples from digital I/O pins. DfwDigitalIn
DigitalOut (Pattern Generator) Drives digital I/O signals. DfwDigitalOut
DigitalIO Acquires and drives digital I/O signals. DfwDigitalIO
System Obtain basic system information that is instrument and device independent. DfwGet

Each instrument is directly controlled using three types of functions in the API:

API Functions Instrument Function Example
Reset function This function resets all of the instrument parameters to default values. FDwfAnalogInReset
FDwfAnalogOutReset
FDwfDigitalIOReset
Configure function This function configures and/or starts the instrument. FDwfAnalogInConfigure
FDwfAnalogOutConfigure
FDwfDigitalIOConfigure
Status function This function polls and reads all information from the instrument. FDwfAnalogInStatus
FDwfAnalogOutStatus
FDwfDigitalIOStatus

Note: Although there are multiple “Status” functions for each instrument, these functions are the only ones that actually read data from the device.

There are a number of type definitions and corresponding constants in the dwf.h include file. The majority of them are used as parameters. When a hardware device is opened, a handle is returned (HDWF), which is used to access and finally close in all instrument API functions.

1.2 Calling API Functions

The API functions are C style and return a Boolean value: TRUE if the call is successful, FALSE if unsuccessful. This Boolean value is an integer type definition, not the standard c-type bool. In general, the API functions contain variations of the following parameters:

Parameters Parameter Function
*Info Returns detailed information about the parameter support for the instrument (i.e., minimum/maximum values, supported modes, etc.)
*Set Sets an instrument parameter. When the AutoConfigure is enabled (by default), the instrument is reconfigured and stopped.
*Get Gets the actual instrument parameter. Use this function to get the actual set value. For instance an arbitrary voltage offset is set and get returns the real DAC output value.
*Status Returns the parameter value from the device.

The API functions won’t fail when a parameter pointer is NULL or when a setting (*Set) parameter value is out of limits. To verify the actual setting value, use the *Get API return the actual value.

The supported discrete parameters are retrieved in bit field value. To decode the capabilities of the device use the IsBitSet macro. int fsfilter; FDwfAnalogInChannelFilterInfo(h, &fsfilter) if(IsBitSet(fsfilter, filterAverage)){ FDwfAnalogInChannelFilterSet(hdwf, 0, filterAverage) }


System

FDwfGetLastError(DWFERC * pdwferc)
Parameters:
- pdwferc - Variable to receive error code.

The function above is used to retrieve the last error code in the calling process. The error code is cleared when other API functions are called and is only set when an API function fails during execution. Error codes are declared in dwf.h:

API Error Codes Error Code Definition
dwfercNoErc No error occurred.
dwfercUnknownError Call waiting on pending API time out.
dwfercApiLockTimeout Call waiting on pending API time out.
dwfercAlreadyOpened Device already opened.
dwfercNotSupported Device not supported.
dwfercInvalidParameter0 Parameter 0 was invalid in last API call.
dwfercInvalidParameter1 Parameter 1 was invalid in last API call.
dwfercInvalidParameter2 Parameter 2 was invalid in last API call.
dwfercInvalidParameter3 Parameter 3 was invalid in last API call.
FDwfGetLastErrorMsg(char szError[512])
Parameters:
- szError - Pointer to buffer to receive error string.

The function above is used to retrieve the last error message. This may consist of a chain of messages, separated by a new line character, that describe the events leading to the failure.

FDwfGetVersion(char szVersion[32])
Parameters:
- szVersion - Pointer to buffer to receive version string.

The function above is used to retrieve the version string. The version string is composed of major, minor, and build numbers (i.e. “2.0.19”).


3 Device Enumeration

The FDwfEnum functions are used to discover all connected, compatible devices.

FDwfEnum(ENUMFILTER enumfilter, int * pnDevice)
Parameters:
- enumfilter – Filter value to be used for device enumeration. Use the enumfilterAll constant to discover all compatible devices.
- pnDevice – Integer pointer to return count of found devices by reference.

Calling the function above will build an internal list of detected devices filtered by the enumfilter parameter. The function above must be called before using other FDwfEnum functions because they obtain information about enumerated devices from this list identified by the device index.

FDwfEnumDeviceType(int idxDevice, DEVID* pDeviceId, DEVVER* pDeviceRevision)
Parameters:
- idxDevice – Index of the enumerated device for which to return the type and revision.
- pDeviceId – Variable to return the device id.
- pDeviceRevision – Pointer to DEVVER instance to return the device revision by reference.

The function above is used to return the device ID and version ID.

FDwfEnumDeviceIsOpened(int idxDevice, BOOL* pfIsUsed)
Parameters:
- idxDevice – Index of the enumerated device.
- pfIsUsed – Pointer to variable to receive Boolean indicating if the device is in use.

The function above is used to retrieve a Boolean specifying if a device is already opened by this, or any other process.

FDwfEnumUserName(int idxDevice, char szUserName[32])
Parameters
- idxDevice – Index of the enumerated device.
- szUserName – Pointer to character array to return the user name string by reference.

The function above is used to retrieve the user name of the enumerated device. 

FDwfEnumDeviceName(int idxDevice, char szDeviceName[32])
Parameters:
- idxDevice – Index of the enumerated device.
- szDeviceName – Pointer to character array to return the device name by reference.

The function above is used to retrieve the device name of the enumerated device.

FDwfEnumSN(int idxDevice, char szSN[32])
Parameters:
- idxDevice – Index of the enumerated device.
- szSN – Pointer to character array to return the serial number by reference.

The function above is used to retrieve the 12-digit, unique serial number of the enumerated device.


4 Device Control

FDwfDeviceOpen(int idxDevice, HDWF *phdwf)
Parameters:
- idxDevice – Index of the enumerated device.
- phdwf – Pointer to HDWF variable to receive opened interface handle by reference.

The function above opens a device identified by the enumeration index and retrieves a handle. To automatically enumerate all connected devices and open the first discovered device, use index -1.

FDwfDeviceClose(HDWF hdwf)
Parameters:
- hdwf – Interface handle to be closed.

The function above is used to close an interface handle when access to the device is no longer needed. Once the function above has returned, the specified interface handle can no longer be used to access the device.

FDwfDeviceCloseAll()
Parameters: None.

The function above is used to close all opened devices by the calling process. It does not close all devices across all processes.

FDwfDeviceAutoConfigureSet(HDWF hdwf, BOOL fAutoConfigure)
Parameters:
- hdwf – Interface handle.
- fAutoConfigure– Value for this option: TRUE if enabled, FALSE if disabled.

The function above enables or disables the AutoConfig setting for a specific device. When this setting is enabled, the device is automatically configured every time an instrument parameter is set. For example, when AutoConfigure is enabled, FDwfAnalogOutConfigure does not need to be called after FDwfAnalogOutRunSet. This adds latency to every Set function; just as much latency as calling the corresponding Configure function directly afterward.

FDwfDeviceAutoConfigureGet(HDWF hdwf, BOOL* fAutoConfigure)
Parameters:
- hdwf – Interface handle.
- fAutoConfigure– Pointer to variable to receive the current value of this option.

The function above returns the AutoConfig setting in the device. See the function description for FDwfDeviceAutoConfigureSet for details on this setting.

DwfDeviceReset(HDWF hdwf)
Parameters:
- hdwf – Interface handle.

The function above resets and configures all device and instrument parameters to default values.

FDwfDeviceTriggerInfo(HDWF hdwf, int* pfstrigsrc)
Parameters:
- hdwf – Interface handle.
- pfstrigsrc – Variable to receive the supported trigger sources.

The function above returns the supported trigger source options for the global trigger bus. They are returned (by reference) as a bit field. This bit field can be parsed using the IsBitSet Macro. Individual bits are defined using the TRIGSRC constants in dwf.h.

The global trigger bus allows multiple instruments to trigger each other. These trigger source options are:

Trigger Source Options Trigger Source Function
trigsrcNone The trigger pin is high impedance, input. This is the default setting.
trigsrcPC Trigger from PC, this can be used to synchronously start multiple instruments.
trigsrcDetectorAnalogIn Trigger detector on analog in channels.
trigsrcDetectorDigitalIn Trigger on digital input channels.
trigsrcAnalogIn Trigger on device instruments, these output high when running.
trigsrcDigitalIn Trigger on device instruments, these output high when running.
trigsrcDigitalOut Trigger on device instruments, these output high when running.
trigsrcAnalogOut1 Trigger on device instruments, these output high when running.
trigsrcAnalogOut2 Trigger on device instruments, these output high when running.
trigsrcAnalogOut3 Trigger on device instruments, these output high when running.
trigsrcAnalogOut4 Trigger on device instruments, these output high when running.
trigsrcExternal1 External trigger signal.
trigsrcExternal2 External trigger signal.
trigsrcExternal3 External trigger signal.
trigsrcExternal4 External trigger signal.

FDwfDeviceTriggerSet(HDWF hdwf, int idxPin, TRIGSRC trigsrc)
Parameters:
- hdwf – Interface handle.
- idxPin – External trigger, I/O pin index.
- trigsrc – Trigger source to set.

The function above is used to configure the trigger I/O pin with a specific TRIGSRC option.

FDwfDeviceTriggerGet(HDWF hdwf, int idxPin, TRIGSRC* ptrigsrc)
Parameters:
- hdwf – Interface handle.
- idxPin - External trigger, I/O pin index.
- ptrigsrc – Variable to receive the current trigger source.

The function above returns the configured trigger setting for a trigger I/O pin. The trigger source can be “none”, an internal instrument, or an external trigger.

FDwfDeviceTriggerPC(HDWF hdwf)
Parameters:
- hdwf – Interface handle.

The function above generates one pulse on the PC trigger line.


5 Analog In (Oscilloscope)

The Analog In instrument states:

The states are defined in dwf.h DwfState type.

Ready: Initial state. After FDwfAnalogInConfigure or any FDwfAnalogIn*Set function call goes to this state. With FDwfAnalogInConfigure, reconfigure goes to Configure state.

Configure: The needed configurations are performed and auto trigger is reset.

Prefill: Prefills the buffer with samples needed before trigger.

Armed: Waits for the trigger.

Running:

  • Single acquisition mode: remains in this state to acquire samples after trigger according trigger position parameter.
  • Scan screen and shift modes: remains in this state until configure or any set function of this instrument.
  • Record mode: the time period according record length parameter.

Done: Final state.

5.1 Control

FDwfAnalogInReset(HDWF hdwf)
Parameters:
- hdwf – Interface handle.

The function above resets and configures all AnalogIn instrument parameters to default values. 

FDwfAnalogInConfigure(HDWF hdwf, BOOL fReconfigure, BOOL fStart)
Parameters:
- hdwf – Interface handle.
- fReconfigure – Configure the device.
- fStart – Start the acquisition.

The function above is used to configure the instrument and start or stop the acquisition. To reset the Auto trigger timeout, set fReconfigure to TRUE.

FDwfAnalogInStatus(HDWF hdwf, BOOL fReadData, STS* psts)
Parameters:
- hdwf – Interface handle.
- fReadData – TRUE if data should be read.
- psts – Variable to receive the acquisition state.

The function above is used to check the state of the acquisition. To read the data from the device, set fReadData to TRUE. For single acquisition mode, the data will be read only when the acquisition is finished.

Note: To ensure simultaneity of information and data, all of the following AnalogInStatus* functions do not communicate with the device. These functions only return information and data from the last FDwfAnalogInStatus call.

FDwfAnalogInStatusSamplesLeft(HDWF hdwf, int* pcSamplesLeft)
Parameters:
- hdwf – Interface handle.
- pcSamplesLeft – Variable to receive the remaining samples to acquire.

The function above is used to retrieve the number of samples left in the acquisition.

FDwfAnalogInStatusSamplesValid(HDWF hdwf, int* pcSamplesValid)
Parameters:
- hdwf – Interface handle.
- pcSamplesValid – Variable to receive the number of valid samples.

The function above is used to retrieve the number of valid/acquired data samples.

FDwfAnalogInStatusIndexWrite(HDWF hdwf, int* pidxWrite)
Parameters:
- hdwf – Interface handle.
- pidxWrite – Variable to receive the position of the acquisition.

The function above is used to retrieve the buffer write pointer. This is needed in ScanScreen acquisition mode to display the scan bar.

FDwfAnalogInStatusAutoTriggered(HDWF hdwf, BOOL* pfAuto)
Parameters:
- hdwf – Interface handle.
- pfAuto – Returns TRUE if the acquisition was auto triggered.

The function above is used to verify if the acquisition is auto triggered.

FDwfAnalogInStatusData(HDWF hdwf, int idxChannel, double* rgdVoltData, int cdData)
Parameters:
- hdwf – Interface handle.
- idxChannel – Channel index.
- rgdVoltData – Pointer to allocated buffer to copy the acquisition data.
- cdData – Number of samples to copy.

The function above is used to retrieve the acquired data samples from the specified idxChannel on the AnalogIn instrument. It copies the data samples to the provided buffer.

FDwfAnalogInStatusSample(HDWF hdwf, int idxChannel, double* pdVoltSample)
Parameters:
- hdwf – Interface handle.
- idxChannel – Channel index.
- pdVoltSample – Variable to receive the sample value.

The function above gets the last ADC conversion sample from the specified idxChannel on the AnalogIn instrument.

FDwfAnalogInStatusRecord(HDWF hdwf, int* pcdDataAvailable, int* pcdDataLost, int* pcdDataCorrupt)
Parameters:
- hdwf – Interface handle.
- pcdDataAvailable – Pointer to variable to receive the available number of samples.
- pcdDataLost – Pointer to variable to receive the lost samples after the last check.
- pcdDataCorrupt – Pointer to variable to receive the number of samples that could be corrupt.

The function above is used to retrieve information about the recording process. The data loss occurs when the device acquisition is faster than the read process to PC. In this case, the device recording buffer is filled and data samples are overwritten. Corrupt samples indicate that the samples have been overwritten by the acquisition process during the previous read. In this case, try optimizing the loop process for faster execution or reduce the acquisition frequency or record length to be less than or equal to the device buffer size (record length ⇐ buffer size/frequency).

FDwfAnalogInRecordLengthSet(HDWF hdwf, double sLegth)
Parameters:
- hdwf – Interface handle.
- sLegth – Record length to set expressed in seconds.

The function above is used to set the Record length in seconds.

FDwfAnalogInRecordLengthGet(HDWF hdwf, double* psLegth)
Parameters:
- hdwf – Interface handle.
- sLegth – Pointer to variable to receive the record length.

The function above is used to get the current Record length in seconds.

5.2 Configuration

FDwfAnalogInFrequencyInfo(HDWF hdwf, double* phzMin, double* phzMax)
Parameters:
- hdwf – Interface handle.
- phzMin – Pointer to return the minimum allowed frequency.
- phzMax – Pointer to return the maximum allowed frequency.

The function above is used to retrieve the minimum and maximum (ADC frequency) settable sample frequency.

FDwfAnalogInFrequencySet(HDWF hdwf, double hzFrequency)
Parameters:
- hdwf – Interface handle.
- hzFrequency – Acquisition frequency to set.

The function above is used to set the sample frequency for the instrument. 

FDwfAnalogInFrequencyGet(HDWF hdwf, double* phzFrequency)
Parameters:
- hdwf – Interface handle.
- phzFrequency – Variable to receive the acquisition frequency.

The function above is used to read the configured sample frequency. The AnalogIn ADC always runs at maximum frequency, but the method in which the samples are stored in the buffer can be individually configured for each channel with FDwfAnalogInChannelFilterSet function.

FDwfAnalogInBitsInfo(HDWF hdwf, int* pnBits)
Parameters:
- hdwf – Interface handle.
- pnBits – Variable to receive the number of ADC bits.

The function above is used to retrieve the number bits used by the AnalogIn ADC.

FDwfAnalogInBufferSizeInfo(HDWF hdwf, int* pnSizeMin, int* pnSizeMax)
Parameters:
- hdwf – Interface handle.
- pnMin – Pointer to return the minimum buffer size.
- pnMax – Pointer to return the maximum buffer size.

The function above returns the minimum and maximum allowable buffer sizes for the instrument.

FDwfAnalogInBufferSizeSet(HDWF hdwf, int nSize)
Parameters:
- hdwf – Interface handle.
- nSize – Buffer size to set.

The function above is used to adjust the AnalogIn instrument buffer size.

FDwfAnalogInBufferSizeGet(HDWF hdwf, int* pnSize)
Parameters:
- hdwf – Interface handle.
- pnSize – Variable to receive the current buffer size.

The function above returns the used AnalogIn instrument buffer size.

FDwfAnalogInAcquisitionModeInfo(HDWF hdwf, int* pfsacqmode)
Parameters:
- hdwf – interface handle.
- pfsacqmode – pointer to return the supported acquisition modes.

The function above returns the supported AnalogIn acquisition modes. They are returned (by reference) as a bit field. This bit field can be parsed using the IsBitSet Macro. Individual bits are defined using the ACQMODE constants in dwf.h. The acquisition mode selects one of the following modes, ACQMODE:

ACQMODE Constants FUNC Constant Capabilities
acqmodeSingle Perform a single buffer acquisition. This is the default setting.
acqmodeScanShift Perform a continuous acquisition in FIFO style. The trigger setting is ignored. The last sample is at the end of buffer. The FDwfAnalogInStatusSamplesValid function is used to show the number of the acquired samples, which will grow until reaching the BufferSize. Then the waveform “picture” is shifted for every new sample.
acqmodeScanScreen Perform continuous acquisition circularly writing samples into the buffer. The trigger setting is ignored. The IndexWrite shows the buffer write position. This is similar to a heart monitor display.
acqmodeRecord Perform acquisition for length of time set by FDwfAnalogInRecordLengthSet.
FDwfAnalogInAcquisitionModeSet(HDWF hdwf, ACQMODE acqmode)
Parameters:
- hdwf – Interface handle.
- acqmode – Acquisition mode to set.

The function above is used to set the acquisition mode.

FDwfAnalogInAcquisitionModeGet(HDWF hdwf, ACQMODE* pacqmode)
Parameters:
- hdwf – Interface handle.
- pacqmode – Variable to receive the current acquisition mode.

The function above is used to get retrieve the acquisition mode. 

5.3 Channels

The oscilloscope channel settings are identical across all channels.

FDwfAnalogInChannelCount(HDWF hdwf, int* pcChannel)
Parameters:
- hdwf – Interface handle.
- pcChannel – Variable to receive the number of channels.

The function above is used to read the number of AnalogIn channels of the device.

FDwfAnalogInChannelEnableSet(HDWF hdwf, int idxChannel, BOOL fEnable)
Parameters:
- hdwf – Interface handle.
- idxChannel – Index of channel to enable/disable.
- fEnable – Set TRUE to enable, FALSE to disable.

The function above is used to enable or disable the specified AnalogIn channel.

FDwfAnalogInChannelEnableGet(HDWF hdwf, int idxChannel, BOOL * pfEnable)
Parameters:
- hdwf – Interface handle.
- idxChannel – Index of channel.
- pfEnable – Variable to return enable/disable status of channel.

The function above is used to get the current enable/disable status of the specified AnalogIn channel.

FDwfAnalogInChannelFilterInfo(HDWF hdwf, int* pfsfilter)
Parameters:
- hdwf – Interface handle.
- pfsfilter – Pointer to return the supported acquisition modes.

The function above returns the supported acquisition filters. They are returned (by reference) as a bit field. This bit field can be parsed using the IsBitSet Macro. Individual bits are defined using the FILTER constants in dwf.h. When the acquisition frequency (FDwfAnalogInFrequencySet) is less than the ADC frequency (maximum acquisition frequency), the samples can be stored in one of the following ways using FILTER:

  • filterDecimate: Store every Nth ADC conversion, where N = ADC frequency /acquisition frequency.
  • filterAverage: Store the average of N ADC conversions.
  • filterMinMax: Store interleaved, the minimum and maximum values, of 2xN conversions.
FDwfAnalogInChannelFilterSet(HDWF hdwf, int idxChannel, FILTER filter)
Parameters:
- hdwf – interface handle
- idxChannel – channel index
- filter – acquisition sample filter to set

The function above is used to set the acquisition filter for each AnalogIn channel. With channel index -1, each enabled AnalogIn channel filter will be configured to use the same, new option.

FDwfAnalogInChannelFilterGet(HDWF hdwf, int idxChannel, FILTER* pfilter)
Parameters:
- hdwf – Interface handle.
- idxChannel – Channel index.
- pfilter– Variable to receive the current sample filter.

The function above returns the configured acquisition filter.

FDwfAnalogInChannelRangeInfo(HDWF hdwf, double* pvoltsMin, double* pvoltsMax, double* pnSteps)
Parameters:
- hdwf – Interface handle.
- pvoltsMin – Variable to receive the minimum voltage range.
- pvoltsMax – Variable to receive the maximum voltage range.
- pnSteps – Variable to receive number of steps.

The function above returns the minimum and maximum range, peak to peak values, and the number of adjustable steps.

FDwfAnalogInChannelRangeSteps(HDWF hdwf, double rgVoltsStep[32], int* pnSteps)
Parameters:
- hdwf – Interface handle.
- rgVoltsStep – Pointer to buffer to receive the range steps.
- pnSteps – Variable to receive number range steps.

The function above is used to read the range of steps supported by the device. For instance: 1, 2, 5, 10, etc. 

FDwfAnalogInChannelRangeSet(HDWF hdwf, int idxChannel, double voltsRange)
Parameters:
- hdwf – Interface handle.
- idxChannel – Channel index.
- voltsRange – Voltage range to set.

The function above is used to configure the range for each channel. With channel index -1, each enabled Analog In channel range will be configured to the same, new value.

FDwfAnalogInChannelRangeGet(HDWF hdwf, int idxChannel, double* pvoltsRange)
Parameters:
- hdwf – Interface handle.
- idxChannel – Channel index.
- pvoltsRange – Variable to receive the current voltage range.

The function above returns the real range value for the given channel.

FDwfAnalogInChannelOffsetInfo(HDWF hdwf, double* pvoltsMin, double* pvoltsMax, double* pnSteps)
Parameters:
- hdwf – Interface handle.
- pvoltsMin – Variable to receive the minimum offset voltage.
- pvoltsMax – Variable to receive the maximum offset voltage.
- pnSteps – Variable to receive the number offset steps.

The function above returns the minimum and maximum offset levels supported, and the number of adjustable steps.

FDwfAnalogInChannelOffsetSet(HDWF hdwf, int idxChannel, double voltOffset)
Parameters:
- hdwf – Interface handle.
- idxChannel – Channel index.
- voltsRange – Channel offset voltage to set.

The function above is used to configure the offset for each channel. When channel index is specified as -1, each enabled AnalogIn channel offset will be configured to the same level. 

FDwfAnalogInChannelOffsetGet(HDWF hdwf, int idxChannel, double* pvoltOffset)
Parameters:
- hdwf – Interface handle.
- idxChannel – Channel index.
- pvoltsRange – Variable to receive the offset voltage obtained.

The function above returns for each AnalogIn channel the real offset level.


5.4 Trigger

The trigger is used for Single and Record acquisitions. For ScanScreen and ScanShift, the trigger is ignored. To achieve the classical trigger types:

  • None: Set FDwfAnalogInTriggerSourceSet to trigsrcNone.
  • Auto: Set FDwfAnalogInTriggerSourceSet to something other than trigsrcNone, such as trigsrcDetectorAnalogIn and FDwfAnalogInTriggerAutoTimeoutSet to other than zero.
  • Normal: Set FDwfAnalogInTriggerSourceSet to something other than trigsrcNone, such as trigsrcDetectorAnalogIn or FDwfAnalogInTriggerAutoTimeoutSet to zero.
FDwfAnalogInTriggerSourceInfo(HDWF hdwf, int* pfstrigsrc)
Parameters:
- hdwf – Interface handle.
- pfstrigsrc – Variable to receive the supported trigger sources.

The function above returns the supported trigger source options for the AnalogIn instrument. They are returned (by reference) as a bit field. This bit field can be parsed using the IsBitSet Macro. Individual bits are defined using the TRIGSRC constants in dwf.h. For more detail regarding these constants, see the description of FDwfDeviceTriggerInfo.

FDwfAnalogInTriggerSourceSet(HDWF hdwf, TRIGSRC trigsrc)
Parameters:
- hdwf – Interface handle.
- trigsrc – Trigger source to set.

The function above is used to configure the AnalogIn acquisition trigger source.

FDwfAnalogInTriggerSourceGet(HDWF hdwf, TRIGSRC* ptrigsrc)
Parameters:
- hdwf – Interface handle.
- ptrigsrc – Variable to receive the current trigger source.

The function above returns the configured trigger source. The trigger source can be “none” or an internal instrument or external trigger. To use the trigger on AnalogIn channels (edge, pulse, etc.), use trigsrcDetectorAnalogIn.

FDwfAnalogInTriggerPositionInfo(HDWF hdwf, double* psecMin, double* psecMax)
Parameters:
- hdwf – Interface handle.
- psecMin – Variable to receive the minimum trigger position.
- psecMax – Variable to receive the maximum trigger position.

The function above returns the minimum and maximum values of the trigger position in seconds. The horizontal trigger position is used for Single acquisition mode and it is relative to the buffer middle point.

FDwfAnalogInTriggerPositionSet(HDWF hdwf, double secPosition)
Parameters:
- hdwf – Interface handle.
- secPosition – Trigger position to set.

The function above is used to configure the horizontal trigger position in seconds.

FDwfAnalogInTriggerPositionGet(HDWF hdwf, double* psecPosition)
Parameters:
- hdwf – Interface handle.
- psecPosition – Variable to receive the current trigger position.

The function above returns the configured trigger position in seconds.

FDwfAnalogInTriggerAutoTimeoutInfo(HDWF hdwf, double* psecMin, double* psecMax, int* pnSteps)
Parameters:
- hdwf – Interface handle.
- psecMin – Variable to receive the minimum timeout.
- psecMax – Variable to receive the maximum timeout.
- pnSteps – Variable to return the number of steps.

The function above returns the minimum and maximum auto trigger timeout values, and the number of adjustable steps. The acquisition is auto triggered when the specified time elapses. With zero value the timeout is disabled, performing “Normal” acquisitions.

FDwfAnalogInTriggerAutoTimeoutSet(HDWF hdwf, double secTimeout)
Parameters:
- hdwf – Interface handle.
- secTimeout – Timeout to set.

The function above is used to configure the auto trigger timeout value in seconds.

FDwfAnalogInTriggerAutoTimeoutGet(HDWF hdwf, double* psecTimeout)
Parameters:
- hdwf – Interface handle.
- psecTimeout – Variable to receive the current timeout.

The function above returns the configured auto trigger timeout value in seconds.

FDwfAnalogInTriggerHoldOffInfo(HDWF hdwf, double* psecMin, double* psecMax)
Parameters:
- hdwf – Interface handle.
- psecMin – Variable to receive the minimum hold off value.
- psecMax – Variable to receive the maximum hold off value.

The function above returns the supported range of the trigger Hold-Off time in Seconds. The trigger hold-off is an adjustable period of time during which the acquisition will not trigger. This feature is used when you are triggering on burst waveform shapes, so the oscilloscope triggers only on the first eligible trigger point. 

FDwfAnalogInTriggerHoldOffSet(HDWF hdwf, double secHoldOff)
Parameters:
- hdwf – Interface handle.
- secHoldOff – Holdoff to set.

The function above is used to set the trigger hold-off for the AnalongIn instrument in Seconds.

FDwfAnalogInTriggerHoldOffGet(HDWF hdwf, double* psecHoldOff)
Parameters:
- hdwf – Interface handle.
- psecHoldOff – Variable to receive the current holdoff value.

The function above is used to get the current trigger hold-off for the AnalongIn instrument in Seconds.

5.5 Trigger Detector

The following functions configure the trigger detector on analog in channels. To use this set trigger source with FDwfAnalogInTriggerSourceSet to trigsrcDetectorAnalogIn.

FDwfAnalogInTriggerTypeInfo(HDWF hdwf, int* pfstrigtype)
Parameters:
- hdwf – Interface handle.
- pfstrigtype – Variable to receive the supported trigger types.

The function above returns the supported trigger type options for the instrument. They are returned (by reference) as a bit field. This bit field can be parsed using the IsBitSet Macro. Individual bits are defined using the TRIGTYPE constants in dwf.h. These trigger type options are:

  • trigtypeEdge: trigger on rising or falling edge. This is the default setting.
  • trigtypePulse: trigger on positive or negative; less, timeout or more pulse lengths
  • trigtypeTransition: trigger on rising or falling; less, timeout or more transition times
FDwfAnalogInTriggerTypeSet(HDWF hdwf, TRIGTYPE trigtype)
Parameters:
- hdwf – Interface handle.
- trigtype – Trigger type to set.

The function above is used to set the trigger type for the instrument.

FDwfAnalogInTriggerTypeGet(HDWF hdwf, TRIGTYPE* ptrigtype)
Parameters:
- hdwf – Interface handle.
- ptrigtype – Variable to receive the current trigger type.

The function above is used to get the current trigger type for the instrument.

FDwfAnalogInTriggerChannelInfo(HDWF hdwf, int* pidxMin, int* pidxMax)
Parameters:
- hdwf – Interface handle.
- pidxMin – Variable to receive the minimum channel index.
- pidxMax – Variable to receive the maximum channel index.

The function above returns the range of channels that can be triggered on.

FDwfAnalogInTriggerChannelSet(HDWF hdwf, int idxChannel)
Parameters:
- hdwf – Interface handle.
- idxChannel – Trigger channel index to set.

The function above is used to set the trigger channel.

FDwfAnalogInTriggerChannelGet(HDWF hdwf, int* pidxChannel)
Parameters:
- hdwf – Interface handle.
- pidxChannel – Variable to receive the current trigger channel index.

The function above is used to retrieve the current trigger channel index. 

FDwfAnalogInTriggerFilterInfo(HDWF hdwf, int* pfsfilter)
Parameters:
- hdwf – Interface handle.
- pfsFilter – Variable to receive the supported trigger filters.

The function above returns the supported trigger filters. They are returned (by reference) as a bit field. This bit field can be parsed using the IsBitSet Macro. Individual bits are defined using the FILTER constants in DWF.h. Select trigger detector sample source, FILTER:

  • filterDecimate: Looks for trigger in each ADC conversion, can detect glitches.
  • filterAverage: Looks for trigger only in average of N samples, given by FDwfAnalogInFrequencySet.
FDwfAnalogInTriggerFilterSet(HDWF hdwf, FILTER filter)
Parameters:
- hdwf – Interface handle.
- filter – Trigger filter to set.

The function above is used to set the trigger filter.

FDwfAnalogInTriggerFilterGet(HDWF hdwf, FILTER* pfilter)
Parameters:
- hdwf – Interface handle.
- pfilter – Variable to receive the current trigger filter

The function above is used to get the trigger filter.

FDwfAnalogInTriggerConditionInfo(HDWF hdwf, int* pfstrigcond)
Parameters:
- hdwf – Interface handle.
- pfstrigcond – Variable to receive the supported trigger conditions.

The function above returns the supported trigger type options for the instrument. They are returned (by reference) as a bit field. This bit field can be parsed using the IsBitSet Macro. Individual bits are defined using the TRIGCOND constants in dwf.h. These trigger condition options are:

trigcondRisingPositive (This is the default setting):

  • For edge and transition trigger on rising edge.
  • For pulse trigger on positive pulse.

trigcondFallingNegative:

  • For edge and transition trigger on falling edge.
  • For pulse trigger on negative pulse.
FDwfAnalogInTriggerConditionSetHDWF hdwf, TRIGCOND trigcond)
Parameters:
- hdwf – Interface handle.
- trigcond – trigger condition to set

The function above is used to set the trigger condition for the instrument.

FDwfAnalogInTriggerConditionGetHDWF hdwf, TRIGCOND* ptrigcond)
Parameters:
- hdwf – Interface handle.
- ptrigcond – Variable to receive the current trigger condition

The function above is used to set the trigger condition for the instrument.

FDwfAnalogInTriggerLevelInfo(HDWF hdwf, double* pvoltsMin, double* pvoltsMax, int* pnSteps)
Parameters:
- hdwf – Interface handle.
- pvoltsMin – Variable to receive the minimum voltage level.
- pvoltsMax – Variable to receive the maximum voltage level.
- pnSteps – Variable to receive the number of voltage level steps.

The function above is used to retrieve the range of valid trigger voltage levels for the AnalogIn instrument in Volts.

FDwfAnalogInTriggerLevelSet(HDWF hdwf, double voltsLevel)
Parameters:
- hdwf – Interface handle.
- voltsLevel – Trigger voltage level to set.

The function above is used to set the trigger voltage level in Volts.