From e1eb0f4b4a8fdd74f886c4d4ca93336597db8b63 Mon Sep 17 00:00:00 2001 From: mohit-emerson Date: Thu, 13 Aug 2026 11:58:56 +0000 Subject: [PATCH 1/7] rfsa examples, unit tests added --- .../examples/nirfsa_getting_started_iq.py | 66 +++++++++++++++++++ .../nirfsa_getting_started_spectrum.py | 63 ++++++++++++++++++ src/nirfsa/unit_tests/test_nirfsa.py | 25 +++++++ 3 files changed, 154 insertions(+) create mode 100644 src/nirfsa/examples/nirfsa_getting_started_iq.py create mode 100644 src/nirfsa/examples/nirfsa_getting_started_spectrum.py create mode 100644 src/nirfsa/unit_tests/test_nirfsa.py diff --git a/src/nirfsa/examples/nirfsa_getting_started_iq.py b/src/nirfsa/examples/nirfsa_getting_started_iq.py new file mode 100644 index 000000000..9ffef2619 --- /dev/null +++ b/src/nirfsa/examples/nirfsa_getting_started_iq.py @@ -0,0 +1,66 @@ +import argparse +import nirfsa +import numpy as np +import sys + + +def example(resource_name, options, iq_carrier_frequency, reference_level, number_of_samples): + with nirfsa.Session(resource_name=resource_name, id_query=False, reset_device=False, options=options) as rfsa_session: + # Configurations + rfsa_session.acquisition_type = nirfsa.AcquisitionType.IQ + + rfsa_session.reference_level = reference_level + rfsa_session.iq_carrier_frequency = iq_carrier_frequency + rfsa_session.number_of_samples = number_of_samples + rfsa_session.iq_rate = 1e6 + + iq_data_array = np.zeros(number_of_samples, dtype=np.complex128) + + wfm_info = rfsa_session.read_iq_single_record_into(iq_data_array) + + samples = np.asarray(wfm_info.samples) + accumulator = 0.0 + + # Do something useful with the data. + # We will present average power: 10log(((I^2 + Q ^2) / 2R) * 1000), where + # R = 50 Ohms. + if len(samples) > 0: + for sample in samples: + magnitude_squared = sample.real * sample.real + sample.imag * sample.imag + + # we need to handle this because log(0) return a range error. + if magnitude_squared == 0.0: + magnitude_squared = 0.00000001 + + accumulator += 10.0 * np.log10((magnitude_squared / (2.0 * 50.0)) * 1000.0) + + print('Average power = %0.1f dBm' % (accumulator / len(samples))) + + +def _main(argsv): + parser = argparse.ArgumentParser(description='Acquires a power spectrum using NI-RFSA.', formatter_class=argparse.ArgumentDefaultsHelpFormatter) + parser.add_argument('-n', '--resource-name', default='PXI1Slot2', help='Resource name of the NI RF signal analyzer.') + parser.add_argument('-c', '--iq-carrier-frequency', default=1e9, type=float, help='IQ carrier frequency in Hz.') + parser.add_argument('-r', '--reference-level', default=0.0, type=float, help='Reference level in dBm.') + parser.add_argument('-s', '--number-of-samples', default=1024, type=int, help='Number of IQ samples to acquire.') + parser.add_argument('-op', '--option-string', default='', type=str, help='Option string for the session.') + args = parser.parse_args(argsv) + example(args.resource_name, args.option_string, args.iq_carrier_frequency, args.reference_level, args.number_of_samples) + + +def main(): + _main(sys.argv[1:]) + + +def test_example(): + options = {'simulate': True, 'driver_setup': {'Model': '5841', }, } + example('simulated5841', options, 1e9, -10.0, 1024) + + +def test_main(): + cmd_line = ['--resource-name', 'simulated5841', '--iq-carrier-frequency', '1e9', '--reference-level', '-10', '--option-string', 'Simulate=1, DriverSetup=Model:5841'] + _main(cmd_line) + + +if __name__ == '__main__': + main() diff --git a/src/nirfsa/examples/nirfsa_getting_started_spectrum.py b/src/nirfsa/examples/nirfsa_getting_started_spectrum.py new file mode 100644 index 000000000..f6673cc0c --- /dev/null +++ b/src/nirfsa/examples/nirfsa_getting_started_spectrum.py @@ -0,0 +1,63 @@ +import argparse +import nirfsa +import numpy as np +import sys + + +def example(resource_name, options, center_frequency, span, reference_level, number_of_spectral_lines): + with nirfsa.Session(resource_name=resource_name, id_query=False, reset_device=False, options=options) as rfsa_session: + # Configurations + rfsa_session.acquisition_type = nirfsa.AcquisitionType.SPECTRUM + rfsa_session.reference_level = reference_level + rfsa_session.resolution_bandwidth = 10e3 + + rfsa_session.configure_spectrum_frequency(center_frequency=center_frequency, span=span) + rfsa_session.number_of_spectral_lines = number_of_spectral_lines + + spectrum_buf = np.zeros(rfsa_session.number_of_spectral_lines, dtype=np.float64) + + spectrum_info = rfsa_session.read_power_spectrum_into(spectrum_buf, timeout=10.0) + + # Do something useful with the data. + # We will find the highest peak in a bin, which is not the actual highest + # peak and frequency we could find in the acquisition. For an accurate + # peak search, we can analyze the data with the Spectral Measurements Toolset. + samples = np.asarray(spectrum_info.samples) + greatest_peak_index = int(np.argmax(samples)) + greatest_peak_power = samples[greatest_peak_index] + greatest_peak_frequency = spectrum_info.initial_frequency + spectrum_info.frequency_increment * greatest_peak_index + + print( + 'The highest peak in a bin is %0.1f dBm at %0.3f MHz.' + % (greatest_peak_power, greatest_peak_frequency / 1e6) + ) + + +def _main(argsv): + parser = argparse.ArgumentParser(description='Acquires a power spectrum using NI-RFSA.', formatter_class=argparse.ArgumentDefaultsHelpFormatter) + parser.add_argument('-n', '--resource-name', default='PXI1Slot2', help='Resource name of the NI RF signal analyzer.') + parser.add_argument('-c', '--center-frequency', default=1e9, type=float, help='Center frequency in Hz.') + parser.add_argument('-s', '--span', default=100e6, type=float, help='Span in Hz.') + parser.add_argument('-r', '--reference-level', default=0.0, type=float, help='Reference level in dBm.') + parser.add_argument('-l', '--number-of-spectral-lines', default=1024, type=int, help='Number of spectral lines to acquire.') + parser.add_argument('-op', '--option-string', default='', type=str, help='Option string for the session.') + args = parser.parse_args(argsv) + example(args.resource_name, args.option_string, args.center_frequency, args.span, args.reference_level, args.number_of_spectral_lines) + + +def main(): + _main(sys.argv[1:]) + + +def test_example(): + options = {'simulate': True, 'driver_setup': {'Model': '5841', }, } + example('simulated5841', options, 1e9, 100e6, -10.0, 1024) + + +def test_main(): + cmd_line = ['--resource-name', 'simulated5841', '--center-frequency', '1e9', '--span', '100e6', '--reference-level', '-10', '--number-of-spectral-lines', '1024', '--option-string', 'Simulate=1, DriverSetup=Model:5841'] + _main(cmd_line) + + +if __name__ == '__main__': + main() diff --git a/src/nirfsa/unit_tests/test_nirfsa.py b/src/nirfsa/unit_tests/test_nirfsa.py new file mode 100644 index 000000000..192af084a --- /dev/null +++ b/src/nirfsa/unit_tests/test_nirfsa.py @@ -0,0 +1,25 @@ +import nirfsa.waveform_info +import numpy + + +def test_populate_samples_info(): + waveform_infos = [] + for i in range(1, 4): + waveform_infos.append(nirfsa.waveform_info.WaveformInfo()) + waveform_infos[-1].actual_samples = i + + # 2D case (multi-record fetch): each row may be wider than actual_samples. + sample_data = numpy.array([ + [0, 0, 0], + [3, 4, 0], + [6, 7, 8], + ], dtype=numpy.float64) + nirfsa.waveform_info._populate_samples_info(waveform_infos, sample_data) + + expected = [ + [0], + [3, 4], + [6, 7, 8], + ] + for i in range(len(waveform_infos)): + assert list(waveform_infos[i].samples) == expected[i] From 74d79c86360ef29f86cb907a2c9b9a70bd064cd2 Mon Sep 17 00:00:00 2001 From: mohit-emerson Date: Thu, 13 Aug 2026 12:01:12 +0000 Subject: [PATCH 2/7] added rfsa to tox, makefiles etc --- Makefile | 2 +- README.rst | 46 +++++++++++++++++++++++++++++++++++++++ src/nirfsa/LATEST_RELEASE | 1 + src/nirfsa/nirfsa.mak | 20 +++++++++++++++++ tox-travis.ini | 7 ++++++ tox.ini | 7 ++++++ 6 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 src/nirfsa/LATEST_RELEASE create mode 100644 src/nirfsa/nirfsa.mak diff --git a/Makefile b/Makefile index bfbf7bf11..45a9696d2 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # In alphabetical order except put nifake first and nimodinst/nitclk last # - nifake first to get the most code generator coverage # - nimodinst last so that the version from nimodinst is used for any global versions (docs/conf.py) -ALL_DRIVERS := nifake nidcpower nidigital nidmm nifgen nirfsg niscope niswitch nise nimodinst nitclk +ALL_DRIVERS := nifake nidcpower nidigital nidmm nifgen nirfsa nirfsg niscope niswitch nise nimodinst nitclk DRIVERS ?= $(ALL_DRIVERS) ROOT_DIR := $(abspath .) diff --git a/README.rst b/README.rst index cdebf33a1..9a7d85ba3 100644 --- a/README.rst +++ b/README.rst @@ -292,6 +292,52 @@ NI-ModInst Python API Status +NI-RFSA Python API Status +------------------------- + ++-------------------------------+-----------------------+ +| NI-RFSA (nirfsa) | | ++===============================+=======================+ +| Driver Version Tested Against | 2026 Q3 | ++-------------------------------+-----------------------+ +| PyPI Version | |nirfsaLatestVersion| | ++-------------------------------+-----------------------+ +| Supported Python Version | |nirfsaPythonVersion| | ++-------------------------------+-----------------------+ +| Documentation | |nirfsaDocs| | ++-------------------------------+-----------------------+ +| Open Issues | |nirfsaOpenIssues| | ++-------------------------------+-----------------------+ +| Open Pull Requests | |nirfsaOpenPRs| | ++-------------------------------+-----------------------+ + + +.. |nirfsaLatestVersion| image:: http://img.shields.io/pypi/v/nirfsa.svg + :alt: Latest NI-RFSA Version + :target: http://pypi.python.org/pypi/nirfsa + + +.. |nirfsaPythonVersion| image:: http://img.shields.io/pypi/pyversions/nirfsa.svg + :alt: NI-RFSA supported Python versions + :target: http://pypi.python.org/pypi/nirfsa + + +.. |nirfsaDocs| image:: https://readthedocs.org/projects/nirfsa/badge/?version=latest + :alt: NI-RFSA Python API Documentation Status + :target: https://nirfsa.readthedocs.io/en/latest + + +.. |nirfsaOpenIssues| image:: https://img.shields.io/github/issues/ni/nimi-python/nirfsa.svg + :alt: Open Issues + Pull Requests for NI-RFSA + :target: https://github.com/ni/nimi-python/issues?q=is%3Aopen+is%3Aissue+label%3Anirfsa + + +.. |nirfsaOpenPRs| image:: https://img.shields.io/github/issues-pr/ni/nimi-python/nirfsa.svg + :alt: Pull Requests for NI-RFSA + :target: https://github.com/ni/nimi-python/pulls?q=is%3Aopen+is%3Aissue+label%3Anirfsa + + + NI-RFSG Python API Status ------------------------- diff --git a/src/nirfsa/LATEST_RELEASE b/src/nirfsa/LATEST_RELEASE new file mode 100644 index 000000000..3eefcb9dd --- /dev/null +++ b/src/nirfsa/LATEST_RELEASE @@ -0,0 +1 @@ +1.0.0 diff --git a/src/nirfsa/nirfsa.mak b/src/nirfsa/nirfsa.mak new file mode 100644 index 000000000..d1e78df16 --- /dev/null +++ b/src/nirfsa/nirfsa.mak @@ -0,0 +1,20 @@ + + +include $(BUILD_HELPER_DIR)/defines.mak + +MODULE_FILES_TO_GENERATE := $(DEFAULT_PY_FILES_TO_GENERATE) _complextype.py + +MODULE_FILES_TO_COPY := $(DEFAULT_PY_FILES_TO_COPY) + +RST_FILES_TO_GENERATE := $(DEFAULT_RST_FILES_TO_GENERATE) + +SPHINX_CONF_PY := $(DEFAULT_SPHINX_CONF_PY) +READTHEDOCS_CONFIG := $(DEFAULT_READTHEDOCS_CONFIG) + +CUSTOM_TYPES_TO_COPY += \ + coefficient_info_type.py \ + waveform_info.py \ + spectrum_info_type.py \ + +include $(BUILD_HELPER_DIR)/rules.mak + diff --git a/tox-travis.ini b/tox-travis.ini index 79ae37b69..5cce57189 100644 --- a/tox-travis.ini +++ b/tox-travis.ini @@ -81,6 +81,10 @@ commands = test: coverage report test: coverage xml -o niscopeunittest.xml test: coverage html --directory=generated/htmlcov/unit_tests/niscope + test: coverage run --rcfile=tools/coverage_unit_tests.rc --source nirfsa -m pytest generated/nirfsa/nirfsa {posargs} -s + test: coverage report + test: coverage xml -o nirfsaunittest.xml + test: coverage html --directory=generated/htmlcov/unit_tests/nirfsa test: coverage run --rcfile=tools/coverage_unit_tests.rc --source nitclk -m pytest generated/nitclk/nitclk {posargs} -s test: coverage report test: coverage xml -o nitclkunittest.xml @@ -107,6 +111,7 @@ commands = flake8: flake8 --config=./tox.ini src/nifgen/system_tests/ src/nifgen/examples/ flake8: flake8 --config=./tox.ini src/nimodinst/system_tests/ src/nimodinst/examples/ flake8: flake8 --config=./tox.ini src/nirfsg/system_tests/ src/nirfsg/examples/ + flake8: flake8 --config=./tox.ini src/nirfsa/system_tests/ src/nirfsa/examples/ flake8: flake8 --config=./tox.ini src/niscope/system_tests/ src/niscope/examples/ flake8: flake8 --config=./tox.ini src/nise/system_tests/ src/nise/examples/ flake8: flake8 --config=./tox.ini src/niswitch/system_tests/ src/niswitch/examples/ @@ -119,6 +124,7 @@ commands = docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nifgen ../generated/docs/nifgen/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nimodinst ../generated/docs/nimodinst/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nirfsg ../generated/docs/nirfsg/html {posargs} + docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nirfsa ../generated/docs/nirfsa/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./niscope ../generated/docs/niscope/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nise ../generated/docs/nise/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./niswitch ../generated/docs/niswitch/html {posargs} @@ -132,6 +138,7 @@ commands = pkg: python -m twine check generated/nidmm/dist/* pkg: python -m twine check generated/nifgen/dist/* pkg: python -m twine check generated/nirfsg/dist/* + pkg: python -m twine check generated/nirfsa/dist/* pkg: python -m twine check generated/niscope/dist/* pkg: python -m twine check generated/nise/dist/* pkg: python -m twine check generated/niswitch/dist/* diff --git a/tox.ini b/tox.ini index d0943c6c5..9942346f1 100644 --- a/tox.ini +++ b/tox.ini @@ -81,6 +81,10 @@ commands = test: coverage report test: coverage xml -o niscopeunittest.xml test: coverage html --directory=generated/htmlcov/unit_tests/niscope + test: coverage run --rcfile=tools/coverage_unit_tests.rc --source nirfsa -m pytest generated/nirfsa/nirfsa {posargs} -s + test: coverage report + test: coverage xml -o nirfsaunittest.xml + test: coverage html --directory=generated/htmlcov/unit_tests/nirfsa test: coverage run --rcfile=tools/coverage_unit_tests.rc --source nitclk -m pytest generated/nitclk/nitclk {posargs} -s test: coverage report test: coverage xml -o nitclkunittest.xml @@ -107,6 +111,7 @@ commands = flake8: flake8 --config=./tox.ini src/nifgen/system_tests/ src/nifgen/examples/ flake8: flake8 --config=./tox.ini src/nimodinst/system_tests/ src/nimodinst/examples/ flake8: flake8 --config=./tox.ini src/nirfsg/system_tests/ src/nirfsg/examples/ + flake8: flake8 --config=./tox.ini src/nirfsa/system_tests/ src/nirfsa/examples/ flake8: flake8 --config=./tox.ini src/niscope/system_tests/ src/niscope/examples/ flake8: flake8 --config=./tox.ini src/nise/system_tests/ src/nise/examples/ flake8: flake8 --config=./tox.ini src/niswitch/system_tests/ src/niswitch/examples/ @@ -119,6 +124,7 @@ commands = docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nifgen ../generated/docs/nifgen/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nimodinst ../generated/docs/nimodinst/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nirfsg ../generated/docs/nirfsg/html {posargs} + docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nirfsa ../generated/docs/nirfsa/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./niscope ../generated/docs/niscope/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nise ../generated/docs/nise/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./niswitch ../generated/docs/niswitch/html {posargs} @@ -132,6 +138,7 @@ commands = pkg: python -m twine check generated/nidmm/dist/* pkg: python -m twine check generated/nifgen/dist/* pkg: python -m twine check generated/nirfsg/dist/* + pkg: python -m twine check generated/nirfsa/dist/* pkg: python -m twine check generated/niscope/dist/* pkg: python -m twine check generated/nise/dist/* pkg: python -m twine check generated/niswitch/dist/* From b1446a1abb56ceff45c283023d9f6ad0c1070ebe Mon Sep 17 00:00:00 2001 From: mohit-emerson Date: Thu, 13 Aug 2026 12:01:42 +0000 Subject: [PATCH 3/7] codegen --- generated/nirfsa/README.rst | 181 + generated/nirfsa/nirfsa/VERSION | 2 + generated/nirfsa/nirfsa/__init__.py | 114 + generated/nirfsa/nirfsa/_attributes.py | 167 + generated/nirfsa/nirfsa/_complextype.py | 16 + generated/nirfsa/nirfsa/_converters.py | 365 + generated/nirfsa/nirfsa/_library.py | 701 ++ .../nirfsa/nirfsa/_library_interpreter.py | 772 ++ generated/nirfsa/nirfsa/_library_singleton.py | 57 + generated/nirfsa/nirfsa/_visatype.py | 29 + .../nirfsa/nirfsa/coefficient_info_type.py | 60 + generated/nirfsa/nirfsa/enums.py | 1479 +++ generated/nirfsa/nirfsa/errors.py | 112 + generated/nirfsa/nirfsa/session.py | 8435 +++++++++++++++++ generated/nirfsa/nirfsa/spectrum_info_type.py | 112 + .../nirfsa/nirfsa/unit_tests/_matchers.py | 369 + .../nirfsa/nirfsa/unit_tests/_mock_helper.py | 1043 ++ .../nirfsa/nirfsa/unit_tests/test_nirfsa.py | 25 + generated/nirfsa/nirfsa/waveform_info.py | 116 + generated/nirfsa/setup.py | 57 + generated/nirfsa/tox-system_tests.ini | 72 + 21 files changed, 14284 insertions(+) create mode 100644 generated/nirfsa/README.rst create mode 100644 generated/nirfsa/nirfsa/VERSION create mode 100644 generated/nirfsa/nirfsa/__init__.py create mode 100644 generated/nirfsa/nirfsa/_attributes.py create mode 100644 generated/nirfsa/nirfsa/_complextype.py create mode 100644 generated/nirfsa/nirfsa/_converters.py create mode 100644 generated/nirfsa/nirfsa/_library.py create mode 100644 generated/nirfsa/nirfsa/_library_interpreter.py create mode 100644 generated/nirfsa/nirfsa/_library_singleton.py create mode 100644 generated/nirfsa/nirfsa/_visatype.py create mode 100644 generated/nirfsa/nirfsa/coefficient_info_type.py create mode 100644 generated/nirfsa/nirfsa/enums.py create mode 100644 generated/nirfsa/nirfsa/errors.py create mode 100644 generated/nirfsa/nirfsa/session.py create mode 100644 generated/nirfsa/nirfsa/spectrum_info_type.py create mode 100644 generated/nirfsa/nirfsa/unit_tests/_matchers.py create mode 100644 generated/nirfsa/nirfsa/unit_tests/_mock_helper.py create mode 100644 generated/nirfsa/nirfsa/unit_tests/test_nirfsa.py create mode 100644 generated/nirfsa/nirfsa/waveform_info.py create mode 100644 generated/nirfsa/setup.py create mode 100644 generated/nirfsa/tox-system_tests.ini diff --git a/generated/nirfsa/README.rst b/generated/nirfsa/README.rst new file mode 100644 index 000000000..32642a54d --- /dev/null +++ b/generated/nirfsa/README.rst @@ -0,0 +1,181 @@ +Overall Status +-------------- + ++----------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| master branch status | |BuildStatus| |MITLicense| |CoverageStatus| | ++----------------------+------------------------------------------------------------------------------------------------------------------------------------+ +| GitHub status | |OpenIssues| |OpenPullRequests| | ++----------------------+------------------------------------------------------------------------------------------------------------------------------------+ + +=========== ============================================================================================================================ +Info NI Modular Instrument driver APIs for Python. +Author NI +=========== ============================================================================================================================ + +.. |BuildStatus| image:: https://api.travis-ci.com/ni/nimi-python.svg + :alt: Build Status - master branch + :target: https://travis-ci.org/ni/nimi-python + +.. |MITLicense| image:: https://img.shields.io/badge/License-MIT-yellow.svg + :alt: MIT License + :target: https://opensource.org/licenses/MIT + +.. |CoverageStatus| image:: https://codecov.io/github/ni/nimi-python/graph/badge.svg + :alt: Test Coverage - master branch + :target: https://codecov.io/github/ni/nimi-python + +.. |OpenIssues| image:: https://img.shields.io/github/issues/ni/nimi-python.svg + :alt: Open Issues + Pull Requests + :target: https://github.com/ni/nimi-python/issues + +.. |OpenPullRequests| image:: https://img.shields.io/github/issues-pr/ni/nimi-python.svg + :alt: Open Pull Requests + :target: https://github.com/ni/nimi-python/pulls + + +.. _about-section: + +About +===== + +The **nirfsa** module provides a Python API for NI-RFSA. The code is maintained in the Open Source repository for `nimi-python `_. + +Support Policy +-------------- +**nirfsa** supports all the Operating Systems supported by NI-RFSA. + +It follows `Python Software Foundation `_ support policy for different versions of CPython. + +NI created and supports **nirfsa**. + + +NI-RFSA Python API Status +------------------------- + ++-------------------------------+-----------------------+ +| NI-RFSA (nirfsa) | | ++===============================+=======================+ +| Driver Version Tested Against | 2026 Q3 | ++-------------------------------+-----------------------+ +| PyPI Version | |nirfsaLatestVersion| | ++-------------------------------+-----------------------+ +| Supported Python Version | |nirfsaPythonVersion| | ++-------------------------------+-----------------------+ +| Documentation | |nirfsaDocs| | ++-------------------------------+-----------------------+ +| Open Issues | |nirfsaOpenIssues| | ++-------------------------------+-----------------------+ +| Open Pull Requests | |nirfsaOpenPRs| | ++-------------------------------+-----------------------+ + + +.. |nirfsaLatestVersion| image:: http://img.shields.io/pypi/v/nirfsa.svg + :alt: Latest NI-RFSA Version + :target: http://pypi.python.org/pypi/nirfsa + + +.. |nirfsaPythonVersion| image:: http://img.shields.io/pypi/pyversions/nirfsa.svg + :alt: NI-RFSA supported Python versions + :target: http://pypi.python.org/pypi/nirfsa + + +.. |nirfsaDocs| image:: https://readthedocs.org/projects/nirfsa/badge/?version=latest + :alt: NI-RFSA Python API Documentation Status + :target: https://nirfsa.readthedocs.io/en/latest + + +.. |nirfsaOpenIssues| image:: https://img.shields.io/github/issues/ni/nimi-python/nirfsa.svg + :alt: Open Issues + Pull Requests for NI-RFSA + :target: https://github.com/ni/nimi-python/issues?q=is%3Aopen+is%3Aissue+label%3Anirfsa + + +.. |nirfsaOpenPRs| image:: https://img.shields.io/github/issues-pr/ni/nimi-python/nirfsa.svg + :alt: Pull Requests for NI-RFSA + :target: https://github.com/ni/nimi-python/pulls?q=is%3Aopen+is%3Aissue+label%3Anirfsa + + + +.. _nirfsa_installation-section: + +Installation +------------ + +As a prerequisite to using the **nirfsa** module, you must install the NI-RFSA runtime on your system. Visit `ni.com/downloads `_ to download the driver runtime for your devices. + +The nimi-python modules (i.e. for **NI-RFSA**) can be installed with `pip `_:: + + $ python -m pip install nirfsa + + +Contributing +============ + +We welcome contributions! You can clone the project repository, build it, and install it by `following these instructions `_. + +Usage +------ + +The following is a basic example of using the **nirfsa** module to open a session to an RF Signal Analyzer and perform a spectrum acquisition. + +.. code-block:: python + + import nirfsa + + # Configure the session + with nirfsa.Session(resource_name=resource_name, id_query=False, reset_device=False, options=options) as rfsa_session: + rfsa_session.acquisition_type = nirfsa.AcquisitionType.IQ + + rfsa_session.reference_level = -10 + rfsa_session.iq_carrier_frequency = 1e9 + rfsa_session.number_of_samples = 1024 + rfsa_session.iq_rate = 1e6 + + iq_data_array = np.zeros(number_of_samples, dtype=np.complex128) + + wfm_info = rfsa_session.read_iq_single_record_into(iq_data_array) + # Perform measurements... + +`Other usage examples can be found on GitHub. `_ +.. _support-section: + +Support / Feedback +================== + +For support specific to the Python API, follow the processs in `Bugs / Feature Requests`_. +For support with hardware, the driver runtime or any other questions not specific to the Python API, please visit `NI Community Forums `_. + +.. _bugs-section: + +Bugs / Feature Requests +======================= + +To report a bug or submit a feature request specific to Python API, please use the +`GitHub issues page `_. + +Fill in the issue template as completely as possible and we will respond as soon +as we can. + + +.. _documentation-section: + +Documentation +============= + +Documentation is available `here `_. + + +.. _license-section: + +License +======= + +**nimi-python** is licensed under an MIT-style license (`see +LICENSE `_). +Other incorporated projects may be licensed under different licenses. All +licenses allow for non-commercial and commercial use. + + +**gRPC Features** + +For driver APIs that support it, passing a GrpcSessionOptions instance as a parameter to Session.__init__() is +subject to the NI General Purpose EULA (`see NILICENSE `_). \ No newline at end of file diff --git a/generated/nirfsa/nirfsa/VERSION b/generated/nirfsa/nirfsa/VERSION new file mode 100644 index 000000000..104bdadad --- /dev/null +++ b/generated/nirfsa/nirfsa/VERSION @@ -0,0 +1,2 @@ +1.0.0.dev0 + diff --git a/generated/nirfsa/nirfsa/__init__.py b/generated/nirfsa/nirfsa/__init__.py new file mode 100644 index 000000000..465467861 --- /dev/null +++ b/generated/nirfsa/nirfsa/__init__.py @@ -0,0 +1,114 @@ +# -*- coding: utf-8 -*- +# This file was generated + + +__version__ = '1.0.0.dev0' + +from nirfsa.enums import * # noqa: F403,F401,H303 +from nirfsa.errors import DriverWarning # noqa: F401 +from nirfsa.errors import Error # noqa: F401 +from nirfsa.session import Session # noqa: F401 + +from nirfsa.coefficient_info_type import CoefficientInfo # noqa: F401 + +from nirfsa.coefficient_info_type import struct_niRFSA_coefficientInfo # noqa: F401 + +from nirfsa.waveform_info import WaveformInfo # noqa: F401 + +from nirfsa.waveform_info import struct_niRFSA_wfmInfo # noqa: F401 + +from nirfsa.spectrum_info_type import SpectrumInfo # noqa: F401 + +from nirfsa.spectrum_info_type import struct_niRFSA_spectrumInfo # noqa: F401 + + +def get_diagnostic_information(): + '''Get diagnostic information about the system state that is suitable for printing or logging + + returns: dict + + note: Python bitness may be incorrect when running in a virtual environment + ''' + import importlib.metadata + import os + import platform + import struct + import sys + + def is_python_64bit(): + return (struct.calcsize("P") == 8) + + def is_os_64bit(): + return platform.machine().endswith('64') + + def is_venv(): + return 'VIRTUAL_ENV' in os.environ + + info = {} + info['os'] = {} + info['python'] = {} + info['driver'] = {} + info['module'] = {} + if platform.system() == 'Windows': + try: + import winreg as winreg + except ImportError: + import _winreg as winreg + + os_name = 'Windows' + try: + driver_version_key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\National Instruments\NI-RFSA\CurrentVersion") + driver_version = winreg.QueryValueEx(driver_version_key, "Version")[0] + except WindowsError: + driver_version = 'Unknown' + elif platform.system() == 'Linux': + os_name = 'Linux' + driver_version = 'Unknown' + else: + raise SystemError('Unsupported platform: {}'.format(platform.system())) + + installed_packages_names = [ + name + for name_list in importlib.metadata.packages_distributions().values() + for name in name_list + ] + installed_packages_names = set(installed_packages_names) + installed_packages_list = [ + {'name': name, 'version': importlib.metadata.distribution(name).version} + for name in sorted(installed_packages_names) + ] + + info['os']['name'] = os_name + info['os']['version'] = platform.version() + info['os']['bits'] = '64' if is_os_64bit() else '32' + info['driver']['name'] = "NI-RFSA" + info['driver']['version'] = driver_version + info['module']['name'] = 'nirfsa' + info['module']['version'] = "1.0.0.dev0" + info['python']['version'] = sys.version + info['python']['bits'] = '64' if is_python_64bit() else '32' + info['python']['is_venv'] = is_venv() + info['python']['packages'] = installed_packages_list + + return info + + +def print_diagnostic_information(): + '''Print diagnostic information in a format suitable for issue report + + note: Python bitness may be incorrect when running in a virtual environment + ''' + info = get_diagnostic_information() + + row_format = ' {:<10} {}' + for type in ['OS', 'Driver', 'Module', 'Python']: + typename = type.lower() + print(type + ':') + for item in info[typename]: + if item != 'packages': + print(row_format.format(item.title() + ':', info[typename][item])) + print(' Installed Packages:') + for p in info['python']['packages']: + print((' ' * 8) + p['name'] + '==' + p['version']) + + return info diff --git a/generated/nirfsa/nirfsa/_attributes.py b/generated/nirfsa/nirfsa/_attributes.py new file mode 100644 index 000000000..198c45af1 --- /dev/null +++ b/generated/nirfsa/nirfsa/_attributes.py @@ -0,0 +1,167 @@ +# -*- coding: utf-8 -*- +# This file was generated +import nirfsa._converters as _converters +import nirfsa.errors as errors + +import hightime + + +class Attribute(object): + '''Base class for all typed attributes.''' + + def __init__(self, attribute_id): + self._attribute_id = attribute_id + + +class AttributeViInt32(Attribute): + + def __get__(self, session, session_type): + return session._get_attribute_vi_int32(self._attribute_id) + + def __set__(self, session, value): + session._set_attribute_vi_int32(self._attribute_id, value) + + +class AttributeViInt32TimeDeltaMilliseconds(Attribute): + + def __get__(self, session, session_type): + return hightime.timedelta(milliseconds=session._get_attribute_vi_int32(self._attribute_id)) + + def __set__(self, session, value): + session._set_attribute_vi_int32(self._attribute_id, _converters.convert_timedelta_to_milliseconds_int32(value)) + + +class AttributeViInt32TimeDeltaMonths(Attribute): + + def __get__(self, session, session_type): + return _converters.convert_month_to_timedelta(session._get_attribute_vi_int32(self._attribute_id)) + + def __set__(self, session, value): + session._set_attribute_vi_int32(self._attribute_id, _converters.convert_timedelta_to_months_int32(value)) + + +class AttributeViInt64(Attribute): + + def __get__(self, session, session_type): + return session._get_attribute_vi_int64(self._attribute_id) + + def __set__(self, session, value): + session._set_attribute_vi_int64(self._attribute_id, value) + + +class AttributeViReal64(Attribute): + + def __get__(self, session, session_type): + return session._get_attribute_vi_real64(self._attribute_id) + + def __set__(self, session, value): + session._set_attribute_vi_real64(self._attribute_id, value) + + +class AttributeViReal64TimeDeltaSeconds(Attribute): + + def __get__(self, session, session_type): + return hightime.timedelta(seconds=session._get_attribute_vi_real64(self._attribute_id)) + + def __set__(self, session, value): + session._set_attribute_vi_real64(self._attribute_id, _converters.convert_timedelta_to_seconds_real64(value)) + + +class AttributeViString(Attribute): + + def __get__(self, session, session_type): + return session._get_attribute_vi_string(self._attribute_id) + + def __set__(self, session, value): + session._set_attribute_vi_string(self._attribute_id, value) + + +class AttributeViStringRepeatedCapability(Attribute): + + def __get__(self, session, session_type): + return session._get_attribute_vi_string(self._attribute_id) + + def __set__(self, session, value): + session._set_attribute_vi_string(self._attribute_id, _converters.convert_repeated_capabilities_without_prefix(value)) + + +class AttributeViStringCommaSeparated(Attribute): + + def __get__(self, session, session_type): + return _converters.convert_comma_separated_string_to_list(session._get_attribute_vi_string(self._attribute_id)) + + def __set__(self, session, value): + session._set_attribute_vi_string(self._attribute_id, _converters.convert_list_to_comma_separated_string(value)) + + +class AttributeViBoolean(Attribute): + + def __get__(self, session, session_type): + return session._get_attribute_vi_boolean(self._attribute_id) + + def __set__(self, session, value): + session._set_attribute_vi_boolean(self._attribute_id, value) + + +class AttributeEnum(Attribute): + + def __init__(self, underlying_attribute_meta_class, enum_meta_class, attribute_id): + super(AttributeEnum, self).__init__(attribute_id) + self._underlying_attribute = underlying_attribute_meta_class(attribute_id) + self._attribute_type = enum_meta_class + + def __get__(self, session, session_type): + return self._attribute_type(self._underlying_attribute.__get__(session, session_type)) + + def __set__(self, session, value): + if type(value) is not self._attribute_type: + raise TypeError('must be ' + str(self._attribute_type.__name__) + ' not ' + str(type(value).__name__)) + return self._underlying_attribute.__set__(session, value.value) + + +class AttributeEnumWithConverter(Attribute): + '''Class for attributes that use enums internally but are exposed in the nirfsa Python module as something else, thus need conversion.''' + + def __init__(self, underlying_attribute_enum, getter_converter, setter_converter): + '''Creates and returns an instance of AttributeEnumWithConverter attribute meta class. + + Args: + underlying_attribute_enum (AttributeEnum): The AttributeEnum instance for the underlying + enum + + getter_converter (function): The function that converts the enum value to its converted + value + + setter_converter (function): The function that converts the converted value back to the + enum value + ''' + super(AttributeEnumWithConverter, self).__init__(underlying_attribute_enum._attribute_id) + self._underlying_attribute_enum = underlying_attribute_enum + self._getter_converter = getter_converter + self._setter_converter = setter_converter + + def __get__(self, session, session_type): + try: + return self._getter_converter( + self._underlying_attribute_enum.__get__(session, session_type) + ) + except (KeyError, ValueError): + raise errors.DriverTooNewError() + + def __set__(self, session, value): + try: + return self._underlying_attribute_enum.__set__(session, self._setter_converter(value)) + except KeyError: + raise ValueError(f'Invalid value: {value}') + + +# nitclk specific attribute type +class AttributeSessionReference(Attribute): + + def __get__(self, session, session_type): + # Import here to avoid a circular dependency when initial import happens + from nirfsa.session import SessionReference + return SessionReference(session._get_attribute_vi_session(self._attribute_id)) + + def __set__(self, session, value): + session._set_attribute_vi_session(self._attribute_id, _converters.convert_to_nitclk_session_number(value)) diff --git a/generated/nirfsa/nirfsa/_complextype.py b/generated/nirfsa/nirfsa/_complextype.py new file mode 100644 index 000000000..fbf340730 --- /dev/null +++ b/generated/nirfsa/nirfsa/_complextype.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# This file was generated +import ctypes +import nirfsa._visatype as _visatype + + +class NIComplexNumber(ctypes.Structure): + _fields_ = [("real", _visatype.ViReal64), ("imag", _visatype.ViReal64)] + + +class NIComplexNumberF32(ctypes.Structure): + _fields_ = [("real", _visatype.ViReal32), ("imag", _visatype.ViReal32)] + + +class NIComplexI16(ctypes.Structure): + _fields_ = [("real", _visatype.ViInt16), ("imag", _visatype.ViInt16)] diff --git a/generated/nirfsa/nirfsa/_converters.py b/generated/nirfsa/nirfsa/_converters.py new file mode 100644 index 000000000..03b820e26 --- /dev/null +++ b/generated/nirfsa/nirfsa/_converters.py @@ -0,0 +1,365 @@ +# -*- coding: utf-8 -*- +# This file was generated +import nirfsa._visatype as _visatype +import nirfsa.errors as errors + +import array +import collections +import hightime +import numbers + +from functools import singledispatch + + +@singledispatch +def _convert_repeated_capabilities(arg, prefix): # noqa: F811 + '''Base version that should not be called + + Overall purpose is to convert the repeated capabilities to a list of strings with prefix from what ever form + + Supported types: + - str - List (comma delimited) + - str - Range (using '-' or ':') + - str - single item + - int + - tuple + - range + - slice + + Each instance should return a list of strings, without prefix + - '0' --> ['0'] + - 0 --> ['0'] + - '0, 1' --> ['0', '1'] + - 'ScriptTrigger0, ScriptTrigger1' --> ['0', '1'] + - '0-1' --> ['0', '1'] + - '0:1' --> ['0', '1'] + - '0-1,4' --> ['0', '1', '4'] + - range(0, 2) --> ['0', '1'] + - slice(0, 2) --> ['0', '1'] + - (0, 1, 4) --> ['0', '1', '4'] + - ('0-1', 4) --> ['0', '1', '4'] + - (slice(0, 1), '2', [4, '5-6'], '7-9', '11:14', '16, 17') --> + ['0', '2', '4', '5', '6', '7', '8', '9', '11', '12', '13', '14', '16', '17'] + ''' + raise errors.InvalidRepeatedCapabilityError('Invalid type', type(arg)) + + +@_convert_repeated_capabilities.register(numbers.Integral) # noqa: F811 +def _(repeated_capability, prefix): + '''Integer version''' + return [str(repeated_capability)] + + +# This parsing function duplicate the parsing in the driver, so if changes to the allowed format are made there, they will need to be replicated here. +@_convert_repeated_capabilities.register(str) # noqa: F811 +def _(repeated_capability, prefix): + '''String version (this is the most complex) + + We need to deal with a range ('0-3' or '0:3'), a list ('0,1,2,3') and a single item + ''' + # First we deal with a list + rep_cap_list = repeated_capability.split(',') + if len(rep_cap_list) > 1: + # We have a list so call ourselves again to let the iterable instance handle it + return _convert_repeated_capabilities(rep_cap_list, prefix) + + # Now we deal with ranges + # We remove any prefix and change ':' to '-' + r = repeated_capability.strip().replace(prefix, '').replace(':', '-') + rc = r.split('-') + if len(rc) > 1: + if len(rc) > 2: + raise errors.InvalidRepeatedCapabilityError("Multiple '-' or ':'", repeated_capability) + try: + start = int(rc[0]) + end = int(rc[1]) + except ValueError: + # This exception is raised when repeated_capability is of the form "dev/0-1". rc[0] == "dev/0" in this case. + # Just return the repeated_capability string as-is in that case. + pass + else: + if end < start: + rng = range(start, end - 1, -1) + else: + rng = range(start, end + 1) + return _convert_repeated_capabilities(rng, prefix) + + # If we made it here, it must be a simple item so we remove any prefix and return + return [repeated_capability.replace(prefix, '').strip()] + + +# We cannot use collections.abc.Iterable here because strings are also iterable and then this +# instance is what gets called instead of the string one. +@_convert_repeated_capabilities.register(list) # noqa: F811 +@_convert_repeated_capabilities.register(range) # noqa: F811 +@_convert_repeated_capabilities.register(tuple) # noqa: F811 +def _(repeated_capability, prefix): + '''Iterable version - can handle lists, ranges, and tuples''' + rep_cap_list = [] + for r in repeated_capability: + rep_cap_list += _convert_repeated_capabilities(r, prefix) + return rep_cap_list + + +@_convert_repeated_capabilities.register(slice) # noqa: F811 +def _(repeated_capability, prefix): + '''slice version''' + def ifnone(a, b): + return b if a is None else a + # Turn the slice into a list and call ourselves again to let the iterable instance handle it + rng = range(ifnone(repeated_capability.start, 0), repeated_capability.stop, ifnone(repeated_capability.step, 1)) + return _convert_repeated_capabilities(rng, prefix) + + +def convert_repeated_capabilities(repeated_capability, prefix=''): + '''Convert a repeated capabilities object to a comma delimited list + + Args: + repeated_capability (str, list, tuple, slice, None) - + prefix (str) - common prefix for all strings + + Returns: + rep_cap_list (list of str) - list of each repeated capability item with ranges expanded and prefix added + ''' + # We need to explicitly handle None here. Everything else we can pass on to the singledispatch functions + if repeated_capability is None: + return [] + return [prefix + r for r in _convert_repeated_capabilities(repeated_capability, prefix)] + + +def convert_repeated_capabilities_without_prefix(repeated_capability): + '''Convert a repeated capabilities object, without any prefix, to a comma delimited list + + Args: + repeated_capability - Supported types: + - str - list (comma-delimited) + - str - range (using '-' or ':') + - str - single item + - int + - list of str + - tuple of str + - range of str + - slice of str + - None + + Returns: + rep_cap (str) - comma delimited string of each repeated capability item with ranges expanded + ''' + return ','.join(convert_repeated_capabilities(repeated_capability, '')) + + +def expand_channel_string(channel_string, all_channels_in_session): + '''Expands a channel_string to a list of individual channel names. + + The individual channel names may or may not be fully qualified channel names as applicable for + the session. In other words, the individual channel names will be a subset of + all_channels_in_session. + + Examples: + - expand_channel_string('1', ['0', '1', '2', '3']) --> ['1'] + - expand_channel_string('4,1:2', ['1', '2', '4']) --> ['4', '1', '2'] + - expand_channel_string('2:3,0', ['Dev1/0', 'Dev1/1', 'Dev1/2', 'Dev1/3']) + --> ['Dev1/2', 'Dev1/3', 'Dev1/0'] + - expand_channel_string('Dev1/1', ['Dev1/0', 'Dev1/1', 'Dev1/2', 'Dev1/3']) + --> ['Dev1/1'] + - expand_channel_string('4,Dev1/1:2', ['Dev1/1', 'Dev1/2', 'Dev1/4']) + --> ['Dev1/4', 'Dev1/1', 'Dev1/2'] + - expand_channel_string('Dev1/4,Dev1/2,Dev1/3', ['Dev1/2', 'Dev1/3', 'Dev1/4']) + --> ['Dev1/4', 'Dev1/2', 'Dev1/3'] + - expand_channel_string('Dev1/1,Dev2/2', ['Dev1/0', 'Dev1/1', 'Dev1/2', 'Dev1/3', 'Dev2/0', 'Dev2/1', 'Dev2/2', 'Dev2/3']) + --> ['Dev1/1', 'Dev2/2'] + - expand_channel_string(' Dev1 / 1 : 2 , 4 ', ['Dev1/1', 'Dev1/2', 'Dev1/4']) + --> ['Dev1/1', 'Dev1/2', 'Dev1/4'] + - expand_channel_string('DEV1/0-1 , Dev1/3', ['dev1/0', 'dev1/1', 'dev1/2', 'dev1/3']) + --> ['dev1/0', 'dev1/1', 'dev1/3'] + + Args: + channel_string (str) - refer to _convert_repeated_capabilities() for the + supported formats (this string is expected to be used as the index of session.channels) + + all_channels_in_session (list of str) - names of all the channels in the session as returned + by get_channel_names() + + Returns: + channel_names (list of str) - A list in which each element is the name of a single channel, + with the exact capitalization used by the driver runtime. + ''' + if channel_string.strip() == '': + return all_channels_in_session + + # Rule 1: If all_channels_in_session is fully-qualified then returned channel names should be + # fully-qualified, otherwise returned channel names should not be fully-qualified. + # Rule 2: If any channel in the input is not fully-qualified, but we need to return + # fully-qualified channels because of Rule 1, then use the channel qualifier obtained + # from all_channels_in_session. This can only happen on a single-instrument session, + # so all the channel qualifiers are the same and we pick the first one. + + instrument, separator, channel = all_channels_in_session[0].rpartition('/') + default_channel_qualifier = instrument + separator + + expanded_channel_list = [] + for token in channel_string.split(','): + instrument, separator, channel = token.rpartition('/') + instrument = instrument.strip() + channel_qualifier = instrument + separator if instrument else default_channel_qualifier + expanded_channel_list.extend( + convert_repeated_capabilities(channel.strip(), channel_qualifier) + ) + + # Convert the expanded channel names to their canonical form based on all_channels_in_session + lowercase_channel_name_to_session_channel_name_dict = { + channel_name.lower(): channel_name for channel_name in all_channels_in_session + } + return [ + lowercase_channel_name_to_session_channel_name_dict[channel_name.lower()] + for channel_name in expanded_channel_list + ] + + +def _convert_timedelta(value, library_type, scaling): + try: + # We first assume it is a timedelta object + scaled_value = value.total_seconds() * scaling + except AttributeError: + # If that doesn't work, assume it is a value in seconds + # cast to float so scaled_value is always a float. This allows `timeout=10` to work as expected + scaled_value = float(value) * scaling + + # ctype integer types don't convert to int from float so we need to + if library_type in [_visatype.ViInt64, _visatype.ViInt32, _visatype.ViUInt32, _visatype.ViInt16, _visatype.ViUInt16, _visatype.ViInt8]: + scaled_value = int(scaled_value) + + return scaled_value + + +def convert_timedelta_to_seconds_real64(value): + return _convert_timedelta(value, _visatype.ViReal64, 1) + + +def convert_timedelta_to_milliseconds_int32(value): + return _convert_timedelta(value, _visatype.ViInt32, 1000) + + +def convert_timedeltas_to_seconds_real64(values): + return [convert_timedelta_to_seconds_real64(i) for i in values] + + +def convert_seconds_real64_to_timedelta(value): + return hightime.timedelta(seconds=value) + + +def convert_seconds_real64_to_timedeltas(values): + return [convert_seconds_real64_to_timedelta(i) for i in values] + + +def convert_month_to_timedelta(months): + return hightime.timedelta(days=(30.4167 * months)) + + +# Scaling factor to apply on seconds to get months +# would be 1/(60 seconds * 60 minutes * 24 hours * 30.4167 days) +def convert_timedelta_to_months_int32(value): + return _convert_timedelta(value, _visatype.ViInt32, 1.0 / (60 * 60 * 24 * 30.4167)) + + +# This converter is not called from the normal codegen path for function. Instead it is +# call from init and is a special case. +def convert_init_with_options_dictionary(values): + if type(values) is str: + init_with_options_string = values + else: + good_keys = { + 'rangecheck': 'RangeCheck', + 'queryinstrstatus': 'QueryInstrStatus', + 'cache': 'Cache', + 'simulate': 'Simulate', + 'recordcoercions': 'RecordCoercions', + 'interchangecheck': 'InterchangeCheck', + 'driversetup': 'DriverSetup', + 'range_check': 'RangeCheck', + 'query_instr_status': 'QueryInstrStatus', + 'record_coercions': 'RecordCoercions', + 'interchange_check': 'InterchangeCheck', + 'driver_setup': 'DriverSetup', + } + init_with_options = [] + for k in sorted(values.keys()): + value = None + if k.lower() in good_keys and not good_keys[k.lower()] == 'DriverSetup': + value = good_keys[k.lower()] + ('=1' if values[k] is True else '=0') + elif k.lower() in good_keys and good_keys[k.lower()] == 'DriverSetup': + if not isinstance(values[k], dict): + raise TypeError('DriverSetup must be a dictionary') + value = 'DriverSetup=' + (';'.join([key + ':' + values[k][key] for key in sorted(values[k])])) + else: + value = k + ('=1' if values[k] is True else '=0') + + init_with_options.append(value) + + init_with_options_string = ','.join(init_with_options) + + return init_with_options_string + + +# convert value to bytes +@singledispatch +def _convert_to_bytes(value): # noqa: F811 + pass + + +@_convert_to_bytes.register(list) # noqa: F811 +@_convert_to_bytes.register(bytes) # noqa: F811 +@_convert_to_bytes.register(bytearray) # noqa: F811 +@_convert_to_bytes.register(array.array) # noqa: F811 +def _(value): + return value + + +@_convert_to_bytes.register(str) # noqa: F811 +def _(value): + return value.encode() + + +def convert_to_bytes(value): # noqa: F811 + return bytes(_convert_to_bytes(value)) + + +def convert_comma_separated_string_to_list(comma_separated_string): + return [x.strip() for x in comma_separated_string.split(',')] + + +def convert_list_to_comma_separated_string(list_of_strings): + '''Convert a list or tuple of strings into a comma-separated string. + + Args: + list_of_strings (list or tuple of str): List or tuple of strings. + + Returns: + str: Comma-separated string. + ''' + if not isinstance(list_of_strings, (list, tuple)) or not all(isinstance(item, str) for item in list_of_strings): + raise TypeError('Input must be a list or tuple of str') + return ','.join(list_of_strings) + + +def convert_chained_repeated_capability_to_parts(chained_repeated_capability): + '''Convert a chained repeated capabilities string to a list of comma-delimited repeated capabilities string. + + Converter assumes that the input contains the full cartesian product of its parts. + e.g. If chained_repeated_capability is 'site0/PinA,site0/PinB,site1/PinA,site1/PinB', + ['site0,site1', 'PinA,PinB'] is returned. + + Args: + chained_repeated_capability (str) - comma-delimited repeated capabilities string where each + item is a chain of slash-delimited repeated capabilities + + Returns: + rep_cap_list (list of str) - list of comma-delimited repeated capabilities string + ''' + chained_repeated_capability_items = convert_comma_separated_string_to_list(chained_repeated_capability) + repeated_capability_lists = [[] for _ in range(chained_repeated_capability_items[0].count('/') + 1)] + for item in chained_repeated_capability_items: + repeated_capability_lists = [x + [y] for x, y in zip(repeated_capability_lists, item.split('/'))] + return [','.join(collections.OrderedDict.fromkeys(x)) for x in repeated_capability_lists] + + diff --git a/generated/nirfsa/nirfsa/_library.py b/generated/nirfsa/nirfsa/_library.py new file mode 100644 index 000000000..c5a2bebf1 --- /dev/null +++ b/generated/nirfsa/nirfsa/_library.py @@ -0,0 +1,701 @@ +# -*- coding: utf-8 -*- +# This file was generated + +import ctypes +import nirfsa.errors as errors +import threading + +from nirfsa._complextype import * # noqa: F403 +from nirfsa._visatype import * # noqa: F403,H303 + +import nirfsa.coefficient_info_type as coefficient_info_type # noqa: F401 + +import nirfsa.waveform_info as waveform_info # noqa: F401 + +import nirfsa.spectrum_info_type as spectrum_info_type # noqa: F401 + + +class Library(object): + '''Library + + Wrapper around driver library. + Class will setup the correct ctypes information for every function on first call. + ''' + + def __init__(self, ctypes_library): + self._func_lock = threading.Lock() + self._library = ctypes_library + # We cache the cfunc object from the ctypes.CDLL object + self.niRFSA_Abort_cfunc = None + self.niRFSA_ChangeExternalCalibrationPassword_cfunc = None + self.niRFSA_CheckAcquisitionStatus_cfunc = None + self.niRFSA_ClearSelfCalibrateRange_cfunc = None + self.niRFSA_Commit_cfunc = None + self.niRFSA_ConfigureDeembeddingTableInterpolationLinear_cfunc = None + self.niRFSA_ConfigureDeembeddingTableInterpolationNearest_cfunc = None + self.niRFSA_ConfigureDeembeddingTableInterpolationSpline_cfunc = None + self.niRFSA_ConfigureDigitalEdgeAdvanceTrigger_cfunc = None + self.niRFSA_ConfigureDigitalEdgeRefTrigger_cfunc = None + self.niRFSA_ConfigureDigitalEdgeStartTrigger_cfunc = None + self.niRFSA_ConfigureIQPowerEdgeRefTrigger_cfunc = None + self.niRFSA_ConfigureRefClock_cfunc = None + self.niRFSA_ConfigureSoftwareEdgeAdvanceTrigger_cfunc = None + self.niRFSA_ConfigureSoftwareEdgeRefTrigger_cfunc = None + self.niRFSA_ConfigureSoftwareEdgeStartTrigger_cfunc = None + self.niRFSA_ConfigureSpectrumFrequencyCenterSpan_cfunc = None + self.niRFSA_ConfigureSpectrumFrequencyStartStop_cfunc = None + self.niRFSA_CreateDeembeddingSparameterTableArray_cfunc = None + self.niRFSA_CreateDeembeddingSparameterTableS2PFile_cfunc = None + self.niRFSA_DeleteAllDeembeddingTables_cfunc = None + self.niRFSA_DeleteDeembeddingTable_cfunc = None + self.niRFSA_DisableAdvanceTrigger_cfunc = None + self.niRFSA_DisableRefTrigger_cfunc = None + self.niRFSA_DisableStartTrigger_cfunc = None + self.niRFSA_EnableSessionAccess_cfunc = None + self.niRFSA_ErrorMessage_cfunc = None + self.niRFSA_FetchIQMultiRecordComplexF32_cfunc = None + self.niRFSA_FetchIQMultiRecordComplexF64_cfunc = None + self.niRFSA_FetchIQMultiRecordComplexI16_cfunc = None + self.niRFSA_FetchIQSingleRecordComplexF32_cfunc = None + self.niRFSA_FetchIQSingleRecordComplexF64_cfunc = None + self.niRFSA_FetchIQSingleRecordComplexI16_cfunc = None + self.niRFSA_GetAttributeViBoolean_cfunc = None + self.niRFSA_GetAttributeViInt32_cfunc = None + self.niRFSA_GetAttributeViInt64_cfunc = None + self.niRFSA_GetAttributeViReal64_cfunc = None + self.niRFSA_GetAttributeViSession_cfunc = None + self.niRFSA_GetAttributeViString_cfunc = None + self.niRFSA_GetDeembeddingSparameters_cfunc = None + self.niRFSA_GetDeembeddingTableNumberOfPorts_cfunc = None + self.niRFSA_GetError_cfunc = None + self.niRFSA_GetExtCalLastDateAndTime_cfunc = None + self.niRFSA_GetExtCalRecommendedInterval_cfunc = None + self.niRFSA_GetFetchBacklog_cfunc = None + self.niRFSA_GetFrequencyResponse_cfunc = None + self.niRFSA_GetScalingCoefficients_cfunc = None + self.niRFSA_GetSelfCalLastDateAndTime_cfunc = None + self.niRFSA_GetSelfCalLastTemp_cfunc = None + self.niRFSA_GetTerminalName_cfunc = None + self.niRFSA_InitWithOptions_cfunc = None + self.niRFSA_Initiate_cfunc = None + self.niRFSA_IsSelfCalValid_cfunc = None + self.niRFSA_LoadConfigurationsFromFile_cfunc = None + self.niRFSA_LockSession_cfunc = None + self.niRFSA_PerformThermalCorrection_cfunc = None + self.niRFSA_ReadIQSingleRecordComplexF64_cfunc = None + self.niRFSA_ReadPowerSpectrumF32_cfunc = None + self.niRFSA_ReadPowerSpectrumF64_cfunc = None + self.niRFSA_ResetDevice_cfunc = None + self.niRFSA_ResetWithOptions_cfunc = None + self.niRFSA_SaveConfigurationsToFile_cfunc = None + self.niRFSA_SelfCalibrateRange_cfunc = None + self.niRFSA_SendSoftwareEdgeTrigger_cfunc = None + self.niRFSA_SetAttributeViBoolean_cfunc = None + self.niRFSA_SetAttributeViInt32_cfunc = None + self.niRFSA_SetAttributeViInt64_cfunc = None + self.niRFSA_SetAttributeViReal64_cfunc = None + self.niRFSA_SetAttributeViSession_cfunc = None + self.niRFSA_SetAttributeViString_cfunc = None + self.niRFSA_UnlockSession_cfunc = None + self.niRFSA_close_cfunc = None + self.niRFSA_reset_cfunc = None + self.niRFSA_self_test_cfunc = None + + def _get_library_function(self, name): + try: + function = getattr(self._library, name) + except AttributeError as e: + raise errors.DriverTooOldError() from e + return function + + def niRFSA_Abort(self, vi): # noqa: N802 + with self._func_lock: + if self.niRFSA_Abort_cfunc is None: + self.niRFSA_Abort_cfunc = self._get_library_function('niRFSA_Abort') + self.niRFSA_Abort_cfunc.argtypes = [ViSession] # noqa: F405 + self.niRFSA_Abort_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_Abort_cfunc(vi) + + def niRFSA_ChangeExternalCalibrationPassword(self, vi, old_password, new_password): # noqa: N802 + with self._func_lock: + if self.niRFSA_ChangeExternalCalibrationPassword_cfunc is None: + self.niRFSA_ChangeExternalCalibrationPassword_cfunc = self._get_library_function('niRFSA_ChangeExternalCalibrationPassword') + self.niRFSA_ChangeExternalCalibrationPassword_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ctypes.POINTER(ViChar)] # noqa: F405 + self.niRFSA_ChangeExternalCalibrationPassword_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ChangeExternalCalibrationPassword_cfunc(vi, old_password, new_password) + + def niRFSA_CheckAcquisitionStatus(self, vi, is_done): # noqa: N802 + with self._func_lock: + if self.niRFSA_CheckAcquisitionStatus_cfunc is None: + self.niRFSA_CheckAcquisitionStatus_cfunc = self._get_library_function('niRFSA_CheckAcquisitionStatus') + self.niRFSA_CheckAcquisitionStatus_cfunc.argtypes = [ViSession, ctypes.POINTER(ViBoolean)] # noqa: F405 + self.niRFSA_CheckAcquisitionStatus_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_CheckAcquisitionStatus_cfunc(vi, is_done) + + def niRFSA_ClearSelfCalibrateRange(self, vi): # noqa: N802 + with self._func_lock: + if self.niRFSA_ClearSelfCalibrateRange_cfunc is None: + self.niRFSA_ClearSelfCalibrateRange_cfunc = self._get_library_function('niRFSA_ClearSelfCalibrateRange') + self.niRFSA_ClearSelfCalibrateRange_cfunc.argtypes = [ViSession] # noqa: F405 + self.niRFSA_ClearSelfCalibrateRange_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ClearSelfCalibrateRange_cfunc(vi) + + def niRFSA_Commit(self, vi): # noqa: N802 + with self._func_lock: + if self.niRFSA_Commit_cfunc is None: + self.niRFSA_Commit_cfunc = self._get_library_function('niRFSA_Commit') + self.niRFSA_Commit_cfunc.argtypes = [ViSession] # noqa: F405 + self.niRFSA_Commit_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_Commit_cfunc(vi) + + def niRFSA_ConfigureDeembeddingTableInterpolationLinear(self, vi, port, table_name, format): # noqa: N802 + with self._func_lock: + if self.niRFSA_ConfigureDeembeddingTableInterpolationLinear_cfunc is None: + self.niRFSA_ConfigureDeembeddingTableInterpolationLinear_cfunc = self._get_library_function('niRFSA_ConfigureDeembeddingTableInterpolationLinear') + self.niRFSA_ConfigureDeembeddingTableInterpolationLinear_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ctypes.POINTER(ViChar), ViInt32] # noqa: F405 + self.niRFSA_ConfigureDeembeddingTableInterpolationLinear_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ConfigureDeembeddingTableInterpolationLinear_cfunc(vi, port, table_name, format) + + def niRFSA_ConfigureDeembeddingTableInterpolationNearest(self, vi, port, table_name): # noqa: N802 + with self._func_lock: + if self.niRFSA_ConfigureDeembeddingTableInterpolationNearest_cfunc is None: + self.niRFSA_ConfigureDeembeddingTableInterpolationNearest_cfunc = self._get_library_function('niRFSA_ConfigureDeembeddingTableInterpolationNearest') + self.niRFSA_ConfigureDeembeddingTableInterpolationNearest_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ctypes.POINTER(ViChar)] # noqa: F405 + self.niRFSA_ConfigureDeembeddingTableInterpolationNearest_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ConfigureDeembeddingTableInterpolationNearest_cfunc(vi, port, table_name) + + def niRFSA_ConfigureDeembeddingTableInterpolationSpline(self, vi, port, table_name): # noqa: N802 + with self._func_lock: + if self.niRFSA_ConfigureDeembeddingTableInterpolationSpline_cfunc is None: + self.niRFSA_ConfigureDeembeddingTableInterpolationSpline_cfunc = self._get_library_function('niRFSA_ConfigureDeembeddingTableInterpolationSpline') + self.niRFSA_ConfigureDeembeddingTableInterpolationSpline_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ctypes.POINTER(ViChar)] # noqa: F405 + self.niRFSA_ConfigureDeembeddingTableInterpolationSpline_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ConfigureDeembeddingTableInterpolationSpline_cfunc(vi, port, table_name) + + def niRFSA_ConfigureDigitalEdgeAdvanceTrigger(self, vi, source, edge): # noqa: N802 + with self._func_lock: + if self.niRFSA_ConfigureDigitalEdgeAdvanceTrigger_cfunc is None: + self.niRFSA_ConfigureDigitalEdgeAdvanceTrigger_cfunc = self._get_library_function('niRFSA_ConfigureDigitalEdgeAdvanceTrigger') + self.niRFSA_ConfigureDigitalEdgeAdvanceTrigger_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViInt32] # noqa: F405 + self.niRFSA_ConfigureDigitalEdgeAdvanceTrigger_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ConfigureDigitalEdgeAdvanceTrigger_cfunc(vi, source, edge) + + def niRFSA_ConfigureDigitalEdgeRefTrigger(self, vi, source, edge, pretrigger_samples): # noqa: N802 + with self._func_lock: + if self.niRFSA_ConfigureDigitalEdgeRefTrigger_cfunc is None: + self.niRFSA_ConfigureDigitalEdgeRefTrigger_cfunc = self._get_library_function('niRFSA_ConfigureDigitalEdgeRefTrigger') + self.niRFSA_ConfigureDigitalEdgeRefTrigger_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViInt32, ViInt64] # noqa: F405 + self.niRFSA_ConfigureDigitalEdgeRefTrigger_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ConfigureDigitalEdgeRefTrigger_cfunc(vi, source, edge, pretrigger_samples) + + def niRFSA_ConfigureDigitalEdgeStartTrigger(self, vi, source, edge): # noqa: N802 + with self._func_lock: + if self.niRFSA_ConfigureDigitalEdgeStartTrigger_cfunc is None: + self.niRFSA_ConfigureDigitalEdgeStartTrigger_cfunc = self._get_library_function('niRFSA_ConfigureDigitalEdgeStartTrigger') + self.niRFSA_ConfigureDigitalEdgeStartTrigger_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViInt32] # noqa: F405 + self.niRFSA_ConfigureDigitalEdgeStartTrigger_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ConfigureDigitalEdgeStartTrigger_cfunc(vi, source, edge) + + def niRFSA_ConfigureIQPowerEdgeRefTrigger(self, vi, source, level, slope, pretrigger_samples): # noqa: N802 + with self._func_lock: + if self.niRFSA_ConfigureIQPowerEdgeRefTrigger_cfunc is None: + self.niRFSA_ConfigureIQPowerEdgeRefTrigger_cfunc = self._get_library_function('niRFSA_ConfigureIQPowerEdgeRefTrigger') + self.niRFSA_ConfigureIQPowerEdgeRefTrigger_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViReal64, ViInt32, ViInt64] # noqa: F405 + self.niRFSA_ConfigureIQPowerEdgeRefTrigger_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ConfigureIQPowerEdgeRefTrigger_cfunc(vi, source, level, slope, pretrigger_samples) + + def niRFSA_ConfigureRefClock(self, vi, clock_source, ref_clock_rate): # noqa: N802 + with self._func_lock: + if self.niRFSA_ConfigureRefClock_cfunc is None: + self.niRFSA_ConfigureRefClock_cfunc = self._get_library_function('niRFSA_ConfigureRefClock') + self.niRFSA_ConfigureRefClock_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViReal64] # noqa: F405 + self.niRFSA_ConfigureRefClock_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ConfigureRefClock_cfunc(vi, clock_source, ref_clock_rate) + + def niRFSA_ConfigureSoftwareEdgeAdvanceTrigger(self, vi): # noqa: N802 + with self._func_lock: + if self.niRFSA_ConfigureSoftwareEdgeAdvanceTrigger_cfunc is None: + self.niRFSA_ConfigureSoftwareEdgeAdvanceTrigger_cfunc = self._get_library_function('niRFSA_ConfigureSoftwareEdgeAdvanceTrigger') + self.niRFSA_ConfigureSoftwareEdgeAdvanceTrigger_cfunc.argtypes = [ViSession] # noqa: F405 + self.niRFSA_ConfigureSoftwareEdgeAdvanceTrigger_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ConfigureSoftwareEdgeAdvanceTrigger_cfunc(vi) + + def niRFSA_ConfigureSoftwareEdgeRefTrigger(self, vi, pretrigger_samples): # noqa: N802 + with self._func_lock: + if self.niRFSA_ConfigureSoftwareEdgeRefTrigger_cfunc is None: + self.niRFSA_ConfigureSoftwareEdgeRefTrigger_cfunc = self._get_library_function('niRFSA_ConfigureSoftwareEdgeRefTrigger') + self.niRFSA_ConfigureSoftwareEdgeRefTrigger_cfunc.argtypes = [ViSession, ViInt64] # noqa: F405 + self.niRFSA_ConfigureSoftwareEdgeRefTrigger_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ConfigureSoftwareEdgeRefTrigger_cfunc(vi, pretrigger_samples) + + def niRFSA_ConfigureSoftwareEdgeStartTrigger(self, vi): # noqa: N802 + with self._func_lock: + if self.niRFSA_ConfigureSoftwareEdgeStartTrigger_cfunc is None: + self.niRFSA_ConfigureSoftwareEdgeStartTrigger_cfunc = self._get_library_function('niRFSA_ConfigureSoftwareEdgeStartTrigger') + self.niRFSA_ConfigureSoftwareEdgeStartTrigger_cfunc.argtypes = [ViSession] # noqa: F405 + self.niRFSA_ConfigureSoftwareEdgeStartTrigger_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ConfigureSoftwareEdgeStartTrigger_cfunc(vi) + + def niRFSA_ConfigureSpectrumFrequencyCenterSpan(self, vi, channel_list, center_frequency, span): # noqa: N802 + with self._func_lock: + if self.niRFSA_ConfigureSpectrumFrequencyCenterSpan_cfunc is None: + self.niRFSA_ConfigureSpectrumFrequencyCenterSpan_cfunc = self._get_library_function('niRFSA_ConfigureSpectrumFrequencyCenterSpan') + self.niRFSA_ConfigureSpectrumFrequencyCenterSpan_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViReal64, ViReal64] # noqa: F405 + self.niRFSA_ConfigureSpectrumFrequencyCenterSpan_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ConfigureSpectrumFrequencyCenterSpan_cfunc(vi, channel_list, center_frequency, span) + + def niRFSA_ConfigureSpectrumFrequencyStartStop(self, vi, channel_list, start_frequency, stop_frequency): # noqa: N802 + with self._func_lock: + if self.niRFSA_ConfigureSpectrumFrequencyStartStop_cfunc is None: + self.niRFSA_ConfigureSpectrumFrequencyStartStop_cfunc = self._get_library_function('niRFSA_ConfigureSpectrumFrequencyStartStop') + self.niRFSA_ConfigureSpectrumFrequencyStartStop_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViReal64, ViReal64] # noqa: F405 + self.niRFSA_ConfigureSpectrumFrequencyStartStop_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ConfigureSpectrumFrequencyStartStop_cfunc(vi, channel_list, start_frequency, stop_frequency) + + def niRFSA_CreateDeembeddingSparameterTableArray(self, vi, port, table_name, frequencies, frequencies_size, sparameter_table, sparameter_table_size, number_of_ports, sparameter_orientation): # noqa: N802 + with self._func_lock: + if self.niRFSA_CreateDeembeddingSparameterTableArray_cfunc is None: + self.niRFSA_CreateDeembeddingSparameterTableArray_cfunc = self._get_library_function('niRFSA_CreateDeembeddingSparameterTableArray') + self.niRFSA_CreateDeembeddingSparameterTableArray_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ctypes.POINTER(ViChar), ctypes.POINTER(ViReal64), ViInt32, ctypes.POINTER(NIComplexNumber), ViInt32, ViInt32, ViInt32] # noqa: F405 + self.niRFSA_CreateDeembeddingSparameterTableArray_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_CreateDeembeddingSparameterTableArray_cfunc(vi, port, table_name, frequencies, frequencies_size, sparameter_table, sparameter_table_size, number_of_ports, sparameter_orientation) + + def niRFSA_CreateDeembeddingSparameterTableS2PFile(self, vi, port, table_name, s2p_file_path, sparameter_orientation): # noqa: N802 + with self._func_lock: + if self.niRFSA_CreateDeembeddingSparameterTableS2PFile_cfunc is None: + self.niRFSA_CreateDeembeddingSparameterTableS2PFile_cfunc = self._get_library_function('niRFSA_CreateDeembeddingSparameterTableS2PFile') + self.niRFSA_CreateDeembeddingSparameterTableS2PFile_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ctypes.POINTER(ViChar), ctypes.POINTER(ViChar), ViInt32] # noqa: F405 + self.niRFSA_CreateDeembeddingSparameterTableS2PFile_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_CreateDeembeddingSparameterTableS2PFile_cfunc(vi, port, table_name, s2p_file_path, sparameter_orientation) + + def niRFSA_DeleteAllDeembeddingTables(self, vi): # noqa: N802 + with self._func_lock: + if self.niRFSA_DeleteAllDeembeddingTables_cfunc is None: + self.niRFSA_DeleteAllDeembeddingTables_cfunc = self._get_library_function('niRFSA_DeleteAllDeembeddingTables') + self.niRFSA_DeleteAllDeembeddingTables_cfunc.argtypes = [ViSession] # noqa: F405 + self.niRFSA_DeleteAllDeembeddingTables_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_DeleteAllDeembeddingTables_cfunc(vi) + + def niRFSA_DeleteDeembeddingTable(self, vi, port, table_name): # noqa: N802 + with self._func_lock: + if self.niRFSA_DeleteDeembeddingTable_cfunc is None: + self.niRFSA_DeleteDeembeddingTable_cfunc = self._get_library_function('niRFSA_DeleteDeembeddingTable') + self.niRFSA_DeleteDeembeddingTable_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ctypes.POINTER(ViChar)] # noqa: F405 + self.niRFSA_DeleteDeembeddingTable_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_DeleteDeembeddingTable_cfunc(vi, port, table_name) + + def niRFSA_DisableAdvanceTrigger(self, vi): # noqa: N802 + with self._func_lock: + if self.niRFSA_DisableAdvanceTrigger_cfunc is None: + self.niRFSA_DisableAdvanceTrigger_cfunc = self._get_library_function('niRFSA_DisableAdvanceTrigger') + self.niRFSA_DisableAdvanceTrigger_cfunc.argtypes = [ViSession] # noqa: F405 + self.niRFSA_DisableAdvanceTrigger_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_DisableAdvanceTrigger_cfunc(vi) + + def niRFSA_DisableRefTrigger(self, vi): # noqa: N802 + with self._func_lock: + if self.niRFSA_DisableRefTrigger_cfunc is None: + self.niRFSA_DisableRefTrigger_cfunc = self._get_library_function('niRFSA_DisableRefTrigger') + self.niRFSA_DisableRefTrigger_cfunc.argtypes = [ViSession] # noqa: F405 + self.niRFSA_DisableRefTrigger_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_DisableRefTrigger_cfunc(vi) + + def niRFSA_DisableStartTrigger(self, vi): # noqa: N802 + with self._func_lock: + if self.niRFSA_DisableStartTrigger_cfunc is None: + self.niRFSA_DisableStartTrigger_cfunc = self._get_library_function('niRFSA_DisableStartTrigger') + self.niRFSA_DisableStartTrigger_cfunc.argtypes = [ViSession] # noqa: F405 + self.niRFSA_DisableStartTrigger_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_DisableStartTrigger_cfunc(vi) + + def niRFSA_EnableSessionAccess(self, vi, enable): # noqa: N802 + with self._func_lock: + if self.niRFSA_EnableSessionAccess_cfunc is None: + self.niRFSA_EnableSessionAccess_cfunc = self._get_library_function('niRFSA_EnableSessionAccess') + self.niRFSA_EnableSessionAccess_cfunc.argtypes = [ViSession, ViBoolean] # noqa: F405 + self.niRFSA_EnableSessionAccess_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_EnableSessionAccess_cfunc(vi, enable) + + def niRFSA_ErrorMessage(self, vi, error_code, error_message): # noqa: N802 + with self._func_lock: + if self.niRFSA_ErrorMessage_cfunc is None: + self.niRFSA_ErrorMessage_cfunc = self._get_library_function('niRFSA_ErrorMessage') + self.niRFSA_ErrorMessage_cfunc.argtypes = [ViSession, ViStatus, ctypes.POINTER(ViChar)] # noqa: F405 + self.niRFSA_ErrorMessage_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ErrorMessage_cfunc(vi, error_code, error_message) + + def niRFSA_FetchIQMultiRecordComplexF32(self, vi, channel_list, starting_record, number_of_records, number_of_samples, timeout, iq_data_arrays, wfm_info): # noqa: N802 + with self._func_lock: + if self.niRFSA_FetchIQMultiRecordComplexF32_cfunc is None: + self.niRFSA_FetchIQMultiRecordComplexF32_cfunc = self._get_library_function('niRFSA_FetchIQMultiRecordComplexF32') + self.niRFSA_FetchIQMultiRecordComplexF32_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViInt64, ViInt64, ViInt64, ViReal64, ctypes.POINTER(NIComplexNumberF32), ctypes.POINTER(waveform_info.struct_niRFSA_wfmInfo)] # noqa: F405 + self.niRFSA_FetchIQMultiRecordComplexF32_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_FetchIQMultiRecordComplexF32_cfunc(vi, channel_list, starting_record, number_of_records, number_of_samples, timeout, iq_data_arrays, wfm_info) + + def niRFSA_FetchIQMultiRecordComplexF64(self, vi, channel_list, starting_record, number_of_records, number_of_samples, timeout, iq_data_arrays, wfm_info): # noqa: N802 + with self._func_lock: + if self.niRFSA_FetchIQMultiRecordComplexF64_cfunc is None: + self.niRFSA_FetchIQMultiRecordComplexF64_cfunc = self._get_library_function('niRFSA_FetchIQMultiRecordComplexF64') + self.niRFSA_FetchIQMultiRecordComplexF64_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViInt64, ViInt64, ViInt64, ViReal64, ctypes.POINTER(NIComplexNumber), ctypes.POINTER(waveform_info.struct_niRFSA_wfmInfo)] # noqa: F405 + self.niRFSA_FetchIQMultiRecordComplexF64_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_FetchIQMultiRecordComplexF64_cfunc(vi, channel_list, starting_record, number_of_records, number_of_samples, timeout, iq_data_arrays, wfm_info) + + def niRFSA_FetchIQMultiRecordComplexI16(self, vi, channel_list, starting_record, number_of_records, number_of_samples, timeout, iq_data_arrays, wfm_info): # noqa: N802 + with self._func_lock: + if self.niRFSA_FetchIQMultiRecordComplexI16_cfunc is None: + self.niRFSA_FetchIQMultiRecordComplexI16_cfunc = self._get_library_function('niRFSA_FetchIQMultiRecordComplexI16') + self.niRFSA_FetchIQMultiRecordComplexI16_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViInt64, ViInt64, ViInt64, ViReal64, ctypes.POINTER(NIComplexI16), ctypes.POINTER(waveform_info.struct_niRFSA_wfmInfo)] # noqa: F405 + self.niRFSA_FetchIQMultiRecordComplexI16_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_FetchIQMultiRecordComplexI16_cfunc(vi, channel_list, starting_record, number_of_records, number_of_samples, timeout, iq_data_arrays, wfm_info) + + def niRFSA_FetchIQSingleRecordComplexF32(self, vi, channel_list, record_number, number_of_samples, timeout, iq_data_array, wfm_info): # noqa: N802 + with self._func_lock: + if self.niRFSA_FetchIQSingleRecordComplexF32_cfunc is None: + self.niRFSA_FetchIQSingleRecordComplexF32_cfunc = self._get_library_function('niRFSA_FetchIQSingleRecordComplexF32') + self.niRFSA_FetchIQSingleRecordComplexF32_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViInt64, ViInt64, ViReal64, ctypes.POINTER(NIComplexNumberF32), ctypes.POINTER(waveform_info.struct_niRFSA_wfmInfo)] # noqa: F405 + self.niRFSA_FetchIQSingleRecordComplexF32_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_FetchIQSingleRecordComplexF32_cfunc(vi, channel_list, record_number, number_of_samples, timeout, iq_data_array, wfm_info) + + def niRFSA_FetchIQSingleRecordComplexF64(self, vi, channel_list, record_number, number_of_samples, timeout, iq_data_array, wfm_info): # noqa: N802 + with self._func_lock: + if self.niRFSA_FetchIQSingleRecordComplexF64_cfunc is None: + self.niRFSA_FetchIQSingleRecordComplexF64_cfunc = self._get_library_function('niRFSA_FetchIQSingleRecordComplexF64') + self.niRFSA_FetchIQSingleRecordComplexF64_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViInt64, ViInt64, ViReal64, ctypes.POINTER(NIComplexNumber), ctypes.POINTER(waveform_info.struct_niRFSA_wfmInfo)] # noqa: F405 + self.niRFSA_FetchIQSingleRecordComplexF64_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_FetchIQSingleRecordComplexF64_cfunc(vi, channel_list, record_number, number_of_samples, timeout, iq_data_array, wfm_info) + + def niRFSA_FetchIQSingleRecordComplexI16(self, vi, channel_list, record_number, number_of_samples, timeout, iq_data_array, wfm_info): # noqa: N802 + with self._func_lock: + if self.niRFSA_FetchIQSingleRecordComplexI16_cfunc is None: + self.niRFSA_FetchIQSingleRecordComplexI16_cfunc = self._get_library_function('niRFSA_FetchIQSingleRecordComplexI16') + self.niRFSA_FetchIQSingleRecordComplexI16_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViInt64, ViInt64, ViReal64, ctypes.POINTER(NIComplexI16), ctypes.POINTER(waveform_info.struct_niRFSA_wfmInfo)] # noqa: F405 + self.niRFSA_FetchIQSingleRecordComplexI16_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_FetchIQSingleRecordComplexI16_cfunc(vi, channel_list, record_number, number_of_samples, timeout, iq_data_array, wfm_info) + + def niRFSA_GetAttributeViBoolean(self, vi, channel_name, attribute_id, value): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetAttributeViBoolean_cfunc is None: + self.niRFSA_GetAttributeViBoolean_cfunc = self._get_library_function('niRFSA_GetAttributeViBoolean') + self.niRFSA_GetAttributeViBoolean_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViAttr, ctypes.POINTER(ViBoolean)] # noqa: F405 + self.niRFSA_GetAttributeViBoolean_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetAttributeViBoolean_cfunc(vi, channel_name, attribute_id, value) + + def niRFSA_GetAttributeViInt32(self, vi, channel_name, attribute_id, value): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetAttributeViInt32_cfunc is None: + self.niRFSA_GetAttributeViInt32_cfunc = self._get_library_function('niRFSA_GetAttributeViInt32') + self.niRFSA_GetAttributeViInt32_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViAttr, ctypes.POINTER(ViInt32)] # noqa: F405 + self.niRFSA_GetAttributeViInt32_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetAttributeViInt32_cfunc(vi, channel_name, attribute_id, value) + + def niRFSA_GetAttributeViInt64(self, vi, channel_name, attribute_id, value): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetAttributeViInt64_cfunc is None: + self.niRFSA_GetAttributeViInt64_cfunc = self._get_library_function('niRFSA_GetAttributeViInt64') + self.niRFSA_GetAttributeViInt64_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViAttr, ctypes.POINTER(ViInt64)] # noqa: F405 + self.niRFSA_GetAttributeViInt64_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetAttributeViInt64_cfunc(vi, channel_name, attribute_id, value) + + def niRFSA_GetAttributeViReal64(self, vi, channel_name, attribute_id, value): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetAttributeViReal64_cfunc is None: + self.niRFSA_GetAttributeViReal64_cfunc = self._get_library_function('niRFSA_GetAttributeViReal64') + self.niRFSA_GetAttributeViReal64_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViAttr, ctypes.POINTER(ViReal64)] # noqa: F405 + self.niRFSA_GetAttributeViReal64_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetAttributeViReal64_cfunc(vi, channel_name, attribute_id, value) + + def niRFSA_GetAttributeViSession(self, vi, channel_name, attribute_id, value): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetAttributeViSession_cfunc is None: + self.niRFSA_GetAttributeViSession_cfunc = self._get_library_function('niRFSA_GetAttributeViSession') + self.niRFSA_GetAttributeViSession_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViAttr, ctypes.POINTER(ViSession)] # noqa: F405 + self.niRFSA_GetAttributeViSession_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetAttributeViSession_cfunc(vi, channel_name, attribute_id, value) + + def niRFSA_GetAttributeViString(self, vi, channel_name, attribute_id, buf_size, value): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetAttributeViString_cfunc is None: + self.niRFSA_GetAttributeViString_cfunc = self._get_library_function('niRFSA_GetAttributeViString') + self.niRFSA_GetAttributeViString_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViAttr, ViInt32, ctypes.POINTER(ViChar)] # noqa: F405 + self.niRFSA_GetAttributeViString_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetAttributeViString_cfunc(vi, channel_name, attribute_id, buf_size, value) + + def niRFSA_GetDeembeddingSparameters(self, vi, sparameters, sparameters_array_size, number_of_sparameters, number_of_ports): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetDeembeddingSparameters_cfunc is None: + self.niRFSA_GetDeembeddingSparameters_cfunc = self._get_library_function('niRFSA_GetDeembeddingSparameters') + self.niRFSA_GetDeembeddingSparameters_cfunc.argtypes = [ViSession, ctypes.POINTER(NIComplexNumber), ViInt32, ctypes.POINTER(ViInt32), ctypes.POINTER(ViInt32)] # noqa: F405 + self.niRFSA_GetDeembeddingSparameters_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetDeembeddingSparameters_cfunc(vi, sparameters, sparameters_array_size, number_of_sparameters, number_of_ports) + + def niRFSA_GetDeembeddingTableNumberOfPorts(self, vi, number_of_ports): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetDeembeddingTableNumberOfPorts_cfunc is None: + self.niRFSA_GetDeembeddingTableNumberOfPorts_cfunc = self._get_library_function('niRFSA_GetDeembeddingTableNumberOfPorts') + self.niRFSA_GetDeembeddingTableNumberOfPorts_cfunc.argtypes = [ViSession, ctypes.POINTER(ViInt32)] # noqa: F405 + self.niRFSA_GetDeembeddingTableNumberOfPorts_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetDeembeddingTableNumberOfPorts_cfunc(vi, number_of_ports) + + def niRFSA_GetError(self, vi, error_code, error_description_buffer_size, error_description): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetError_cfunc is None: + self.niRFSA_GetError_cfunc = self._get_library_function('niRFSA_GetError') + self.niRFSA_GetError_cfunc.argtypes = [ViSession, ctypes.POINTER(ViStatus), ViInt32, ctypes.POINTER(ViChar)] # noqa: F405 + self.niRFSA_GetError_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetError_cfunc(vi, error_code, error_description_buffer_size, error_description) + + def niRFSA_GetExtCalLastDateAndTime(self, vi, year, month, day, hour, minute): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetExtCalLastDateAndTime_cfunc is None: + self.niRFSA_GetExtCalLastDateAndTime_cfunc = self._get_library_function('niRFSA_GetExtCalLastDateAndTime') + self.niRFSA_GetExtCalLastDateAndTime_cfunc.argtypes = [ViSession, ctypes.POINTER(ViInt32), ctypes.POINTER(ViInt32), ctypes.POINTER(ViInt32), ctypes.POINTER(ViInt32), ctypes.POINTER(ViInt32)] # noqa: F405 + self.niRFSA_GetExtCalLastDateAndTime_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetExtCalLastDateAndTime_cfunc(vi, year, month, day, hour, minute) + + def niRFSA_GetExtCalRecommendedInterval(self, vi, months): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetExtCalRecommendedInterval_cfunc is None: + self.niRFSA_GetExtCalRecommendedInterval_cfunc = self._get_library_function('niRFSA_GetExtCalRecommendedInterval') + self.niRFSA_GetExtCalRecommendedInterval_cfunc.argtypes = [ViSession, ctypes.POINTER(ViInt32)] # noqa: F405 + self.niRFSA_GetExtCalRecommendedInterval_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetExtCalRecommendedInterval_cfunc(vi, months) + + def niRFSA_GetFetchBacklog(self, vi, channel_list, record_number, backlog): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetFetchBacklog_cfunc is None: + self.niRFSA_GetFetchBacklog_cfunc = self._get_library_function('niRFSA_GetFetchBacklog') + self.niRFSA_GetFetchBacklog_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViInt64, ctypes.POINTER(ViInt64)] # noqa: F405 + self.niRFSA_GetFetchBacklog_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetFetchBacklog_cfunc(vi, channel_list, record_number, backlog) + + def niRFSA_GetFrequencyResponse(self, vi, channel_list, buffer_size, frequencies, magnitude_response, phase_response, number_of_frequencies): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetFrequencyResponse_cfunc is None: + self.niRFSA_GetFrequencyResponse_cfunc = self._get_library_function('niRFSA_GetFrequencyResponse') + self.niRFSA_GetFrequencyResponse_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViInt32, ctypes.POINTER(ViReal64), ctypes.POINTER(ViReal64), ctypes.POINTER(ViReal64), ctypes.POINTER(ViInt32)] # noqa: F405 + self.niRFSA_GetFrequencyResponse_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetFrequencyResponse_cfunc(vi, channel_list, buffer_size, frequencies, magnitude_response, phase_response, number_of_frequencies) + + def niRFSA_GetScalingCoefficients(self, vi, channel_list, array_size, coefficient_info, number_of_coefficient_sets): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetScalingCoefficients_cfunc is None: + self.niRFSA_GetScalingCoefficients_cfunc = self._get_library_function('niRFSA_GetScalingCoefficients') + self.niRFSA_GetScalingCoefficients_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViInt32, ctypes.POINTER(coefficient_info_type.struct_niRFSA_coefficientInfo), ctypes.POINTER(ViInt32)] # noqa: F405 + self.niRFSA_GetScalingCoefficients_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetScalingCoefficients_cfunc(vi, channel_list, array_size, coefficient_info, number_of_coefficient_sets) + + def niRFSA_GetSelfCalLastDateAndTime(self, vi, self_calibration_step, year, month, day, hour, minute): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetSelfCalLastDateAndTime_cfunc is None: + self.niRFSA_GetSelfCalLastDateAndTime_cfunc = self._get_library_function('niRFSA_GetSelfCalLastDateAndTime') + self.niRFSA_GetSelfCalLastDateAndTime_cfunc.argtypes = [ViSession, ViInt64, ctypes.POINTER(ViInt32), ctypes.POINTER(ViInt32), ctypes.POINTER(ViInt32), ctypes.POINTER(ViInt32), ctypes.POINTER(ViInt32)] # noqa: F405 + self.niRFSA_GetSelfCalLastDateAndTime_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetSelfCalLastDateAndTime_cfunc(vi, self_calibration_step, year, month, day, hour, minute) + + def niRFSA_GetSelfCalLastTemp(self, vi, self_calibration_step, temperature): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetSelfCalLastTemp_cfunc is None: + self.niRFSA_GetSelfCalLastTemp_cfunc = self._get_library_function('niRFSA_GetSelfCalLastTemp') + self.niRFSA_GetSelfCalLastTemp_cfunc.argtypes = [ViSession, ViInt64, ctypes.POINTER(ViReal64)] # noqa: F405 + self.niRFSA_GetSelfCalLastTemp_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetSelfCalLastTemp_cfunc(vi, self_calibration_step, temperature) + + def niRFSA_GetTerminalName(self, vi, signal, signal_identifier, buffer_size, terminal_name): # noqa: N802 + with self._func_lock: + if self.niRFSA_GetTerminalName_cfunc is None: + self.niRFSA_GetTerminalName_cfunc = self._get_library_function('niRFSA_GetTerminalName') + self.niRFSA_GetTerminalName_cfunc.argtypes = [ViSession, ViInt32, ctypes.POINTER(ViChar), ViInt32, ctypes.POINTER(ViChar)] # noqa: F405 + self.niRFSA_GetTerminalName_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_GetTerminalName_cfunc(vi, signal, signal_identifier, buffer_size, terminal_name) + + def niRFSA_InitWithOptions(self, resource_name, id_query, reset_device, option_string, new_vi): # noqa: N802 + with self._func_lock: + if self.niRFSA_InitWithOptions_cfunc is None: + self.niRFSA_InitWithOptions_cfunc = self._get_library_function('niRFSA_InitWithOptions') + self.niRFSA_InitWithOptions_cfunc.argtypes = [ctypes.POINTER(ViChar), ViBoolean, ViBoolean, ctypes.POINTER(ViChar), ctypes.POINTER(ViSession)] # noqa: F405 + self.niRFSA_InitWithOptions_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_InitWithOptions_cfunc(resource_name, id_query, reset_device, option_string, new_vi) + + def niRFSA_Initiate(self, vi): # noqa: N802 + with self._func_lock: + if self.niRFSA_Initiate_cfunc is None: + self.niRFSA_Initiate_cfunc = self._get_library_function('niRFSA_Initiate') + self.niRFSA_Initiate_cfunc.argtypes = [ViSession] # noqa: F405 + self.niRFSA_Initiate_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_Initiate_cfunc(vi) + + def niRFSA_IsSelfCalValid(self, vi, self_cal_valid, valid_steps): # noqa: N802 + with self._func_lock: + if self.niRFSA_IsSelfCalValid_cfunc is None: + self.niRFSA_IsSelfCalValid_cfunc = self._get_library_function('niRFSA_IsSelfCalValid') + self.niRFSA_IsSelfCalValid_cfunc.argtypes = [ViSession, ctypes.POINTER(ViBoolean), ctypes.POINTER(ViInt64)] # noqa: F405 + self.niRFSA_IsSelfCalValid_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_IsSelfCalValid_cfunc(vi, self_cal_valid, valid_steps) + + def niRFSA_LoadConfigurationsFromFile(self, vi, channel_name, file_path): # noqa: N802 + with self._func_lock: + if self.niRFSA_LoadConfigurationsFromFile_cfunc is None: + self.niRFSA_LoadConfigurationsFromFile_cfunc = self._get_library_function('niRFSA_LoadConfigurationsFromFile') + self.niRFSA_LoadConfigurationsFromFile_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ctypes.POINTER(ViChar)] # noqa: F405 + self.niRFSA_LoadConfigurationsFromFile_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_LoadConfigurationsFromFile_cfunc(vi, channel_name, file_path) + + def niRFSA_LockSession(self, vi, caller_has_lock): # noqa: N802 + with self._func_lock: + if self.niRFSA_LockSession_cfunc is None: + self.niRFSA_LockSession_cfunc = self._get_library_function('niRFSA_LockSession') + self.niRFSA_LockSession_cfunc.argtypes = [ViSession, ctypes.POINTER(ViBoolean)] # noqa: F405 + self.niRFSA_LockSession_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_LockSession_cfunc(vi, caller_has_lock) + + def niRFSA_PerformThermalCorrection(self, vi): # noqa: N802 + with self._func_lock: + if self.niRFSA_PerformThermalCorrection_cfunc is None: + self.niRFSA_PerformThermalCorrection_cfunc = self._get_library_function('niRFSA_PerformThermalCorrection') + self.niRFSA_PerformThermalCorrection_cfunc.argtypes = [ViSession] # noqa: F405 + self.niRFSA_PerformThermalCorrection_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_PerformThermalCorrection_cfunc(vi) + + def niRFSA_ReadIQSingleRecordComplexF64(self, vi, channel_list, timeout, iq_data_array, data_array_size, wfm_info): # noqa: N802 + with self._func_lock: + if self.niRFSA_ReadIQSingleRecordComplexF64_cfunc is None: + self.niRFSA_ReadIQSingleRecordComplexF64_cfunc = self._get_library_function('niRFSA_ReadIQSingleRecordComplexF64') + self.niRFSA_ReadIQSingleRecordComplexF64_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViReal64, ctypes.POINTER(NIComplexNumber), ViInt64, ctypes.POINTER(waveform_info.struct_niRFSA_wfmInfo)] # noqa: F405 + self.niRFSA_ReadIQSingleRecordComplexF64_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ReadIQSingleRecordComplexF64_cfunc(vi, channel_list, timeout, iq_data_array, data_array_size, wfm_info) + + def niRFSA_ReadPowerSpectrumF32(self, vi, channel_list, timeout, power_spectrum_data_array, data_array_size, spectrum_info): # noqa: N802 + with self._func_lock: + if self.niRFSA_ReadPowerSpectrumF32_cfunc is None: + self.niRFSA_ReadPowerSpectrumF32_cfunc = self._get_library_function('niRFSA_ReadPowerSpectrumF32') + self.niRFSA_ReadPowerSpectrumF32_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViReal64, ctypes.POINTER(ViReal32), ViInt32, ctypes.POINTER(spectrum_info_type.struct_niRFSA_spectrumInfo)] # noqa: F405 + self.niRFSA_ReadPowerSpectrumF32_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ReadPowerSpectrumF32_cfunc(vi, channel_list, timeout, power_spectrum_data_array, data_array_size, spectrum_info) + + def niRFSA_ReadPowerSpectrumF64(self, vi, channel_list, timeout, power_spectrum_data_array, data_array_size, spectrum_info): # noqa: N802 + with self._func_lock: + if self.niRFSA_ReadPowerSpectrumF64_cfunc is None: + self.niRFSA_ReadPowerSpectrumF64_cfunc = self._get_library_function('niRFSA_ReadPowerSpectrumF64') + self.niRFSA_ReadPowerSpectrumF64_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViReal64, ctypes.POINTER(ViReal64), ViInt32, ctypes.POINTER(spectrum_info_type.struct_niRFSA_spectrumInfo)] # noqa: F405 + self.niRFSA_ReadPowerSpectrumF64_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ReadPowerSpectrumF64_cfunc(vi, channel_list, timeout, power_spectrum_data_array, data_array_size, spectrum_info) + + def niRFSA_ResetDevice(self, vi): # noqa: N802 + with self._func_lock: + if self.niRFSA_ResetDevice_cfunc is None: + self.niRFSA_ResetDevice_cfunc = self._get_library_function('niRFSA_ResetDevice') + self.niRFSA_ResetDevice_cfunc.argtypes = [ViSession] # noqa: F405 + self.niRFSA_ResetDevice_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ResetDevice_cfunc(vi) + + def niRFSA_ResetWithOptions(self, vi, steps_to_omit): # noqa: N802 + with self._func_lock: + if self.niRFSA_ResetWithOptions_cfunc is None: + self.niRFSA_ResetWithOptions_cfunc = self._get_library_function('niRFSA_ResetWithOptions') + self.niRFSA_ResetWithOptions_cfunc.argtypes = [ViSession, ViUInt64] # noqa: F405 + self.niRFSA_ResetWithOptions_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_ResetWithOptions_cfunc(vi, steps_to_omit) + + def niRFSA_SaveConfigurationsToFile(self, vi, channel_name, file_path): # noqa: N802 + with self._func_lock: + if self.niRFSA_SaveConfigurationsToFile_cfunc is None: + self.niRFSA_SaveConfigurationsToFile_cfunc = self._get_library_function('niRFSA_SaveConfigurationsToFile') + self.niRFSA_SaveConfigurationsToFile_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ctypes.POINTER(ViChar)] # noqa: F405 + self.niRFSA_SaveConfigurationsToFile_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_SaveConfigurationsToFile_cfunc(vi, channel_name, file_path) + + def niRFSA_SelfCalibrateRange(self, vi, steps_to_omit, minimum_frequency, maximum_frequency, minimum_reference_level, maximum_reference_level): # noqa: N802 + with self._func_lock: + if self.niRFSA_SelfCalibrateRange_cfunc is None: + self.niRFSA_SelfCalibrateRange_cfunc = self._get_library_function('niRFSA_SelfCalibrateRange') + self.niRFSA_SelfCalibrateRange_cfunc.argtypes = [ViSession, ViInt64, ViReal64, ViReal64, ViReal64, ViReal64] # noqa: F405 + self.niRFSA_SelfCalibrateRange_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_SelfCalibrateRange_cfunc(vi, steps_to_omit, minimum_frequency, maximum_frequency, minimum_reference_level, maximum_reference_level) + + def niRFSA_SendSoftwareEdgeTrigger(self, vi, trigger, trigger_identifier): # noqa: N802 + with self._func_lock: + if self.niRFSA_SendSoftwareEdgeTrigger_cfunc is None: + self.niRFSA_SendSoftwareEdgeTrigger_cfunc = self._get_library_function('niRFSA_SendSoftwareEdgeTrigger') + self.niRFSA_SendSoftwareEdgeTrigger_cfunc.argtypes = [ViSession, ViInt32, ctypes.POINTER(ViChar)] # noqa: F405 + self.niRFSA_SendSoftwareEdgeTrigger_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_SendSoftwareEdgeTrigger_cfunc(vi, trigger, trigger_identifier) + + def niRFSA_SetAttributeViBoolean(self, vi, channel_name, attribute_id, value): # noqa: N802 + with self._func_lock: + if self.niRFSA_SetAttributeViBoolean_cfunc is None: + self.niRFSA_SetAttributeViBoolean_cfunc = self._get_library_function('niRFSA_SetAttributeViBoolean') + self.niRFSA_SetAttributeViBoolean_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViAttr, ViBoolean] # noqa: F405 + self.niRFSA_SetAttributeViBoolean_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_SetAttributeViBoolean_cfunc(vi, channel_name, attribute_id, value) + + def niRFSA_SetAttributeViInt32(self, vi, channel_name, attribute_id, value): # noqa: N802 + with self._func_lock: + if self.niRFSA_SetAttributeViInt32_cfunc is None: + self.niRFSA_SetAttributeViInt32_cfunc = self._get_library_function('niRFSA_SetAttributeViInt32') + self.niRFSA_SetAttributeViInt32_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViAttr, ViInt32] # noqa: F405 + self.niRFSA_SetAttributeViInt32_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_SetAttributeViInt32_cfunc(vi, channel_name, attribute_id, value) + + def niRFSA_SetAttributeViInt64(self, vi, channel_name, attribute_id, value): # noqa: N802 + with self._func_lock: + if self.niRFSA_SetAttributeViInt64_cfunc is None: + self.niRFSA_SetAttributeViInt64_cfunc = self._get_library_function('niRFSA_SetAttributeViInt64') + self.niRFSA_SetAttributeViInt64_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViAttr, ViInt64] # noqa: F405 + self.niRFSA_SetAttributeViInt64_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_SetAttributeViInt64_cfunc(vi, channel_name, attribute_id, value) + + def niRFSA_SetAttributeViReal64(self, vi, channel_name, attribute_id, value): # noqa: N802 + with self._func_lock: + if self.niRFSA_SetAttributeViReal64_cfunc is None: + self.niRFSA_SetAttributeViReal64_cfunc = self._get_library_function('niRFSA_SetAttributeViReal64') + self.niRFSA_SetAttributeViReal64_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViAttr, ViReal64] # noqa: F405 + self.niRFSA_SetAttributeViReal64_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_SetAttributeViReal64_cfunc(vi, channel_name, attribute_id, value) + + def niRFSA_SetAttributeViSession(self, vi, channel_name, attribute_id, value): # noqa: N802 + with self._func_lock: + if self.niRFSA_SetAttributeViSession_cfunc is None: + self.niRFSA_SetAttributeViSession_cfunc = self._get_library_function('niRFSA_SetAttributeViSession') + self.niRFSA_SetAttributeViSession_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViAttr, ViSession] # noqa: F405 + self.niRFSA_SetAttributeViSession_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_SetAttributeViSession_cfunc(vi, channel_name, attribute_id, value) + + def niRFSA_SetAttributeViString(self, vi, channel_name, attribute_id, value): # noqa: N802 + with self._func_lock: + if self.niRFSA_SetAttributeViString_cfunc is None: + self.niRFSA_SetAttributeViString_cfunc = self._get_library_function('niRFSA_SetAttributeViString') + self.niRFSA_SetAttributeViString_cfunc.argtypes = [ViSession, ctypes.POINTER(ViChar), ViAttr, ctypes.POINTER(ViChar)] # noqa: F405 + self.niRFSA_SetAttributeViString_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_SetAttributeViString_cfunc(vi, channel_name, attribute_id, value) + + def niRFSA_UnlockSession(self, vi, caller_has_lock): # noqa: N802 + with self._func_lock: + if self.niRFSA_UnlockSession_cfunc is None: + self.niRFSA_UnlockSession_cfunc = self._get_library_function('niRFSA_UnlockSession') + self.niRFSA_UnlockSession_cfunc.argtypes = [ViSession, ctypes.POINTER(ViBoolean)] # noqa: F405 + self.niRFSA_UnlockSession_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_UnlockSession_cfunc(vi, caller_has_lock) + + def niRFSA_close(self, vi): # noqa: N802 + with self._func_lock: + if self.niRFSA_close_cfunc is None: + self.niRFSA_close_cfunc = self._get_library_function('niRFSA_close') + self.niRFSA_close_cfunc.argtypes = [ViSession] # noqa: F405 + self.niRFSA_close_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_close_cfunc(vi) + + def niRFSA_reset(self, vi): # noqa: N802 + with self._func_lock: + if self.niRFSA_reset_cfunc is None: + self.niRFSA_reset_cfunc = self._get_library_function('niRFSA_reset') + self.niRFSA_reset_cfunc.argtypes = [ViSession] # noqa: F405 + self.niRFSA_reset_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_reset_cfunc(vi) + + def niRFSA_self_test(self, vi, self_test_result, self_test_message): # noqa: N802 + with self._func_lock: + if self.niRFSA_self_test_cfunc is None: + self.niRFSA_self_test_cfunc = self._get_library_function('niRFSA_self_test') + self.niRFSA_self_test_cfunc.argtypes = [ViSession, ctypes.POINTER(ViInt16), ctypes.POINTER(ViChar)] # noqa: F405 + self.niRFSA_self_test_cfunc.restype = ViStatus # noqa: F405 + return self.niRFSA_self_test_cfunc(vi, self_test_result, self_test_message) diff --git a/generated/nirfsa/nirfsa/_library_interpreter.py b/generated/nirfsa/nirfsa/_library_interpreter.py new file mode 100644 index 000000000..74d5d70e1 --- /dev/null +++ b/generated/nirfsa/nirfsa/_library_interpreter.py @@ -0,0 +1,772 @@ +# -*- coding: utf-8 -*- +# This file was generated + +import array +import ctypes +import hightime # noqa: F401 +import nirfsa._complextype as _complextype +import nirfsa._library_singleton as _library_singleton +import nirfsa._visatype as _visatype +import nirfsa.enums as enums # noqa: F401 +import nirfsa.errors as errors + +import nirfsa.coefficient_info_type as coefficient_info_type # noqa: F401 + +import nirfsa.waveform_info as waveform_info # noqa: F401 + +import nirfsa.spectrum_info_type as spectrum_info_type # noqa: F401 + + +# Helper functions for creating ctypes needed for calling into the driver DLL +def _get_ctypes_pointer_for_buffer(value=None, library_type=None, size=None): + if isinstance(value, array.array): + assert library_type is not None, 'library_type is required for array.array' + addr, _ = value.buffer_info() + return ctypes.cast(addr, ctypes.POINTER(library_type)) + elif str(type(value)).find("'numpy.ndarray'") != -1: + import numpy + if library_type in (_complextype.NIComplexI16, _complextype.NIComplexNumberF32, _complextype.NIComplexNumber): + complex_dtype = numpy.dtype(library_type) + if value.ndim > 1: + # we create a flattened view of the multi-dimensional numpy array + restructured_array_view = value.ravel().view(complex_dtype) + else: + restructured_array_view = value.view(complex_dtype) + return restructured_array_view.ctypes.data_as(ctypes.POINTER(library_type)) + else: + return numpy.ctypeslib.as_ctypes(value) + elif isinstance(value, bytes): + return ctypes.cast(value, ctypes.POINTER(library_type)) + elif isinstance(value, list): + assert library_type is not None, 'library_type is required for list' + return (library_type * len(value))(*value) + else: + if library_type is not None and size is not None: + return (library_type * size)() + else: + return None + + +def _convert_to_array(value, array_type): + if value is not None: + if isinstance(value, array.array): + value_array = value + else: + value_array = array.array(array_type, value) + else: + value_array = None + + return value_array + + +class LibraryInterpreter(object): + '''Library C<->Python interpreter. + + This class is responsible for interpreting the Library's C API. It is responsible for: + * Converting ctypes to native Python types. + * Dealing with string encoding. + * Allocating memory. + * Converting errors returned by Library into Python exceptions. + ''' + + def __init__(self, encoding): + self._encoding = encoding + self._library = _library_singleton.get() + # Initialize _vi to 0 for now. + # Session will directly update it once the driver runtime init function has been called and + # we have a valid session handle. + self.set_session_handle() + + def set_session_handle(self, value=0): + self._vi = value + + def get_session_handle(self): + return self._vi + + def get_error_description(self, error_code): + '''get_error_description + + Returns the error description. + ''' + try: + returned_error_code, error_string = self.get_error() + if returned_error_code == error_code: + return error_string + except errors.Error: + pass + return "Failed to retrieve error description." + + def abort(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_Abort(vi_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def change_external_calibration_password(self, old_password, new_password): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + old_password_ctype = ctypes.create_string_buffer(old_password.encode(self._encoding)) # case C020 + new_password_ctype = ctypes.create_string_buffer(new_password.encode(self._encoding)) # case C020 + error_code = self._library.niRFSA_ChangeExternalCalibrationPassword(vi_ctype, old_password_ctype, new_password_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def check_acquisition_status(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + is_done_ctype = _visatype.ViBoolean() # case S220 + error_code = self._library.niRFSA_CheckAcquisitionStatus(vi_ctype, None if is_done_ctype is None else (ctypes.pointer(is_done_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return bool(is_done_ctype.value) + + def clear_self_calibrate_range(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_ClearSelfCalibrateRange(vi_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def commit(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_Commit(vi_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def configure_deembedding_table_interpolation_linear(self, port, table_name, format): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + port_ctype = ctypes.create_string_buffer(port.encode(self._encoding)) # case C020 + table_name_ctype = ctypes.create_string_buffer(table_name.encode(self._encoding)) # case C020 + format_ctype = _visatype.ViInt32(format.value) # case S130 + error_code = self._library.niRFSA_ConfigureDeembeddingTableInterpolationLinear(vi_ctype, port_ctype, table_name_ctype, format_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def configure_deembedding_table_interpolation_nearest(self, port, table_name): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + port_ctype = ctypes.create_string_buffer(port.encode(self._encoding)) # case C020 + table_name_ctype = ctypes.create_string_buffer(table_name.encode(self._encoding)) # case C020 + error_code = self._library.niRFSA_ConfigureDeembeddingTableInterpolationNearest(vi_ctype, port_ctype, table_name_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def configure_deembedding_table_interpolation_spline(self, port, table_name): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + port_ctype = ctypes.create_string_buffer(port.encode(self._encoding)) # case C020 + table_name_ctype = ctypes.create_string_buffer(table_name.encode(self._encoding)) # case C020 + error_code = self._library.niRFSA_ConfigureDeembeddingTableInterpolationSpline(vi_ctype, port_ctype, table_name_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def configure_digital_edge_advance_trigger(self, source, edge): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + source_ctype = ctypes.create_string_buffer(source.encode(self._encoding)) # case C020 + edge_ctype = _visatype.ViInt32(edge.value) # case S130 + error_code = self._library.niRFSA_ConfigureDigitalEdgeAdvanceTrigger(vi_ctype, source_ctype, edge_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def configure_digital_edge_ref_trigger(self, source, edge, pretrigger_samples): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + source_ctype = ctypes.create_string_buffer(source.encode(self._encoding)) # case C020 + edge_ctype = _visatype.ViInt32(edge.value) # case S130 + pretrigger_samples_ctype = _visatype.ViInt64(pretrigger_samples) # case S150 + error_code = self._library.niRFSA_ConfigureDigitalEdgeRefTrigger(vi_ctype, source_ctype, edge_ctype, pretrigger_samples_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def configure_digital_edge_start_trigger(self, source, edge): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + source_ctype = ctypes.create_string_buffer(source.encode(self._encoding)) # case C020 + edge_ctype = _visatype.ViInt32(edge.value) # case S130 + error_code = self._library.niRFSA_ConfigureDigitalEdgeStartTrigger(vi_ctype, source_ctype, edge_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def configure_iq_power_edge_ref_trigger(self, source, level, slope, pretrigger_samples): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + source_ctype = ctypes.create_string_buffer(source.encode(self._encoding)) # case C020 + level_ctype = _visatype.ViReal64(level) # case S150 + slope_ctype = _visatype.ViInt32(slope.value) # case S130 + pretrigger_samples_ctype = _visatype.ViInt64(pretrigger_samples) # case S150 + error_code = self._library.niRFSA_ConfigureIQPowerEdgeRefTrigger(vi_ctype, source_ctype, level_ctype, slope_ctype, pretrigger_samples_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def configure_ref_clock(self, clock_source, ref_clock_rate): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + clock_source_ctype = ctypes.create_string_buffer(clock_source.value.encode(self._encoding)) # case C030 + ref_clock_rate_ctype = _visatype.ViReal64(ref_clock_rate) # case S150 + error_code = self._library.niRFSA_ConfigureRefClock(vi_ctype, clock_source_ctype, ref_clock_rate_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def configure_software_edge_advance_trigger(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_ConfigureSoftwareEdgeAdvanceTrigger(vi_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def configure_software_edge_ref_trigger(self, pretrigger_samples): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + pretrigger_samples_ctype = _visatype.ViInt64(pretrigger_samples) # case S150 + error_code = self._library.niRFSA_ConfigureSoftwareEdgeRefTrigger(vi_ctype, pretrigger_samples_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def configure_software_edge_start_trigger(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_ConfigureSoftwareEdgeStartTrigger(vi_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def configure_spectrum_frequency_center_span(self, channel_list, center_frequency, span): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_list_ctype = ctypes.create_string_buffer(channel_list.encode(self._encoding)) # case C010 + center_frequency_ctype = _visatype.ViReal64(center_frequency) # case S150 + span_ctype = _visatype.ViReal64(span) # case S150 + error_code = self._library.niRFSA_ConfigureSpectrumFrequencyCenterSpan(vi_ctype, channel_list_ctype, center_frequency_ctype, span_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def configure_spectrum_frequency_start_stop(self, channel_list, start_frequency, stop_frequency): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_list_ctype = ctypes.create_string_buffer(channel_list.encode(self._encoding)) # case C010 + start_frequency_ctype = _visatype.ViReal64(start_frequency) # case S150 + stop_frequency_ctype = _visatype.ViReal64(stop_frequency) # case S150 + error_code = self._library.niRFSA_ConfigureSpectrumFrequencyStartStop(vi_ctype, channel_list_ctype, start_frequency_ctype, stop_frequency_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def create_deembedding_sparameter_table_array(self, port, table_name, frequencies, sparameter_table, number_of_ports, sparameter_orientation): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + port_ctype = ctypes.create_string_buffer(port.encode(self._encoding)) # case C020 + table_name_ctype = ctypes.create_string_buffer(table_name.encode(self._encoding)) # case C020 + frequencies_ctype = _get_ctypes_pointer_for_buffer(value=frequencies) # case B510 + frequencies_size_ctype = _visatype.ViInt32(0 if frequencies is None else len(frequencies)) # case S160 + sparameter_table_ctype = _get_ctypes_pointer_for_buffer(value=sparameter_table, library_type=_complextype.NIComplexNumber) # case B510 + sparameter_table_size_ctype = _visatype.ViInt32(0 if sparameter_table is None else sparameter_table.size) # case S161 + number_of_ports_ctype = _visatype.ViInt32(number_of_ports) # case S150 + sparameter_orientation_ctype = _visatype.ViInt32(sparameter_orientation.value) # case S130 + error_code = self._library.niRFSA_CreateDeembeddingSparameterTableArray(vi_ctype, port_ctype, table_name_ctype, frequencies_ctype, frequencies_size_ctype, sparameter_table_ctype, sparameter_table_size_ctype, number_of_ports_ctype, sparameter_orientation_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def create_deembedding_sparameter_table_s2p_file(self, port, table_name, s2p_file_path, sparameter_orientation): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + port_ctype = ctypes.create_string_buffer(port.encode(self._encoding)) # case C020 + table_name_ctype = ctypes.create_string_buffer(table_name.encode(self._encoding)) # case C020 + s2p_file_path_ctype = ctypes.create_string_buffer(s2p_file_path.encode(self._encoding)) # case C020 + sparameter_orientation_ctype = _visatype.ViInt32(sparameter_orientation.value) # case S130 + error_code = self._library.niRFSA_CreateDeembeddingSparameterTableS2PFile(vi_ctype, port_ctype, table_name_ctype, s2p_file_path_ctype, sparameter_orientation_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def delete_all_deembedding_tables(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_DeleteAllDeembeddingTables(vi_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def delete_deembedding_table(self, port, table_name): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + port_ctype = ctypes.create_string_buffer(port.encode(self._encoding)) # case C020 + table_name_ctype = ctypes.create_string_buffer(table_name.encode(self._encoding)) # case C020 + error_code = self._library.niRFSA_DeleteDeembeddingTable(vi_ctype, port_ctype, table_name_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def disable_advance_trigger(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_DisableAdvanceTrigger(vi_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def disable_ref_trigger(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_DisableRefTrigger(vi_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def disable_start_trigger(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_DisableStartTrigger(vi_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def enable_session_access(self, enable): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + enable_ctype = _visatype.ViBoolean(enable) # case S150 + error_code = self._library.niRFSA_EnableSessionAccess(vi_ctype, enable_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def error_message(self, error_code): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code_ctype = _visatype.ViStatus(error_code) # case S150 + error_message_ctype = (_visatype.ViChar * 256)() # case C070 + error_code = self._library.niRFSA_ErrorMessage(vi_ctype, error_code_ctype, error_message_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=True) + return error_message_ctype.value.decode(self._encoding) + + def fetch_iq_multi_record_complex_f32(self, channel_list, starting_record, number_of_records, iq_data_arrays, timeout): # noqa: N802 + samples_per_record = 0 if iq_data_arrays is None else (iq_data_arrays.shape[1] if hasattr(iq_data_arrays, 'shape') and len(iq_data_arrays.shape) > 1 else len(iq_data_arrays)) + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_list_ctype = ctypes.create_string_buffer(channel_list.encode(self._encoding)) # case C010 + starting_record_ctype = _visatype.ViInt64(starting_record) # case S150 + number_of_records_ctype = _visatype.ViInt64(number_of_records) # case S150 + number_of_samples_ctype = _visatype.ViInt64(samples_per_record) # case S160 + timeout_ctype = _visatype.ViReal64(timeout) # case S150 + iq_data_arrays_ctype = _get_ctypes_pointer_for_buffer(value=iq_data_arrays, library_type=_complextype.NIComplexNumberF32) # case B510 + wfm_info_ctype = (waveform_info.struct_niRFSA_wfmInfo * number_of_records)() # case S220 + error_code = self._library.niRFSA_FetchIQMultiRecordComplexF32(vi_ctype, channel_list_ctype, starting_record_ctype, number_of_records_ctype, number_of_samples_ctype, timeout_ctype, iq_data_arrays_ctype, wfm_info_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return [waveform_info.WaveformInfo(wfm_info_ctype[i]) for i in range(number_of_records)] + + def fetch_iq_multi_record_complex_f64(self, channel_list, starting_record, number_of_records, iq_data_arrays, timeout): # noqa: N802 + samples_per_record = 0 if iq_data_arrays is None else (iq_data_arrays.shape[1] if hasattr(iq_data_arrays, 'shape') and len(iq_data_arrays.shape) > 1 else len(iq_data_arrays)) + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_list_ctype = ctypes.create_string_buffer(channel_list.encode(self._encoding)) # case C010 + starting_record_ctype = _visatype.ViInt64(starting_record) # case S150 + number_of_records_ctype = _visatype.ViInt64(number_of_records) # case S150 + number_of_samples_ctype = _visatype.ViInt64(samples_per_record) # case S160 + timeout_ctype = _visatype.ViReal64(timeout) # case S150 + iq_data_arrays_ctype = _get_ctypes_pointer_for_buffer(value=iq_data_arrays, library_type=_complextype.NIComplexNumber) # case B510 + wfm_info_ctype = (waveform_info.struct_niRFSA_wfmInfo * number_of_records)() # case S220 + error_code = self._library.niRFSA_FetchIQMultiRecordComplexF64(vi_ctype, channel_list_ctype, starting_record_ctype, number_of_records_ctype, number_of_samples_ctype, timeout_ctype, iq_data_arrays_ctype, wfm_info_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return [waveform_info.WaveformInfo(wfm_info_ctype[i]) for i in range(number_of_records)] + + def fetch_iq_multi_record_complex_i16(self, channel_list, starting_record, number_of_records, iq_data_arrays, timeout): # noqa: N802 + samples_per_record = 0 if iq_data_arrays is None else (iq_data_arrays.shape[1] if hasattr(iq_data_arrays, 'shape') and len(iq_data_arrays.shape) > 1 else len(iq_data_arrays)) + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_list_ctype = ctypes.create_string_buffer(channel_list.encode(self._encoding)) # case C010 + starting_record_ctype = _visatype.ViInt64(starting_record) # case S150 + number_of_records_ctype = _visatype.ViInt64(number_of_records) # case S150 + number_of_samples_ctype = _visatype.ViInt64(samples_per_record // 2) # case S160 + timeout_ctype = _visatype.ViReal64(timeout) # case S150 + iq_data_arrays_ctype = _get_ctypes_pointer_for_buffer(value=iq_data_arrays, library_type=_complextype.NIComplexI16) # case B510 + wfm_info_ctype = (waveform_info.struct_niRFSA_wfmInfo * number_of_records)() # case S220 + error_code = self._library.niRFSA_FetchIQMultiRecordComplexI16(vi_ctype, channel_list_ctype, starting_record_ctype, number_of_records_ctype, number_of_samples_ctype, timeout_ctype, iq_data_arrays_ctype, wfm_info_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return [waveform_info.WaveformInfo(wfm_info_ctype[i]) for i in range(number_of_records)] + + def fetch_iq_single_record_complex_f32(self, channel_list, record_number, iq_data_array, timeout): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_list_ctype = ctypes.create_string_buffer(channel_list.encode(self._encoding)) # case C010 + record_number_ctype = _visatype.ViInt64(record_number) # case S150 + number_of_samples_ctype = _visatype.ViInt64(0 if iq_data_array is None else len(iq_data_array)) # case S160 + timeout_ctype = _visatype.ViReal64(timeout) # case S150 + iq_data_array_ctype = _get_ctypes_pointer_for_buffer(value=iq_data_array, library_type=_complextype.NIComplexNumberF32) # case B510 + wfm_info_ctype = waveform_info.struct_niRFSA_wfmInfo() # case S220 + error_code = self._library.niRFSA_FetchIQSingleRecordComplexF32(vi_ctype, channel_list_ctype, record_number_ctype, number_of_samples_ctype, timeout_ctype, iq_data_array_ctype, None if wfm_info_ctype is None else (ctypes.pointer(wfm_info_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return waveform_info.WaveformInfo(wfm_info_ctype) + + def fetch_iq_single_record_complex_f64(self, channel_list, record_number, iq_data_array, timeout): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_list_ctype = ctypes.create_string_buffer(channel_list.encode(self._encoding)) # case C010 + record_number_ctype = _visatype.ViInt64(record_number) # case S150 + number_of_samples_ctype = _visatype.ViInt64(0 if iq_data_array is None else len(iq_data_array)) # case S160 + timeout_ctype = _visatype.ViReal64(timeout) # case S150 + iq_data_array_ctype = _get_ctypes_pointer_for_buffer(value=iq_data_array, library_type=_complextype.NIComplexNumber) # case B510 + wfm_info_ctype = waveform_info.struct_niRFSA_wfmInfo() # case S220 + error_code = self._library.niRFSA_FetchIQSingleRecordComplexF64(vi_ctype, channel_list_ctype, record_number_ctype, number_of_samples_ctype, timeout_ctype, iq_data_array_ctype, None if wfm_info_ctype is None else (ctypes.pointer(wfm_info_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return waveform_info.WaveformInfo(wfm_info_ctype) + + def fetch_iq_single_record_complex_i16(self, channel_list, record_number, iq_data_array, timeout): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_list_ctype = ctypes.create_string_buffer(channel_list.encode(self._encoding)) # case C010 + record_number_ctype = _visatype.ViInt64(record_number) # case S150 + number_of_samples_ctype = _visatype.ViInt64(0 if iq_data_array is None else len(iq_data_array) // 2) # case S160 + timeout_ctype = _visatype.ViReal64(timeout) # case S150 + iq_data_array_ctype = _get_ctypes_pointer_for_buffer(value=iq_data_array, library_type=_complextype.NIComplexI16) # case B510 + wfm_info_ctype = waveform_info.struct_niRFSA_wfmInfo() # case S220 + error_code = self._library.niRFSA_FetchIQSingleRecordComplexI16(vi_ctype, channel_list_ctype, record_number_ctype, number_of_samples_ctype, timeout_ctype, iq_data_array_ctype, None if wfm_info_ctype is None else (ctypes.pointer(wfm_info_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return waveform_info.WaveformInfo(wfm_info_ctype) + + def get_attribute_vi_boolean(self, channel_name, attribute_id): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_name_ctype = ctypes.create_string_buffer(channel_name.encode(self._encoding)) # case C010 + attribute_id_ctype = _visatype.ViAttr(attribute_id) # case S150 + value_ctype = _visatype.ViBoolean() # case S220 + error_code = self._library.niRFSA_GetAttributeViBoolean(vi_ctype, channel_name_ctype, attribute_id_ctype, None if value_ctype is None else (ctypes.pointer(value_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return bool(value_ctype.value) + + def get_attribute_vi_int32(self, channel_name, attribute_id): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_name_ctype = ctypes.create_string_buffer(channel_name.encode(self._encoding)) # case C010 + attribute_id_ctype = _visatype.ViAttr(attribute_id) # case S150 + value_ctype = _visatype.ViInt32() # case S220 + error_code = self._library.niRFSA_GetAttributeViInt32(vi_ctype, channel_name_ctype, attribute_id_ctype, None if value_ctype is None else (ctypes.pointer(value_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return int(value_ctype.value) + + def get_attribute_vi_int64(self, channel_name, attribute_id): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_name_ctype = ctypes.create_string_buffer(channel_name.encode(self._encoding)) # case C010 + attribute_id_ctype = _visatype.ViAttr(attribute_id) # case S150 + value_ctype = _visatype.ViInt64() # case S220 + error_code = self._library.niRFSA_GetAttributeViInt64(vi_ctype, channel_name_ctype, attribute_id_ctype, None if value_ctype is None else (ctypes.pointer(value_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return int(value_ctype.value) + + def get_attribute_vi_real64(self, channel_name, attribute_id): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_name_ctype = ctypes.create_string_buffer(channel_name.encode(self._encoding)) # case C010 + attribute_id_ctype = _visatype.ViAttr(attribute_id) # case S150 + value_ctype = _visatype.ViReal64() # case S220 + error_code = self._library.niRFSA_GetAttributeViReal64(vi_ctype, channel_name_ctype, attribute_id_ctype, None if value_ctype is None else (ctypes.pointer(value_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return float(value_ctype.value) + + def get_attribute_vi_session(self, channel_name, attribute_id): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_name_ctype = ctypes.create_string_buffer(channel_name.encode(self._encoding)) # case C010 + attribute_id_ctype = _visatype.ViAttr(attribute_id) # case S150 + value_ctype = _visatype.ViSession() # case S220 + error_code = self._library.niRFSA_GetAttributeViSession(vi_ctype, channel_name_ctype, attribute_id_ctype, None if value_ctype is None else (ctypes.pointer(value_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return int(value_ctype.value) + + def get_attribute_vi_string(self, channel_name, attribute_id): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_name_ctype = ctypes.create_string_buffer(channel_name.encode(self._encoding)) # case C010 + attribute_id_ctype = _visatype.ViAttr(attribute_id) # case S150 + buf_size_ctype = _visatype.ViInt32() # case S170 + value_ctype = None # case C050 + error_code = self._library.niRFSA_GetAttributeViString(vi_ctype, channel_name_ctype, attribute_id_ctype, buf_size_ctype, value_ctype) + errors.handle_error(self, error_code, ignore_warnings=True, is_error_handling=False) + buf_size_ctype = _visatype.ViInt32(error_code) # case S180 + value_ctype = (_visatype.ViChar * buf_size_ctype.value)() # case C060 + error_code = self._library.niRFSA_GetAttributeViString(vi_ctype, channel_name_ctype, attribute_id_ctype, buf_size_ctype, value_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return value_ctype.value.decode(self._encoding) + + def get_deembedding_sparameters(self): + import numpy as np + number_of_ports = self.get_deembedding_table_number_of_ports() + sparameters_array_size = number_of_ports ** 2 + sparameters = np.full((number_of_ports, number_of_ports), 0 + 0j, dtype=np.complex128) + vi_ctype = _visatype.ViSession(self._vi) # case S110 + sparameters_ctype = _get_ctypes_pointer_for_buffer(value=sparameters, library_type=_complextype.NIComplexNumber) # case B510 + sparameters_array_size_ctype = _visatype.ViInt32(sparameters_array_size) # case S150 + number_of_sparameters_ctype = _visatype.ViInt32() # case S220 + number_of_ports_ctype = _visatype.ViInt32() # case S220 + error_code = self._library.niRFSA_GetDeembeddingSparameters(vi_ctype, sparameters_ctype, sparameters_array_size_ctype, None if number_of_sparameters_ctype is None else (ctypes.pointer(number_of_sparameters_ctype)), None if number_of_ports_ctype is None else (ctypes.pointer(number_of_ports_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + sparameters = sparameters.reshape((int(number_of_ports_ctype.value), int(number_of_ports_ctype.value))) + return sparameters + + def get_deembedding_table_number_of_ports(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + number_of_ports_ctype = _visatype.ViInt32() # case S220 + error_code = self._library.niRFSA_GetDeembeddingTableNumberOfPorts(vi_ctype, None if number_of_ports_ctype is None else (ctypes.pointer(number_of_ports_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return int(number_of_ports_ctype.value) + + def get_error(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code_ctype = _visatype.ViStatus() # case S220 + error_description_buffer_size_ctype = _visatype.ViInt32() # case S170 + error_description_ctype = None # case C050 + error_code = self._library.niRFSA_GetError(vi_ctype, None if error_code_ctype is None else (ctypes.pointer(error_code_ctype)), error_description_buffer_size_ctype, error_description_ctype) + errors.handle_error(self, error_code, ignore_warnings=True, is_error_handling=True) + error_description_buffer_size_ctype = _visatype.ViInt32(error_code) # case S180 + error_description_ctype = (_visatype.ViChar * error_description_buffer_size_ctype.value)() # case C060 + error_code = self._library.niRFSA_GetError(vi_ctype, None if error_code_ctype is None else (ctypes.pointer(error_code_ctype)), error_description_buffer_size_ctype, error_description_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=True) + return int(error_code_ctype.value), error_description_ctype.value.decode(self._encoding) + + def get_ext_cal_last_date_and_time(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + year_ctype = _visatype.ViInt32() # case S220 + month_ctype = _visatype.ViInt32() # case S220 + day_ctype = _visatype.ViInt32() # case S220 + hour_ctype = _visatype.ViInt32() # case S220 + minute_ctype = _visatype.ViInt32() # case S220 + error_code = self._library.niRFSA_GetExtCalLastDateAndTime(vi_ctype, None if year_ctype is None else (ctypes.pointer(year_ctype)), None if month_ctype is None else (ctypes.pointer(month_ctype)), None if day_ctype is None else (ctypes.pointer(day_ctype)), None if hour_ctype is None else (ctypes.pointer(hour_ctype)), None if minute_ctype is None else (ctypes.pointer(minute_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return int(year_ctype.value), int(month_ctype.value), int(day_ctype.value), int(hour_ctype.value), int(minute_ctype.value) + + def get_ext_cal_recommended_interval(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + months_ctype = _visatype.ViInt32() # case S220 + error_code = self._library.niRFSA_GetExtCalRecommendedInterval(vi_ctype, None if months_ctype is None else (ctypes.pointer(months_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return int(months_ctype.value) + + def get_fetch_backlog(self, channel_list, record_number): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_list_ctype = ctypes.create_string_buffer(channel_list.encode(self._encoding)) # case C010 + record_number_ctype = _visatype.ViInt64(record_number) # case S150 + backlog_ctype = _visatype.ViInt64() # case S220 + error_code = self._library.niRFSA_GetFetchBacklog(vi_ctype, channel_list_ctype, record_number_ctype, None if backlog_ctype is None else (ctypes.pointer(backlog_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return int(backlog_ctype.value) + + def get_frequency_response(self, channel_list): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_list_ctype = ctypes.create_string_buffer(channel_list.encode(self._encoding)) # case C010 + buffer_size_ctype = _visatype.ViInt32(0) # case S190 + frequencies_ctype = None # case B610 + magnitude_response_ctype = None # case B610 + phase_response_ctype = None # case B610 + number_of_frequencies_ctype = _visatype.ViInt32() # case S220 + error_code = self._library.niRFSA_GetFrequencyResponse(vi_ctype, channel_list_ctype, buffer_size_ctype, frequencies_ctype, magnitude_response_ctype, phase_response_ctype, None if number_of_frequencies_ctype is None else (ctypes.pointer(number_of_frequencies_ctype))) + errors.handle_error(self, error_code, ignore_warnings=True, is_error_handling=False) + buffer_size_ctype = _visatype.ViInt32(number_of_frequencies_ctype.value) # case S200 + frequencies_size = number_of_frequencies_ctype.value # case B620 + frequencies_ctype = _get_ctypes_pointer_for_buffer(library_type=_visatype.ViReal64, size=frequencies_size) # case B620 + magnitude_response_size = number_of_frequencies_ctype.value # case B620 + magnitude_response_ctype = _get_ctypes_pointer_for_buffer(library_type=_visatype.ViReal64, size=magnitude_response_size) # case B620 + phase_response_size = number_of_frequencies_ctype.value # case B620 + phase_response_ctype = _get_ctypes_pointer_for_buffer(library_type=_visatype.ViReal64, size=phase_response_size) # case B620 + error_code = self._library.niRFSA_GetFrequencyResponse(vi_ctype, channel_list_ctype, buffer_size_ctype, frequencies_ctype, magnitude_response_ctype, phase_response_ctype, None if number_of_frequencies_ctype is None else (ctypes.pointer(number_of_frequencies_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return [float(frequencies_ctype[i]) for i in range(buffer_size_ctype.value)], [float(magnitude_response_ctype[i]) for i in range(buffer_size_ctype.value)], [float(phase_response_ctype[i]) for i in range(buffer_size_ctype.value)] + + def get_scaling_coefficients(self, channel_list): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_list_ctype = ctypes.create_string_buffer(channel_list.encode(self._encoding)) # case C010 + array_size_ctype = _visatype.ViInt32(0) # case S190 + coefficient_info_ctype = None # case B610 + number_of_coefficient_sets_ctype = _visatype.ViInt32() # case S220 + error_code = self._library.niRFSA_GetScalingCoefficients(vi_ctype, channel_list_ctype, array_size_ctype, coefficient_info_ctype, None if number_of_coefficient_sets_ctype is None else (ctypes.pointer(number_of_coefficient_sets_ctype))) + errors.handle_error(self, error_code, ignore_warnings=True, is_error_handling=False) + array_size_ctype = _visatype.ViInt32(number_of_coefficient_sets_ctype.value) # case S200 + coefficient_info_size = number_of_coefficient_sets_ctype.value # case B620 + coefficient_info_ctype = _get_ctypes_pointer_for_buffer(library_type=coefficient_info_type.struct_niRFSA_coefficientInfo, size=coefficient_info_size) # case B620 + error_code = self._library.niRFSA_GetScalingCoefficients(vi_ctype, channel_list_ctype, array_size_ctype, coefficient_info_ctype, None if number_of_coefficient_sets_ctype is None else (ctypes.pointer(number_of_coefficient_sets_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return [coefficient_info_type.CoefficientInfo(coefficient_info_ctype[i]) for i in range(array_size_ctype.value)] + + def get_self_cal_last_date_and_time(self, self_calibration_step): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + self_calibration_step_ctype = _visatype.ViInt64(self_calibration_step.value) # case S130 + year_ctype = _visatype.ViInt32() # case S220 + month_ctype = _visatype.ViInt32() # case S220 + day_ctype = _visatype.ViInt32() # case S220 + hour_ctype = _visatype.ViInt32() # case S220 + minute_ctype = _visatype.ViInt32() # case S220 + error_code = self._library.niRFSA_GetSelfCalLastDateAndTime(vi_ctype, self_calibration_step_ctype, None if year_ctype is None else (ctypes.pointer(year_ctype)), None if month_ctype is None else (ctypes.pointer(month_ctype)), None if day_ctype is None else (ctypes.pointer(day_ctype)), None if hour_ctype is None else (ctypes.pointer(hour_ctype)), None if minute_ctype is None else (ctypes.pointer(minute_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return int(year_ctype.value), int(month_ctype.value), int(day_ctype.value), int(hour_ctype.value), int(minute_ctype.value) + + def get_self_calibration_temperature(self, self_calibration_step): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + self_calibration_step_ctype = _visatype.ViInt64(self_calibration_step.value) # case S130 + temperature_ctype = _visatype.ViReal64() # case S220 + error_code = self._library.niRFSA_GetSelfCalLastTemp(vi_ctype, self_calibration_step_ctype, None if temperature_ctype is None else (ctypes.pointer(temperature_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return float(temperature_ctype.value) + + def get_terminal_name(self, signal, signal_identifier): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + signal_ctype = _visatype.ViInt32(signal.value) # case S130 + signal_identifier_ctype = ctypes.create_string_buffer(signal_identifier.encode(self._encoding)) # case C020 + buffer_size_ctype = _visatype.ViInt32() # case S170 + terminal_name_ctype = None # case C050 + error_code = self._library.niRFSA_GetTerminalName(vi_ctype, signal_ctype, signal_identifier_ctype, buffer_size_ctype, terminal_name_ctype) + errors.handle_error(self, error_code, ignore_warnings=True, is_error_handling=False) + buffer_size_ctype = _visatype.ViInt32(error_code) # case S180 + terminal_name_ctype = (_visatype.ViChar * buffer_size_ctype.value)() # case C060 + error_code = self._library.niRFSA_GetTerminalName(vi_ctype, signal_ctype, signal_identifier_ctype, buffer_size_ctype, terminal_name_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return terminal_name_ctype.value.decode(self._encoding) + + def init_with_options(self, resource_name, id_query, reset_device, option_string): # noqa: N802 + resource_name_ctype = ctypes.create_string_buffer(resource_name.encode(self._encoding)) # case C020 + id_query_ctype = _visatype.ViBoolean(id_query) # case S150 + reset_device_ctype = _visatype.ViBoolean(reset_device) # case S150 + option_string_ctype = ctypes.create_string_buffer(option_string.encode(self._encoding)) # case C020 + new_vi_ctype = _visatype.ViSession() # case S220 + error_code = self._library.niRFSA_InitWithOptions(resource_name_ctype, id_query_ctype, reset_device_ctype, option_string_ctype, None if new_vi_ctype is None else (ctypes.pointer(new_vi_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return int(new_vi_ctype.value) + + def initiate(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_Initiate(vi_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def is_self_cal_valid(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + self_cal_valid_ctype = _visatype.ViBoolean() # case S220 + valid_steps_ctype = _visatype.ViInt64() # case S220 + error_code = self._library.niRFSA_IsSelfCalValid(vi_ctype, None if self_cal_valid_ctype is None else (ctypes.pointer(self_cal_valid_ctype)), None if valid_steps_ctype is None else (ctypes.pointer(valid_steps_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return bool(self_cal_valid_ctype.value), enums.SelfCalSteps(valid_steps_ctype.value) + + def load_configurations_from_file(self, channel_name, file_path): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_name_ctype = ctypes.create_string_buffer(channel_name.encode(self._encoding)) # case C010 + file_path_ctype = ctypes.create_string_buffer(file_path.encode(self._encoding)) # case C020 + error_code = self._library.niRFSA_LoadConfigurationsFromFile(vi_ctype, channel_name_ctype, file_path_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def lock(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_LockSession(vi_ctype, None) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def perform_thermal_correction(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_PerformThermalCorrection(vi_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def read_iq_single_record_complex_f64(self, channel_list, iq_data_array, timeout): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_list_ctype = ctypes.create_string_buffer(channel_list.encode(self._encoding)) # case C010 + timeout_ctype = _visatype.ViReal64(timeout) # case S150 + iq_data_array_ctype = _get_ctypes_pointer_for_buffer(value=iq_data_array, library_type=_complextype.NIComplexNumber) # case B510 + data_array_size_ctype = _visatype.ViInt64(0 if iq_data_array is None else len(iq_data_array)) # case S120 + wfm_info_ctype = waveform_info.struct_niRFSA_wfmInfo() # case S220 + error_code = self._library.niRFSA_ReadIQSingleRecordComplexF64(vi_ctype, channel_list_ctype, timeout_ctype, iq_data_array_ctype, data_array_size_ctype, None if wfm_info_ctype is None else (ctypes.pointer(wfm_info_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return waveform_info.WaveformInfo(wfm_info_ctype) + + def read_power_spectrum_f32(self, channel_list, timeout, power_spectrum_data_array): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_list_ctype = ctypes.create_string_buffer(channel_list.encode(self._encoding)) # case C010 + timeout_ctype = _visatype.ViReal64(timeout) # case S150 + power_spectrum_data_array_ctype = _get_ctypes_pointer_for_buffer(value=power_spectrum_data_array, library_type=_visatype.ViReal32) # case B550 + data_array_size_ctype = _visatype.ViInt32(len(power_spectrum_data_array)) # case S120 + spectrum_info_ctype = spectrum_info_type.struct_niRFSA_spectrumInfo() # case S220 + error_code = self._library.niRFSA_ReadPowerSpectrumF32(vi_ctype, channel_list_ctype, timeout_ctype, power_spectrum_data_array_ctype, data_array_size_ctype, None if spectrum_info_ctype is None else (ctypes.pointer(spectrum_info_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return spectrum_info_type.SpectrumInfo(spectrum_info_ctype) + + def read_power_spectrum_f64(self, channel_list, timeout, power_spectrum_data_array): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_list_ctype = ctypes.create_string_buffer(channel_list.encode(self._encoding)) # case C010 + timeout_ctype = _visatype.ViReal64(timeout) # case S150 + power_spectrum_data_array_ctype = _get_ctypes_pointer_for_buffer(value=power_spectrum_data_array, library_type=_visatype.ViReal64) # case B550 + data_array_size_ctype = _visatype.ViInt32(len(power_spectrum_data_array)) # case S120 + spectrum_info_ctype = spectrum_info_type.struct_niRFSA_spectrumInfo() # case S220 + error_code = self._library.niRFSA_ReadPowerSpectrumF64(vi_ctype, channel_list_ctype, timeout_ctype, power_spectrum_data_array_ctype, data_array_size_ctype, None if spectrum_info_ctype is None else (ctypes.pointer(spectrum_info_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return spectrum_info_type.SpectrumInfo(spectrum_info_ctype) + + def reset_device(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_ResetDevice(vi_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def reset_with_options(self, steps_to_omit): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + steps_to_omit_ctype = _visatype.ViUInt64(steps_to_omit.value) # case S130 + error_code = self._library.niRFSA_ResetWithOptions(vi_ctype, steps_to_omit_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def save_configurations_to_file(self, channel_name, file_path): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_name_ctype = ctypes.create_string_buffer(channel_name.encode(self._encoding)) # case C010 + file_path_ctype = ctypes.create_string_buffer(file_path.encode(self._encoding)) # case C020 + error_code = self._library.niRFSA_SaveConfigurationsToFile(vi_ctype, channel_name_ctype, file_path_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def self_calibrate_range(self, steps_to_omit, minimum_frequency, maximum_frequency, minimum_reference_level, maximum_reference_level): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + steps_to_omit_ctype = _visatype.ViInt64(steps_to_omit.value) # case S130 + minimum_frequency_ctype = _visatype.ViReal64(minimum_frequency) # case S150 + maximum_frequency_ctype = _visatype.ViReal64(maximum_frequency) # case S150 + minimum_reference_level_ctype = _visatype.ViReal64(minimum_reference_level) # case S150 + maximum_reference_level_ctype = _visatype.ViReal64(maximum_reference_level) # case S150 + error_code = self._library.niRFSA_SelfCalibrateRange(vi_ctype, steps_to_omit_ctype, minimum_frequency_ctype, maximum_frequency_ctype, minimum_reference_level_ctype, maximum_reference_level_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def send_software_edge_trigger(self, trigger, trigger_identifier): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + trigger_ctype = _visatype.ViInt32(trigger.value) # case S130 + trigger_identifier_ctype = ctypes.create_string_buffer(trigger_identifier.encode(self._encoding)) # case C020 + error_code = self._library.niRFSA_SendSoftwareEdgeTrigger(vi_ctype, trigger_ctype, trigger_identifier_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def set_attribute_vi_boolean(self, channel_name, attribute_id, value): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_name_ctype = ctypes.create_string_buffer(channel_name.encode(self._encoding)) # case C010 + attribute_id_ctype = _visatype.ViAttr(attribute_id) # case S150 + value_ctype = _visatype.ViBoolean(value) # case S150 + error_code = self._library.niRFSA_SetAttributeViBoolean(vi_ctype, channel_name_ctype, attribute_id_ctype, value_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def set_attribute_vi_int32(self, channel_name, attribute_id, value): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_name_ctype = ctypes.create_string_buffer(channel_name.encode(self._encoding)) # case C010 + attribute_id_ctype = _visatype.ViAttr(attribute_id) # case S150 + value_ctype = _visatype.ViInt32(value) # case S150 + error_code = self._library.niRFSA_SetAttributeViInt32(vi_ctype, channel_name_ctype, attribute_id_ctype, value_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def set_attribute_vi_int64(self, channel_name, attribute_id, value): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_name_ctype = ctypes.create_string_buffer(channel_name.encode(self._encoding)) # case C010 + attribute_id_ctype = _visatype.ViAttr(attribute_id) # case S150 + value_ctype = _visatype.ViInt64(value) # case S150 + error_code = self._library.niRFSA_SetAttributeViInt64(vi_ctype, channel_name_ctype, attribute_id_ctype, value_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def set_attribute_vi_real64(self, channel_name, attribute_id, value): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_name_ctype = ctypes.create_string_buffer(channel_name.encode(self._encoding)) # case C010 + attribute_id_ctype = _visatype.ViAttr(attribute_id) # case S150 + value_ctype = _visatype.ViReal64(value) # case S150 + error_code = self._library.niRFSA_SetAttributeViReal64(vi_ctype, channel_name_ctype, attribute_id_ctype, value_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def set_attribute_vi_session(self, channel_name, attribute_id): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_name_ctype = ctypes.create_string_buffer(channel_name.encode(self._encoding)) # case C010 + attribute_id_ctype = _visatype.ViAttr(attribute_id) # case S150 + value_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_SetAttributeViSession(vi_ctype, channel_name_ctype, attribute_id_ctype, value_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def set_attribute_vi_string(self, channel_name, attribute_id, value): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + channel_name_ctype = ctypes.create_string_buffer(channel_name.encode(self._encoding)) # case C010 + attribute_id_ctype = _visatype.ViAttr(attribute_id) # case S150 + value_ctype = ctypes.create_string_buffer(value.encode(self._encoding)) # case C020 + error_code = self._library.niRFSA_SetAttributeViString(vi_ctype, channel_name_ctype, attribute_id_ctype, value_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def unlock(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_UnlockSession(vi_ctype, None) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def close(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_close(vi_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def reset(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + error_code = self._library.niRFSA_reset(vi_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return + + def self_test(self): # noqa: N802 + vi_ctype = _visatype.ViSession(self._vi) # case S110 + self_test_result_ctype = _visatype.ViInt16() # case S220 + self_test_message_ctype = (_visatype.ViChar * 256)() # case C070 + error_code = self._library.niRFSA_self_test(vi_ctype, None if self_test_result_ctype is None else (ctypes.pointer(self_test_result_ctype)), self_test_message_ctype) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + return int(self_test_result_ctype.value), self_test_message_ctype.value.decode(self._encoding) diff --git a/generated/nirfsa/nirfsa/_library_singleton.py b/generated/nirfsa/nirfsa/_library_singleton.py new file mode 100644 index 000000000..e34ceeeff --- /dev/null +++ b/generated/nirfsa/nirfsa/_library_singleton.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +# This file was generated + +import platform + +import ctypes +import ctypes.util +import nirfsa._library as _library +import nirfsa.errors as errors +import threading + + +_instance = None +_instance_lock = threading.Lock() +_library_info = {'Linux': {'64bit': {'name': 'nirfsa', 'type': 'cdll'}}, + 'Windows': {'32bit': {'name': 'niRFSA.dll', 'type': 'windll'}, + '64bit': {'name': 'niRFSA_64.dll', 'type': 'cdll'}}} + + +def _get_library_name(): + try: + lib_name = ctypes.util.find_library(_library_info[platform.system()][platform.architecture()[0]]['name']) # We find and return full path to the DLL + if lib_name is None: + raise errors.DriverNotInstalledError() + return lib_name + except KeyError: + raise errors.UnsupportedConfigurationError + + +def _get_library_type(): + try: + return _library_info[platform.system()][platform.architecture()[0]]['type'] + except KeyError: + raise errors.UnsupportedConfigurationError + + +def get(): + '''get + + Returns the library.Library singleton for nirfsa. + ''' + global _instance + + with _instance_lock: + if _instance is None: + try: + library_type = _get_library_type() + if library_type == 'windll': + ctypes_library = ctypes.WinDLL(_get_library_name()) + else: + assert library_type == 'cdll' + ctypes_library = ctypes.CDLL(_get_library_name()) + except OSError: + raise errors.DriverNotInstalledError() + _instance = _library.Library(ctypes_library) + return _instance + diff --git a/generated/nirfsa/nirfsa/_visatype.py b/generated/nirfsa/nirfsa/_visatype.py new file mode 100644 index 000000000..f4da87aa7 --- /dev/null +++ b/generated/nirfsa/nirfsa/_visatype.py @@ -0,0 +1,29 @@ +import ctypes + + +'''Definitions of the VISA types used by the C API of the driver runtime. +These are aliased directly to ctypes types so can be used directly to call into the library. +''' + + +ViChar = ctypes.c_char +ViInt8 = ctypes.c_int8 +ViUInt8 = ctypes.c_uint8 +ViInt16 = ctypes.c_int16 +ViUInt16 = ctypes.c_uint16 +ViInt32 = ctypes.c_int32 +ViUInt32 = ctypes.c_uint32 +ViInt64 = ctypes.c_int64 +ViUInt64 = ctypes.c_uint64 +ViString = ctypes.c_char_p +ViReal32 = ctypes.c_float +ViReal64 = ctypes.c_double + +# Types that are based on other visatypes +ViBoolean = ViUInt16 +ViStatus = ViInt32 +ViSession = ViUInt32 +ViAttr = ViUInt32 +ViConstString = ViString +ViRsrc = ViString + diff --git a/generated/nirfsa/nirfsa/coefficient_info_type.py b/generated/nirfsa/nirfsa/coefficient_info_type.py new file mode 100644 index 000000000..2f4111c30 --- /dev/null +++ b/generated/nirfsa/nirfsa/coefficient_info_type.py @@ -0,0 +1,60 @@ +import ctypes +import nirfsa._visatype + + +# This class is an internal ctypes implementation detail that corresponds to +# niRFSA_coefficientInfo in the C API +class struct_niRFSA_coefficientInfo(ctypes.Structure): # noqa N801 + _pack_ = 8 + _fields_ = [ + ('offset', nirfsa._visatype.ViReal64), + ('gain', nirfsa._visatype.ViReal64), + ('reserved1', nirfsa._visatype.ViReal64), + ('reserved2', nirfsa._visatype.ViReal64), + ] + + def __init__(self, data=None, offset=0.0, gain=0.0, + reserved1=0.0, reserved2=0.0): + super(ctypes.Structure, self).__init__() + if data is not None: + self.offset = data.offset + self.gain = data.gain + self.reserved1 = data.reserved1 + self.reserved2 = data.reserved2 + else: + self.offset = offset + self.gain = gain + self.reserved1 = reserved1 + self.reserved2 = reserved2 + + +class CoefficientInfo: + """Python-friendly wrapper for niRFSA coefficient info.""" + + def __init__(self, data=None, offset=0.0, gain=0.0): + if data is not None: + self.offset = data.offset + self.gain = data.gain + else: + self.offset = offset + self.gain = gain + + def _create_copy(self, target_class): + try: + return target_class( + offset=self.offset, + gain=self.gain, + ) + except TypeError: + return target_class(data=self) + + def __repr__(self): + return "{}.{}(offset={}, gain={})".format( + self.__class__.__module__, + self.__class__.__qualname__, + self.offset, + self.gain, + ) + + def __str__(self): + return self.__repr__() diff --git a/generated/nirfsa/nirfsa/enums.py b/generated/nirfsa/nirfsa/enums.py new file mode 100644 index 000000000..452a09450 --- /dev/null +++ b/generated/nirfsa/nirfsa/enums.py @@ -0,0 +1,1479 @@ +# -*- coding: utf-8 -*- +# This file was generated + +from enum import Enum +from enum import IntFlag + + +class AcquisitionType(Enum): + IQ = 100 + r''' + Configures NI-RFSA for I/Q acquisitions. + ''' + SPECTRUM = 101 + r''' + Configures NI-RFSA for spectrum acquisitions. + ''' + + +class Action(Enum): + COMMIT = 1501 + r''' + The new calibration constants are stored in the EEPROM. + ''' + ABORT = 1500 + r''' + The old calibration constants are kept, and the new ones are discarded. + ''' + + +class AdvanceTriggerDigitalEdgeEdge(Enum): + RISING = 900 + r''' + The trigger asserts on the rising edge of the signal. + ''' + FALLING = 901 + r''' + The trigger asserts on the falling edge of the signal. + ''' + + +class AdvanceTriggerType(Enum): + NONE = 600 + r''' + No Advance Trigger is configured. + ''' + DIGITAL_EDGE = 601 + r''' + The Advance Trigger is not asserted until a digital edge is detected. The source of the digital edge is specified with the digital_edge_advance_trigger_source property. + ''' + SOFTWARE_EDGE = 604 + r''' + The Advance Trigger is not asserted until a software trigger occurs. You can assert the software trigger by calling the send_software_edge_trigger method and selecting NIRFSA_VAL_ADVANCE_TRIGGER as the **trigger** parameter. + ''' + + +class AllowOutOfSpecificationUserSettings(Enum): + DISABLED = 1900 + r''' + Disables out-of-specification user settings. + ''' + ENABLED = 1901 + r''' + Enables out-of-specification user settings. + ''' + + +class ArmReferenceTriggerType(Enum): + NONE = 600 + r''' + No Arm Reference Trigger is configured. + ''' + DIGITAL_EDGE = 601 + r''' + The Arm Reference Trigger is not asserted until a digital edge is detected. The source of the digital edge is specified with the digital_edge_arm_ref_trigger_source property. + ''' + SOFTWARE_EDGE = 604 + r''' + The Arm Reference Trigger is not asserted until a software trigger occurs. You can assert the software trigger by calling the send_software_edge_trigger method and selecting SoftwareTriggerType.ARM_REF as the **trigger** parameter. + ''' + + +class CalToneMode(Enum): + DISABLED = 1900 + r''' + Disables the calibration tone for the associated signal path. + ''' + CAL_TONE_LOWBAND_RF = 2701 + r''' + Injects the calibration tone into the low band RF signal path. + ''' + CAL_TONE_HIGHBAND_RF = 2702 + r''' + Injects the calibration tone into the high band RF signal path. + ''' + CAL_TONE_HIGHBAND_IF = 2703 + r''' + Injects the calibration tone into the high band IF signal path. + ''' + CAL_TONE_LOWBAND_RF_WITHOUT_ALC = 2704 + r''' + Injects the calibration tone into the low band RF signal path, bypassing the ALC. + ''' + CAL_TONE_COMB_GENERATOR = 2705 + r''' + Injects the calibration tone into the high band RF signal path through the Comb Generator. + ''' + + +class CalibrateStep(Enum): + IF_ATTENUATION = 1600 + r''' + Initializes the IF Attenuation Calibration step. This step is not supported for the PXIe-5693. + ''' + IF_RESPONSE = 1601 + r''' + Initializes the IF Response Calibration step. This step is not supported for the PXIe-5603/5605 or PXIe-5693/5698. + ''' + IF_REF_LEVEL = 1602 + r''' + Initializes the Ref Level Calibration step. This step is not supported on the PXIe-5694. + ''' + LO_EXPORT = 1603 + r''' + Initializes the LO Export Calibration step. This step calibrates the output power of each LO to be within specification. This step is not supported on the PXIe-5601 or the PXIe-5693/5694/5698. + ''' + GAIN_REFERENCE = 1604 + r''' + Initializes the Gain Reference Calibration step. This step calibrates the calibration tone amplitude across supported calibration tone frequencies. This step is not supported on the PXIe-5601/5603/5605 or PXIe-5694. + ''' + + +class ChannelCoupling(Enum): + AC = 3001 + r''' + Specifies that the RF input channel is AC-coupled. For low frequencies (<10 MHz), accuracy decreases because NI-RFSA does not calibrate the configuration. + ''' + DC = 3002 + r''' + Specifies that the RF input channel is DC-coupled. NI-RFSA enforces a minimum RF attenuation for device protection. + ''' + + +class ConditioningCalToneMode(Enum): + DISABLED = 1900 + r''' + Disables the calibration tone for the associated signal path. + ''' + CAL_TONE_LOWBAND_RF = 2701 + r''' + Injects the calibration tone into the low band RF signal path. + ''' + CAL_TONE_HIGHBAND_RF = 2702 + r''' + Injects the calibration tone into the high band RF signal path. + ''' + + +class DeembeddingType(Enum): + NONE = 3900 + r''' + De-embedding is not applied to the measurement. + ''' + SCALAR = 3901 + r''' + De-embeds the measurement using only the gain term. + ''' + VECTOR = 3902 + r''' + De-embeds the measurement using the gain term and the reflection term. + ''' + + +class DeviceResponseType(Enum): + DOWNCONVERTER_IF = 2800 + r''' + Returns the IF response of the downconverter. + ''' + DOWNCONVERTER_RF = 2801 + r''' + Returns the RF response of the downconverter. This value is supported only for the PXIe-5603/5605/5665/5667/5693.. + ''' + DOWNCONVERTER_COMBINED = 2802 + r''' + Returns the combined RF and IF response of the downconverter. The combined response is in terms of IF frequency. This value is supported only for the PXIe-5603/5605/5665/5667. + ''' + VSA_IF = 2803 + r''' + Returns the IF response of the entire NI-RFSA device. This value is supported only for the PXIe-5665/5667. + ''' + VSA_COMBINED = 2804 + r''' + Returns the combined IF and RF response of the entire NI-RFSA device. The combined response is in terms of IF frequency. This value is supported only for the PXIe-5665/5667. + ''' + + +class DigitizerDitherEnabled(Enum): + DISABLED = 1900 + r''' + Disables dither on the digitizer. + ''' + ENABLED = 1901 + r''' + Enables dither on the digitizer. + ''' + + +class DigitizerSampleClockExportedTerminal(Enum): + NONE = 'None' + r''' + The Reference Clock is not exported. This value is not valid for the PXIe-5644/5645/5646. + ''' + CLK_OUT = 'ClkOut' + r''' + Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. + ''' + + +class DigitizerSampleClockTimebaseSource(Enum): + ONBOARD_CLOCK = 'OnboardClock' + r''' + The digitizer uses its onboard clock as the Sample Clock timebase. + ''' + CLK_IN = 'ClkIn' + r''' + The digitizer uses the signal present on the CLK IN connector as the Sample Clock timebase. + ''' + LO_REF_CLK = 'LORefClk' + r''' + The digitizer uses the signal generated on the 100 MHz REF OUT terminal on the PXIe-5653 as the Sample Clock timebase. This value is supported only for the PXIe-5665. + ''' + PXI_STAR = 'PXI_STAR' + r''' + The digitizer uses the signal present at the PXI star trigger line as the Sample Clock timebase. This value is not supported for the PXIe-5668. + ''' + DOWNCONVERTER_LO2_OUT = 'DownconverterLO2Out' + r''' + The digitizer uses the signal present on the LO2 OUT connector on the downconverter as the Sample Clock timebase. This value is supported only for the PXIe-5668. + ''' + + +class DownconverterFrequencyOffsetMode(Enum): + AUTOMATIC = 1903 + r''' + NI-RFSA places the downconverter center frequency outside of the signal bandwidth if the signal_bandwidth property has been set and can be avoided. + ''' + ENABLED = 1901 + r''' + NI-RFSA places the downconverter center frequency outside of the signal bandwidth if the signal_bandwidth property has been set and can be avoided. NI-RFSA returns an error if the signal_bandwidth property has not been set, or if the signal bandwidth is too large. + ''' + USER_DEFINED = 1904 + r''' + NI-RFSA uses the offset that you specified with the downconverter_frequency_offset or downconverter_center_frequency properties. + ''' + + +class DownconverterLoopBandwidth(Enum): + NARROW = 800 + r''' + Specifies that the downconverter module uses a narrow loop bandwidth. + ''' + MEDIUM = 801 + r''' + Specifies that the downconverter module uses a medium loop bandwidth. + ''' + WIDE = 802 + r''' + Specifies that the downconverter module uses a wide loop bandwidth. + ''' + + +class DownconverterPreselectorEnabled(Enum): + DISABLED = 2600 + r''' + Disables the preselector. + ''' + ENABLED_WHEN_IN_SIGNAL_PATH = 2601 + r''' + The preselector is automatically enabled when it is in the signal path and is automatically disabled when it is not in the signal path. Use the preselector_present property to determine if the downconverter has an preselector. + ''' + ENABLED = 2602 + r''' + Enables the preselector. If the preselector is not in the signal path or if the preselector is not supported on the device, NI-RFSA returns an error. Select the DownconverterPreselectorEnabled.ENABLED_WHEN_IN_SIGNAL_PATH whenever possible avoid an error. + ''' + + +class EnableAttrVals(Enum): + DISABLED = 1900 + r''' + The property is disabled. + ''' + ENABLED = 1901 + r''' + The property is enabled. + ''' + + +class EnableRfPreamp(Enum): + DISABLED = 2500 + r''' + Disables the RF preamplifier. + ''' + ENABLED_WHEN_IN_SIGNAL_PATH = 2501 + r''' + Enables the RF preamplifier when the RF preamplifier is present in the signal path and disables the preamplifier when it is not in the signal path. Only devices with an RF preamplifier on the downconverter and an RF preselector support this option. Use the rf_preamp_present property to determine whether the downconverter has a preamplifier. + ''' + ENABLED = 2502 + r''' + Enables the RF preamplifier. If the RF preamplifier is not in a signal path, NI-RFSA returns an error. Select the EnableRfPreamp.ENABLED_WHEN_IN_SIGNAL_PATH value whenever possible to avoid an error. + ''' + AUTOMATIC = 2503 + r''' + Automatically enables the RF preamplifier based on the value of the reference_level property. This value is valid only for the PXIe-5644/5645/5646, PXIe-5667, and PXIe-5830/5831/5832/5840/5841. + ''' + + +class ExportOutputTerminal(Enum): + DO_NOT_EXPORT = '' + r''' + The signal is not exported. + ''' + CLK_OUT = 'ClkOut' + r''' + Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. + ''' + REF_OUT = 'RefOut' + r''' + Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. + ''' + REF_OUT2 = 'RefOut2' + r''' + Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. + ''' + PFI0 = 'PFI0' + r''' + The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. + ''' + PFI1 = 'PFI1' + r''' + The trigger is received on PFI 1. + ''' + PXI_TRIG0 = 'PXI_Trig0' + r''' + The trigger is received on PXI trigger line 0. + ''' + PXI_TRIG1 = 'PXI_Trig1' + r''' + The trigger is received on PXI trigger line 1. + ''' + PXI_TRIG2 = 'PXI_Trig2' + r''' + The trigger is received on PXI trigger line 2. + ''' + PXI_TRIG3 = 'PXI_Trig3' + r''' + The trigger is received on PXI trigger line 3. + ''' + PXI_TRIG4 = 'PXI_Trig4' + r''' + The trigger is received on PXI trigger line 4. + ''' + PXI_TRIG5 = 'PXI_Trig5' + r''' + The trigger is received on PXI trigger line 5. + ''' + PXI_TRIG6 = 'PXI_Trig6' + r''' + The trigger is received on PXI trigger line 6. + ''' + PXI_TRIG7 = 'PXI_Trig7' + r''' + The trigger is received on PXI trigger line 7. + ''' + PXI_STAR = 'PXI_STAR' + r''' + The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. + ''' + PXIE_DSTARC = 'PXIe_DStarC' + r''' + The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. + ''' + DIO_PFI0 = 'DIO/PFI0' + r''' + The trigger is received on PFI0 from the front panel DIO terminal. + ''' + DIO_PFI1 = 'DIO/PFI1' + r''' + The trigger is received on PFI1 from the front panel DIO terminal. + ''' + DIO_PFI2 = 'DIO/PFI2' + r''' + The trigger is received on PFI2 from the front panel DIO terminal. + ''' + DIO_PFI3 = 'DIO/PFI3' + r''' + The trigger is received on PFI3 from the front panel DIO terminal. + ''' + DIO_PFI4 = 'DIO/PFI4' + r''' + The trigger is received on PFI4 from the front panel DIO terminal. + ''' + DIO_PFI5 = 'DIO/PFI5' + r''' + The trigger is received on PFI5 from the front panel DIO terminal. + ''' + DIO_PFI6 = 'DIO/PFI6' + r''' + The trigger is received on PFI6 from the front panel DIO terminal. + ''' + DIO_PFI7 = 'DIO/PFI7' + r''' + The trigger is received on PFI7 from the front panel DIO terminal. + ''' + + +class FetchRelativeTo(Enum): + MOST_RECENT_SAMPLE = 700 + r''' + Fetching occurs relative to the most recently acquired data. The value of the fetch_offset property must be negative. + ''' + FIRST_SAMPLE = 701 + r''' + Fetching occurs at the first sample acquired by the device. If the device wraps its buffer, the first sample is no longer available. In this case, NI-RFSA returns an error if the fetch offset is in the overwritten data. + ''' + REFERENCE_TRIGGER = 702 + r''' + Fetching occurs relative to the Reference Trigger. This value behaves like FetchRelativeTo.FIRST_SAMPLE if no Reference Trigger is configured. + ''' + FIRST_PRETRIGGER_SAMPLE = 703 + r''' + Fetching occurs relative to the first pretrigger sample acquired. + ''' + CURRENT_READ_POSITION = 704 + r''' + Fetching occurs after the last fetched sample. + ''' + + +class FrequencySettlingUnits(Enum): + PPM = 2000 + r''' + Specifies the frequency settling time in parts per million (PPM). + ''' + SECONDS_AFTER_LOCK = 2001 + r''' + Specifies the frequency settling in time after lock (seconds). + ''' + SECONDS_AFTER_IO = 2002 + r''' + Specifies the frequency settling time after I/O (seconds). + ''' + + +class IFattenTableSel(Enum): + STANDARD = 2900 + r''' + Specifies that the standard IF attenuation table is used for the external calibration. + ''' + ACPR = 2901 + r''' + Specifies that the adjacent channel power ratio (ACPR) IF attenuation table is used for the external calibration. You can only select this value if you set the CAL_IF_FILTER_SELECTION property to IFfilterSelection.EXT_CAL_IF_FILTER_PATH_1 or IFfilterSelection.EXT_CAL_IF_FILTER_PATH_2. + ''' + + +class IFfilter(Enum): + _187_5_MHZ_WIDE = 1400 + r''' + The device uses the 187.5 MHz wide bandwidth filter. + ''' + _187_5_MHZ_NARROW = 1401 + r''' + The device uses the 187.5 MHz narrow bandwidth filter. + ''' + _53_MHZ = 1402 + r''' + The device uses the 53 MHz filter. + ''' + BYPASS = 1403 + r''' + The device bypasses the IF filter. + ''' + + +class IFfilterSelection(Enum): + EXT_CAL_IF_FILTER_PATH_1 = 2100 + r''' + Specifies that the 5 MHz filter path is used during calibration. + ''' + EXT_CAL_IF_FILTER_PATH_2 = 2101 + r''' + Specifies that the 300 kHz filter path is used during calibration. Not supported for the PXIe-5694. + ''' + EXT_CAL_IF_FILTER_PATH_3 = 2102 + r''' + None of the IF filter paths are used during calibration. + ''' + EXT_CAL_IF_FILTER_PATH_4 = 2103 + r''' + Specifies that the 20 MHz filter path is used during calibration. + ''' + EXT_CAL_IF_FILTER_PATH_5 = 2104 + r''' + Specifies that the 1.4 MHz filter path is used during calibration. + ''' + EXT_CAL_IF_FILTER_PATH_6 = 2105 + r''' + Specifies that the 400 kHz filter path is used during calibration. + ''' + EXT_CAL_IF_FILTER_PATH_7 = 2106 + r''' + Specifies that the 110 kHz filter path is used during calibration. + ''' + EXT_CAL_IF_FILTER_PATH_8 = 2107 + r''' + Specifies that the 30 kHz filter path is used during calibration. + ''' + + +class IfConditioningDownConversionEnabled(Enum): + DISABLED = 1900 + r''' + Disables IF conditioning downconversion. + ''' + ENABLED = 1901 + r''' + Enables IF conditioning downconversion. + ''' + + +class InputIsolationEnabled(Enum): + DISABLED = 1900 + r''' + Disables input isolation. + ''' + ENABLED = 1901 + r''' + Enables input isolation. + ''' + + +class InputPort(Enum): + RF_IN = 2000 + r''' + Enables the RF IN port. + ''' + IQ_IN = 2001 + r''' + Enables the I/Q IN port. + ''' + CAL_IN = 2002 + r''' + Enables the CAL IN port. + ''' + I_ONLY = 2003 + r''' + Enables the I terminals of the I/Q IN port. It is supported only for PXIe-5645. + ''' + + +class IqInPortTerminalConfiguration(Enum): + DIFFERENTIAL = 2100 + r''' + Sets the terminal configuration to differential. + ''' + SINGLE_ENDED = 2101 + r''' + Sets the terminal configuration to single-ended. + ''' + + +class LinearInterpolationFormat(Enum): + MAGNITUDE_AND_PHASE = 4001 + r''' + Results in a linear interpolation of the real portion of the complex number and a separate linear interpolation of the complex portion. + ''' + MAGNITUDE_DB_AND_PHASE = 4002 + r''' + Results in a linear interpolation of the magnitude and a separate linear interpolation of the phase. + ''' + REAL_AND_IMAGINARY = 4000 + r''' + Results in a linear interpolation of the magnitude, in decibels, and a separate linear interpolation of the phase. + ''' + + +class Lo2ExportEnabled(Enum): + DISABLED = 1900 + r''' + Disables LO2 export. + ''' + ENABLED = 1901 + r''' + Enables LO2 export. + ''' + + +class LoInjection(Enum): + HIGH = 1300 + r''' + Configures the LO signal that the NI-RFSA device generates at a frequency higher than the RF frequency. This LO frequency is given by the formula fLO = fRF + fIF. + ''' + LOW = 1301 + r''' + Configures the LO signal that the NI-RFSA device generates at a frequency lower than the RF frequency. This LO frequency is given by the formula fLO = fRF - fIF. + ''' + + +class LoNumber(Enum): + LO2 = 2201 + r''' + Selects LO2, which is the 4 GHz signal path. + ''' + LO3 = 2202 + r''' + Selects LO3, which is the 800 MHz signal path. + ''' + LO1 = 2200 + r''' + Selects LO1, which is the 3.2 GHz to 8.3 GHz variable signal path. + ''' + + +class LoOutExportConfigureFromRfsg(Enum): + DISABLED = 1900 + r''' + Do not allow NI-RFSG to control the NI-RFSA local oscillator export. + ''' + ENABLED = 1901 + r''' + Allow NI-RFSG to control the NI-RFSA local oscillator export. + ''' + + +class LoPathSel(Enum): + EXT_CAL_LO_PATH_1 = 2300 + r''' + Specifies that the LO path 1 is used. + ''' + EXT_CAL_LO_PATH_2 = 2301 + r''' + Specifies that the LO path 2 is used. + ''' + EXT_CAL_LO_PATH_3 = 2302 + r''' + Specifies that the LO path 3 is used. + ''' + EXT_CAL_LO_PATH_4 = 2303 + r''' + Specifies that the LO path 4 is used. + ''' + EXT_CAL_LO_PATH_5 = 2304 + r''' + Specifies that the LO path 5 is used. + ''' + + +class LoPllFractionalModeEnabled(Enum): + DISABLED = 1900 + r''' + Disables fractional mode for the LO PLL. + ''' + ENABLED = 1901 + r''' + Enables fractional mode for the LO PLL. + ''' + + +class LoSource(Enum): + NONE = 'None' + r''' + Specifies that no LO source is required to downconvert the RF input signal. + ''' + ONBOARD = 'Onboard' + r''' + Specifies that the onboard synthesizer is used to generate the LO signal that downconverts the RF input signal.**PXIe-5831/5832** This configuration uses the onboard LO of the PXIe-3622, using the LO2 stage.**PXIe-5831/5832 with PXIe-5653** This configuration uses the onboard LO of the PXIe-5653 when associated with the PXIe-3622.**PXIe-5841 with PXIe-5655** This configuration uses the onboard LO of the PXIe-5655. + ''' + LO_IN = 'LO_In' + r''' + Specifies that the LO source used to downconvert the RF input signal is connected to the LO IN connector on the front panel. + ''' + LO_SOURCE_SECONDARY = 'Secondary' + r''' + Uses the PXIe-5831/5840 internal LO as the LO source. This value is valid on only the PXIe-5831 with PXIe-5653 (LO1 stage only) or PXIe-5832 with PCIe-5653 (LO1 stage only). + ''' + LO_SOURCE_SG_SA_SHARED = 'SG_SA_Shared' + r''' + Uses the same internal LO during NI-RFSA and NI-RFSG sessions. NI-RFSA selects an internal synthesizer and the synthesizer signal is switched to both the RF Out and RF In mixers. This value is valid on only the PXIe-5830/5831/5832/5841 with PXIe-5655. + ''' + + +class LoYigMainCoilDrive(Enum): + NORMAL = 2400 + r''' + Adjusts the YIG main coil on the LO for an underdamped response. + ''' + FAST = 2401 + r''' + Adjusts the YIG main coil on the LO for an overdamped response. + ''' + + +class LoadConfigurationResetOptions(Enum): + NONE = 0 + r''' + NI-RFSA resets all configurations. + ''' + DEEMBEDDING_TABLES = 2 + r''' + NI-RFSA skips resetting the de-embedding tables. + ''' + + +class NoiseSourcePowerEnabled(Enum): + DISABLED = 1900 + r''' + Disables the noise source power. + ''' + ENABLED = 1901 + r''' + Enables the noise source power. + ''' + + +class NotchFilterEnabled(Enum): + DISABLED = 3400 + r''' + Disables the notch filter. + ''' + ENABLED_WHEN_IN_SIGNAL_PATH = 3401 + r''' + The notch filter is automatically enabled when it is in the signal path and automatically disabled when it is not in the signal path. + ''' + ENABLED = 3402 + r''' + Enables the notch filter. If the notch filter is not in the signal path or if the notch filter is not supported on the device, NI-RFSA returns an error. Select NotchFilterEnabled.ENABLED_WHEN_IN_SIGNAL_PATH whenever possible to avoid an error. + ''' + + +class OutputTerm(Enum): + DO_NOT_EXPORT = '' + r''' + The signal is not exported. + ''' + CLK_OUT = 'ClkOut' + r''' + Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. + ''' + REF_OUT = 'RefOut' + r''' + Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. + ''' + REF_OUT2 = 'RefOut2' + r''' + Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. + ''' + PFI0 = 'PFI0' + r''' + The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. + ''' + PFI1 = 'PFI1' + r''' + The trigger is received on PFI 1. + ''' + PXI_TRIG0 = 'PXI_Trig0' + r''' + The trigger is received on PXI trigger line 0. + ''' + PXI_TRIG1 = 'PXI_Trig1' + r''' + The trigger is received on PXI trigger line 1. + ''' + PXI_TRIG2 = 'PXI_Trig2' + r''' + The trigger is received on PXI trigger line 2. + ''' + PXI_TRIG3 = 'PXI_Trig3' + r''' + The trigger is received on PXI trigger line 3. + ''' + PXI_TRIG4 = 'PXI_Trig4' + r''' + The trigger is received on PXI trigger line 4. + ''' + PXI_TRIG5 = 'PXI_Trig5' + r''' + The trigger is received on PXI trigger line 5. + ''' + PXI_TRIG6 = 'PXI_Trig6' + r''' + The trigger is received on PXI trigger line 6. + ''' + PXI_TRIG7 = 'PXI_Trig7' + r''' + The trigger is received on PXI trigger line 7. + ''' + PXI_STAR = 'PXI_STAR' + r''' + The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. + ''' + PXIE_DSTARB = 'PXIe_DStarB' + r''' + The trigger is received on the PXIe DStar B trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. + ''' + DIO_PFI0 = 'DIO/PFI0' + r''' + The trigger is received on PFI0 from the front panel DIO terminal. + ''' + DIO_PFI1 = 'DIO/PFI1' + r''' + The trigger is received on PFI1 from the front panel DIO terminal. + ''' + DIO_PFI2 = 'DIO/PFI2' + r''' + The trigger is received on PFI2 from the front panel DIO terminal. + ''' + DIO_PFI3 = 'DIO/PFI3' + r''' + The trigger is received on PFI3 from the front panel DIO terminal. + ''' + DIO_PFI4 = 'DIO/PFI4' + r''' + The trigger is received on PFI4 from the front panel DIO terminal. + ''' + DIO_PFI5 = 'DIO/PFI5' + r''' + The trigger is received on PFI5 from the front panel DIO terminal. + ''' + DIO_PFI6 = 'DIO/PFI6' + r''' + The trigger is received on PFI6 from the front panel DIO terminal. + ''' + DIO_PFI7 = 'DIO/PFI7' + r''' + The trigger is received on PFI7 from the front panel DIO terminal. + ''' + TIMER_EVENT = 'TimerEvent' + r''' + The trigger is received from the Timer Event. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841, and for digital edge Advance Triggers on the PXIe-5663E/5665. + ''' + + +class OverflowErrorReporting(Enum): + WARNING = 1301 + r''' + Configures NI-RFSA to return a warning when an ADC or onboard signal processing (OSP) overflow occurs. + ''' + DISABLED = 1302 + r''' + Configures NI-RFSA to not return an error or a warning when an ADC or OSP overflow occurs. + ''' + + +class PowerSpectrumUnits(Enum): + DBM = 200 + r''' + Units are dB with reference to 1 milliwatt. + ''' + VOLTS_SQUARED = 201 + r''' + Units are in volts squared. + ''' + DBMV = 202 + r''' + Units are dB with reference to 1 millivolt. + ''' + DBUV = 203 + r''' + Units are dB with reference to 1 microvolt. + ''' + VOLTS = 204 + r''' + Units are in volts. + ''' + WATTS = 205 + r''' + Units are in watts. + ''' + + +class PxiChassisClk10Source(Enum): + NONE = 'None' + r''' + The device does not drive the PXI 10 MHz backplane Reference Clock. + ''' + ONBOARD_CLOCK = 'OnboardClock' + r''' + The device drives the PXI 10 MHz backplane Reference Clock with the PXI-5600 onboard clock. You must connect the 10 MHz OUT connector to the PXI 10 MHz I/O connector on the PXI-5600 front panel to use this option. + ''' + REF_IN = 'RefIn' + r''' + The device drives the PXI 10 MHz backplane Reference Clock with the reference source attached to the PXI-5600 FREQ REF IN connector. You must connect the 10 MHz OUT connector to the PXI 10 MHz I/O connector on the PXI-5600 front panel to use this option. + ''' + + +class ReferenceClockExportedRate(Enum): + _10MHZ = 10000000 + r''' + Exports a 10 MHz Reference Clock. + ''' + _100MHZ = 100000000 + r''' + Exports a 100 MHz Reference Clock. + ''' + _1GHZ = 1000000000.0 + r''' + Exports a 1 GHz Reference Clock. + ''' + + +class ReferenceClockExportedTerminal(Enum): + NONE = 'None' + r''' + The Reference Clock is not exported. This value is not valid for the PXIe-5644/5645/5646. + ''' + REF_OUT = 'RefOut' + r''' + Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. + ''' + REF_OUT2 = 'RefOut2' + r''' + Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. + ''' + CLK_OUT = 'ClkOut' + r''' + Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. + ''' + IF_COND_REF_OUT = 'IFCondRefOut' + r''' + Export the clock on the REF OUT terminal on the PXIe-5694. This value is valid only for the PXIe-5667. + ''' + + +class ReferenceClockSource(Enum): + NONE = 'None' + r''' + No Reference Clock is required for the current device configuration. This value is valid only for the PXIe-5694 or the PXIe-5668. + ''' + ONBOARD_CLOCK = 'OnboardClock' + r''' + **PXI-5661 **NI-RFSA locks the NI-RFSA device to the PXI-5600 RF downconverter onboard clock.**PXIe-5663/5663E **NI-RFSA locks the PXIe-5663/5663E to the PXI/PXIe-5652 LO source onboard clock. Connect the REF OUT2 connector (if it exists) on the PXI/PXIe-5652 to the CLK IN terminal on the PXIe-5622. On versions of the PXIe-5663/5663E that lack a REF OUT2 connector on the PXI/PXIe-5652, connect the REF IN/OUT connector on the PXI/PXIe-5652 to the CLK IN terminal on the PXI5622.**PXIe-5665 **NI-RFSA locks the PXIe-5665 to the PXIe-5653 LO source onboard clock. Connect the 100 MHz REF OUT terminal on the PXIe-5653 to the CLK IN terminal on the PXIe-5622.**PXIe-5667 **NI-RFSA locks the PXIe-5667 to the PXIe-5653 LO source onboard clock. Connect the 100 MHz REF OUT terminal on the PXIe-5653 to the CLK IN terminal on the PXIe-5622, and connect the 10 MHZ REF OUT terminal on the PXIe-5653 to the REF/LO IN connector on the PXIe-5694.**PXIe-5668 **Lock the PXIe-5668 to the PXIe-5653 LO SOURCE onboard clock. Connect the LO2 OUT connector on the PXIe-5606 to the CLK IN connector on the PXIe-5624.**PXIe-5830/5831 **For the PXIe-5830, connect the PXIe-5820 REF IN connector to the PXIe-3621 REF OUT connector. For the PXIe-5831/5832, connect the PXIe-5820 REF IN connector to the PXIe-3622 REF OUT connector.**PXIe-5831/5832 with PXIe-5653 **Connect the PXIe-5820 REF IN connector to the PXIe-3622 REF OUT connector. Connect the PXIe-5653 REF OUT (10 MHz) connector to the PXIe-3622 REF IN connector.**PXIe-5644/5645/5646, PXIe-5820/5840/5841 **Lock the NI-RFSA device to its onboard clock.**PXIe-5841 with PXIe-5655 **Lock to the PXIe-5655 onboard clock. Connect the REF OUT connector on the PXIe-5655 to the PXIe-5841 REF IN connector.**PXIe-5842 **Lock to the PXIe-5655 onboard clock. Cables between modules are required as shown in the User Manual for the instrument.**PXIe-5860 **Lock to the PXIe-5860 onboard clock. + ''' + REF_IN = 'RefIn' + r''' + **PXI-5661 **NI-RFSA locks the NI-RFSA device to the signal at the external FREQ REF IN connector on the PXI-5600**PXIe-5663/5663E **Connect the external signal to the PXI/PXIe-5652 REF IN/OUT connector. Connect the REF OUT2 connector (if it exists) on the PXI/PXIe-5652 to the CLK IN terminal on the PXIe-5622. On versions of the PXIe-5663/5663E that lack a REF OUT2 connector on the PXI/PXIe-5652, this configuration can only be used in external digitizer mode.**PXIe-5665 **Connect the external signal to the PXIe-5653 REF IN connector. Connect the 100 MHz REF OUT terminal on the PXIe-5653 to the CLK IN terminal on the PXIe-5622. If your external clock signal frequency is set to a frequency other than 10 MHz, set the ref_clock_rate property according to the frequency of your external clock signal.**PXIe-5667 **Connect the external signal to the PXIe-5653 REF IN connector. Connect the 100 MHz REF OUT terminal on the PXIe-5653 to the CLK IN terminal on the PXIe-5622, and connect the 10 MHZ REF OUT terminal on the PXIe-5653 to the REF/LO IN connector on the PXIe-5694. If your external clock signal frequency is set to a frequency other than 10 MHz, set the ref_clock_rate property according to the frequency of your external clock signal.**PXIe-5668 **Connect the external signal to the PXIe-5653 REF IN connector. Connect the LO2 OUT on the PXIe-5606 to the CLK IN connector on the PXIe-5622. If your external clock signal frequency is set to a frequency other than 10 MHz, set the **clock rate** parameter according to the frequency of your external clock signal.**PXIe-5694 **Connect the Reference Clock signal to the REF/LO IN connector on the PXIe-5694 front panel.**PXIe-5644/5645/5646, PXIe-5820/5840/5841 **Lock the NI-RFSA device to the signal at the external REF IN connector.**PXIe-5830/5831 **For the PXIe-5830, connect the PXIe-5820 REF IN connector to the PXIe-3621 REF OUT connector. For the PXIe-5831, connect the PXIe-5820 REF IN connector to the PXIe-3622 REF OUT connector. For the PXIe-5830, lock the external signal to the PXIe-3621 REF IN connector. For the PXIe-5831/5832, lock the external signal to the PXIe-3622 REF IN connector.**PXIe-5831/5832 with PXIe-5653 **Connect the PXIe-5820 REF IN connector to the PXIe-3622 REF OUT connector. Connect the PXIe-5653 REF OUT (10 MHz) connector to the PXIe-3622 REF IN connector. Lock the external signal to the PXIe-5653 REF IN connector.**PXIe-5841 with PXIe-5655 **Lock to the signal at the REF IN connector on the associated PXIe-5655. Connect the REF OUT connector on the PXIe-5655 to the PXIe-5841 REF IN connector. **PXIe-5842 **Lock to the signal at the REF IN connector on the associated PXIe-5655. Cables between modules are required as shown in the User Manual for the instrument. PXIe-5860 Lock to the signal at the REF IN connector on the PXIe-5860. + ''' + PXI_CLK = 'PXI_Clk' + r''' + **PXI-5661 **NI-RFSA locks the NI-RFSA device to the PXI backplane clock using the PXI-5600. You must connect the PXI 10 MHz connector to the REF IN connector on the PXI-5600 front panel to use this option. **PXIe-5668 **Lock the PXIe-5653 to the PXI backplane clock. Connect the PXIe-5606 LO2 OUT to the LO2 IN connector on the PXIe-5624.**PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667, PXIe-5694, PXIe-5820/5830/5831/5831/5832 with PXIe-5653/5840/5840 with PXIe-5653/5841/5841 with PXIe-5655/5842/5860 **Lock the device to the PXI backplane clock. + ''' + CLK_IN = 'ClkIn' + r''' + **PXI-5661 **This configuration does not apply to the PXI-5661.**PXIe-5663/5663E **NI-RFSA locks the PXIe-5663/5663E to an external 10 MHz signal. Connect the external signal to the CLK IN connector on the PXIe-5622, and connect the PXIe-5622 CLK OUT connector to the FREQ REF IN connector on the PXI/PXIe-5652.**PXIe-5665 **NI-RFSA locks the PXIe-5665 to an external 100 MHz signal. Connect the external signal to the CLK IN connector on the PXIe-5622, and connect the PXIe-5622 CLK OUT connector to the REF IN connector on the PXIe-5653. Set the ref_clock_rate property to 100 MHz.**PXIe-5667 **NI-RFSA locks the PXIe-5667 to an external 100 MHz signal. Connect the external signal to the CLK IN connector on the PXIe-5622, and connect the PXIe-5622 CLK OUT connector to the REF IN connector on the PXIe-5653. Connect the 10 MHZ REF OUT terminal on the PXIe-5653 to the REF/LO IN connector on the PXIe-5694. Set the ref_clock_rate property to 100 MHz.**PXIe-5668 **Lock the PXIe-5668 to an external 100 MHz signal. Connect the external signal to the CLK IN connector on the PXIe-5624, and connect the PXIe-5624 CLK OUT connector to the REF IN connector on the PXIe-5653. Set the **clock rate** parameter to 100 MHz.**PXIe-5644/5645/5646, PXIe-5820/5830/5831/5831/5832 with PXIe-5653/5840/5840 with PXIe-5653/5841/5841 with PXIe-5655/5842/5860 **This configuration does not apply. + ''' + PXI_CLK_MASTER = 'PXI_ClkMaster' + r''' + **PXIe-5831/5832 with PXIe-5653 **NI-RFSA configures the PXIe-5653 to export the Reference clock and configures the PXIe-5820 and PXIe-3622 to use PXI_Clk as the Reference Clock source. Connect the PXIe-5653 REF OUT (10 MHz) connector to the PXI chassis REF IN connector.**PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5644/5645/5646, PXIe-5820/5840/5841/5841 with PXIe-5655 /5842/5860**This configuration does not apply. + ''' + REF_IN_2 = 'RefIn2' + r''' + **PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5644/5645/5646, PXIe-5820/5830/5831/5831/5832 with PXIe-5653/5840/5841/5841 with PXIe-5655 **This configuration does not apply. + ''' + + +class ReferenceLevelDataType(Enum): + MECHANICAL_ATTENUATOR_DISABLED = 1801 + r''' + The data is the configuration data when the mechanical relay is disabled. Use this option to save uncalibrated measurements for more advanced operations. + ''' + DEFAULT = 1800 + r''' + The data is the default configuration data. + ''' + + +class ReferenceTriggerDigitalEdgeEdge(Enum): + RISING = 900 + r''' + The trigger asserts on the rising edge of the signal. + ''' + FALLING = 901 + r''' + The trigger asserts on the falling edge of the signal + ''' + + +class ReferenceTriggerIqPowerEdgeSlope(Enum): + RISING = 1000 + r''' + The trigger asserts when the signal power is rising. + ''' + FALLING = 1001 + r''' + The trigger asserts when the signal power is falling. + ''' + + +class ReferenceTriggerOspDelayEnabled(Enum): + DISABLED = 1900 + r''' + Disables OSP delay for the Reference Trigger. + ''' + ENABLED = 1901 + r''' + Enables OSP delay for the Reference Trigger. + ''' + + +class ReferenceTriggerType(Enum): + NONE = 600 + r''' + No Reference Trigger is configured. + ''' + DIGITAL_EDGE = 601 + r''' + The Reference Trigger is not asserted until a digital edge is detected. The source of the digital edge is specified with the digital_edge_ref_trigger_source property. + ''' + IQ_POWER_EDGE = 603 + r''' + The Reference Trigger is asserted when the signal is changing past the level specified with the slope (rising or falling) configured with the iq_power_edge_ref_trigger_slope property. + ''' + SOFTWARE_EDGE = 604 + r''' + The Reference Trigger is not asserted until a software trigger occurs. You can assert the software trigger by calling the send_software_edge_trigger method and selecting NIRFSA_VAL_REF_TRIGGER as the **trigger** parameter. + ''' + IQ_ANALOG_EDGE = 605 + r''' + The Reference Trigger is asserted when the I or Q signal is changed past the level specified with the slope configured with the IQ_ANALOG_EDGE_REF_TRIGGER_SLOPE property. This value is valid only for PXIe-5644/5645 devices. + ''' + + +class ResetWithOptionsStepsToOmit(IntFlag): + DEEMBEDDING_TABLES = 2 + r''' + Omits deleting de-embedding tables. This step is valid only for the PXIe-5830/5831/5832/5840. + ''' + NONE = 0 + r''' + No step is omitted during reset. + ''' + ROUTES = 1 + r''' + Omits the routing reset step. Routing is preserved after a reset. However, routing related properties are reset to default, and routing is released if the default properties are committed after a reset. + ''' + + +class RfLbSigCondPathSel(Enum): + EXT_CAL_RF_LOWBAND_SIGNAL_CONDITIONING_PATH_1 = 3700 + r''' + yet to be defined + ''' + EXT_CAL_RF_LOWBAND_SIGNAL_CONDITIONING_PATH_2 = 3701 + r''' + yet to be defined + ''' + + +class RfOutLoExport(Enum): + DISABLED = 1900 + r''' + The LO signal is not exported from the RF OUT LO OUT terminal. + ''' + ENABLED = 1901 + r''' + The LO signal is exported from the RF OUT LO OUT terminal. + ''' + UNSPECIFIED = 1902 + r''' + The LO signal may or may not be exported to the RF OUT LO OUT terminal, because NI-RFSG may be controlling it. + ''' + + +class RfPathSelection(Enum): + EXT_CAL_RF_BAND_1 = 1700 + r''' + The data is the default configuration data. + ''' + EXT_CAL_RF_BAND_2 = 1701 + r''' + The data is the configuration data when the mechanical relay is disabled. Use this option to save uncalibrated measurements for more advanced operations. + ''' + EXT_CAL_RF_BAND_3 = 1702 + r''' + The data is the default configuration data. + ''' + EXT_CAL_RF_BAND_4 = 1703 + r''' + The data is the default configuration data. + ''' + + +class SelfCalSteps(IntFlag): + DIGITIZER_SELF_CAL = 8 + r''' + Omits the Image Suppression step. If you omit this step, the Residual Sideband Image performance is not adjusted. + ''' + PRESELECTOR_ALIGNMENT = 1 + r''' + Omits the LO Self Cal step. If you omit this step, the power level of the LO is not adjusted. + ''' + OMIT_NONE = 0 + r''' + No calibration steps are omitted. + ''' + GAIN_REFERENCE = 2 + r''' + Omits the Power Level Accuracy step. If you omit this step, the power level accuracy of the device is not adjusted. + ''' + IF_FLATNESS = 4 + r''' + Omits the Residual LO Power step. If you omit this step, the Residual LO Power performance is not adjusted. + ''' + LO_SELF_CAL = 10 + r''' + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + ''' + AMPLITUDE_ACCURACY = 20 + r''' + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + ''' + RESIDUAL_LO_POWER = 40 + r''' + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + ''' + IMAGE_SUPPRESSION = 80 + r''' + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + ''' + SYNTHESIZER_ALIGNMENT = 100 + r''' + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + ''' + DC_OFFSET = 200 + r''' + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + ''' + + +class SelfCalibrateRangeStepsToOmit(IntFlag): + DIGITIZER_SELF_CAL = 8 + r''' + Omits the Image Suppression step. If you omit this step, the Residual Sideband Image performance is not adjusted. + ''' + PRESELECTOR_ALIGNMENT = 1 + r''' + Omits the LO Self Cal step. If you omit this step, the power level of the LO is not adjusted. + ''' + OMIT_NONE = 0 + r''' + No calibration steps are omitted. + ''' + GAIN_REFERENCE = 2 + r''' + Omits the Power Level Accuracy step. If you omit this step, the power level accuracy of the device is not adjusted. + ''' + IF_FLATNESS = 4 + r''' + Omits the Residual LO Power step. If you omit this step, the Residual LO Power performance is not adjusted. + ''' + LO_SELF_CAL = 10 + r''' + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + ''' + AMPLITUDE_ACCURACY = 20 + r''' + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + ''' + RESIDUAL_LO_POWER = 40 + r''' + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + ''' + IMAGE_SUPPRESSION = 80 + r''' + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + ''' + SYNTHESIZER_ALIGNMENT = 100 + r''' + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + ''' + DC_OFFSET = 200 + r''' + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + ''' + + +class SelfCalibrationStep(Enum): + PRESELECTOR_ALIGNMENT = 1 + r''' + Calls for preselector alignment. + ''' + GAIN_REFERENCE = 2 + r''' + Measures the changes in gain since the last external calibration was run. + ''' + IF_FLATNESS = 4 + r''' + Measures the IF response of the entire system for each of the supported IF filters + ''' + DIGITIZER_SELF_CAL = 8 + r''' + Calls for digitizer self-calibration, if the digitizer is associated with the RF downconverter. + ''' + LO_SELF_CAL = 16 + r''' + Calls for LO self-calibration, if the LO source module is associated with the RF downconverter. + ''' + AMPLITUDE_ACCURACY = 32 + r''' + Selects the Amplitude Accuracy self-calibration step. + ''' + RESIDUAL_LO_POWER = 64 + r''' + Selects the Residual LO Power self-calibration step. + ''' + IMAGE_SUPPRESSION = 128 + r''' + Selects the Image Suppression self-calibration step. + ''' + SYNTHESIZER_ALIGNMENT = 256 + r''' + Selects the Synthesizer Alignment self-calibration step. + ''' + DC_OFFSET = 512 + r''' + Selects the DC Offset self-calibration step. + ''' + + +class Signal(Enum): + START_TRIGGER = 1100 + r''' + NI-RFSA routes a Start Trigger. + ''' + REF_TRIGGER = 702 + r''' + NI-RFSA routes a Reference + ''' + ADVANCE_TRIGGER = 1102 + r''' + NI-RFSA routes an Advance + ''' + READY_FOR_START_EVENT = 1200 + r''' + NI-RFSA routes a Ready for Start Event. + ''' + READY_FOR_REF_EVENT = 1201 + r''' + NI-RFSA routes a Ready for Reference Event.. + ''' + END_OF_RECORD_EVENT = 1203 + r''' + NI-RFSA routes a End of Record Event. + ''' + DONE_EVENT = 1204 + r''' + NI-RFSA routes a Done Event. + ''' + REF_CLOCK = 1205 + r''' + NI-RFSA routes a Reference Clock. + ''' + USER = 1206 + r''' + NI-RFSA routes a User Defined Signal. + ''' + + +class SignalConditioningEnabled(Enum): + ENABLED = 3600 + r''' + Enables signal conditioning. + ''' + BYPASSED = 3601 + r''' + Bypasses all signal conditioning. + ''' + + +class SmoothSpectrumEnabled(Enum): + DISABLED = 1900 + r''' + Disables spectrum smoothing. + ''' + ENABLED = 1901 + r''' + Enables spectrum smoothing. + ''' + + +class SoftwareTriggerType(Enum): + START = 1100 + r''' + NI-RFSA sends a Start software trigger. + ''' + REF = 702 + r''' + NI-RFSA sends a Reference software trigger. + ''' + ADVANCE = 1102 + r''' + NI-RFSA sends an Advance software trigger. + ''' + ARM_REF = 1103 + r''' + NI-RFSA sends an Arm Reference software trigger. This trigger is not valid for the PXIe-5668. + ''' + + +class SparameterOrientation(Enum): + PORT1_TOWARDS_DUT = 3800 + r''' + Port 1 of the S2P is oriented towards the DUT port. + ''' + PORT2_TOWARDS_DUT = 3801 + r''' + Port 2 of the S2P is oriented towards the DUT port. + ''' + + +class SpectrumAveragingMode(Enum): + NO = 400 + r''' + Configures NI-RFSA to perform no averaging on acquisitions. + ''' + RMS = 401 + r''' + Configures NI-RFSA for root-mean-square (RMS) averaging. RMS averaging reduces signal fluctuations but not the noise floor. RMS averaging averages the energy, or power, of the signal. This averaging prevents noise floor reduction and gives averaged RMS quantities of single-channel measurements zero phase. RMS averaging for dual-channel measurements preserves important phase information. + ''' + VECTOR = 402 + r''' + Configures NI-RFSA for vector averaging. Vector averaging reduces noise from synchronous signals. Vector averaging computes the average of complex quantities directly, which means that it allows separate averaging for real and imaginary parts. Complex averaging such as vector averaging reduces noise and usually requires a trigger to improve block-to-block phase coherence. + ''' + PEAK_HOLD = 403 + r''' + Configures NI-RFSA for peak-hold averaging. Peak-hold averaging retains the RMS peak levels of the averaged quantities. The peak-hold averaging process performs peak-hold at each frequency bin separately to retain peak RMS levels from one FFT record to the next. + ''' + MIN_HOLD = 404 + r''' + Configures NI-RFSA to perform no averaging on acquisitions. + ''' + SCALAR = 405 + r''' + Configures NI-RFSA to perform no averaging on acquisitions. + ''' + LOG = 406 + r''' + Configures NI-RFSA to perform no averaging on acquisitions. + ''' + + +class SpectrumFftWindowType(Enum): + UNIFORM = 500 + r''' + No window is applied. + ''' + HANNING = 501 + r''' + The Hanning window is useful for analyzing transients longer than the time duration of the window, and also for general-purpose applications. + ''' + HAMMING = 502 + r''' + A Hamming window is applied to the waveform using the following equation: y[i] = x[i] * (0.54 - 0.46cos(w)) where w = (2)i/n and n = the waveform size. Note: Hanning and Hamming windows are somewhat similar. However, in the time domain, the Hamming window does not get as close to zero near the edges as does the Hanning window. + ''' + BLACKMAN_HARRIS = 503 + r''' + A Blackman-Harris window is applied to the waveform using the following equation: y[i] = x[i] * (0.42323 - 0.49755*cos(w) + 0.07922*cos(2w)) + ''' + EXACT_BLACKMAN = 504 + r''' + An Exact Blackman window is applied to the waveform using the following equation: y[i] = x[i] * (a0 - a1*cos(w) + a2*cos(2w)) + ''' + BLACKMAN = 505 + r''' + A Blackman window is useful for analyzing transient signals, and provides similar windowing to Hanning and Hamming windows but adds one additional cosine term to reduce ripple. A Blackman window is applied to the waveform using the following equation: y[i] = x[i] * (0.42 - 0.50*cos(w) + 0.08*cos(2w)) + ''' + FLAT_TOP = 506 + r''' + The fifth-order Flat Top window has the best amplitude accuracy of all the window methods. The increased amplitude accuracy (0.02 dB for signals exactly between integral cycles) is at the expense of frequency selectivity. The Flat Top window is most useful in accurately measuring the amplitude of single frequency components with little nearby spectral energy in the signal. A fifth-order Flat Top window is applied to the waveform using the following equation: y[i] = x[i] * (a0 - a1*cos(w) + a2*cos(2w) - a3*cos(3w) + a4*cos(4w)) + ''' + _4_TERM_BLACKMAN_HARRIS = 507 + r''' + A 4-term Blackman-Harris window is a general purpose window; it has side-lobe rejection in the upper 90 dB, with moderately wide side lobe. A 4-term Blackman Harris window is applied to the waveform using the following equation: y[i] = x[i] * (a0 - a1*cos(w) + a2*cos(2w) - a3*cos(3w)) + ''' + _7_TERM_BLACKMAN_HARRIS = 508 + r''' + A 7-term Blackman-Harris window has the highest dynamic range; it is ideal for signal-to-noise ratio applications. A 7-term Blackman Harris window is applied to the waveform using the following equation: y[i] = x[i] * (a0 - a1*cos(w) + a2*cos(2w) - a3*cos(3w) + a4*cos(4w) - a5*cos(5w) + a6*cos(6w)) + ''' + LOW_SIDE_LOBE = 509 + r''' + The Low Side Lobe window further reduces the size of the main lobe. The following equation defines the Low Side Lobe window. where *N* is the length of window + ''' + GAUSSIAN = 510 + r''' + A Gaussian window is applied to the waveform using the following equation: y[i] = x[i] * exp(-0.5*(i - (N-1)/2)^2 / ((N-1)/2)^2) where N is the length of the window + ''' + KAISER_BESSEL = 511 + r''' + A Kaiser-Bessel window is applied to the waveform using the following equation: y[i] = x[i] * I0(β*sqrt(1 - (2i/(N-1) - 1)^2))/I0(β) where i is between 0 and N-1, N is the length of the window, β determines the shape of the window, and I0 is the zeroth order Modified Bessel method of the first kind + ''' + + +class SpectrumResolutionBandwidthType(Enum): + THREE_DECIBELS = 300 + r''' + Defines the resolution bandwidth (RBW) in terms of the 3 dB bandwidth of the window specified by the fft_window_type property. + ''' + SIX_DECIBELS = 301 + r''' + Defines the RBW in terms of the 6 dB bandwidth of the window specified by the fft_window_type property. + ''' + BIN_WIDTH = 302 + r''' + Defines the RBW in terms of the display resolution, which is the ratio of the sampling frequency to the number of samples that you acquire. + ''' + EQUIVALENT_NOISE_BANDWIDTH = 303 + r''' + Defines the RBW in terms of the equivalent noise bandwidth (ENBW) of the window specified by the fft_window_type property. + ''' + + +class StartTriggerDigitalEdgeEdge(Enum): + RISING = 900 + r''' + The trigger asserts on the rising edge of the signal.PXI-5661, PXIe-5663/5663E/5665/5668 + ''' + FALLING = 901 + r''' + The trigger asserts on the falling edge of the signal | PXIe-5668 + ''' + + +class StartTriggerType(Enum): + NONE = 600 + r''' + No Start Trigger is configured. + ''' + DIGITAL_EDGE = 601 + r''' + The Start Trigger is not asserted until a digital edge is detected. The source of the digital edge is specified with the digital_edge_start_trigger_source property. + ''' + SOFTWARE_EDGE = 604 + r''' + The Start Trigger is not asserted until a software trigger occurs. You can assert the software trigger by calling the send_software_edge_trigger method and selecting NIRFSA_VAL_START_TRIGGER as the value of the **trigger** parameter. + ''' + + +class StepsToOmit(Enum): + DEEMBEDDING_TABLES = 2 + r''' + Omits deleting de-embedding tables. This step is valid only for the PXIe-5830/5831/5832/5840. + ''' + NONE = 0 + r''' + No step is omitted during reset. + ''' + ROUTES = 1 + r''' + Omits the routing reset step. Routing is preserved after a reset. However, routing related properties are reset to default, and routing is released if the default properties are committed after a reset. + ''' + + +class SyncRefTriggerDelayEnabled(Enum): + DISABLED = 1900 + r''' + Disables synchronization reference trigger delay. + ''' + ENABLED = 1901 + r''' + Enables synchronization reference trigger delay. + ''' + + +class UserSourcePulseWidthUnits(Enum): + SECONDS = 6200 + r''' + Units are seconds. + ''' + CLOCK_PERIODS = 6201 + r''' + Units are clock periods. + ''' diff --git a/generated/nirfsa/nirfsa/errors.py b/generated/nirfsa/nirfsa/errors.py new file mode 100644 index 000000000..23eb77ea3 --- /dev/null +++ b/generated/nirfsa/nirfsa/errors.py @@ -0,0 +1,112 @@ +# -*- coding: utf-8 -*- +# This file was generated + + +import platform +import warnings + + +def _is_success(code): + return (code == 0) + + +def _is_error(code): + return (code < 0) + + +def _is_warning(code): + return (code > 0) + + +class Error(Exception): + '''Base error class for NI-RFSA''' + + def __init__(self, message): + super(Error, self).__init__(message) + + +class DriverError(Error): + '''An error originating from the NI-RFSA driver''' + + def __init__(self, code, description): + assert _is_error(code), "Should not raise Error if code is not fatal." + self.code = code + self.description = description + super(DriverError, self).__init__(str(self.code) + ": " + self.description) + + +class DriverWarning(Warning): + '''A warning originating from the NI-RFSA driver''' + + def __init__(self, code, description): + assert _is_warning(code), "Should not create Warning if code is not positive." + super(DriverWarning, self).__init__('Warning {} occurred.\n\n{}'.format(code, description)) + + +class UnsupportedConfigurationError(Error): + '''An error due to using this module in an usupported platform.''' + + def __init__(self): + super(UnsupportedConfigurationError, self).__init__('System configuration is unsupported: ' + platform.architecture()[0] + ' ' + platform.system()) + + +class DriverNotInstalledError(Error): + '''An error due to using this module without the driver runtime installed.''' + + def __init__(self): + super(DriverNotInstalledError, self).__init__('The NI-RFSA runtime could not be loaded. Make sure it is installed and its bitness matches that of your Python interpreter. Please visit http://www.ni.com/downloads/drivers/ to download and install it.') + + +class DriverTooOldError(Error): + '''An error due to using this module with an older version of the NI-RFSA driver runtime.''' + + def __init__(self): + super(DriverTooOldError, self).__init__('A function was not found in the NI-RFSA runtime. Please visit http://www.ni.com/downloads/drivers/ to download a newer version and install it.') + + +class DriverTooNewError(Error): + '''An error due to the NI-RFSA driver runtime being too new for this module.''' + + def __init__(self): + super(DriverTooNewError, self).__init__('The NI-RFSA runtime returned an unexpected value. This can occur if it is too new for the nirfsa Python module. Upgrade the nirfsa Python module.') + + +class InvalidRepeatedCapabilityError(Error): + '''An error due to an invalid character in a repeated capability''' + + def __init__(self, invalid_character, invalid_string): + super(InvalidRepeatedCapabilityError, self).__init__('An invalid character ({}) was found in repeated capability string ({})'.format(invalid_character, invalid_string)) + + +class SelfTestError(Error): + '''An error due to a failed self-test''' + + def __init__(self, code, msg): + self.code = code + self.message = msg + super(SelfTestError, self).__init__('Self-test failed with code {}: {}'.format(code, msg)) + + +def handle_error(library_interpreter, code, ignore_warnings, is_error_handling): + '''handle_error + + Helper function for handling errors returned by nirfsa.Library. + It calls back into the LibraryInterpreter to get the corresponding error + description and raises if necessary. + ''' + + if _is_success(code) or (_is_warning(code) and ignore_warnings): + return + + if is_error_handling: + # The caller is in the midst of error handling and an error occurred. + # Don't try to get the description or we'll start recursing until the stack overflows. + description = '' + else: + description = library_interpreter.get_error_description(code) + + if _is_error(code): + raise DriverError(code, description) + + assert _is_warning(code) + warnings.warn(DriverWarning(code, description)) diff --git a/generated/nirfsa/nirfsa/session.py b/generated/nirfsa/nirfsa/session.py new file mode 100644 index 000000000..47bb2affd --- /dev/null +++ b/generated/nirfsa/nirfsa/session.py @@ -0,0 +1,8435 @@ +# -*- coding: utf-8 -*- +# This file was generated +import array # noqa: F401 +# Used by @ivi_synchronized +from functools import wraps + +import nirfsa._attributes as _attributes +import nirfsa._converters as _converters +import nirfsa._library_interpreter as _library_interpreter +import nirfsa.enums as enums +import nirfsa.errors as errors + +import nirfsa.coefficient_info_type as coefficient_info_type # noqa: F401 + +import nirfsa.waveform_info as waveform_info # noqa: F401 + +import nirfsa.spectrum_info_type as spectrum_info_type # noqa: F401 + +import hightime +import nitclk + +# Used for __repr__ +import pprint +pp = pprint.PrettyPrinter(indent=4) + + +class _Acquisition(object): + def __init__(self, session): + self._session = session + self._session._initiate() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self._session.abort() + + +# From https://stackoverflow.com/questions/5929107/decorators-with-parameters +def ivi_synchronized(f): + @wraps(f) + def aux(*xs, **kws): + session = xs[0] # parameter 0 is 'self' which is the session object + with session.lock(): + return f(*xs, **kws) + return aux + + +class _Lock(object): + def __init__(self, session): + self._session = session + + def __enter__(self): + # _lock_session is called from the lock() function, not here + return self + + def __exit__(self, exc_type, exc_value, traceback): + self._session.unlock() + + +class _RepeatedCapabilities(object): + def __init__(self, session, prefix, current_repeated_capability_list): + self._session = session + self._prefix = prefix + # We need at least one element. If we get an empty list, make the one element an empty string + self._current_repeated_capability_list = current_repeated_capability_list if len(current_repeated_capability_list) > 0 else [''] + # Now we know there is at lease one entry, so we look if it is an empty string or not + self._separator = '/' if len(self._current_repeated_capability_list[0]) > 0 else '' + + def __getitem__(self, repeated_capability): + '''Set/get properties or call methods with a repeated capability (i.e. channels)''' + rep_caps_list = _converters.convert_repeated_capabilities(repeated_capability, self._prefix) + complete_rep_cap_list = [current_rep_cap + self._separator + rep_cap for current_rep_cap in self._current_repeated_capability_list for rep_cap in rep_caps_list] + + return _SessionBase( + repeated_capability_list=complete_rep_cap_list, + all_channels_in_session=self._session._all_channels_in_session, + interpreter=self._session._interpreter, + freeze_it=True + ) + + +# This is a very simple context manager we can use when we need to set/get attributes +# or call functions from _SessionBase that require no channels. It is tied to the specific +# implementation of _SessionBase and how repeated capabilities are handled. +class _NoChannel(object): + def __init__(self, session): + self._session = session + + def __enter__(self): + self._repeated_capability_cache = self._session._repeated_capability + self._session._repeated_capability = '' + + def __exit__(self, exc_type, exc_value, traceback): + self._session._repeated_capability = self._repeated_capability_cache + + +class _SessionBase(object): + '''Base class for all NI-RFSA sessions.''' + + # This is needed during __init__. Without it, __setattr__ raises an exception + _is_frozen = False + + absolute_delay = _attributes.AttributeViReal64TimeDeltaSeconds(1150266) + '''Type: hightime.timedelta, datetime.timedelta, or float in seconds + + Specifies the sub-sample clock delay, in seconds, to apply to the acquired signal. + + Use this property to reduce the trigger jitter when synchronizing multiple devices with NI-TClk. + This property can also help maintain synchronization repeatability by writing the absolute delay value of a previous measurement to the current session. + + To set this property, the NI-RFSA device must be in the Configuration state. + + ---- + **Note** + If this property is set, NI-TClk cannot do any sub-sample clock adjustment. + + ---- + + **Units:** Seconds + + **Valid Values:** Plus or minus half of one sample clock period + + **Default Value**: 0 + + **Supported Devices:** PXIe-5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + acquisition_type = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.AcquisitionType, 1150001) + '''Type: enums.AcquisitionType + + Configures the session to either acquire I/Q data or to compute a power spectrum over the specified frequency range. + + **Default Value**: AcquisitionType.IQ + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `I/Q Modulation `_ + + **High-Level Methods**: + + - ConfigureAcquisitionType + + **Defined Values**: + + +--------------------------+-----------------------------------------------+ + | Name | Description | + +==========================+===============================================+ + | AcquisitionType.IQ | Configures NI-RFSA for I/Q acquisitions. | + +--------------------------+-----------------------------------------------+ + | AcquisitionType.SPECTRUM | Configures NI-RFSA for spectrum acquisitions. | + +--------------------------+-----------------------------------------------+ + ''' + advance_trigger_terminal_name = _attributes.AttributeViString(1150124) + '''Type: str + + Returns the fully qualified signal name as a string. + + **Default Values**: + + **PXIe-5830/5831/5832**: /BasebandModule/ai/0/AdvanceTrigger, where *BasebandModule* is the name of the baseband module of your device in MAX. + + **PXIe-5820/5840/5841/5842**: /ModuleNameai/0/AdvanceTrigger, where *ModuleName* is the name of your device in MAX. + + **PXIe-5860**: /ModuleName/ai/ChannelNumber/AdvanceTrigger, where *ModuleName* is the name of your device in MAX and *ChannelNumber* is the channel number (0 or 1). + + **All other devices**: /DigitizerName/AdvanceTrigger, where *DigitizerName* is the name associated with your digitizer module in MAX. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Events `_ + + **High-Level Methods**: + + - get_terminal_name + ''' + advance_trigger_type = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.AdvanceTriggerType, 1150036) + '''Type: enums.AdvanceTriggerType + + Specifies whether you want the Advance Trigger to be a digital edge or software trigger. + + ---- + **Note** + Set this property to AdvanceTriggerType.NONE if you set the acquisition_type property to AcquisitionType.SPECTRUM or if you set the **acquisitionType** parameter to AcquisitionType.SPECTRUM using the ConfigureAcquisitionType method. + + ---- + + **Default Value**: AdvanceTriggerType.NONE + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **Defined Values**: + + +----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +==================================+==================================================================================================================================================================================================================================+ + | AdvanceTriggerType.NONE | No Advance Trigger is configured. | + +----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | AdvanceTriggerType.DIGITAL_EDGE | The Advance Trigger is not asserted until a digital edge is detected. The source of the digital edge is specified with the digital_edge_advance_trigger_source property. | + +----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | AdvanceTriggerType.SOFTWARE_EDGE | The Advance Trigger is not asserted until a software trigger occurs. You can assert the software trigger by calling the send_software_edge_trigger method and selecting NIRFSA_VAL_ADVANCE_TRIGGER as the **trigger** parameter. | + +----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + allow_more_records_than_memory = _attributes.AttributeViBoolean(1150154) + '''Type: bool + + Specifies whether to allow the device to acquire more records than can fit in the device memory of the PXIe-5622/5624. + + ---- + **Note** + If you set the property to FALSE and attempt to acquire more records than can fit into the PXIe-5622/5624 device memory, NI-RFSA returns an error. If this property is set to TRUE, NI-RFSA returns an error only in the event of an acquisition buffer overflow. + + ---- + + ---- + **Note** + This property is always set to True for the PXIe-5644/5645/5646 and PXIe-5820/5830/5831/5832/5840/5841. + + ---- + + **Default Value**: False + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +-------+------------------------------------------------------------------------+ + | Name | Description | + +=======+========================================================================+ + | True | Allows acquisition of more records than fit in device memory. | + +-------+------------------------------------------------------------------------+ + | False | Does not allow acquisitions of more records than fit in device memory. | + +-------+------------------------------------------------------------------------+ + ''' + allow_out_of_specification_user_settings = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.AllowOutOfSpecificationUserSettings, 1150256) + '''Type: enums.AllowOutOfSpecificationUserSettings + + Enables or disables warnings and errors when you set frequency, power, or bandwidth values beyond the limits of the NI-RFSA device specifications. + + When you set this property to AllowOutOfSpecificationUserSettings.ENABLED, the driver does not report out-of-specification warnings and errors. + + **Default Value**: AllowOutOfSpecificationUserSettings.DISABLED + + **Supported Devices:** PXIe-5820/5830/5831/5840/5841/5842/5860 + + **Defined Values**: + + +----------------------------------------------+----------------------------------------------+ + | Name | Description | + +==============================================+==============================================+ + | AllowOutOfSpecificationUserSettings.DISABLED | Disables out-of-specification user settings. | + +----------------------------------------------+----------------------------------------------+ + | AllowOutOfSpecificationUserSettings.ENABLED | Enables out-of-specification user settings. | + +----------------------------------------------+----------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + amplitude_settling = _attributes.AttributeViReal64(1150163) + '''Type: float + + Configures the amplitude settling accuracy in decibels. + + NI-RFSA waits until the RF power settles within the specified accuracy level after calling the _initiate method. + + Any specified amplitude settling value that is above the acceptable minimum value is coerced down to the closest valid value. + + **Units**: dB + + **Default Value:** 0.5 + + **Supported Devices:** PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + arm_ref_trigger_type = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.ArmReferenceTriggerType, 1150039) + '''Type: enums.ArmReferenceTriggerType + + Specifies whether you want the Arm Reference Trigger to be a digital edge or software trigger. + + ---- + **Note** + The PXIe-5644/5645/5646 and PXIe-5820/5830/5831/5832/5840/5841 only support ArmReferenceTriggerType.NONE. + + ---- + + ---- + **Note** + Set this property to ArmReferenceTriggerType.NONE if you set the acquisition_type property to AcquisitionType.SPECTRUM or if you set the **acquisitionType** parameter to AcquisitionType.SPECTRUM using the ConfigureAcquisitionType method. + + ---- + + **Default Value**: ArmReferenceTriggerType.NONE + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=======================================+=========================================================================================================================================================================================================================================+ + | ArmReferenceTriggerType.NONE | No Arm Reference Trigger is configured. | + +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ArmReferenceTriggerType.DIGITAL_EDGE | The Arm Reference Trigger is not asserted until a digital edge is detected. The source of the digital edge is specified with the digital_edge_arm_ref_trigger_source property. | + +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ArmReferenceTriggerType.SOFTWARE_EDGE | The Arm Reference Trigger is not asserted until a software trigger occurs. You can assert the software trigger by calling the send_software_edge_trigger method and selecting SoftwareTriggerType.ARM_REF as the **trigger** parameter. | + +---------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + attenuation = _attributes.AttributeViReal64(1150005) + '''Type: float + + Specifies the nominal attenuation setting, in dB, for all attenuators before the first mixer in the RF signal chain. + + If you do not set this property, NI-RFSA automatically chooses an attenuation setting based on the reference level you configure. The valid values for this property depend on the device configuration. + + **PXI-5600/5661**: You can change the attenuation value to modify the amount of noise and distortion. Higher attenuation levels increase the noise level while decreasing distortion; lower attenuation levels decrease the noise level while increasing distortion. + + **PXIe-5601/5663/5663E**: You can change the attenuation value and the value of the if_attenuation property to modify the amount of noise and distortion. Higher attenuation levels increase the noise level while decreasing distortion; lower attenuation levels decrease the noise level while increasing distortion. + + **PXIe-5603/5605/5606/5665/5668**: You can set multiple properties to modify the attenuation values for the device. Refer to `PXIe-5665 RF Attenuation and Signal Levels `_ for more information about configuring attenuation. + + **PXIe-5667**: This property specifies the nominal attenuation setting for all attenuators before the first RF mixer in the input signal path. This property is read-only when the LOW_FREQUENCY_BYPASS_ENABLED property is set to NIRFSA_VAL_DISABLED. + + **PXIe-5693**: This property is read-only and returns the nominal RF attenuation of the PXIe-5693. + + **Units**: dB + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693 + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + available_paths = _attributes.AttributeViStringCommaSeparated(1150332) + '''Type: list of str + + Returns a comma separated list of the configurable paths available for use based on your instrument configuration. + ''' + available_ports = _attributes.AttributeViStringCommaSeparated(1150306) + '''Type: list of str + + Returns a comma-separated list of the available ports for use based on your instrument configuration. + + **Supported Devices**: PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + center_frequency = _attributes.AttributeViReal64(1150002) + '''Type: float + + Specifies the center frequency in a spectrum acquisition. + + The value is expressed in hertz (Hz). An acquisition consists of a span of data surrounding the center frequency. + + ---- + **Note** + Use this property to tune the downconverter when using external digitizer mode. + + ---- + + **Units**: hertz (Hz) + + **Default Values**: + + **PXIe-5694**: 193.6 MHz + + **PXIe-5820**: 0 Hz + + **PXIe-5830/5831/5832**: 6.5 GHz + + **All other devices**: 1 GHz + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + channel_coupling = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.ChannelCoupling, 1150149) + '''Type: enums.ChannelCoupling + + Specifies whether the RF IN connector is AC- or DC-coupled on the downconverter. + + ---- + **Note** + For the PXIe-5605/5606/5665/5667/5668, this property must be set to ChannelCoupling.AC when the DC block is present and set to ChannelCoupling.DC when the DC block is not present to ensure device specifications are met and proper calibration data is used. For more information about removing or attaching the DC block, refer to the `PXIe-5665 Block Diagram `_, the `PXIe-5605 Front Panel and LEDs `_, the `PXIe-5667 Block Diagram `_, or the `PXIe-5668 Block Diagram `_ topics in this help file. + + ---- + + **Valid Values**: + + **PXIe-5603/5665 (3.6 GHz)**: ChannelCoupling.AC, ChannelCoupling.DC + + **PXIe-5605/5665 (14 GHz)**: ChannelCoupling.AC, ChannelCoupling.DC + + **PXIe-5667 (3.6 GHz) using the PXIe-5693 RF preselector low-frequency bypass path**: ChannelCoupling.AC, ChannelCoupling.DC + + **PXIe-5667 (3.6 GHz) using the PXIe-5693 RF preselector filter path**: ChannelCoupling.AC + + **PXIe-5667 (7 GHz)**: ChannelCoupling.AC + + **PXIe-5606/5668**: ChannelCoupling.AC, ChannelCoupling.DC + + **Default Value**: ChannelCoupling.AC + + **Supported Devices**: PXIe-5603/5605/5606 (external digitizer mode), PXIe-5665/5667/5668 + + **Defined Values**: + + +--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +====================+============================================================================================================================================================+ + | ChannelCoupling.AC | Specifies that the RF input channel is AC-coupled. For low frequencies (<10 MHz), accuracy decreases because NI-RFSA does not calibrate the configuration. | + +--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ChannelCoupling.DC | Specifies that the RF input channel is DC-coupled. NI-RFSA enforces a minimum RF attenuation for device protection. | + +--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ''' + common_mode_level = _attributes.AttributeViReal64(1150269) + '''Type: float + + Specifies the common-mode level presented at each differential input terminal. + + Common-mode level shifts both positive and negative terminals in the same direction. This must match the common-mode level of the device under test (DUT). + + **Units**: volts + + **Default Value**: 0 V + + **Supported Devices**: PXIe-5820 + ''' + deembedding_compensation_gain = _attributes.AttributeViReal64(1150325) + '''Type: float + + Returns the de-embedding gain applied to compensate for the mismatch on the specified port. Use the Active Channel property to specify the name of the port to configure for de-embedding. + + If de-embedding is enabled, NI-RFSA uses the returned compensation gain to remove the effects of the external network between the instrument and the DUT. + + **Supported Devices**: PXIe-5830/5831/5840/5841/5842/5860 + ''' + deembedding_selected_table = _attributes.AttributeViString(1150308) + '''Type: str + + Selects the de-embedding table to apply to the measurements on the specified port. + + To use this property, you must use the channelName parameter of the _set_attribute_vi_string method to specify the name of the port to configure for de-embedding. + + If de-embedding is enabled, NI-RFSA uses the specified table to remove the effects of the external network between the instrument and the DUT. + + Use the _create_deembedding_sparameter_table_array method to create tables. + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + Tip: + This property can be set/get on specific ports within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container ports to specify a subset. + + Example: :py:attr:`my_session.ports[ ... ].deembedding_selected_table` + + To set/get on all ports, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.deembedding_selected_table` + ''' + deembedding_type = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.DeembeddingType, 1150307) + '''Type: enums.DeembeddingType + + Specifies the type of de-embedding to apply to measurements on the specified port. + + To use this property, you must use the channelName parameter of the _set_attribute_vi_int32 method to specify the name of the port to configure for de-embedding. + + If you set this property to any value besides DeembeddingType.NONE, NI-RFSA adjusts the instrument settings and the returned data to remove the effects of the external network between the instrument and the DUT. + + **Default Value**: DeembeddingType.SCALAR + + **Valid Values for PXIe-5830/5832/5840/5841** : DeembeddingType.NONE or DeembeddingType.SCALAR + + **Valid Values for PXIe-5842/5860** : DeembeddingType.NONE or DeembeddingType.SCALAR or NIRFSA_VAL_DEEMBEDDING_TYPE_AMPLITUDE_FLATNESS or NIRFSA_VAL_DEEMBEDDING_TYPE_AMPLITUDE_AND_PHASE_FLATNESS + + **Valid Values for PXIe-5831:** DeembeddingType.NONE, DeembeddingType.SCALAR, or DeembeddingType.VECTOR. DeembeddingType.VECTOR is only supported for TRX Ports in a Semiconductor Test System (STS). + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +------------------------+------------------------------------------------------------------------+ + | Name | Description | + +========================+========================================================================+ + | DeembeddingType.NONE | De-embedding is not applied to the measurement. | + +------------------------+------------------------------------------------------------------------+ + | DeembeddingType.SCALAR | De-embeds the measurement using only the gain term. | + +------------------------+------------------------------------------------------------------------+ + | DeembeddingType.VECTOR | De-embeds the measurement using the gain term and the reflection term. | + +------------------------+------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + Tip: + This property can be set/get on specific ports within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container ports to specify a subset. + + Example: :py:attr:`my_session.ports[ ... ].deembedding_type` + + To set/get on all ports, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.deembedding_type` + ''' + device_configuration_temperature = _attributes.AttributeViReal64(1150159) + '''Type: float + + Specifies the temperature, in degrees Celsius, that NI-RFSA uses to calculate the device configuration settings. + + ---- + **Note** + For most applications, you can choose not to set this property, so NI-RFSA uses the device temperature to calculate best attenuation settings. Set this property only if you want NI-RFSA to maintain the same device configuration settings from acquisition to acquisition, independent of device temperature changes. + + ---- + + **PXIe-5820/5830/5831/5832/5840/5841/5842/5860**: This property is read-only. + + **Units**: degrees Celsius + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + device_instantaneous_bandwidth = _attributes.AttributeViReal64(1150125) + '''Type: float + + Specifies the instantaneous bandwidth of the device in hertz (Hz). + + The instantaneous bandwidth is the effective real-time bandwidth of the signal path for your configuration. + + Specify the maximum instantaneous bandwidth needed for your measurement. NI-RFSA coerces the actual IF filter to use based on other measurement constraints such as the if_filter_bandwidth property and the digital_if_equalization_enabled property. + + To change the value that NI-RFSA uses for the maximum size of multispan acquisition subspans, use the fft_width property. + + ---- + **Note** + If your application uses the PXIe-5622 IF digitizer, your maximum device instantaneous bandwidth is constrained to 50 MHz or 25 MHz, depending on the digitizer option you purchased. If your application uses the PXIe-5624 digitizer, your maximum device instantaneous bandwidth is constrained by the hardware option you purchased and your FPGA image. + + ---- + + **PXI-5661**: The PXI-5600 RF downconverter instantaneous bandwidth is 20 MHz. + + **PXIe-5663/5663E**: Your maximum allowed instantaneous bandwidth depends on the downconverter center frequency you use. Refer to the `PXIe-5601 RF Signal Downconverter Overview `_ for more information about instantaneous bandwidth. + + ---- + **Note** + For the PXIe-5663/5663E, NI-RFSA does not support multispan acquisitions from frequency ranges that correspond with different instantaneous bandwidths. For example, you cannot configure a multispan acquisition that acquires one span from 110 MHz to 120 MHz and a second from 120 MHz to 130 MHz because the instantaneous bandwidth for frequencies above 120 MHz is different than the instantaneous bandwidth for frequencies less than 120 MHz, which are 20 MHz and 10 MHz respectively. + + ---- + + **PXIe-5665**: Your maximum allowed instantaneous bandwidth is independent of the downconverter center frequency. Refer to the *NI PXIe-5665 Specifications* for more information about instantaneous bandwidth. + + **PXIe-5665 (14 GHz), PXIe-5668**: If you have enabled the preselector for the PXIe-5605/5606, the device instantaneous bandwidth value is only a typical specification. For multispan acquisitions, NI-RFSA uses this typical specification as the maximum size for the acquisition subspans. + + ---- + **Note** + When used with an external digitizer, the PXIe-5603 and the low band signal path of the PXIe-5605 provide a nominal 80 MHz bandwidth at dB. At frequencies greater than 3.6 GHz, the PXIe-5605 provides a typical bandwidth of 47 MHz at dB with the preselector (YIG-tuned filter) enabled. + + ---- + + ---- + **Note** + For PXIe-5606 devices, the 765 MHz IF filter is available only at center frequencies above 3.6 GHz. + + ---- + + **PXIe-5693**: This property is read-only for the PXIe-5693. The value for the device instantaneous bandwidth depends on the value for the RF preselector filter. + + **PXIe-5694/PXIe-5667**: If your application uses the PXIe-5694 as part of an PXIe-5667 spectrum monitoring receiver or the PXIe-5694 as a stand-alone device, NI-RFSA determines the appropriate IF filter to use based on the value that you set for this property. + + ---- + **Note** + + ---- + + **PXIe-5644/5645/5646**: This property is read-only for the PXIe-5644/5645/5646. Refer to the specifications document for your device for more information about instantaneous bandwidth. + + **PXIe-5840/5841/5860**: Your maximum allowed instantaneous bandwidth depends on the downconverter center frequency you use. Refer to the *PXIe-5840/5841/5860 Specifications* for more information about instantaneous bandwidth. Set this property to select different device instantaneous bandwidths for a given downconverter center frequency. The device instantaneous bandwidth that you select is greater than or equal to the requested instantaneous bandwidth. If this property is not set, NI-RFSA uses the maximum allowed instantaneous bandwidth. + + **PXIe-5842**: Your maximum allowed instantaneous bandwidth depends on the device's hardware options, configured device personality, and the downconverter center frequency you use. Refer to the *PXIe-5842 Specifications* for more information about instantaneous bandwidth. Set this property to select different device instantaneous bandwidths for a given downconverter center frequency. The device instantaneous bandwidth that you select is greater than or equal to the requested instantaneous bandwidth. If this property is not set, NI-RFSA uses the maximum allowed instantaneous bandwidth. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `PXIe-5830 Frequency and Bandwidth Selection `_ + + `PXIe-5831/5832 Frequency and Bandwidth Selection `_ + + `PXIe-5841 Frequency and Bandwidth Selection `_ + ''' + device_temperature = _attributes.AttributeViReal64(1150051) + '''Type: float + + Returns the current temperature, in degrees Celsius, of the module. + + **PXIe-5644/5645/5646, PXIe-5820/5840/5841/5842/5860**: If you query this property during RF list mode, list steps may take longer to complete during list execution. + + **PXIe-5830/5831/5832**: To use this property, you must first set the channelName parameter of the _set_attribute_vi_real64 method to using the appropriate string for your instrument configuration. Setting the _set_attribute_vi_real64 property is not required for the PXIe-3621/3622. Refer to the following table to determine which strings are valid for your configuration. + + **Units**: degrees Celcius + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + +--------------------------------+---------------------------+---------------------------+ + | Hardware Module | TRX Port Type | Active Channel String | + +================================+===========================+===========================+ + | PXIe-3621/3622/5842 | - | if or "" (empty string) | + +--------------------------------+---------------------------+---------------------------+ + | PXIe-5820 | - | fpga | + +--------------------------------+---------------------------+---------------------------+ + | PXIe-5860 | - | 5860 or "" (empty string) | + +--------------------------------+---------------------------+---------------------------+ + | First connected mmRH-5582 | DIRECT TRX PORTS Only | rf0 | + +--------------------------------+---------------------------+---------------------------+ + | First connected mmRH-5582 | SWITCHED TRX PORTS [0-7] | rf0switch0 | + +--------------------------------+---------------------------+---------------------------+ + | First connected mmRH-5582 | SWITCHED TRX PORTS [8-15] | rf0switch1 | + +--------------------------------+---------------------------+---------------------------+ + | Second connected mmRH-5582 | DIRECT TRX PORTS Only | rf1 | + +--------------------------------+---------------------------+---------------------------+ + | Second connected mmRH-5582 | SWITCHED TRX PORTS [0-7] | rf1switch0 | + +--------------------------------+---------------------------+---------------------------+ + | Second connected mmRH-5582 | SWITCHED TRX PORTS [8-15] | rf1switch1 | + +--------------------------------+---------------------------+---------------------------+ + | First connected RMM-5544/5546 | - | rmm0 | + +--------------------------------+---------------------------+---------------------------+ + | Second connected RMM-5544/5546 | - | rmm1 | + +--------------------------------+---------------------------+---------------------------+ + + Tip: + This property can be set/get on specific device_temperatures within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container device_temperatures to specify a subset. + + Example: :py:attr:`my_session.device_temperatures[ ... ].device_temperature` + + To set/get on all device_temperatures, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.device_temperature` + ''' + digital_edge_advance_trigger_source = _attributes.AttributeViString(1150037) + '''Type: str + + Specifies the source terminal for the Advance Trigger. + + This property is used only when the advance_trigger_type property is set to NIRFSA_VAL_DIGITAL_EDGE. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - configure_digital_edge_ref_trigger + + **Defined Values**: + + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +==========================+=================================================================================================================================================================================================================+ + | NIRFSA_VAL_DO_NOT_EXPORT | The signal is not exported. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_CLK_OUT | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_REF_OUT | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_REF_OUT2 | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PFI0 | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PFI1 | The trigger is received on the PFI 1. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG0 | The trigger is received on the PXI trigger line 0. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG1 | The trigger is received on the PXI trigger line 1. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG2 | The trigger is received on the PXI trigger line 2. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG3 | The trigger is received on the PXI trigger line 3. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG4 | The trigger is received on the PXI trigger line 4. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG5 | The trigger is received on the PXI trigger line 5. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG6 | The trigger is received on the PXI trigger line 6. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG7 | The trigger is received on the PXI trigger line 7. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_STAR | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | OutputTerm.PXIE_DSTARB | The trigger is received on the PXIe DStar B trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI0 | The trigger is received on PFI0 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI1 | The trigger is received on PFI1 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI2 | The trigger is received on PFI2 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI3 | The trigger is received on PFI3 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI4 | The trigger is received on PFI4 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI5 | The trigger is received on PFI5 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI6 | The trigger is received on PFI6 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI7 | The trigger is received on PFI7 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | OutputTerm.TIMER_EVENT | The trigger is received from the Timer Event. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841, and for digital edge Advance Triggers on the PXIe-5663E/5665. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + digital_edge_arm_ref_trigger_source = _attributes.AttributeViString(1150040) + '''Type: str + + Specifies the source terminal for the digital edge Arm Reference Trigger. + + This property is used only when the arm_ref_trigger_type property is set to NIRFSA_VAL_DIGITAL_EDGE. + + **Default Value**: "" (empty string) + + ---- + **Note** + The PXIe-5644/5645/5646 and PXIe-5820/5830/5831/5832/5840/5841 devices only support "" (empty string). + + The trigger is received on PFI0 from the front panel DIO terminal. + + The trigger is received on PFI1 from the front panel DIO terminal. + + The trigger is received on PFI2 from the front panel DIO terminal. + + The trigger is received on PFI3 from the front panel DIO terminal. + + The trigger is received on PFI4 from the front panel DIO terminal. + + The trigger is received on PFI5 from the front panel DIO terminal. + + The trigger is received on PFI6 from the front panel DIO terminal. + + The trigger is received on PFI7 from the front panel DIO terminal. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667, PXIe-5820/5830/5831/5832/5840/5841 + + **Related Topics** + + `Triggers `_ + + **Defined Values**: + + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +==========================+=================================================================================================================================================================================================================+ + | NIRFSA_VAL_DO_NOT_EXPORT | The signal is not exported. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_CLK_OUT | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_REF_OUT | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_REF_OUT2 | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PFI0 | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PFI1 | The trigger is received on PFI 1. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG0 | The trigger is received on PXI trigger line 0. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG1 | The trigger is received on PXI trigger line 1. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG2 | The trigger is received on PXI trigger line 2. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG3 | The trigger is received on PXI trigger line 3. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG4 | The trigger is received on PXI trigger line 4. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG5 | The trigger is received on PXI trigger line 5. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG6 | The trigger is received on PXI trigger line 6. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG7 | The trigger is received on PXI trigger line 7. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_STAR | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | OutputTerm.PXIE_DSTARB | The trigger is received on the PXIe DStar B trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI0 | The trigger is received on PFI0 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI1 | The trigger is received on PFI1 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI2 | The trigger is received on PFI2 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI3 | The trigger is received on PFI3 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI4 | The trigger is received on PFI4 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI5 | The trigger is received on PFI5 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI6 | The trigger is received on PFI6 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI7 | The trigger is received on PFI7 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | OutputTerm.TIMER_EVENT | The trigger is received from the Timer Event. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841, and for digital edge Advance Triggers on the PXIe-5663E/5665. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + digital_edge_ref_trigger_edge = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.ReferenceTriggerDigitalEdgeEdge, 1150030) + '''Type: enums.ReferenceTriggerDigitalEdgeEdge + + Specifies the active edge for the Reference Trigger. + + This property is used only when the ref_trigger_type property is set to NIRFSA_VAL_DIGITAL_EDGE. + + **Default Value**: ReferenceTriggerDigitalEdgeEdge.RISING + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **High-Level Methods**: + + - configure_digital_edge_ref_trigger + + **Defined Values**: + + +-----------------------------------------+-------------------------------------------------------+ + | Name | Description | + +=========================================+=======================================================+ + | ReferenceTriggerDigitalEdgeEdge.RISING | The trigger asserts on the rising edge of the signal. | + +-----------------------------------------+-------------------------------------------------------+ + | ReferenceTriggerDigitalEdgeEdge.FALLING | The trigger asserts on the falling edge of the signal | + +-----------------------------------------+-------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + digital_edge_ref_trigger_source = _attributes.AttributeViString(1150029) + '''Type: str + + Specifies the source terminal for the digital edge Reference Trigger. + + This property is used only when the ref_trigger_type property is set to NIRFSA_VAL_DIGITAL_EDGE. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **Defined Values**: + + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +==========================+=================================================================================================================================================================================================================+ + | NIRFSA_VAL_DO_NOT_EXPORT | The signal is not exported. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_CLK_OUT | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_REF_OUT | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_REF_OUT2 | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PFI0 | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PFI1 | The trigger is received on PFI 1. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG0 | The trigger is received on PXI trigger line 0. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG1 | The trigger is received on PXI trigger line 1. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG2 | The trigger is received on PXI trigger line 2. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG3 | The trigger is received on PXI trigger line 3. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG4 | The trigger is received on PXI trigger line 4. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG5 | The trigger is received on PXI trigger line 5. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG6 | The trigger is received on PXI trigger line 6. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG7 | The trigger is received on PXI trigger line 7. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_STAR | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | OutputTerm.PXIE_DSTARB | The trigger is received on the PXIe DStar B trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI0 | The trigger is received on PFI0 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI1 | The trigger is received on PFI1 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI2 | The trigger is received on PFI2 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI3 | The trigger is received on PFI3 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI4 | The trigger is received on PFI4 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI5 | The trigger is received on PFI5 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI6 | The trigger is received on PFI6 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI7 | The trigger is received on PFI7 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | OutputTerm.TIMER_EVENT | The trigger is received from the Timer Event. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841, and for digital edge Advance Triggers on the PXIe-5663E/5665. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + digital_edge_start_trigger_edge = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.StartTriggerDigitalEdgeEdge, 1150026) + '''Type: enums.StartTriggerDigitalEdgeEdge + + Specifies the active edge for the Start Trigger. + + This property is used only when the start_trigger_type property is set to NIRFSA_VAL_DIGITAL_EDGE. + + **Default Value**: StartTriggerDigitalEdgeEdge.RISING + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **High-Level Methods**: + + - configure_digital_edge_start_trigger + + **Defined and Valid Values:** + + +-------------------------------------+-------------------------------------------------------+-------------------------------------+ + | Name | Description | Valid For | + +=====================================+=======================================================+=====================================+ + | StartTriggerDigitalEdgeEdge.RISING | The trigger asserts on the rising edge of the signal. | PXI-5661, PXIe-5663/5663E/5665/5668 | + +-------------------------------------+-------------------------------------------------------+-------------------------------------+ + | StartTriggerDigitalEdgeEdge.FALLING | The trigger asserts on the falling edge of the signal | PXIe-5668 | + +-------------------------------------+-------------------------------------------------------+-------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + digital_edge_start_trigger_source = _attributes.AttributeViString(1150025) + '''Type: str + + Specifies the source terminal for the Start Trigger. + + This property is used only when the start_trigger_type property is set to NIRFSA_VAL_DIGITAL_EDGE. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **High-Level Methods**: + + - configure_digital_edge_start_trigger + + **Defined Values**: + + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +==========================+=================================================================================================================================================================================================================+ + | NIRFSA_VAL_DO_NOT_EXPORT | The signal is not exported. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_CLK_OUT | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_REF_OUT | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_REF_OUT2 | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PFI0 | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PFI1 | The trigger is received on PFI 1. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG0 | The trigger is received on PXI trigger line 0. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG1 | The trigger is received on PXI trigger line 1. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG2 | The trigger is received on PXI trigger line 2. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG3 | The trigger is received on PXI trigger line 3. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG4 | The trigger is received on PXI trigger line 4. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG5 | The trigger is received on PXI trigger line 5. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG6 | The trigger is received on PXI trigger line 6. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_TRIG7 | The trigger is received on PXI trigger line 7. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_PXI_STAR | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | OutputTerm.PXIE_DSTARB | The trigger is received on the PXIe DStar B trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI0 | The trigger is received on PFI0 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI1 | The trigger is received on PFI1 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI2 | The trigger is received on PFI2 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI3 | The trigger is received on PFI3 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI4 | The trigger is received on PFI4 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI5 | The trigger is received on PFI5 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI6 | The trigger is received on PFI6 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | NIRFSA_VAL_DIO_PFI7 | The trigger is received on PFI7 from the front panel DIO terminal. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | OutputTerm.TIMER_EVENT | The trigger is received from the Timer Event. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841, and for digital edge Advance Triggers on the PXIe-5663E/5665. | + +--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + digital_gain = _attributes.AttributeViReal64(1150301) + '''Type: float + + Specifies the scaling factor applied to the time-domain voltage data in the digitizer. + + NI-RFSA does not compensate for the specified digital gain. + + You can use this property to account for external gain changes without changing the analog signal path. + + ---- + **Note** + The PXIe-5644/5645/5646 applies this gain when the data is scaled. The raw data does not include this scaling on these devices. + + ---- + + **Units:** dB + + **Default Value:** 0 dB + + **Supported Devices**: PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + digital_if_equalization_enabled = _attributes.AttributeViBoolean(1150048) + '''Type: bool + + Enables use of the digital equalization filter for the RF downconverter. + + **PXIe-5820/5830/5831/5832/5840/5841/5842/5860**: The only valid value for this property is True. + + ---- + **Note** + For PXIe-5665/5667 devices, digital IF equalization is supported only with a 150 MHz clock. You cannot set this property to True if the digitizer_sample_clock_timebase_source property is set to DigitizerSampleClockTimebaseSource.LO_REF_CLK. + + ---- + + ---- + **Note** + For the PXIe-5665 (14 GHz)/5667 (7 GHz)/5668, the preselector is not part of the IF filter path, so NI-RFSA does not equalize the preselector distortions. + + ---- + + **Default Value**: True, if the device configuration is supported. + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841 + + **Defined Values**: + + +-------+-----------------------------------------------------------+ + | Name | Description | + +=======+===========================================================+ + | True | Enables digital IF equalization on the RF downconverter. | + +-------+-----------------------------------------------------------+ + | False | Disables digital IF equalization on the RF downconverter. | + +-------+-----------------------------------------------------------+ + ''' + digitizer_dither_enabled = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.DigitizerDitherEnabled, 1150080) + '''Type: enums.DigitizerDitherEnabled + + Specifies whether dithering is enabled on the digitizer. + + Dithering adds band-limited noise in the analog signal path to help reduce the quantization effects of the A/D converter and improve spectral performance. On the PXIe-5622, this out-of-band noise is added at low frequencies up to approximately 12 MHz. On the PXIe-5624, this out-of-band noise is added at low frequencies up to approximately 50 MHz. + + **PXIe-5663/5663E/5665/5667**: When you enable dithering, the maximum signal level is reduced by up to 3 dB. This signal level reduction is accounted for in the nominal input ranges of the PXIe-5622. Therefore, you can overrange the input by up to 3 dB with dither disabled. For example, the +4 dBm input range can handle signal levels up to +7 dBm with dither disabled. For wider bandwidth acquisitions, such as 40 MHz, disable dithering to eliminate residual leakage of the dither signal into the lower frequencies of the IF passband, which starts at 12.5 MHz and ends at 62.5 MHz. This leakage can slightly raise the noise floor in the lower frequencies, thus degrading the performance in high-sensitivity applications. When taking spectral measurements, this leakage can also appear as a wide, low-amplitude signal near 12.5 MHz and 62.5 MHz. The width and amplitude of the signal depends on your resolution bandwidth and the type of time-domain window you apply to your FFT. + + **PXIe-5668**: When you enable dithering, the maximum signal level is reduced by up to 2 dB. For the PXIe-5624, the maximum input power with dither off is 8 dBm and the maximum input power with dither on is 6 dBm. When acquiring an 800 MHz bandwidth signal, the I/Q data contains the dither even if the dither signal is not in the displayed spectrum. The dither can affect actions like power level triggering. + + ---- + **Note** + For the PXIe-5668, disabling dithering can negatively affect absolute amplitude accuracy. + + ---- + + ---- + **Note** + For the PXIe-5820/5830/5831/5832/5840/5841/5842, only DigitizerDitherEnabled.ENABLED is supported. + + ---- + + **Default Value**: DigitizerDitherEnabled.ENABLED + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842 + + **Defined Values**: + + +---------------------------------+-----------------------------------+ + | Name | Description | + +=================================+===================================+ + | DigitizerDitherEnabled.DISABLED | Disables dither on the digitizer. | + +---------------------------------+-----------------------------------+ + | DigitizerDitherEnabled.ENABLED | Enables dither on the digitizer. | + +---------------------------------+-----------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + digitizer_sample_clock_rate = _attributes.AttributeViReal64(1150228) + '''Type: float + + Returns the actual frequency, in hertz (Hz), of the digitizer Sample Clock. + + **Units**: hertz (Hz) + + **Supported Devices**: PXIe-5668 + ''' + digitizer_sample_clock_timebase_rate = _attributes.AttributeViReal64(1150022) + '''Type: float + + Specifies the frequency, in hertz (Hz), of the external clock used as the timebase source if you set the digitizer_sample_clock_timebase_source property to an external source, such as NIRFSA_VAL_CLK_IN, DigitizerSampleClockTimebaseSource.LO_REF_CLK, or DigitizerSampleClockTimebaseSource.DOWNCONVERTER_LO2_OUT + + **PXI-5661**If this property is set to a value less than 60 MHz, signals at frequencies just above the 20 MHz passband of the downconverter may be aliased back into the passband. This aliasing occurs because the IF frequency of the downconverter is 15 MHz, and the upper end of the passband is 25 MHz. At sampling rates below 60 MHz, the Nyquist frequency is close to the end of the passband and creates aliases that are not filtered effectively by the downconverter. + + **Units**: hertz (Hz) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668 + + **Valid and Default Values**: + + +---------------------------+----------------------------+---------------+ + | Device | Valid Values | Default Value | + +===========================+============================+===============+ + | PXI-5661 | Any frequency 226552.5 MHz | 100 MHz | + +---------------------------+----------------------------+---------------+ + | PXIe-5663/5663E/5665/5667 | 150 MHz | 150 MHz | + +---------------------------+----------------------------+---------------+ + | PXIe-5668 | 2 GHz | 2 GHz | + +---------------------------+----------------------------+---------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + digitizer_sample_clock_timebase_source = _attributes.AttributeEnum(_attributes.AttributeViString, enums.DigitizerSampleClockTimebaseSource, 1150021) + '''Type: enums.DigitizerSampleClockTimebaseSource + + Specifies the source of the Sample Clock timebase, which is the timebase used to control waveform sampling. + + **Default Value**: DigitizerSampleClockTimebaseSource.ONBOARD_CLOCK + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668 + + **Defined Values**: + + +----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +==========================================================+========================================================================================================================================================================+ + | DigitizerSampleClockTimebaseSource.ONBOARD_CLOCK | The digitizer uses its onboard clock as the Sample Clock timebase. | + +----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | DigitizerSampleClockTimebaseSource.CLK_IN | The digitizer uses the signal present on the CLK IN connector as the Sample Clock timebase. | + +----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | DigitizerSampleClockTimebaseSource.LO_REF_CLK | The digitizer uses the signal generated on the 100 MHz REF OUT terminal on the PXIe-5653 as the Sample Clock timebase. This value is supported only for the PXIe-5665. | + +----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | DigitizerSampleClockTimebaseSource.PXI_STAR | The digitizer uses the signal present at the PXI star trigger line as the Sample Clock timebase. This value is not supported for the PXIe-5668. | + +----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | DigitizerSampleClockTimebaseSource.DOWNCONVERTER_LO2_OUT | The digitizer uses the signal present on the LO2 OUT connector on the downconverter as the Sample Clock timebase. This value is supported only for the PXIe-5668. | + +----------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + digitizer_temperature = _attributes.AttributeViReal64(1150090) + '''Type: float + + Returns the current temperature, in degrees Celsius, of the digitizer module. + + **PXIe-5820/5840/5841/5842**: If you query this property during RF list mode, list steps may take longer to complete during list execution. + + **Default Value**: N/A + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5840/5841/5842 + ''' + digitizer_vertical_range = _attributes.AttributeViReal64(1150070) + '''Type: float + + Specifies the vertical range of the digitizer. + + The vertical range is defined as the absolute value of the input range for a channel. The default vertical range works for all device configurations, but you can use this property to optimize performance if you know that the signal level at the digitizer input terminal is low. + + ---- + **Note** + For most applications, NI-RFSA selects an appropriate value for this property. + + ---- + + This value is expressed in volts. For example, to acquire a sine wave that spans between 20130.5 V and +0.5 V, set this property to 1.0. + + **PXIe-5840/5841/5842/5860**: This property is read-only. + + **Default Value**: 1.0 + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667, PXIe-5840/5841/5842/5860 + ''' + done_event_terminal_name = _attributes.AttributeViString(1150121) + '''Type: str + + Returns the fully qualified signal name as a string. + + **Default Values**: + + **PXIe-5830/5831/5832**: /BasebandModule/ai/0/DoneEvent, where *BasebandModule* is the name of the baseband module of your device in MAX. + + **PXIe-5820/5840/5841/5842**: /ModuleName/ai/0/DoneEvent, where *ModuleName* is the name of your device in MAX. + + **PXIe-5860**: /ModuleName/ai/ChannelNumber/DoneEvent, where *ModuleName* is the name of your device in MAX and *ChannelNumber* is the channel number (0 or 1). + + **All other devices**: /DigitizerName/DoneEvent, where *DigitizerName* is the name associated with your digitizer module in MAX. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - get_terminal_name + ''' + downconverter_center_frequency = _attributes.AttributeViReal64(1150082) + '''Type: float + + Enables in-band retuning and specifies the current frequency, in hertz (Hz), of the RF downconverter. + + If you set this property, any measurements outside the instantaneous bandwidth of the device are invalid. To disable in-band retuning, reset the property or call the reset_device method. + + After you set this property, the downconverter is locked to that frequency until the value is changed or the property is reset. Locking the downconverter to a fixed value allows frequencies within the instantaneous bandwidth of the downconverter to be measured with minimal overhead, decreasing tuning time. + + **Valid Values**: Any supported tuning frequency of the device + + **PXIe-5820**: The only valid value for this property is 0 Hz. + + **Default Value**: + + **PXIe-5694**: The default value for the PXIe-5694 is 193.6 MHz unless you set the signal_conditioning_enabled property to SignalConditioningEnabled.BYPASSED, in which case the default value is 187.5 MHz. + + **All other devices**: The carrier frequency or spectrum center frequency. NI-RFSA sets this property to the default value based on the value of the acquisition_type property. + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667/5668, PXIe-5694, PXIe-5820/5830/5831/5832/5840/5841/5842 + ''' + downconverter_frequency_offset = _attributes.AttributeViReal64(1150203) + '''Type: float + + Specifies an offset from the I/Q carrier frequency for the downconverter. + + If you set this property, any measurements outside the instantaneous bandwidth of the device are invalid. After you set this property, the RF downconverter is locked to that frequency offset until the value is changed or the property is reset. + + **Valid Values:** + + **PXIe-5646:**: -100 MHz to +100 MHz + + **PXIe-5830/5831/5832/5840/5841:**: -500 MHz to +500 MHz + + **All other devices:**: -42 MHz to +42 MHz + + **Default Values:**: For spectrum acquisition types the driver automatically calculates the default to avoid residual LO power. For I/Q acquisition types the default is 0 Hz. If the center frequency is set to a non-multiple of the lo_frequency_step_size property, the downconverter_frequency_offset property is set to compensate for the difference. + + **Supported Devices:**: PXIe-5644/5645/5646, PXIe-5830/5831/5832/5840/5841/5842 + + **Related Topics** + + `PXIe-5830 Frequency and Bandwidth Selection `_ + + `PXIe-5831/5832 Frequency and Bandwidth Selection `_ + + `PXIe-5841 Frequency and Bandwidth Selection `_ + ''' + downconverter_frequency_offset_mode = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.DownconverterFrequencyOffsetMode, 1150305) + '''Type: enums.DownconverterFrequencyOffsetMode + + Specifies whether to allow NI-RFSA to select the downconveter frequency offset. + + You can either set an offset yourself or let NI-RFSA select one for you. + + Placing the downconverter center frequency outside the bandwidth of your input signal can help avoid issues such as LO leakage. + + To set an offset yourself, set this property to DownconverterFrequencyOffsetMode.AUTOMATIC or DownconverterFrequencyOffsetMode.USER_DEFINED, and set either the downconverter_center_frequency or the downconverter_frequency_offset properties. + + To allow NI-RFSA to automatically select the downconverter frequency offset, set this property to DownconverterFrequencyOffsetMode.AUTOMATIC or DownconverterFrequencyOffsetMode.ENABLED and configure the signal_bandwidth property to describe your expected input signal. The signal bandwidth must be no greater than half the specified value of the device_instantaneous_bandwidth property, minus a device-specific guard band. Do not set the downconverter_center_frequency or downconverter_frequency_offset properties. If all conditions are met, NI-RFSA places the downconverter center frequency outside the signal bandwidth. Set this property to DownconverterFrequencyOffsetMode.ENABLED if you want to receive an error any time NI-RFSA is unable to apply automatic offset. + + When you set an offset yourself or do not use an offset, the reference frequency for gain is near the downconverter center frequency, and downconverter_frequency_offset_mode returns DownconverterFrequencyOffsetMode.USER_DEFINED. When NI-RFSA automatically sets an offset, the reference frequency for gain is the iq_carrier_frequency, and downconverter_frequency_offset_mode returns DownconverterFrequencyOffsetMode.ENABLED. Refer to the specifications document for your device for more information about gain, flatness, and reference frequencies. + + ---- + **Note** + Below 120 MHz, the PXIe-5841 does not use an LO and DownconverterFrequencyOffsetMode.ENABLED is unavailable. Refer to the *PXIe-5841 Automatic Frequency Offset* topic for more information about using an automatic offset with an external LO. + + ---- + + **Default Value:** DownconverterFrequencyOffsetMode.AUTOMATIC + + **Supported Devices**: PXIe-5830/5831/5832/5841/5842 + + **Related Topics** + + `PXIe-5830 Automatic Frequency Offset `_ + + `PXIe-5831/5832 Automatic Frequency Offset `_ + + `PXIe-5841 Automatic Frequency Offset `_ + + **Defined Values**: + + +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +===============================================+==========================================================================================================================================================================================================================================================================+ + | DownconverterFrequencyOffsetMode.AUTOMATIC | NI-RFSA places the downconverter center frequency outside of the signal bandwidth if the signal_bandwidth property has been set and can be avoided. | + +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | DownconverterFrequencyOffsetMode.ENABLED | NI-RFSA places the downconverter center frequency outside of the signal bandwidth if the signal_bandwidth property has been set and can be avoided. NI-RFSA returns an error if the signal_bandwidth property has not been set, or if the signal bandwidth is too large. | + +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | DownconverterFrequencyOffsetMode.USER_DEFINED | NI-RFSA uses the offset that you specified with the downconverter_frequency_offset or downconverter_center_frequency properties. | + +-----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + downconverter_gain = _attributes.AttributeViReal64(1150065) + '''Type: float + + Returns the net signal gain for the NI-RFSA device at the current NI-RFSA settings and temperature. + + NI-RFSA scales the acquired I/Q and spectrum data from the digitizer using the value of this property. + + For a vector signal analyzer (VSA), the system is defined as the RF downconverter and all interfaces between the RF IN connector on the RF downconverter front panel and the IF IN connector on the digitizer front panel. For a spectrum monitoring receiver, the system is defined as the RF preselector, RF downconverter, and IF conditioning modules including all interfaces between the RF IN connector on the RF preselector module front panel and the IF IN connector on the digitizer front panel. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5830/5831/5832/5840/5841/5842/5860 + ''' + downconverter_loop_bandwidth = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.DownconverterLoopBandwidth, 1150067) + '''Type: enums.DownconverterLoopBandwidth + + Configures the loop bandwidth of the RF downconverter tuning PLLs. + + To set this property, the NI-RFSA device must be in the Configuration state. + + **PXI-5600/5661** : For signal bandwidths greater than 10 MHz, DownconverterLoopBandwidth.WIDE is the only value supported for this property. + + **PXIe-5601/5663/5663E** : The PXIe-5601 does not support the DownconverterLoopBandwidth.MEDIUM value. This property is not supported if you are using an external LO. + + **PXIe-5830/5831/5832/5840/5841/5842** : The PXIe-5840/5841/5842 supports only DownconverterLoopBandwidth.MEDIUM for this property. This property is not supported if you are using an external LO. + + To use this property for the PXIe-5830/5831/5832, you must use the channelName parameter of the _set_attribute_vi_int32 method to specify the name of the channel you are configuring. You can configure the LO1 and LO2 channels by using lo1 or lo2 as the channel string, or set the channel string to lo1,lo2 to configure both channels. For all other devices, the the only valid value for the channel string is "" (empty string). + + **Default Values**: + + **PXI-5600** : DownconverterLoopBandwidth.WIDE + + **PXIe-5601** : DownconverterLoopBandwidth.NARROW + + **PXIe-5644/5645/5646, PXIe-5830/5831/5832/5840/5841/5842** : DownconverterLoopBandwidth.MEDIUM + + **Supported Devices**: PXI-5600, PXIe-5601 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E, PXIe-5830/5831/5832/5840/5841/5842 + + **Defined Values**: + + +-----------------------------------+-----------------------------------------------------------------------+ + | Name | Description | + +===================================+=======================================================================+ + | DownconverterLoopBandwidth.NARROW | Specifies that the downconverter module uses a narrow loop bandwidth. | + +-----------------------------------+-----------------------------------------------------------------------+ + | DownconverterLoopBandwidth.MEDIUM | Specifies that the downconverter module uses a medium loop bandwidth. | + +-----------------------------------+-----------------------------------------------------------------------+ + | DownconverterLoopBandwidth.WIDE | Specifies that the downconverter module uses a wide loop bandwidth. | + +-----------------------------------+-----------------------------------------------------------------------+ + + Tip: + This property can be set/get on specific los within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container los to specify a subset. + + Example: :py:attr:`my_session.los[ ... ].downconverter_loop_bandwidth` + + To set/get on all los, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.downconverter_loop_bandwidth` + ''' + downconverter_preselector_enabled = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.DownconverterPreselectorEnabled, 1150132) + '''Type: enums.DownconverterPreselectorEnabled + + Specifies whether the tunable preselector is enabled on the downconverter. + + ---- + **Note** + All devices support setting this property to DownconverterPreselectorEnabled.DISABLED or DownconverterPreselectorEnabled.ENABLED_WHEN_IN_SIGNAL_PATH. Only devices with a preselector support setting this property to DownconverterPreselectorEnabled.ENABLED. + + ---- + + **Default Value**: DownconverterPreselectorEnabled.DISABLED if the device has no preselector. DownconverterPreselectorEnabled.ENABLED_WHEN_IN_SIGNAL_PATH if the device has a preselector. + + **Supported Devices:** PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +-------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=============================================================+================================================================================================================================================================================================================================================================+ + | DownconverterPreselectorEnabled.DISABLED | Disables the preselector. | + +-------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | DownconverterPreselectorEnabled.ENABLED_WHEN_IN_SIGNAL_PATH | The preselector is automatically enabled when it is in the signal path and is automatically disabled when it is not in the signal path. Use the preselector_present property to determine if the downconverter has an preselector. | + +-------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | DownconverterPreselectorEnabled.ENABLED | Enables the preselector. If the preselector is not in the signal path or if the preselector is not supported on the device, NI-RFSA returns an error. Select the DownconverterPreselectorEnabled.ENABLED_WHEN_IN_SIGNAL_PATH whenever possible avoid an error. | + +-------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ''' + driver_setup = _attributes.AttributeViString(1050007) + '''Type: str + + The Driver Setup string returns the initial values for properties that are specific to NI-RFSA. + + The Driver Setup string uses the following format: + + DriverSetup= Tag:Value + + *Tag* is the name of the Driver Setup string property. *Value* is the value set to the property. If multiple properties are set, their assignments are separated with a semicolon. + + This property only returns the Driver Setup string that has already been defined. Refer to `Driver Setup Options `_ for more information about configuring the Driver Setup string. Refer to the __init__ method for additional information about using the **option string** parameter. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + enable_fractional_resampling = _attributes.AttributeViBoolean(1150071) + '''Type: bool + + Specifies whether fractional resampling is enabled on the digitizer. + + Fractional resampling allows the digitizer to achieve very fine resolution on the I/Q rate value. Setting this property to False improves spectral performance. + + **PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842/5860**: The only valid value for this property is True. + + **PXIe-5668**: When using a 400 MHz FPGA image, the only valid value for this property is True. When using a 800 MHz FPGA image, the only valid value for this property is False. Refer to `NI-RFSA Instrument Driver FPGA Extensions `_ for more information about FPGA images. + + **Default Value**: True + + **Supported Devices**: PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +-------+---------------------------------+ + | Value | Description | + +=======+=================================+ + | True | Enables fractional resampling. | + +-------+---------------------------------+ + | False | Disables fractional resampling. | + +-------+---------------------------------+ + ''' + end_of_record_event_terminal_name = _attributes.AttributeViString(1150120) + '''Type: str + + Returns the fully qualified signal name as a string. + + **Default Values**: + + **PXIe-5830/5831/5832**: /BasebandModule/ai/0/EndOfRecordEvent, where *BasebandModule* is the name of the baseband module of your device in MAX. + + **PXIe-5820/5840/5841/5842**: /ModuleName/ai/0/EndOfRecordEvent, where *ModuleName* is the name of your device in MAX. + + **PXIe-5860**: /ModuleName/ai/ChannelNumber/EndOfRecordEvent, where *ModuleName* is the name of your device in MAX and *ChannelNumber* is the channel number (0 or 1). + + **All other devices**: /DigitizerName/EndOfRecordEvent, where *DigitizerName* is the name associated with your digitizer module in MAX. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Events `_ + + **High-Level Methods**: + + - get_terminal_name + ''' + exported_advance_trigger_output_terminal = _attributes.AttributeEnum(_attributes.AttributeViString, enums.ExportOutputTerminal, 1150038) + '''Type: enums.ExportOutputTerminal + + Specifies the destination terminal for the exported Advance Trigger. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - ExportSignal + + **Defined Values**: + + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +====================================+=================================================================================================================================================================================================================+ + | ExportOutputTerminal.DO_NOT_EXPORT | The signal is not exported. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.CLK_OUT | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.REF_OUT | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.REF_OUT2 | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PFI0 | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PFI1 | The trigger is received on PFI 1. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG0 | The trigger is received on PXI trigger line 0. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG1 | The trigger is received on PXI trigger line 1. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG2 | The trigger is received on PXI trigger line 2. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG3 | The trigger is received on PXI trigger line 3. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG4 | The trigger is received on PXI trigger line 4. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG5 | The trigger is received on PXI trigger line 5. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG6 | The trigger is received on PXI trigger line 6. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG7 | The trigger is received on PXI trigger line 7. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_STAR | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXIE_DSTARC | The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI0 | The trigger is received on PFI0 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI1 | The trigger is received on PFI1 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI2 | The trigger is received on PFI2 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI3 | The trigger is received on PFI3 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI4 | The trigger is received on PFI4 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI5 | The trigger is received on PFI5 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI6 | The trigger is received on PFI6 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI7 | The trigger is received on PFI7 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + exported_digitizer_sample_clock_output_terminal = _attributes.AttributeEnum(_attributes.AttributeViString, enums.DigitizerSampleClockExportedTerminal, 1150229) + '''Type: enums.DigitizerSampleClockExportedTerminal + + Specifies the terminal at which to export the Digitizer Sample Clock. + + **Valid Values**: + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5668 + + **Defined Values**: + + +----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +==============================================+==========================================================================================================================================================+ + | DigitizerSampleClockExportedTerminal.NONE | The Reference Clock is not exported. This value is not valid for the PXIe-5644/5645/5646. | + +----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ + | DigitizerSampleClockExportedTerminal.CLK_OUT | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +----------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + exported_done_event_output_terminal = _attributes.AttributeEnum(_attributes.AttributeViString, enums.ExportOutputTerminal, 1150054) + '''Type: enums.ExportOutputTerminal + + Specifies the destination terminal for the Done Event. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - ExportSignal + + **Defined Values**: + + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +====================================+=================================================================================================================================================================================================================+ + | ExportOutputTerminal.DO_NOT_EXPORT | The signal is not exported. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.CLK_OUT | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.REF_OUT | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.REF_OUT2 | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PFI0 | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PFI1 | The trigger is received on PFI 1. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG0 | The trigger is received on PXI trigger line 0. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG1 | The trigger is received on PXI trigger line 1. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG2 | The trigger is received on PXI trigger line 2. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG3 | The trigger is received on PXI trigger line 3. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG4 | The trigger is received on PXI trigger line 4. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG5 | The trigger is received on PXI trigger line 5. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG6 | The trigger is received on PXI trigger line 6. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG7 | The trigger is received on PXI trigger line 7. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_STAR | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXIE_DSTARC | The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI0 | The trigger is received on PFI0 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI1 | The trigger is received on PFI1 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI2 | The trigger is received on PFI2 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI3 | The trigger is received on PFI3 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI4 | The trigger is received on PFI4 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI5 | The trigger is received on PFI5 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI6 | The trigger is received on PFI6 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI7 | The trigger is received on PFI7 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + exported_end_of_record_event_output_terminal = _attributes.AttributeEnum(_attributes.AttributeViString, enums.ExportOutputTerminal, 1150044) + '''Type: enums.ExportOutputTerminal + + Specifies the destination terminal for the End of Record Event. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + `Events `_ + + `Signal Routing `_ + + **High-Level Methods**: + + - ExportSignal + + **Defined Values**: + + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +====================================+=================================================================================================================================================================================================================+ + | ExportOutputTerminal.DO_NOT_EXPORT | The signal is not exported. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.CLK_OUT | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.REF_OUT | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.REF_OUT2 | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PFI0 | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PFI1 | The trigger is received on PFI 1. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG0 | The trigger is received on PXI trigger line 0. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG1 | The trigger is received on PXI trigger line 1. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG2 | The trigger is received on PXI trigger line 2. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG3 | The trigger is received on PXI trigger line 3. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG4 | The trigger is received on PXI trigger line 4. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG5 | The trigger is received on PXI trigger line 5. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG6 | The trigger is received on PXI trigger line 6. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG7 | The trigger is received on PXI trigger line 7. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_STAR | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXIE_DSTARC | The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI0 | The trigger is received on PFI0 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI1 | The trigger is received on PFI1 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI2 | The trigger is received on PFI2 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI3 | The trigger is received on PFI3 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI4 | The trigger is received on PFI4 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI5 | The trigger is received on PFI5 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI6 | The trigger is received on PFI6 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI7 | The trigger is received on PFI7 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + exported_ready_for_advance_event_output_terminal = _attributes.AttributeEnum(_attributes.AttributeViString, enums.ExportOutputTerminal, 1150042) + '''Type: enums.ExportOutputTerminal + + Specifies the destination terminal for the Ready for Advance Event. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - ExportSignal + + **Defined Values**: + + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +====================================+=================================================================================================================================================================================================================+ + | ExportOutputTerminal.DO_NOT_EXPORT | The signal is not exported. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.CLK_OUT | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.REF_OUT | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.REF_OUT2 | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PFI0 | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PFI1 | The trigger is received on PFI 1. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG0 | The trigger is received on the PXI trigger line 0. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG1 | The trigger is received on the PXI trigger line 1. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG2 | The trigger is received on the PXI trigger line 2. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG3 | The trigger is received on the PXI trigger line 3. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG4 | The trigger is received on the PXI trigger line 4. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG5 | The trigger is received on the PXI trigger line 5. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG6 | The trigger is received on the PXI trigger line 6. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG7 | The trigger is received on the PXI trigger line 7. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_STAR | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXIE_DSTARC | The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI0 | The trigger is received on PFI0 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI1 | The trigger is received on PFI1 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI2 | The trigger is received on PFI2 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI3 | The trigger is received on PFI3 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI4 | The trigger is received on PFI4 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI5 | The trigger is received on PFI5 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI6 | The trigger is received on PFI6 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI7 | The trigger is received on PFI7 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + exported_ready_for_ref_event_output_terminal = _attributes.AttributeEnum(_attributes.AttributeViString, enums.ExportOutputTerminal, 1150043) + '''Type: enums.ExportOutputTerminal + + Specifies the destination terminal for the Ready for Reference Event. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - ExportSignal + + **Defined Values**: + + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +====================================+=================================================================================================================================================================================================================+ + | ExportOutputTerminal.DO_NOT_EXPORT | The signal is not exported. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.CLK_OUT | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.REF_OUT | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.REF_OUT2 | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PFI0 | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PFI1 | The trigger is received on PFI 1. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG0 | The trigger is received on PXI trigger line 0. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG1 | The trigger is received on PXI trigger line 1. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG2 | The trigger is received on PXI trigger line 2. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG3 | The trigger is received on PXI trigger line 3. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG4 | The trigger is received on PXI trigger line 4. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG5 | The trigger is received on PXI trigger line 5. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG6 | The trigger is received on PXI trigger line 6. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG7 | The trigger is received on PXI trigger line 7. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_STAR | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXIE_DSTARC | The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI0 | The trigger is received on PFI0 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI1 | The trigger is received on PFI1 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI2 | The trigger is received on PFI2 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI3 | The trigger is received on PFI3 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI4 | The trigger is received on PFI4 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI5 | The trigger is received on PFI5 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI6 | The trigger is received on PFI6 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI7 | The trigger is received on PFI7 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + exported_ready_for_start_event_output_terminal = _attributes.AttributeEnum(_attributes.AttributeViString, enums.ExportOutputTerminal, 1150041) + '''Type: enums.ExportOutputTerminal + + Specifies the destination terminal for the Ready for Start Event. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - ExportSignal + + **Defined Values**: + + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +====================================+=================================================================================================================================================================================================================+ + | ExportOutputTerminal.DO_NOT_EXPORT | The signal is not exported. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.CLK_OUT | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.REF_OUT | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.REF_OUT2 | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PFI0 | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PFI1 | The trigger is received on PFI 1. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG0 | The trigger is received on PXI trigger line 0. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG1 | The trigger is received on PXI trigger line 1. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG2 | The trigger is received on PXI trigger line 2. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG3 | The trigger is received on PXI trigger line 3. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG4 | The trigger is received on PXI trigger line 4. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG5 | The trigger is received on PXI trigger line 5. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG6 | The trigger is received on PXI trigger line 6. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG7 | The trigger is received on PXI trigger line 7. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_STAR | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXIE_DSTARC | The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI0 | The trigger is received on PFI0 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI1 | The trigger is received on PFI1 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI2 | The trigger is received on PFI2 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI3 | The trigger is received on PFI3 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI4 | The trigger is received on PFI4 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI5 | The trigger is received on PFI5 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI6 | The trigger is received on PFI6 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI7 | The trigger is received on PFI7 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + exported_ref_clock_output_terminal = _attributes.AttributeEnum(_attributes.AttributeViString, enums.ReferenceClockExportedTerminal, 1150072) + '''Type: enums.ReferenceClockExportedTerminal + + Specifies a comma-separated list of the terminals at which to export the Reference Clock. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5694, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - ExportSignal + + **Defined Values**: + + +------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +================================================+=================================================================================================================================================================================================================+ + | ReferenceClockExportedTerminal.NONE | The Reference Clock is not exported. This value is not valid for the PXIe-5644/5645/5646. | + +------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ReferenceClockExportedTerminal.REF_OUT | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ReferenceClockExportedTerminal.REF_OUT2 | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ReferenceClockExportedTerminal.CLK_OUT | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ReferenceClockExportedTerminal.IF_COND_REF_OUT | Export the clock on the REF OUT terminal on the PXIe-5694. This value is valid only for the PXIe-5667. | + +------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + exported_ref_clock_rate = _attributes.AttributeEnum(_attributes.AttributeViReal64, enums.ReferenceClockExportedRate, 1150326) + '''Type: enums.ReferenceClockExportedRate + + Specifies the Reference Clock Rate, in Hz, of the signal sent to the Ref Clock Exported Terminal. + + **Default Value**: 10 MHz + + **Valid Values**: + + PXIe-5820/5830/5831/5832/5840/5841: 10 MHz + + PXIe-5842: 10 MHz, 100 MHz, 1 GHz + + PXIe-5860: 10 MHz, 100 MHz + + **Supported Devices**: PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + exported_ref_trigger_output_terminal = _attributes.AttributeEnum(_attributes.AttributeViString, enums.ExportOutputTerminal, 1150032) + '''Type: enums.ExportOutputTerminal + + Specifies the destination terminal for the exported Reference Trigger. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - ExportSignal + + **Defined Values**: + + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +====================================+=================================================================================================================================================================================================================+ + | ExportOutputTerminal.DO_NOT_EXPORT | The signal is not exported. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.CLK_OUT | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.REF_OUT | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.REF_OUT2 | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PFI0 | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PFI1 | The trigger is received on PFI 1. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG0 | The trigger is received on PXI trigger line 0. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG1 | The trigger is received on PXI trigger line 1. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG2 | The trigger is received on PXI trigger line 2. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG3 | The trigger is received on PXI trigger line 3. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG4 | The trigger is received on PXI trigger line 4. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG5 | The trigger is received on PXI trigger line 5. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG6 | The trigger is received on PXI trigger line 6. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG7 | The trigger is received on PXI trigger line 7. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_STAR | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXIE_DSTARC | The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI0 | The trigger is received on PFI0 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI1 | The trigger is received on PFI1 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI2 | The trigger is received on PFI2 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI3 | The trigger is received on PFI3 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI4 | The trigger is received on PFI4 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI5 | The trigger is received on PFI5 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI6 | The trigger is received on PFI6 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI7 | The trigger is received on PFI7 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + exported_start_trigger_output_terminal = _attributes.AttributeEnum(_attributes.AttributeViString, enums.ExportOutputTerminal, 1150027) + '''Type: enums.ExportOutputTerminal + + Specifies the destination terminal for the exported Start Trigger. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - ExportSignal + + **Defined Values**: + + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +====================================+=================================================================================================================================================================================================================+ + | ExportOutputTerminal.DO_NOT_EXPORT | The signal is not exported. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.CLK_OUT | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.REF_OUT | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.REF_OUT2 | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PFI0 | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PFI1 | The trigger is received on PFI 1. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG0 | The trigger is received on PXI trigger line 0. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG1 | The trigger is received on PXI trigger line 1. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG2 | The trigger is received on PXI trigger line 2. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG3 | The trigger is received on PXI trigger line 3. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG4 | The trigger is received on PXI trigger line 4. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG5 | The trigger is received on PXI trigger line 5. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG6 | The trigger is received on PXI trigger line 6. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_TRIG7 | The trigger is received on PXI trigger line 7. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXI_STAR | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.PXIE_DSTARC | The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI0 | The trigger is received on PFI0 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI1 | The trigger is received on PFI1 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI2 | The trigger is received on PFI2 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI3 | The trigger is received on PFI3 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI4 | The trigger is received on PFI4 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI5 | The trigger is received on PFI5 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI6 | The trigger is received on PFI6 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ExportOutputTerminal.DIO_PFI7 | The trigger is received on PFI7 from the front panel DIO terminal. | + +------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + external_gain = _attributes.AttributeViReal64(1150094) + '''Type: float + + Specifies the gain, in dB, of a switch (or cable) connected before the RF IN connector of an NI-RFSA system. + + When you set this property, NI-RFSA calculates appropriate attenuator settings based on the value of this property and the value of the reference_level property. In this case, NI-RFSA interprets the reference level as the maximum expected power level of the signal at the input of the external gain device. For more information about attenuation, refer to the *Attenuation and Signal Levels* topic for your device in the *NI RF Vector Signal Analyzers Help*. + + ---- + **Note** + For the PXIe-5820, this property specifies the gain, in dB, of a switch (or cable) connected before the IQ IN connector. + + ---- + + ---- + **Note** + For the PXIe-5645, this property is ignored if you are using the I/Q ports. + + ---- + + With this property set, NI-RFSA reads the iq_power_edge_ref_trigger_level property value as the power level at the input of the external gain device at which the NI-RFSA device should trigger. + + Negative values indicate attenuation. + + **Valid Values**: INF to +INF + + **Units**: dB + + **Default Value**: 0 + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + fetch_offset = _attributes.AttributeViInt64(1150046) + '''Type: int + + Specifies the offset relative to the position specified by the fetch_relative_to property from which to start fetching data. + + Offset can be a positive or negative value. + + **Default Value**: 0 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + fetch_relative_to = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.FetchRelativeTo, 1150045) + '''Type: enums.FetchRelativeTo + + Specifies the reference location within the acquired record from which to begin fetching. + + **Default Value**: N/A + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=========================================+=============================================================================================================================================================================================================================+ + | FetchRelativeTo.MOST_RECENT_SAMPLE | Fetching occurs relative to the most recently acquired data. The value of the fetch_offset property must be negative. | + +-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | FetchRelativeTo.FIRST_SAMPLE | Fetching occurs at the first sample acquired by the device. If the device wraps its buffer, the first sample is no longer available. In this case, NI-RFSA returns an error if the fetch offset is in the overwritten data. | + +-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | FetchRelativeTo.REFERENCE_TRIGGER | Fetching occurs relative to the Reference Trigger. This value behaves like FetchRelativeTo.FIRST_SAMPLE if no Reference Trigger is configured. | + +-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | FetchRelativeTo.FIRST_PRETRIGGER_SAMPLE | Fetching occurs relative to the first pretrigger sample acquired. | + +-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | FetchRelativeTo.CURRENT_READ_POSITION | Fetching occurs after the last fetched sample. | + +-----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ''' + fft_size = _attributes.AttributeViInt32(1150050) + '''Type: int + + Returns the size of the fast Fourier transform (FFT). + + **Default Value**: N/A + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + fft_width = _attributes.AttributeViReal64(1150169) + '''Type: float + + Specifies the FFT width of the device. + + The FFT width is the effective bandwidth of the signal path during each signal acquisition. + + ---- + **Note** + The maximum FFT width when using the PXIe-5622 is constrained to 50 MHz or 25 MHz, depending on the digitizer option you purchased. The maximum FFT width when using thing PXIe-5624 is constrained to 400 MHz or 765 MHz, depending on the digitizer configuration. + + ---- + + ---- + **Note** + You can use the fft_width property with in-band retuning. For more information about in-band retuning, refer to the downconverter_center_frequency property. + + ---- + + NI-RFSA treats the *device instantaneous bandwidth* as the effective real-time bandwidth of the signal path. The *span* specifies the frequency range of the computed spectrum. An RF vector signal analyzer can acquire a bandwidth only within the device instantaneous bandwidth frequency. If the span you choose is greater than the device instantaneous bandwidth, NI-RFSA obtains multiple acquisitions and combines them into a single spectrum. By specifying the FFT width, you can control the specific bandwidth obtained in each signal acquisition. If you read the fft_width property without setting it, NI-RFSA returns the value of the device_instantaneous_bandwidth property. + + **Valid Values**: + + The lower limit for all FFT width supported devices using the PXIe-5622 IF digitizer is 7.325 kHz. The lower limit for all FFT width supported devices using the PXIe-5624 IF digitizer is 400 MHz or 800 MHz, depending on the FPGA image that is downloaded upon opening the session to the PXIe-5624 IF digitizer. + + **PXIe-5663/5663E**: The FFT width upper limit for the PXIe-5663/5663E depends on the downconverter center frequency and on the module revision of the PXIe-5601 as illustrated in the following table. Refer to the `Identifying Module Revision `_ topic for more information about determining which revision of the PXIe-5601 RF downconverter you have installed. + + **PXIe-5665/5667/5668**: The upper limit of the FFT width is the maximum device instantaneous bandwidth. + + ---- + **Note** + + ---- + + ---- + **Note** + At frequencies greater than 3.6 GHz, the PXIe-5605 provides a typical bandwidth of 47 MHz at dB with the preselector enabled. The fft_width property can override the typical bandwidth of the PXIe-5605 up to 57 MHz using an external digitizer and up to 50 MHz or 25 MHz depending on the PXIe-5622 digitizer option you purchased. The increase in bandwidth results in faster signal acquisitions, but amplitude accuracy is decreased for spectrum acquisitions, and magnitude and phase accuracy is decreased for I/Q acquisitions. National Instruments does not guarantee device specifications if you set the fft_width property greater than the warranted instantaneous bandwidth specification. + + ---- + + ---- + **Note** + When using the PXIe-5606, the 765 MHz IF filter is only available at center frequencies of 3.6 GHz and above. + + ---- + + **Default Value**: N/A + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668 + + +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------+ + | Downconverter Center Frequency | PXIe-5601 Instantaneous Bandwidth | FFT Width Upper Limit | + +=====================================================================================================================================================================================+===================================+====================================================================+ + | 10 MHz to <120 MHz | 10 MHz | 10 MHz (Revision E), 20 MHz< sup >* < /sup> (Revision G or later) | + +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------+ + | 120 MHz to <330 MHz | 20 MHz | 20 MHz (Revision E), 30 MHz< sup > * < /sup> (Revision G or later) | + +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------+ + | 330 MHz to <6.6 GHz | 50 MHz | 50 MHz | + +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------+ + | * < / sup >National Instruments does not guarantee device specifications if you set the fft_width property greater than the warranted instantaneous bandwidth specification. | | | + +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------+ + ''' + fft_window_shape_factor = _attributes.AttributeViReal64(1150206) + '''Type: float + + Returns the shape factor of the window used in the fast Fourier transform (FFT). + + The window shape factor is defined as the ratio of the 60 dB to 6 dB bandwidths. + + The following table shows the shape factor for each NI-RFSA FFT window type. + + | Window Type | Shape Factor | + |:-----------------------|:-------------| + | Uniform | 1.57:1 | + | Hanning | 1.94:1 | + | Hamming | 2.13:1 | + | Exact Blackman | 2.52:1 | + | Flat Top | 2.0:1 | + | 4-term Blackman-Harris | 2.5:1 | + | 7-term Blackman-Harris | 4.1:1 | + | Low Side Lobe | 2.78:1 | + | Gaussian | 2.3:1 | + | Kaiser Bessel | 2.55:1 | + + **Default Value**: N/A + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5840/5841/5842/5860 + ''' + fft_window_size = _attributes.AttributeViInt32(1150049) + '''Type: int + + Returns the size of the window used in the fast Fourier transform (FFT), in terms of the number of samples in the window. + + **Default Value**: N/A + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + fft_window_type = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.SpectrumFftWindowType, 1150017) + '''Type: enums.SpectrumFftWindowType + + Specifies the time-domain window type. + + **Default Values**: + + **PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860**: SpectrumFftWindowType._7_TERM_BLACKMAN_HARRIS + + **PXIe-5667**: SpectrumFftWindowType._4_TERM_BLACKMAN_HARRIS + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Resolution Bandwidth `_ + + **Defined Values**: + + +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +===============================================+======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | SpectrumFftWindowType.UNIFORM | No window is applied. | + +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumFftWindowType.HANNING | The Hanning window is useful for analyzing transients longer than the time duration of the window, and also for general-purpose applications. | + +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumFftWindowType.HAMMING | A Hamming window is applied to the waveform using the following equation: y[i] = x[i] * (0.54 - 0.46cos(w)) where w = (2)i/n and n = the waveform size. Note: Hanning and Hamming windows are somewhat similar. However, in the time domain, the Hamming window does not get as close to zero near the edges as does the Hanning window. | + +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumFftWindowType.BLACKMAN_HARRIS | A Blackman-Harris window is applied to the waveform using the following equation: y[i] = x[i] * (0.42323 - 0.49755*cos(w) + 0.07922*cos(2w)) | + +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumFftWindowType.EXACT_BLACKMAN | An Exact Blackman window is applied to the waveform using the following equation: y[i] = x[i] * (a0 - a1*cos(w) + a2*cos(2w)) | + +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumFftWindowType.BLACKMAN | A Blackman window is useful for analyzing transient signals, and provides similar windowing to Hanning and Hamming windows but adds one additional cosine term to reduce ripple. A Blackman window is applied to the waveform using the following equation: y[i] = x[i] * (0.42 - 0.50*cos(w) + 0.08*cos(2w)) | + +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumFftWindowType.FLAT_TOP | The fifth-order Flat Top window has the best amplitude accuracy of all the window methods. The increased amplitude accuracy (0.02 dB for signals exactly between integral cycles) is at the expense of frequency selectivity. The Flat Top window is most useful in accurately measuring the amplitude of single frequency components with little nearby spectral energy in the signal. A fifth-order Flat Top window is applied to the waveform using the following equation: y[i] = x[i] * (a0 - a1*cos(w) + a2*cos(2w) - a3*cos(3w) + a4*cos(4w)) | + +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumFftWindowType._4_TERM_BLACKMAN_HARRIS | A 4-term Blackman-Harris window is a general purpose window; it has side-lobe rejection in the upper 90 dB, with moderately wide side lobe. A 4-term Blackman Harris window is applied to the waveform using the following equation: y[i] = x[i] * (a0 - a1*cos(w) + a2*cos(2w) - a3*cos(3w)) | + +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumFftWindowType._7_TERM_BLACKMAN_HARRIS | A 7-term Blackman-Harris window has the highest dynamic range; it is ideal for signal-to-noise ratio applications. A 7-term Blackman Harris window is applied to the waveform using the following equation: y[i] = x[i] * (a0 - a1*cos(w) + a2*cos(2w) - a3*cos(3w) + a4*cos(4w) - a5*cos(5w) + a6*cos(6w)) | + +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumFftWindowType.LOW_SIDE_LOBE | The Low Side Lobe window further reduces the size of the main lobe. The following equation defines the Low Side Lobe window. where *N* is the length of window | + +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumFftWindowType.GAUSSIAN | A Gaussian window is applied to the waveform using the following equation: y[i] = x[i] * exp(-0.5*(i - (N-1)/2)^2 / ((N-1)/2)^2) where N is the length of the window | + +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumFftWindowType.KAISER_BESSEL | A Kaiser-Bessel window is applied to the waveform using the following equation: y[i] = x[i] * I0(β*sqrt(1 - (2i/(N-1) - 1)^2))/I0(β) where i is between 0 and N-1, N is the length of the window, β determines the shape of the window, and I0 is the zeroth order Modified Bessel method of the first kind | + +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ''' + fixed_group_delay_across_ports = _attributes.AttributeViStringCommaSeparated(1150324) + '''Type: list of str + + Specifies a comma-separated list of ports for which to fix the group delay. + + **Valid Values**: + + PXIe-5831/5832: rf<0-1>/port, where 0-1 indicates one (0) or two (1) mmRH-5582 connections and x is the port number on the mmRH-5582 front panel. + + **Default Value**: + + PXIe-5831/5832: (empty string), which specifies that the group delay will not be fixed for any port. + + **Supported Devices**: PXIe-5831/5832 + ''' + fpga_bitfile_path = _attributes.AttributeViString(1150221) + '''Type: str + + Returns a string containing the path to the location of the current NI-RFSA instrument driver FPGA extensions bitfile, a .lvbitx file, that is programmed on the device. + + You can specify the bitfile location using the Driver Setup string in the **optionString** parameter of the __init__ method. + + NI-RFSA instrument driver FPGA extensions enable you to use pre-compiled FPGA bitfiles to customize the behavior of the device FPGA while maintaining the functionality of the NI-RFSA instrument driver. + + Refer to `NI-RFSA Instrument Driver FPGA Extensions `_ for more information about using NI-RFSA instrument driver FPGA extensions for NI devices. + + **Supported Devices:** PXIe-5644/5645/5646, PXIe-5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + fpga_target_name = _attributes.AttributeViString(1150233) + '''Type: str + + Returns a string containing the name of the FPGA target being used. + + This name can be used with the RIO open session to open a reference to the FPGA. + + This property is channel dependent if multiple targets are supported. + + **Supported Devices:** PXIe-5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + fpga_temperature = _attributes.AttributeViReal64(1150254) + '''Type: float + + Returns the current temperature, in degrees Celsius, of the FPGA. + + ---- + **Note** + If you query this property during RF list mode, list steps may take longer to complete during list execution. + + ---- + + **Units**: degrees Celcius + + **Default Value**: N/A + + **Supported Devices:** PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + frequency_settling = _attributes.AttributeViReal64(1150088) + '''Type: float + + Specifies the value used for local oscillator (LO) frequency settling. + + The units and interpretation for this scalar value are specified using the frequency_settling_units property. This property is not supported if you are using an external LO. + + The valid values for this property depend on the frequency_settling_units property. + + **Notes:** + 1. If the frequency settling units property is set to FrequencySettlingUnits.SECONDS_AFTER_LOCK and the downconverter loop bandwidth property is set to narrow, NI recommends a minimum settling time of 128 microseconds to ensure that the phase-locked loop (PLL) lock stabilizes. If the downconverter loop bandwidth is set to wide, NI recommends a minimum settling time of 16 microseconds. + 2. When in RF list mode, the valid values for FrequencySettlingUnits.SECONDS_AFTER_IO are 0 microseconds to 50 milliseconds. + 3. The valid values for this configuration depend on the module used as the LO source. Refer to the lo source property for more information. + + **Default Value**: 0.1 + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667/5668, PXIe-5830/5831/5832/5840/5841/5842 + + +----------------------------------------------------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ + | Device | FrequencySettlingUnits.SECONDS_AFTER_LOCK | FrequencySettlingUnits.SECONDS_AFTER_IO | %enum_value{frequency settling units.fsu ppm} | + +================================================================+===========================================================================================+============================================================================+===============================================+ + | PXIe-5663/5663E | 2 microseconds1 to 80 milliseconds, resolution of approximately 2 microseconds | 0 microseconds to 80 milliseconds2, resolution of 1 microsecond | 1.0, 0.1, 0.01 | + +----------------------------------------------------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ + | PXIe-5665/5667/5668 | 4 microseconds to 80 milliseconds, resolution of approximately 4 microseconds | 0 microseconds to 80 milliseconds2, resolution of 1 microsecond | 1.0, 0.1, 0.01, 0.001 | + +----------------------------------------------------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ + | PXIe-5644/5645/5646 | 1 microsecond1 to 65 milliseconds, resolution of 1 microsecond | 1 microsecond1 to 65 milliseconds, resolution of 1 microsecond | 1.0, 0.1, 0.01 | + +----------------------------------------------------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ + | PXIe-5830/5831/5832/5840/5841/5842 | 1 microsecond1 to 10 seconds, resolution of 1 microsecond | 0 microseconds to 10 seconds, resolution of 1 microsecond | 1.0 to 0.01 | + +----------------------------------------------------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ + | PXIe-5831/5832 with PXIe-5653 (using PXIe-3622 LO)3 | 1 microsecond1 to 10 seconds, resolution of 1 microsecond | 0 microseconds to 10 seconds, resolution of 1 microsecond | 1.0 to 0.01 | + +----------------------------------------------------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ + | PXIe-5831/5832 with PXIe-5653 (using PXIe-5653 LO)3 | 4 microseconds to 80 milliseconds, resolution of approximately 4 microseconds | 0 microseconds to 80 milliseconds, resolution of 1 microsecond | 1.0 to 0.01 | + +----------------------------------------------------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ + ''' + frequency_settling_units = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.FrequencySettlingUnits, 1150087) + '''Type: enums.FrequencySettlingUnits + + Specifies the delay duration units and interpretation for LO settling. + + Specify the actual settling value using the frequency_settling property. This property is not supported if you are using an external LO. + + **Default Value**: FrequencySettlingUnits.PPM + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667/5668, PXIe-5830/5831/5832/5840/5841/5842 + + **Defined Values**: + + +-------------------------------------------+-------------------------------------------------------------------+ + | Name | Description | + +===========================================+===================================================================+ + | FrequencySettlingUnits.PPM | Specifies the frequency settling time in parts per million (PPM). | + +-------------------------------------------+-------------------------------------------------------------------+ + | FrequencySettlingUnits.SECONDS_AFTER_LOCK | Specifies the frequency settling in time after lock (seconds). | + +-------------------------------------------+-------------------------------------------------------------------+ + | FrequencySettlingUnits.SECONDS_AFTER_IO | Specifies the frequency settling time after I/O (seconds). | + +-------------------------------------------+-------------------------------------------------------------------+ + ''' + group_capabilities = _attributes.AttributeViStringCommaSeparated(1050401) + '''Type: list of str + + Returns a list of class-extension groups that NI-RFSA implements. + + **Supported Devices:** PXI-5610, PXIe-5611, PXI/PXIe-5650/5651/5652, PXIe-5653/5654/5654 with PXIe-5696, PXI-5670/5671, PXIe-5672/5673/5673E, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + host_dma_buffer_size = _attributes.AttributeViInt64(1150285) + '''Type: int + + Specifies the size of the DMA buffer in computer memory, in bytes. + + To set this property, the NI-RFSA device must be in the Configuration state. + + A sufficiently large host DMA buffer improves performance by allowing large fetches to be transferred more efficiently. + + **Default Value:** 8 MB + + **Supported Devices**: PXI-5820/5830/5831/5840/5841/5842/5860 + ''' + if_attenuation = _attributes.AttributeViReal64(1150074) + '''Type: float + + Configures the device attenuation to a value that has the actual calibrated IF attenuation closest to the desired value. + + **Valid Values**: 0 to 30 + + **Default Value**: N/A + + **Supported Devices**: PXIe-5601/5603/5605 (external digitizer mode), PXIe-5663/5663E/5665/5667, PXIe-5693 + ''' + if_filter_bandwidth = _attributes.AttributeViReal64(1150205) + '''Type: float + + Specifies the IF filter path bandwidth for your device configuration. + + ---- + **Note** + For composite devices, such as the PXIe-5665/5667/5668, the IF filter path bandwidth includes all IF filters across the component modules of a composite device. + + ---- + + NI-RFSA uses this property in conjunction with the device_instantaneous_bandwidth property and the digital_if_equalization_enabled property to determine the settings for your measurement. NI-RFSA selects the next highest available filter based on the value you specify. The following table lists the IF filters available for NI devices. You may specify a higher value than your device instantaneous bandwidth if your measurement requires it, but specifying a lower value returns an error. + + **Valid Values**: + + **PXIe-5603/5605**: 0 to 80 MHz + + **PXIe-5665/5667**: 0 to 50 MHz + + **PXIe-5668**: 0 to 765 MHz + + **PXIe-5694**: 0 to 50 MHz + + ---- + **Note** + To set this property to values greater than 20 MHz, you must set the signal_conditioning_enabled property to SignalConditioningEnabled.BYPASSED + + ---- + + **Default Values:** For spectrum acquisition types the default is greater than or equal to the spectrum_span property. NI-RFSA chooses the default value of the if_filter_bandwidth property to correspond to the appropriate IF filter. For I/Q acquisition types NI-RFSA chooses the default value corresponding to the widest IF filter possible for your equipment setup. + + **Supported Devices**: PXIe-5603/5605/5606, PXIe-5665/5667/5668, PXIe-5694 + + +--------------------------+---------------------------+-------------------+ + | Device | IF Filter Bandwidth Range | IF Filter | + +==========================+===========================+===================+ + | PXIe-5603/5665 (3.6 GHz) | 2264300 kHz | 300 kHz IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5603/5665 (3.6 GHz) | >300 kHz and 22645 MHz | Through IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5603/5665 (3.6 GHz) | >5 MHz | Through IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5605/5665 (14 GHz) | 2264300 kHz | 300 kHz IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5603/5665 (14 GHz) | >300 kHz and 22645 MHz | 5 MHz IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5603/5665 (14 GHz) | >5 MHz | Through IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5668 | 2264300 kHz | 300 kHz IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5668 | >300 kHz and 22645 MHz | 5 MHz IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5668 | >5 MHz and 2264100 MHz | 100 MHz IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5668 | >100 MHz and 2264320 MHz | 320 MHz IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5668 | >320 MHz | 765 MHz IF filter | + +--------------------------+---------------------------+-------------------+ + ''' + if_output_frequency = _attributes.AttributeViReal64(1150086) + '''Type: float + + Returns the center frequency of the IF output signal that corresponds to the configured RF center frequency. + + The downconverter translates the RF input frequency to the IF output frequency by mixing it with the LO signal. The nominal values for the IF output frequency are shown in the following table. + + The coarse nature of the LO settings can cause the downconverter to be unable to tune to the exact LO frequency that would produce the nominal IF output frequency. Any coercion in the actual LO frequency results in the IF output frequency being slightly off from the nominal value. + + Additionally, if you use the downconverter_center_frequency and lo_frequency properties to program the downconverter, the IF output frequency could vary from the nominal value. NI-RFSA adjusts the acquired spectrum or I/Q data for the difference between nominal and actual IF output frequency. If you use an external digitizer with a RF downconverter, use this property to specify the actual IF output frequency. + + **Default Value**: N/A + + **Supported Devices**:PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5694 + + +---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Downconverter | Nominal IF Output Frequency | + +===============+============================================================================================================================================================================================================================================================================================================+ + | PXI-5600 | 15 MHz | + +---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PXIe-5601 | 53 MHz or 187.5 MHz | + +---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PXIe-5603 | 187.5 MHz or 199 MHz | + +---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PXIe-5605 | 187.5 MHz, 190 MHz, or 199 MHz | + +---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PXIe-5606 | 187.5 MHz, 190 MHz, 199 MHz, 507.5 MHz, or 730 MHz | + +---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PXIe-5694 | - signal_conditioning_enabled set to SIGNAL_CONDITIONING_ENABLED and if_conditioning_down_conversion_enabled set to disabled: 193.6 MHz
- if_conditioning_down_conversion_enabled set to enabled: 21.4 MHz
- signal_conditioning_enabled set to SIGNAL_CONDITIONING_BYPASSED: 162.5 MHz to 212.5 MHz | + +---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ''' + if_output_power_level = _attributes.AttributeViReal64(1150130) + '''Type: float + + Specifies the level of the IF signal leaving the system, in dBm. + + Use this property to increase or decrease the nominal IF signal output level to achieve better measurement results. + + If you set the if_output_power_level and if_output_power_level_offset properties at the same time, NI-RFSA returns an error. + + ---- + **Note** + If you set the if_output_power_level property to a value less than 201310 dBm, the IF output power level may be higher than the value you request. Read the value of this property to determine the configured IF output power level. + + ---- + + ---- + **Note** + The value of this property is limited by the amount of IF attenuation that the downconverter can apply, the reference_level property, the downconverter_center_frequency property, and the center_frequency property or iq_carrier_frequency property, depending on your acquisition type. + + ---- + + **Units**: dBm + + **Default Value**: + + **PXIe-5667**: -2 dBm + + **PXIe-5668**: -1 dBm + + **All other devices**: dBm + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694 + ''' + if_output_power_level_offset = _attributes.AttributeViReal64(1150131) + '''Type: float + + Specifies the number of dB by which to adjust the default IF output power level. + + This property does not depend on absolute IF output power levels, so you can use it to adjust the IF output power level on all NI-RFSA devices without knowing the exact default value. Use this property to increase or decrease the nominal output level to achieve better measurement results. The default value for the offset is 0 dB. + + If you set the if_output_power_level and if_output_power_level_offset properties at the same time, NI-RFSA returns an error. + + **Units**: dB + + **Default Value**: 0 + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5663/5663E/5665/5667/5668 + ''' + input_isolation_enabled = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.InputIsolationEnabled, 1150170) + '''Type: enums.InputIsolationEnabled + + Specifies whether input isolation is enabled. + + Enabling this property isolates the input signal at the RF IN connector on the RF downconverter from the rest of the RF downconverter signal path. Disabling this property reintegrates the input signal into the RF downconverter signal path. + + ---- + **Note** + If you enable input isolation for your device, the device impedance is changed from the characteristic 50 impedance. A change in the device impedance may also cause a VSWR value higher than the device specifications. + + ---- + + For the PXIe-5830/5831/5832, input isolation is supported for all available ports for your hardware configuration. + + **Default Value**: InputIsolationEnabled.DISABLED, if the device configuration is supported. + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667/5668, PXIe-5693, PXIe-5820/5830/5831/5832/5840/5841 + + **Defined Values**: + + +--------------------------------+---------------------------+ + | Name | Description | + +================================+===========================+ + | InputIsolationEnabled.DISABLED | Disables input isolation. | + +--------------------------------+---------------------------+ + | InputIsolationEnabled.ENABLED | Enables input isolation. | + +--------------------------------+---------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + input_port = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.InputPort, 1150180) + '''Type: enums.InputPort + + Specifies the connector(s) to use to acquire the signal. + + To set this property, the NI-RFSA device must be in the Configuration state. + + **Default Values**: + + **PXIe-5820**: InputPort.IQ_IN + + **All other devices**: InputPort.RF_IN + + **Supported Devices:** PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +------------------+---------------------------------------------------------------------------------+ + | Name | Description | + +==================+=================================================================================+ + | InputPort.RF_IN | Enables the RF IN port. | + +------------------+---------------------------------------------------------------------------------+ + | InputPort.IQ_IN | Enables the I/Q IN port. | + +------------------+---------------------------------------------------------------------------------+ + | InputPort.CAL_IN | Enables the CAL IN port. | + +------------------+---------------------------------------------------------------------------------+ + | InputPort.I_ONLY | Enables the I terminals of the I/Q IN port. It is supported only for PXIe-5645. | + +------------------+---------------------------------------------------------------------------------+ + ''' + instrument_firmware_revision = _attributes.AttributeViString(1050510) + '''Type: str + + Returns a string that contains the firmware revision information for the NI-RFSA downconverter for the composite device you are currently using. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + ---- + **Note** + PXIe-5820/5830/5831/5832/5840/5841/5842/5860 devices will return "No revision information available." To retrieve the firmware revision, use MAX, Hardware Configuration Utility, or NI System Configuration API. + + ---- + ''' + instrument_manufacturer = _attributes.AttributeViString(1050511) + '''Type: str + + Returns a string that contains the name of the manufacturer for the NI-RFSA device you are currently using. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + instrument_model = _attributes.AttributeViString(1050512) + '''Type: str + + Returns a string that contains the model number or name of the NI-RFSA device that you are currently using. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + io_resource_descriptor = _attributes.AttributeViString(1050304) + '''Type: str + + Indicates the resource name NI-RFSA uses to identify the physical device. + + If you initialize NI-RFSA with a logical name, this property contains the resource name that corresponds to the entry in the IVI Configuration Utility. + + If you initialize NI-RFSA with the resource name, this property contains that value. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + iq_carrier_frequency = _attributes.AttributeViReal64(1150059) + '''Type: float + + Specifies the expected carrier frequency of the incoming signal for demodulation. + + The NI-RFSA device tunes to this frequency. NI-RFSA may coerce this value based on hardware settings and the RF downconverter specifications. + + ---- + **Note** + For the PXIe-5645, this property is ignored if you are using the I/Q ports. + + ---- + + **Units**: hertz (Hz) + + **Default Values**: + + **PXIe-5644/5645/5646, PXIe-5840/5841/5860, PXIe-5842 (500 MHz, 1 GHz, and 2 GHz bandwidth options)**: 1 GHz + + **PXIe-5842 (4 GHz bandwidth option) using the Standard personality**: 1 GHz + + **PXIe-5842 (4 GHz bandwidth option) using the 4 GHz Bandwidth personality**: 6.5 GHz + + **PXIe-5820**: 0 Hz + + **PXIe-5830/5831/5832**: 6.5 GHz + + **All other devices**: 100 MHz + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Carrier Wave `_ + + `I/Q Modulation `_ + + **High-Level Methods**: + + - ConfigureIqCarrierFrequency + ''' + iq_in_port_carrier_frequency = _attributes.AttributeViReal64(1150181) + '''Type: float + + Configures the frequency of the signal. + + The onboard signal processing (OSP) frequency shifts the signal at this frequency to baseband prior to acquiring it. + + ---- + **Note** + For the PXIe-5645, this property is ignored if you are using the RF ports. + + ---- + + **Valid Values**: + + **PXIe-5645**: -60 MHz to +60 MHz + + **PXIe-5820**: -500 MHz to +500 MHz + + **Default Value**: 0 + + **Supported Devices**: PXIe-5645, PXIe-5820 + ''' + iq_in_port_temperature = _attributes.AttributeViReal64(1150204) + '''Type: float + + Returns the temperature of the I/Q IN circuitry on the device. + + **Units:** degrees C + + **Supported Devices:** PXIe-5645, PXIe-5820 + ''' + iq_in_port_terminal_configuration = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.IqInPortTerminalConfiguration, 1150182) + '''Type: enums.IqInPortTerminalConfiguration + + Configures the terminal configuration of the I/Q port. + + To use this property, you must use the channelName parameter of the _set_attribute_vi_int32 method to specify the name of the channel you are configuring. For the PXIe-5645, you can configure the I and Q channels by using I or Q as the channel string, or set the channel string to "" (empty string) to configure both channels. For the PXIe-5820, the only valid value for the channel string is "" (empty string). + + ---- + **Note** + For the PXIe-5645, this property is ignored if you are using the RF ports. + + ---- + + **PXIe-5820**: The only valid value for this property is IqInPortTerminalConfiguration.DIFFERENTIAL. + + **Default Value**: IqInPortTerminalConfiguration.DIFFERENTIAL + + **Supported Devices:** PXIe-5645, PXIe-5820 + + **Defined Values**: + + +--------------------------------------------+--------------------------------------------------+ + | Name | Description | + +============================================+==================================================+ + | IqInPortTerminalConfiguration.DIFFERENTIAL | Sets the terminal configuration to differential. | + +--------------------------------------------+--------------------------------------------------+ + | IqInPortTerminalConfiguration.SINGLE_ENDED | Sets the terminal configuration to single-ended. | + +--------------------------------------------+--------------------------------------------------+ + ''' + iq_in_port_vertical_range = _attributes.AttributeViReal64(1150183) + '''Type: float + + Specifies the voltage range for the I/Q terminals. + + To use this property, you must use the channelName parameter of the _set_attribute_vi_real64 method to specify the name of the channel you are configuring. For the PXIe-5645, you can configure the I and Q channels by using I or Q as the channel string, or set the channel string to "" (empty string) to configure both channels. For the PXIe-5820, the only valid value for the channel string is "" (empty string). + + The voltage range in differential terminal configuration is configurable from 2 Vpk-pk to 0.032 Vpk-pk in 1 dB steps. In single-ended terminal configuration, valid ranges are half those for differential. Values are always coerced up to the next valid range. + + ---- + **Note** + For the PXIe-5645, this property is ignored if you are using the RF ports. + + ---- + + **Valid Values:** + + **PXIe-5645**: 0 Vpk-pk to 2 Vpk-pk for differential terminal configuration, 0 Vpk-pk to 1 Vpk-pk for single-ended terminal configuration. + + **PXIe-5820**: 0 Vpk-pk to 4 Vpk-pk for differential terminal configuration. + + **Default Value**: 2 Vpk-pk + + **Supported Devices:** PXIe-5645, PXIe-5820 + ''' + iq_power_edge_ref_trigger_level = _attributes.AttributeViReal64(1150056) + '''Type: float + + Specifies the power level, in dBm, at which the device triggers. + + The device asserts the trigger when the signal crosses the level specified by the value of this property, taking into consideration the specified slope. If you are using external gain, refer to the external_gain property for more information about how this property affects the I/Q power edge trigger level. + + **Default Value**: 0 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **High-Level Methods**: + + - ConfigureIqPowerEdgeRefTrigger + ''' + iq_power_edge_ref_trigger_slope = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.ReferenceTriggerIqPowerEdgeSlope, 1150057) + '''Type: enums.ReferenceTriggerIqPowerEdgeSlope + + Specifies whether the device asserts the trigger when the signal power is rising or falling. + + When you set the ref_trigger_type property to ReferenceTriggerType.IQ_POWER_EDGE, the device asserts the trigger when the signal power exceeds the specified level with the slope you specify. + + **Default Value**: ReferenceTriggerIqPowerEdgeSlope.RISING + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **High-Level Methods**: + + - ConfigureIqPowerEdgeRefTrigger + + **Defined Values**: + + +------------------------------------------+-------------------------------------------------------+ + | Name | Description | + +==========================================+=======================================================+ + | ReferenceTriggerIqPowerEdgeSlope.RISING | The trigger asserts when the signal power is rising. | + +------------------------------------------+-------------------------------------------------------+ + | ReferenceTriggerIqPowerEdgeSlope.FALLING | The trigger asserts when the signal power is falling. | + +------------------------------------------+-------------------------------------------------------+ + ''' + iq_power_edge_ref_trigger_source = _attributes.AttributeViString(1150055) + '''Type: str + + Specifies the channel from which the device monitors the trigger. + + NI-RFSA currently supports only 0 as the value of this property. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **High-Level Methods**: + + - ConfigureIqPowerEdgeRefTrigger + ''' + iq_rate = _attributes.AttributeViReal64(1150007) + '''Type: float + + Specifies the I/Q rate for the acquisition. + + The value is expressed in samples per second (S/s). + + Refer to the device_instantaneous_bandwidth property for more information about device specific instantaneous bandwidth limits. You can also refer to the *NI PXIe-5665 Specifications* for more information about instantaneous bandwidth device specifications. + + ---- + **Note** + For the PXIe-5663/5663E/5665/5667/5668, NI-RFSA enables dithering by default. At I/Q rates above 50 MS/s, the dither noise can affect phase coherency performance and leak into the lower frequencies and the upper frequencies of the IF passband. Refer to the digitizer_dither_enabled property for more information about dithering. + + For the PXIe-5663/5663E/5665/5667, when you set the digitizer_sample_clock_timebase_source property to NIRFSA_VAL_ONBOARD_CLOCK, the downconverter instantaneous bandwidth is greater than or equal to the coerced I/Q rate times 0.8. For the PXIe-5665, the actual signal bandwidth is further limited by the combination of the chosen IF filter and anti-aliasing filter. + + ---- + + **PXI-5661**: You should not need to configure an I/Q rate higher than 25 megasamples per second (MS/s) because the PXI-5600 RF downconverter bandwidth is 20 MHz. If you configure a higher I/Q rate, you may see aliasing effects at negative frequencies because the IF frequency of the PXI-5600 is 15 MHz. + + **PXIe-5663/5663E**: Your maximum allowed instantaneous bandwidth depends on the I/Q carrier frequency you use. Refer to the `PXIe-5601 RF downconverter overview `_ for more information about instantaneous bandwidth. + + **PXIe-5665**: Your maximum allowed instantaneous bandwidth depends on the downconverter center frequency if you have enabled the preselector (YIG-tuned filter). + + **PXIe-5667**: Your maximum allowed instantaneous bandwidth depends on the selected [RF preselector filter](RF_PRESELECTOR_FILTER.html) and whether the preselector on the [RF downconverter](PRESELECTOR_ENABLED.html) is enabled. + + **PXIe-5668**: Your maximum allowed instantaneous bandwidth depends on the downconverter center frequency you use and whether or not you enable the highpass filter or preselector (YIG-tuned filter). + + **Units**: S/s + + **Default Values:** + + **PXIe-5842 (4 GHz bandwidth option) using the 4 GHz Bandwidth personality**: 5 GS/s only. + + **All Other Devices**: 1 MS/s + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `I/Q Modulation `_ + + **High-Level Methods**: + + - ConfigureIqRate + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + lo2_export_enabled = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.Lo2ExportEnabled, 1150235) + '''Type: enums.Lo2ExportEnabled + + Specifies whether to enable the LO2 OUT terminal on the installed devices. + + Set this property to TRUE to export the 4 GHz LO signal from the device LO2 IN terminal to the LO2 OUT terminal. + + You can also export the LO2 signal by setting the lo_export_enabled property and the digitizer_sample_clock_timebase_source property. + + | Value | Description | + |:------|:-------------------------------| + | True | Enables the LO2 OUT terminal. | + | False | Disables the LO2 OUT terminal. | + + **Default Value:** False + + **Supported Devices:** PXIe-5603/5605/5606 (external digitizer mode), PXIe-5665/5668 + + **Defined Values**: + + +---------------------------+----------------------+ + | Name | Description | + +===========================+======================+ + | Lo2ExportEnabled.DISABLED | Disables LO2 export. | + +---------------------------+----------------------+ + | Lo2ExportEnabled.ENABLED | Enables LO2 export. | + +---------------------------+----------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + load_configurations_from_file_reset_options = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.LoadConfigurationResetOptions, 1150337) + '''Type: enums.LoadConfigurationResetOptions + + Specifies the configurations to skip to reset while loading configurations from a file. + + **Default Value:** NIRFSA_VAL_SKIP_NONE + **Supported Devices:** PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +--------------------------------------------------+--------------------------------------------------+ + | Name | Description | + +==================================================+==================================================+ + | LoadConfigurationResetOptions.NONE | NI-RFSA resets all configurations. | + +--------------------------------------------------+--------------------------------------------------+ + | LoadConfigurationResetOptions.DEEMBEDDING_TABLES | NI-RFSA skips resetting the de-embedding tables. | + +--------------------------------------------------+--------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + logical_name = _attributes.AttributeViString(1050305) + '''Type: str + + Contains the logical name you specified when opening the current IVI session. + + You may pass a logical name to the Init method or the __init__ method. The IVI Configuration Utility must contain an entry for the logical name. The logical name entry refers to a driver session section in the IVI Configuration file. The driver session section specifies a physical device and initial user options. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + lo_export_enabled = _attributes.AttributeViBoolean(1150134) + '''Type: bool + + Specifies whether to enable the LO OUT terminals on the installed devices. + + **PXIe-5601**: The only valid value for this property is True. + + **PXIe-5603/5605/5606**: If you want to daisy-chain multiple devices together using the same LO source, set this property to TRUE to export the LO input signals on the LO1 IN, LO2 IN, and LO3 IN terminals to LO1 OUT, LO2 OUT, and LO3 OUT, respectively. + + **PXIe-5694**: You can enable this property only if you set the lo_source property to LoSource.LO_IN, or if you set the lo_source property to LoSource.ONBOARD and the IF_CONDITIONING_DOWN_CONVERSION_ENABLED property to NIRFSA_VAL_ENABLED. + + **PXIe-5830/5831**: To use this property for the PXIe-5830/5831/5832, you must use the channelName parameter of the _set_attribute_vi_boolean method to specify the name of the channel you are configuring. You can configure the LO1 and LO2 channels by using lo1 or lo2 as the channel string, or set the channel string to lo1,lo2 to configure both channels. For all other devices, the only valid value for the channel string is "" (empty string). + + ---- + **Note** + If you are sharing an LO for the PXIe-5830/5831/5832 between an NI-RFSA and NI-RFSG session, ensure both sessions use the same shared setting. + + ---- + + **Defined Values:** + + | Value | Description | + |:---------|:-------------------------------| + | True | Enables the LO OUT terminals. | + | False | Disables the LO OUT terminals. | + + **Default Values**: + + **PXIe-5601, PXIe-5663/5663E**: True + + **PXIe-5603/5605/5606, PXIe-5644/5645/5646, PXIe-5665/5667/5668, PXIe-5694, PXIe-5830/5831/5832/5840/5841/5842**: False + + **Supported Devices**: PXIe-5601/5603/5605 (external digitizer mode), PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667, PXIe-5694, PXIe-5830/5831/5832/5840/5841/5842 + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + Tip: + This property can be set/get on specific los within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container los to specify a subset. + + Example: :py:attr:`my_session.los[ ... ].lo_export_enabled` + + To set/get on all los, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.lo_export_enabled` + ''' + lo_frequency = _attributes.AttributeViReal64(1150068) + '''Type: float + + Specifies the LO signal frequency for the configured center frequency. + + If you are using the NI RF vector signal analyzer with an external LO, use this property to specify the LO frequency that the external LO source passes into the LO IN or LO1 IN connector on the RF downconverter front panel. If you are using an external LO, reading the value of this property after configuring the rest of the parameters returns the LO frequency needed by the device. + + Set this property to the actual LO frequency because NI-RFSA corrects for any difference between expected and actual LO frequencies. + + To use this property for the PXIe-5830/5831/5832, you must use the channelName parameter of the _set_attribute_vi_real64 method to specify the name of the channel you are configuring. You can configure the LO1 and LO2 channels by using lo1 or lo2 as the channel string, or set the channel string to lo1,lo2 to configure both channels. For all other devices, the the only valid value for the channel string is "" (empty string). + + **Default Values**: + + **PXIe-5694**: 215 MHz + + **All other devices**: 0 + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667/5668, PXIe-5694, PXIe-5830/5831/5832/5840/5841/5842 + + **Related Topics** + + `PXIe-5830 Frequency and Bandwidth Configuration `_ + + `PXIe-5831/5832 Frequency and Bandwidth Configuration `_ + + `PXIe-5841 Frequency and Bandwidth Configuration `_ + + Tip: + This property can be set/get on specific los within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container los to specify a subset. + + Example: :py:attr:`my_session.los[ ... ].lo_frequency` + + To set/get on all los, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.lo_frequency` + ''' + lo_frequency_step_size = _attributes.AttributeViReal64(1150188) + '''Type: float + + Specifies the step size for tuning the local oscillator (LO) phase-locked loop (PLL). + + You can only tune the LO frequency by multiples of the lo_frequency_step_size property. For the PXIe-5644/5645/5646 and PXIe-5840/5841, the LO frequency can therefore be offset from the requested center frequency by as much as half of the lo_frequency_step_size property. This offset is corrected by digitally frequency shifting the lo_frequency property to the value requested in either the iq_carrier_frequency property or the center_frequency property. + + ---- + **Note** + For the PXIe-5831 with PXIe-5653 and PXIe-5832 with PXIe-5653, this property is ignored if the PXIe-5653 is used as the LO source. + + ---- + + The valid values for this property depend on the lo_pll_fractional_mode_enabled property. + + **PXIe-5644/5645/5646**: If the lo_pll_fractional_mode_enabled property is set to NIRFSA_VAL_DISABLED, the specified value is coerced to the closest valid value. + + **PXIe-5840/5841/5842**: If the lo_pll_fractional_mode_enabled property is set to NIRFSA_VAL_DISABLED, the specified value is coerced to the nearest valid value that is less than or equal to the desired step size. + + * Values up to 100 MHz are coerced to 50 MHz. + + ---- + **Note** + The default value for the PXIe-5831 depends on the frequency range of the selected port for your instrument configuration. Refer to the `Instrument Configurations `_ topic for more information about available ports for your hardware configuration. + + ---- + + **Default Values:** + + **PXIe-5644/5645/5646:** 200 kHz + + **PXIe-5830:** 2 MHz + + **PXIe-5831/5832 (RF port):** 8 MHz + + **PXIe-5831/5832 (IF port):** 2 MHz, 4 MHz + + **PXIe-5840/5841:** + + - Fractional mode: 500 kHz + - Integer mode: 10 MHz for frequencies less than or equal to 4 GHz. 20 MHz for frequencies greater than 4 GHz. + + **PXIe-5841 with PXIe-5655:** 500 kHz + + **PXIe-5842:** 1 Hz + + **Supported Devices:** PXIe-5644/5645/5646, PXIe-5830/5831/5832/5840/5841/5842 + + +--------------------------------+-------------------------------------+------------------------------+-----------------------------------------------+--------------------------------------------+-----------------------+ + | lo_pll_fractional_mode_enabled | PXIe-5644/5645 | PXIe-5646 | PXIe-5840/5841 | PXIe-5830/5831/5832 | PXIe-5841 w/PXIe-5655 | + +================================+=====================================+==============================+===============================================+============================================+=======================+ + | NIRFSA_VAL_ENABLED | 50 kHz to 24 MHz | 50 kHz to 25 MHz | 50 kHz to 100 MHz | LO1: 8 Hz to 400 MHz + LO2: 4 kHz to 400 MHz | 1 nHz to 50 MHz | + +--------------------------------+-------------------------------------+------------------------------+-----------------------------------------------+--------------------------------------------+-----------------------+ + | NIRFSA_VAL_DISABLED | 4 MHz, 5 MHz, 6 MHz, 12 MHz, 24 MHz | 2 MHz, 5 MHz, 10 MHz, 25 MHz | 1 MHz, 5 MHz, 10 MHz, 25 MHz, 50 MHz, 100 MHz | LO1: -- + LO2: -- | 1 nHz to 50 MHz | + +--------------------------------+-------------------------------------+------------------------------+-----------------------------------------------+--------------------------------------------+-----------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + lo_injection_side = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.LoInjection, 1150069) + '''Type: enums.LoInjection + + Specifies the LO injection side. + + **PXIe-5601/5663/5663E**: For frequencies below 517.5 MHz or above 6.4125 GHz, the LO injection side is fixed and NI-RFSA returns an error if you specify the incorrect value. If you do not configure this property, NI-RFSA selects the default LO injection side based on the downconverter center frequency. Reset this property to return to automatic behavior. + + **PXIe-5603/5605/5665 (3.6 GHz)/5667 (3.6 GHz)**: Setting this property to LoInjection.LOW is not supported for this device. + + **PXIe-5605/5665 (14 GHz)/5667 (7 GHz)**: Setting this property to LoInjection.LOW is supported for this device for frequencies greater than 4 GHz, but this configuration is not calibrated, and device specifications are not guaranteed. + + **PXIe-5606/5668**: Setting this property to LoInjection.LOW is supported for certain frequencies in high band, varying by final IF frequency. This configuration is not calibrated and device specifications are not guaranteed. + + **Default Values**: + + **PXIe-5601 (external digitizer mode), PXIe-5663/5663E (frequencies < 3.0 GHz)**: LoInjection.HIGH + + **PXIe-5601 (external digitizer mode), PXIe-5663/5663E (frequencies 3.0 GHz)**: LoInjection.LOW + + **PXIe-5603/5605/5606 (external digitizer mode), PXIe-5665/5667/5668**: LoInjection.HIGH + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5663/5663E/5665/5667/5668 + + **Defined Values**: + + +------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +==================+=====================================================================================================================================================================================================+ + | LoInjection.HIGH | Configures the LO signal that the NI-RFSA device generates at a frequency higher than the RF frequency. This LO frequency is given by the formula fLO = fRF + fIF. | + +------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | LoInjection.LOW | Configures the LO signal that the NI-RFSA device generates at a frequency lower than the RF frequency. This LO frequency is given by the formula fLO = fRF - fIF. | + +------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ''' + lo_in_power = _attributes.AttributeViReal64(1150186) + '''Type: float + + Returns the power level, in dBm, expected at the LO IN terminal when the lo_source property is set to LoSource.LO_IN. + + ---- + **Note** + For the PXIe-5644/5645/5646, this property is always read-only. + + ---- + + **Supported Devices:** PXIe-5644/5645/5646, PXIe-5830/5831/5832/5840/5841/5842 + ''' + lo_out_export_configure_from_rfsg = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.LoOutExportConfigureFromRfsg, 1150299) + '''Type: enums.LoOutExportConfigureFromRfsg + + Specifies whether to allow NI-RFSG to control the NI-RFSA LO out export. + + Set this property to LoOutExportConfigureFromRfsg.ENABLED to allow NI-RFSG to control the LO out export. Use the NIRFSG ATTR RF IN LO EXPORT ENABLED property to control the NI-RFSA LO out export from NI-RFSG. + + **Default Value:** LoOutExportConfigureFromRfsg.DISABLED + + **Supported Devices**: PXIe-5840/5841/5842 + + **Defined Values**: + + +---------------------------------------+----------------------------------------------------------------------+ + | Name | Description | + +=======================================+======================================================================+ + | LoOutExportConfigureFromRfsg.DISABLED | Do not allow NI-RFSG to control the NI-RFSA local oscillator export. | + +---------------------------------------+----------------------------------------------------------------------+ + | LoOutExportConfigureFromRfsg.ENABLED | Allow NI-RFSG to control the NI-RFSA local oscillator export. | + +---------------------------------------+----------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + lo_out_power = _attributes.AttributeViReal64(1150246) + '''Type: float + + Specifies the power level, in dBm, of the signal at the LO OUT terminal when the lo_export_enabled property is set to True. + + To use this property for the PXIe-5830/5831/5832, you must use the channelName parameter of the _set_attribute_vi_real64 method to specify the name of the channel you are configuring. You can configure the LO1 and LO2 channels by using lo1 or lo2 as the channel string, or set the channel string to lo1,lo2 to configure both channels. For all other devices, the the only valid value for the channel string is "" (empty string). + + **Units:** dBm + + **Supported Devices:** PXIe-5830/5831/5832/5840/5841/5842 + + Tip: + This property can be set/get on specific los within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container los to specify a subset. + + Example: :py:attr:`my_session.los[ ... ].lo_out_power` + + To set/get on all los, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.lo_out_power` + ''' + lo_pll_fractional_mode_enabled = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.LoPllFractionalModeEnabled, 1150187) + '''Type: enums.LoPllFractionalModeEnabled + + Specifies whether to use fractional mode for the local oscillator (LO) phase-locked loop (PLL). + + Fractional mode gives a finer frequency step resolution, but it may result in non harmonic spurs. Refer to the device specifications for your device for more information about fractional mode and non harmonic spurs. + + ---- + **Note** + The lo_pll_fractional_mode_enabled property is applicable only when using the internal LO. + + ---- + + ---- + **Note** + For the PXIe-5831 with PXIe-5653 and PXIe-5832 with PXIe-5653, this property is ignored if the PXIe-5653 is used as the LO source. For the PXIe-5841 with PXIe-5655, this property is ignored if the PXIe-5655 is used as the LO source. + + ---- + + To use this property for the PXIe-5830/5831/5832, you must use the channelName parameter of the _set_attribute_vi_int32 method to specify the name of the channel you are configuring. You can configure the LO1 and LO2 channels by using lo1 or lo2 as the channel string, or set the channel string to lo1,lo2 to configure both channels. For all other devices, the the only valid value for the channel string is "" (empty string). + + **Default Value**: LoPllFractionalModeEnabled.ENABLED + + **Supported Devices:** PXIe-5644/5645/5646, PXIe-5830/5831/5832/5840/5841/5842 + + **Defined Values**: + + +-------------------------------------+------------------------------------------+ + | Name | Description | + +=====================================+==========================================+ + | LoPllFractionalModeEnabled.DISABLED | Disables fractional mode for the LO PLL. | + +-------------------------------------+------------------------------------------+ + | LoPllFractionalModeEnabled.ENABLED | Enables fractional mode for the LO PLL. | + +-------------------------------------+------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + Tip: + This property can be set/get on specific los within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container los to specify a subset. + + Example: :py:attr:`my_session.los[ ... ].lo_pll_fractional_mode_enabled` + + To set/get on all los, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.lo_pll_fractional_mode_enabled` + ''' + lo_source = _attributes.AttributeEnum(_attributes.AttributeViString, enums.LoSource, 1150162) + '''Type: enums.LoSource + + Specifies the LO signal source used to downconvert the RF input signal. + + If no signal downconversion is required, this property is ignored. If this property is set to "" (empty string), NI-RFSA uses the internal LO source. + + To use this property for the PXIe-5830/5831/5832, you must use the channelName parameter of the _set_attribute_vi_string method to specify the name of the channel you are configuring. You can configure the LO1 and LO2 channels by using lo1 or lo2 as the channel string, or set the channel string to lo1,lo2 to configure both channels. For all other devices, the only valid value for the channel string is "" (empty string). + + ---- + **Note** + For the PXIe-5841 with PXIe-5655, RF list mode is not supported when this property is set to LoSource.LO_SOURCE_SG_SA_SHARED. + + ---- + + + + + **Default Value**: LoSource.ONBOARD ("Onboard") + + **Supported Devices**: PXIe-5644/5645/5646, PXIe-5694, PXIe-5830/5831/5832/5840/5841/5842 + + **Related Topics** + `PXIe-5830 LO Sharing Using NI-RFSA and NI-RFSG `_ + `PXIe-5831/5832 LO Sharing Using NI-RFSA and NI-RFSG `_ + + **Defined Values**: + + +---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=================================+===================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | LoSource.NONE | Specifies that no LO source is required to downconvert the RF input signal. | + +---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | LoSource.ONBOARD | Specifies that the onboard synthesizer is used to generate the LO signal that downconverts the RF input signal.**PXIe-5831/5832** This configuration uses the onboard LO of the PXIe-3622, using the LO2 stage.**PXIe-5831/5832 with PXIe-5653** This configuration uses the onboard LO of the PXIe-5653 when associated with the PXIe-3622.**PXIe-5841 with PXIe-5655** This configuration uses the onboard LO of the PXIe-5655. | + +---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | LoSource.LO_IN | Specifies that the LO source used to downconvert the RF input signal is connected to the LO IN connector on the front panel. | + +---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | LoSource.LO_SOURCE_SECONDARY | Uses the PXIe-5831/5840 internal LO as the LO source. This value is valid on only the PXIe-5831 with PXIe-5653 (LO1 stage only) or PXIe-5832 with PCIe-5653 (LO1 stage only). | + +---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | LoSource.LO_SOURCE_SG_SA_SHARED | Uses the same internal LO during NI-RFSA and NI-RFSG sessions. NI-RFSA selects an internal synthesizer and the synthesizer signal is switched to both the RF Out and RF In mixers. This value is valid on only the PXIe-5830/5831/5832/5841 with PXIe-5655. | + +---------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + Tip: + This property can be set/get on specific los within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container los to specify a subset. + + Example: :py:attr:`my_session.los[ ... ].lo_source` + + To set/get on all los, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.lo_source` + ''' + lo_temperature = _attributes.AttributeViReal64(1150089) + '''Type: float + + Returns the current temperature, in degrees Celsius, of the LO module. + + **PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode) PXI-5661, PXIe-5663/5663E/5665/5667/5668** This property is not supported if you are using an external LO. + + **PXIe-5840/5841/5842**: If you query this property during RF list mode, list steps may take longer to complete during list execution. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode) PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5840/5841/5842 + ''' + lo_vco_frequency_step_size = _attributes.AttributeViReal64(1150312) + '''Type: float + + Specifies the step size for tuning the internal voltage-controlled oscillator (VCO) used to generate the LO signal. + + ---- + **Note** + Do not set this property with the lo_frequency_step_size property. + + ---- + + **Valid Values**: + + LO1: 1 Hz to 50 MHz + + LO2: 1 Hz to 100 MHz + + **Default Values**: 1 MHz + + **Supported Devices**: PXIe-5830/5831/5832 + ''' + lo_yig_main_coil_drive = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.LoYigMainCoilDrive, 1150135) + '''Type: enums.LoYigMainCoilDrive + + Adjusts the dynamics of the current driving the YIG main coil. + + ---- + **Note** + Setting this property to LoYigMainCoilDrive.FAST allows the frequency to settle significantly faster for some frequency transitions at the expense of increased phase noise. This property is not supported if you are using an external LO. + + ---- + + **Default Value**: LoYigMainCoilDrive.NORMAL + + **Supported Devices:** PXIe-5603/5605/5606 (external digitizer mode), PXIe-5665/5667/5668 + + **Defined Values**: + + +---------------------------+------------------------------------------------------------------+ + | Name | Description | + +===========================+==================================================================+ + | LoYigMainCoilDrive.NORMAL | Adjusts the YIG main coil on the LO for an underdamped response. | + +---------------------------+------------------------------------------------------------------+ + | LoYigMainCoilDrive.FAST | Adjusts the YIG main coil on the LO for an overdamped response. | + +---------------------------+------------------------------------------------------------------+ + ''' + max_device_instantaneous_bandwidth = _attributes.AttributeViReal64(1150236) + '''Type: float + + Returns the maximum instantaneous bandwidth of the device. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + max_iq_rate = _attributes.AttributeViReal64(1150237) + '''Type: float + + Returns the maximum I/Q rate. + + **Default Value**: N/A + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + mechanical_attenuation = _attributes.AttributeViReal64(1150128) + '''Type: float + + Specifies the level of mechanical attenuation for the RF path, in dB. + + **PXIe-5667**: This property is read-only when the LOW_FREQUENCY_BYPASS_ENABLED property is set to NIRFSA_VAL_DISABLED. + + **PXIe-5668with PXIe-5698**: This property is read-only when the rf_preamp_enabled property is set to EnableRfPreamp.ENABLED. + + **Units**: dB + + **Valid Values:** + + **PXIe-5601/5663/5663E**: 0, 16 + + **PXIe-5603/5665 (3.6 GHz)**: 0, 10, 20, 30 + + **PXIe-5605/5665 (14 GHz), PXIe-5606/5668**: 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75 + + **PXIe-5667 (3.6 GHz) using the PXIe-5693 RF preselector low frequency bypass path**: 0, 10, 20, 30 + + **PXIe-5667 (3.6 GHz) using the PXIe-5693 RF preselector filter path**: 0 + + **PXIe-5667 (7 GHz) using the PXIe-5693 RF preselector low frequency bypass path**: 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75 + + **PXIe-5667 (7 GHz) using the PXIe-5693 RF preselector filter path**: 0 + + **PXIe-5668 with PXIe-5698 with the** rf_preamp_enabled property set to EnableRfPreamp.ENABLED: 5 + + **Default Value**: N/A + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5663/5663E/5665/5667/5668 + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + memory_size = _attributes.AttributeViInt64(1150085) + '''Type: int + + Returns the digitizer onboard memory size, in bytes. + + **Default Value**: N/A + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + minimum_acpr = _attributes.AttributeViReal64(1150142) + '''Type: float + + Specifies the minimum adjacent channel power ratio (ACPR), in dB, relative to the main channel reference level. + + This property configures NI-RFSA to optimize downconverter gain to measure a lower-power adjacent channel, adding gain only after filtering the main channel. The gain NI-RFSA applies is always less than or equal to the ACPR value you specify. + + ---- + **Note** + For the PXIe-5665 (3.6 GHz), this property is supported only if you set the device_instantaneous_bandwidth, spectrum_span, or if_filter_bandwidth property to a value less than 300 kHz. For the PXIe-5665 (14 GHz), this property is supported for device_instantaneous_bandwidth, spectrum_span, or if_filter_bandwidth property values less than 300 kHz by using the 300 kHz IF filter, and it is supported for values between 300 kHz and 5 MHz by using the 5 MHz IF filter. + + ---- + + ---- + **Note** + NI-RFSA coerces this property to zero for the PXI-5600, PXIe-5601 and the PXIe-5667. For all other devices, read the coerced value of this property to determine the actual amount of gain applied. + + ---- + + ---- + **Note** + For the PXIe-5668, this property alters the if_output_power_level property. This property will not affect the reference_level property. + + ---- + + **Default Value**: 0 + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668 + ''' + mixer_level = _attributes.AttributeViReal64(1150006) + '''Type: float + + Specifies the mixer level, in dBm. + + The mixer level represents the attenuation value to apply to the input RF signal as it reaches the first mixer in the signal chain. If you do not set this property, NI-RFSA automatically selects an optimal mixer level value based on the reference level. The valid values for this property depend on your device configuration. + + If you set the mixer_level and mixer_level_offset properties at the same time, NI-RFSA returns an error. + + **PXIe-5601/5663/5663E**: This property is read-only. + + **PXIe-5667**: This property is read-only when the LOW_FREQUENCY_BYPASS_ENABLED property is set to NIRFSA_VAL_DISABLED. + + **Units**: dBm + + **Default Values**: + + **PXI-5600/5661**: -30 + + **PXIe-5603/5605/5665/5667/5668**: -10 + + **All other devices**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668 + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + mixer_level_offset = _attributes.AttributeViReal64(1150127) + '''Type: float + + Specifies the number of dB by which to adjust the device mixer level. + + The default value is 0, which specifies device settings that are the best compromise between distortion and noise. Specifying a positive value for this property configures the device for moderate distortion and low noise, and specifying a negative value results in low distortion and higher noise. + + You cannot set the mixer_level and mixer_level_offset properties at the same time. + + **PXIe-5667**: This property is read-only when the LOW_FREQUENCY_BYPASS_ENABLED property is set to NIRFSA_VAL_DISABLED. + + **Units**: dB + + **Default Value**: 0 + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668 + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + module_power_consumption = _attributes.AttributeViReal64(1150255) + '''Type: float + + Returns the module power consumption. + + ---- + **Note** + If you query this property during RF list mode, list steps may take longer to complete during list execution. + + ---- + + **Units**: watts + + **Default Value**: N/A + + **Supported Devices:**: PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + module_revision = _attributes.AttributeViString(1150091) + '''Type: str + + Returns the revision of the RF downconverter module. + + ---- + **Note** + For the PXIe-5644/5645/5646 and PXIe-5820/5830/5831/5840/5841, this property returns the revision of the VST module. For the PXIe-5830/5831/5832, this property returns the revision of the PXIe-3621/3622 + + ---- + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + noise_source_power_enabled = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.NoiseSourcePowerEnabled, 1150222) + '''Type: enums.NoiseSourcePowerEnabled + + Enables the 28 V DC source on the device front panel. + + **PXIe-5668 with PXIe-5698**: When this property is set to NoiseSourcePowerEnabled.ENABLED, the PXIe-5698 noise source is used instead of the PXIe-5668 noise source. + + **Units**: dB + + **Default Value**: NoiseSourcePowerEnabled.DISABLED + + **Supported Devices**: PXIe-5606, PXIe-5668, PXIe-5698 + + **Defined Values**: + + +----------------------------------+----------------------------------+ + | Name | Description | + +==================================+==================================+ + | NoiseSourcePowerEnabled.DISABLED | Disables the noise source power. | + +----------------------------------+----------------------------------+ + | NoiseSourcePowerEnabled.ENABLED | Enables the noise source power. | + +----------------------------------+----------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + number_of_records = _attributes.AttributeViInt64(1150011) + '''Type: int + + Specifies the number of records to acquire if the number_of_records_is_finite property is set to True. + + **Default Value**: 1 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `I/Q Modulation `_ + + **High-Level Methods**: + + - ConfigureNumberOfRecords + ''' + number_of_records_is_finite = _attributes.AttributeViBoolean(1150010) + '''Type: bool + + Specifies whether the device stops after acquiring the specified number of records or acquires records continuously. + + **Defined Values**: + + | Value | Description | + |:---------|:--------------------------------------------------------------| + | True | Acquire a finite number of records. | + | False | Acquire records continuously until you abort the acquisition. | + + **Default Value**: True + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `I/Q Modulation `_ + + **High-Level Methods**: + + - ConfigureNumberOfRecords + ''' + number_of_samples = _attributes.AttributeViInt64(1150009) + '''Type: int + + Specifies the number of samples to acquire. + + This property is valid only if the number_of_samples_is_finite property is set to True. + + **Default Value**: 1,000 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `I/Q Modulation `_ + + **High-Level Methods**: + + - ConfigureNumberOfSamples + ''' + number_of_samples_is_finite = _attributes.AttributeViBoolean(1150008) + '''Type: bool + + Specifies whether the device acquires a finite number of samples or acquires continuously. + + **Defined Values**: + + | Value | Description | + |:---------|:------------------------------------------------------| + | True | Acquire a finite number of samples. | + | False | Acquire continuously until you abort the acquisition. | + + **Default Value**: True + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `I/Q Modulation `_ + + **High-Level Methods**: + + - ConfigureNumberOfSamples + ''' + number_of_spectral_lines = _attributes.AttributeViInt32(1150018) + '''Type: int + + Specifies the number of spectral lines expected with the current power spectrum configuration. + + If you do not configure this property, NI-RFSA selects an appropriate value based on the resolution_bandwidth property. If you configure this property, NI-RFSA coerces the resolution_bandwidth value based on the number of spectral lines requested and the value of the spectrum_span property. + + **Default Value**: N/A + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + osp_data_scaling_factor = _attributes.AttributeViReal64(1150151) + '''Type: float + + Specifies the scaling factor applied to the time-domain voltage data in the IF digitizer. + + Use this property to maximize the dynamic range of the digitizer by increasing the maximum IF power the digitizer can measure without creating OSP overflows. + + Because of the device amplitude response, some wide-band signals normally attenuated by the downconverter go through the IF digitizer without causing an ADC overflow. During IF equalization, these wide-band digitizer input signals may become amplified. These amplified input signal values overflow the available numeric range used in the signal processing algorithm. + + You can use this property when OSP calculations would generate an overflow while applying digital filters to the data. The OSP module in the digitizer multiplies the time-domain signal amplitude, in volts, by the specified property value before further onboard processing. Set this property to a value less than 1 to avoid OSP overflow for near full-scale IF signals and to use the maximum dynamic range of the digitizer. NI-RFSA compensates for the specified OSP data scaling factor to ensure that the correct scaled data, in absolute levels, is always returned regardless of the value of this property. + + **Valid Values:**: 0.25 to 1.0 + + **Default Values:** + + **PXI-5661, PXIe-5663/5663E/5665 (3.6 GHz)/5667 (3.6 GHz)/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860**: 1.0 + + **PXIe-5665 (14 GHz)/5667 (7 GHz)**: 0.8 + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + overflow_error_reporting = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.OverflowErrorReporting, 1150271) + '''Type: enums.OverflowErrorReporting + + Configures error reporting for ADC and onboard signal processing overflows. + + Overflows lead to clipping of the waveform. + + **Default Value**: OverflowErrorReporting.WARNING + + **Supported Devices**: PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +---------------------------------+--------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=================================+========================================================================================================+ + | OverflowErrorReporting.WARNING | Configures NI-RFSA to return a warning when an ADC or onboard signal processing (OSP) overflow occurs. | + +---------------------------------+--------------------------------------------------------------------------------------------------------+ + | OverflowErrorReporting.DISABLED | Configures NI-RFSA to not return an error or a warning when an ADC or OSP overflow occurs. | + +---------------------------------+--------------------------------------------------------------------------------------------------------+ + ''' + phase_offset = _attributes.AttributeViReal64(1150106) + '''Type: float + + Specifies the offset to apply to the initial I and Q phases. + + **Valid Values**: 0 to 180 + + **Default Value**: 0 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842 + ''' + power_spectrum_units = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.PowerSpectrumUnits, 1150012) + '''Type: enums.PowerSpectrumUnits + + Specifies the units of the power spectrum. + + **Default Value**: PowerSpectrumUnits.DBM + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +----------------------------------+---------------------------------------------+ + | Name | Description | + +==================================+=============================================+ + | PowerSpectrumUnits.DBM | Units are dB with reference to 1 milliwatt. | + +----------------------------------+---------------------------------------------+ + | PowerSpectrumUnits.VOLTS_SQUARED | Units are in volts squared. | + +----------------------------------+---------------------------------------------+ + | PowerSpectrumUnits.DBMV | Units are dB with reference to 1 millivolt. | + +----------------------------------+---------------------------------------------+ + | PowerSpectrumUnits.DBUV | Units are dB with reference to 1 microvolt. | + +----------------------------------+---------------------------------------------+ + | PowerSpectrumUnits.VOLTS | Units are in volts. | + +----------------------------------+---------------------------------------------+ + | PowerSpectrumUnits.WATTS | Units are in watts. | + +----------------------------------+---------------------------------------------+ + ''' + preselector_present = _attributes.AttributeViBoolean(1150136) + '''Type: bool + + Returns whether a preselector is available on the RF downconverter module. + + **Defined Values**: + + | Value | Description | + |:---------|:--------------------------------------------------| + | True | A preselector is available on the downconverter. | + | False | No preselector is available on the downconverter. | + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5840/5841/5842 + ''' + ready_for_advance_event_terminal_name = _attributes.AttributeViString(1150118) + '''Type: str + + Returns the fully qualified signal name as a string. + + **Default Values**: + + **PXIe-5830/5831/5832**: /BasebandModule/ai/0/ReadyForAdvanceEvent, where *BasebandModule* is the name of the baseband module of your device in MAX. + + **PXIe-5820/5840/5841/5842**: /ModuleName/ai/0/ReadyForAdvanceEvent, where *ModuleName* is the name of your device in MAX. + + **PXIe-5860**: /ModuleName/ai/ChannelNumber/ReadyForAdvanceEvent, where *ModuleName* is the name of your device in MAX and *ChannelNumber* is the channel number (0 or 1). + + **All other devices**: /DigitizerNameReadyForAdvanceEvent, where *DigitizerName* is the name associated with your digitizer module in MAX. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Events `_ + + **High-Level Methods**: + + - get_terminal_name + ''' + ready_for_ref_event_terminal_name = _attributes.AttributeViString(1150119) + '''Type: str + + Returns the fully qualified signal name as a string. + + **PXIe-5830/5831/5832**: /BasebandModule/ai/0/ReadyForReferenceEvent, where *BasebandModule* is the name of the baseband module of your device in MAX. + + **PXIe-5820/5840/5841/5842**: /ModuleName/ai/0/ReadyForReferenceEvent, where *ModuleName* is the name of your device in MAX. + + **PXIe-5860**: /ModuleName/ai/ChannelNumber/ReadyForReferenceEvent, where *ModuleName* is the name of your device in MAX and *ChannelNumber* is the channel number (0 or 1). + + **All other devices**: /DigitizerName/ReadyForReferenceEvent, where *DigitizerName* is the name associated with your digitizer module in MAX. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Events `_ + + **High-Level Methods**: + + - get_terminal_name + ''' + ready_for_start_event_terminal_name = _attributes.AttributeViString(1150117) + '''Type: str + + Returns the fully qualified signal name as a string. + + **Default Values**: + + **PXIe-5830/5831/5832**: /BasebandModule/ai/0/ReadyForStartEvent, where *BasebandModule* is the name of the baseband module of your device in MAX. + + **PXIe-5820/5840/5841/5842**: /ModuleName/ai/0/ReadyForStartEvent, where *ModuleName* is the name of your device in MAX. + + **PXIe-5860**: /ModuleName/ai/ChannelNumber/ReadyForStartEvent, where *ModuleName* is the name of your device in MAX and *ChannelNumber* is the channel number (0 or 1). + + **All other devices**: /DigitizerName/ReadyForStartEvent, where *DigitizerName* is the name associated with your digitizer module in MAX. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Events `_ + + **High-Level Methods**: + + - get_terminal_name + ''' + records_done = _attributes.AttributeViInt64(1150047) + '''Type: int + + Returns the number of records the RF vector signal analyzer has acquired. + + **Default Value**: N/A + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + reference_level = _attributes.AttributeViReal64(1150004) + '''Type: float + + Specifies the reference level, in dBm. + + The reference level represents the maximum expected power of an RF input signal. + + ---- + **Note** + For the PXIe-5645, this property is ignored if you are using the I/Q ports. + + ---- + + Refer to the external_gain property for more information about how configuring an external gain and a reference level affect attenuation. + + **Default Value**: 0 + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694, PXIe-5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Improving Your Measurements `_ + + `Programming Attenuation-Related Properties and Properties Using NI-RFSA `_ + + **High-Level Methods**: + + - ConfigureReferenceLevel + ''' + reference_level_headroom = _attributes.AttributeViReal64(1150309) + '''Type: float + + Specifies the margin NI-RFSA adds to the reference_level property. + + The margin helps to avoid clipping and overflow warnings if the input signal exceeds the configured reference level. + + NI-RFSA configures the input gain to avoid clipping and associated overflow warnings as long as the instantaneous power of the input signal remains within the reference level plus the reference level headroom. If you know the input power of the signal precisely or have already included margin in the reference level, you may be able to improve the signal-to-noise ratio by reducing the reference level headroom. + + **Units**: dB + + **Default Value**: + + **PXIe-5830/5831/5832/5841/5842/5860**: 1 dB + + **PXIe-5840**: 0 dB + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + ''' + ref_clock_rate = _attributes.AttributeViReal64(1150020) + '''Type: float + + Specifies the Reference Clock rate, in Hz, of the signal present at the REF IN or CLK IN connector. + + This property is only valid when the ref_clock_source property is set to NIRFSA_VAL_CLK_IN, NIRFSA_VAL_REF_IN, or ReferenceClockSource.REF_IN_2. + + **Valid Values**: + + **PXIe-5644/5645/5646, PXIe-5601/5663/5663E, PXIe-5694, PXIe-5820/5830/5831/5832/5840/5841**: 10 MHz + + **PXIe-5603/5605/5665/5667/5668**: 5 MHz to 100 MHz, in increments of 1 MHz + + **PXIe-5841 with PXIe-5655, PXIe-5842**: 10 MHz, 100 MHz, 270 MHz, and 3.84 MHz *y*, where *y* is 4, 8, 16, 24, 25, or 32. + + **PXIe-5860**: 10 MHz, 100 MHz + + **Default Value**: 10 MHz + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - configure_ref_clock + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + ref_clock_source = _attributes.AttributeEnum(_attributes.AttributeViString, enums.ReferenceClockSource, 1150019) + '''Type: enums.ReferenceClockSource + + Specifies the Reference Clock source. + + ---- + **Note** + For the PXIe-5694, if your application requires an external LO source, set this property to ReferenceClockSource.NONE. + + ---- + + **Default Values**: + + **PXIe-5694**: ReferenceClockSource.REF_IN + + **All other devices**: ReferenceClockSource.ONBOARD_CLOCK + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5694, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - configure_ref_clock + + **Defined Values**: + + +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=====================================+===========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | ReferenceClockSource.NONE | No Reference Clock is required for the current device configuration. This value is valid only for the PXIe-5694 or the PXIe-5668. | + +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ReferenceClockSource.ONBOARD_CLOCK | **PXI-5661 **NI-RFSA locks the NI-RFSA device to the PXI-5600 RF downconverter onboard clock.**PXIe-5663/5663E **NI-RFSA locks the PXIe-5663/5663E to the PXI/PXIe-5652 LO source onboard clock. Connect the REF OUT2 connector (if it exists) on the PXI/PXIe-5652 to the CLK IN terminal on the PXIe-5622. On versions of the PXIe-5663/5663E that lack a REF OUT2 connector on the PXI/PXIe-5652, connect the REF IN/OUT connector on the PXI/PXIe-5652 to the CLK IN terminal on the PXI5622.**PXIe-5665 **NI-RFSA locks the PXIe-5665 to the PXIe-5653 LO source onboard clock. Connect the 100 MHz REF OUT terminal on the PXIe-5653 to the CLK IN terminal on the PXIe-5622.**PXIe-5667 **NI-RFSA locks the PXIe-5667 to the PXIe-5653 LO source onboard clock. Connect the 100 MHz REF OUT terminal on the PXIe-5653 to the CLK IN terminal on the PXIe-5622, and connect the 10 MHZ REF OUT terminal on the PXIe-5653 to the REF/LO IN connector on the PXIe-5694.**PXIe-5668 **Lock the PXIe-5668 to the PXIe-5653 LO SOURCE onboard clock. Connect the LO2 OUT connector on the PXIe-5606 to the CLK IN connector on the PXIe-5624.**PXIe-5830/5831 **For the PXIe-5830, connect the PXIe-5820 REF IN connector to the PXIe-3621 REF OUT connector. For the PXIe-5831/5832, connect the PXIe-5820 REF IN connector to the PXIe-3622 REF OUT connector.**PXIe-5831/5832 with PXIe-5653 **Connect the PXIe-5820 REF IN connector to the PXIe-3622 REF OUT connector. Connect the PXIe-5653 REF OUT (10 MHz) connector to the PXIe-3622 REF IN connector.**PXIe-5644/5645/5646, PXIe-5820/5840/5841 **Lock the NI-RFSA device to its onboard clock.**PXIe-5841 with PXIe-5655 **Lock to the PXIe-5655 onboard clock. Connect the REF OUT connector on the PXIe-5655 to the PXIe-5841 REF IN connector.**PXIe-5842 **Lock to the PXIe-5655 onboard clock. Cables between modules are required as shown in the User Manual for the instrument.**PXIe-5860 **Lock to the PXIe-5860 onboard clock. | + +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ReferenceClockSource.REF_IN | **PXI-5661 **NI-RFSA locks the NI-RFSA device to the signal at the external FREQ REF IN connector on the PXI-5600**PXIe-5663/5663E **Connect the external signal to the PXI/PXIe-5652 REF IN/OUT connector. Connect the REF OUT2 connector (if it exists) on the PXI/PXIe-5652 to the CLK IN terminal on the PXIe-5622. On versions of the PXIe-5663/5663E that lack a REF OUT2 connector on the PXI/PXIe-5652, this configuration can only be used in external digitizer mode.**PXIe-5665 **Connect the external signal to the PXIe-5653 REF IN connector. Connect the 100 MHz REF OUT terminal on the PXIe-5653 to the CLK IN terminal on the PXIe-5622. If your external clock signal frequency is set to a frequency other than 10 MHz, set the ref_clock_rate property according to the frequency of your external clock signal.**PXIe-5667 **Connect the external signal to the PXIe-5653 REF IN connector. Connect the 100 MHz REF OUT terminal on the PXIe-5653 to the CLK IN terminal on the PXIe-5622, and connect the 10 MHZ REF OUT terminal on the PXIe-5653 to the REF/LO IN connector on the PXIe-5694. If your external clock signal frequency is set to a frequency other than 10 MHz, set the ref_clock_rate property according to the frequency of your external clock signal.**PXIe-5668 **Connect the external signal to the PXIe-5653 REF IN connector. Connect the LO2 OUT on the PXIe-5606 to the CLK IN connector on the PXIe-5622. If your external clock signal frequency is set to a frequency other than 10 MHz, set the **clock rate** parameter according to the frequency of your external clock signal.**PXIe-5694 **Connect the Reference Clock signal to the REF/LO IN connector on the PXIe-5694 front panel.**PXIe-5644/5645/5646, PXIe-5820/5840/5841 **Lock the NI-RFSA device to the signal at the external REF IN connector.**PXIe-5830/5831 **For the PXIe-5830, connect the PXIe-5820 REF IN connector to the PXIe-3621 REF OUT connector. For the PXIe-5831, connect the PXIe-5820 REF IN connector to the PXIe-3622 REF OUT connector. For the PXIe-5830, lock the external signal to the PXIe-3621 REF IN connector. For the PXIe-5831/5832, lock the external signal to the PXIe-3622 REF IN connector.**PXIe-5831/5832 with PXIe-5653 **Connect the PXIe-5820 REF IN connector to the PXIe-3622 REF OUT connector. Connect the PXIe-5653 REF OUT (10 MHz) connector to the PXIe-3622 REF IN connector. Lock the external signal to the PXIe-5653 REF IN connector.**PXIe-5841 with PXIe-5655 **Lock to the signal at the REF IN connector on the associated PXIe-5655. Connect the REF OUT connector on the PXIe-5655 to the PXIe-5841 REF IN connector. **PXIe-5842 **Lock to the signal at the REF IN connector on the associated PXIe-5655. Cables between modules are required as shown in the User Manual for the instrument. PXIe-5860 Lock to the signal at the REF IN connector on the PXIe-5860. | + +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ReferenceClockSource.PXI_CLK | **PXI-5661 **NI-RFSA locks the NI-RFSA device to the PXI backplane clock using the PXI-5600. You must connect the PXI 10 MHz connector to the REF IN connector on the PXI-5600 front panel to use this option. **PXIe-5668 **Lock the PXIe-5653 to the PXI backplane clock. Connect the PXIe-5606 LO2 OUT to the LO2 IN connector on the PXIe-5624.**PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667, PXIe-5694, PXIe-5820/5830/5831/5831/5832 with PXIe-5653/5840/5840 with PXIe-5653/5841/5841 with PXIe-5655/5842/5860 **Lock the device to the PXI backplane clock. | + +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ReferenceClockSource.CLK_IN | **PXI-5661 **This configuration does not apply to the PXI-5661.**PXIe-5663/5663E **NI-RFSA locks the PXIe-5663/5663E to an external 10 MHz signal. Connect the external signal to the CLK IN connector on the PXIe-5622, and connect the PXIe-5622 CLK OUT connector to the FREQ REF IN connector on the PXI/PXIe-5652.**PXIe-5665 **NI-RFSA locks the PXIe-5665 to an external 100 MHz signal. Connect the external signal to the CLK IN connector on the PXIe-5622, and connect the PXIe-5622 CLK OUT connector to the REF IN connector on the PXIe-5653. Set the ref_clock_rate property to 100 MHz.**PXIe-5667 **NI-RFSA locks the PXIe-5667 to an external 100 MHz signal. Connect the external signal to the CLK IN connector on the PXIe-5622, and connect the PXIe-5622 CLK OUT connector to the REF IN connector on the PXIe-5653. Connect the 10 MHZ REF OUT terminal on the PXIe-5653 to the REF/LO IN connector on the PXIe-5694. Set the ref_clock_rate property to 100 MHz.**PXIe-5668 **Lock the PXIe-5668 to an external 100 MHz signal. Connect the external signal to the CLK IN connector on the PXIe-5624, and connect the PXIe-5624 CLK OUT connector to the REF IN connector on the PXIe-5653. Set the **clock rate** parameter to 100 MHz.**PXIe-5644/5645/5646, PXIe-5820/5830/5831/5831/5832 with PXIe-5653/5840/5840 with PXIe-5653/5841/5841 with PXIe-5655/5842/5860 **This configuration does not apply. | + +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ReferenceClockSource.PXI_CLK_MASTER | **PXIe-5831/5832 with PXIe-5653 **NI-RFSA configures the PXIe-5653 to export the Reference clock and configures the PXIe-5820 and PXIe-3622 to use PXI_Clk as the Reference Clock source. Connect the PXIe-5653 REF OUT (10 MHz) connector to the PXI chassis REF IN connector.**PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5644/5645/5646, PXIe-5820/5840/5841/5841 with PXIe-5655 /5842/5860**This configuration does not apply. | + +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ReferenceClockSource.REF_IN_2 | **PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5644/5645/5646, PXIe-5820/5830/5831/5831/5832 with PXIe-5653/5840/5841/5841 with PXIe-5655 **This configuration does not apply. | + +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + ref_to_ref_trigger_holdoff = _attributes.AttributeViReal64TimeDeltaSeconds(1150034) + '''Type: hightime.timedelta, datetime.timedelta, or float in seconds + + Specifies the minimum time, in seconds, that must elapse between Reference Triggers of two records. + + The device does not recognize the Reference Trigger of the next record before this minimum time elapses. + + **Units:**: seconds + + **Default Value**: 0 + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + ref_trigger_delay = _attributes.AttributeViReal64TimeDeltaSeconds(1150060) + '''Type: hightime.timedelta, datetime.timedelta, or float in seconds + + Specifies the trigger delay time, in seconds. + + The trigger delay time is the length of time the IF digitizer waits after it receives the trigger before it asserts the Reference Event. + + **Units:**: seconds + + **Default Value**: 0 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + ref_trigger_minimum_quiet_time = _attributes.AttributeViReal64TimeDeltaSeconds(1150058) + '''Type: hightime.timedelta, datetime.timedelta, or float in seconds + + Specifies a time duration, in seconds, for which the signal must be quiet before the device arms the trigger. + + The signal is quiet when it is below the trigger level if the trigger slope, specified by the iq_power_edge_ref_trigger_slope property, is set to ReferenceTriggerIqPowerEdgeSlope.RISING or when it is above the trigger level if the trigger slope is set to ReferenceTriggerIqPowerEdgeSlope.FALLING. + + By default, this value is set to 0, which means the device does not wait for a quiet time before arming the trigger. This property is useful to trigger the acquisition on signals containing repeated bursts, but for which each burst may have large changes in signal power within itself. By configuring the minimum quiet time to the time between bursts, you can ensure that the trigger occurs at the beginning of a burst rather than at the signal power change within a burst. + + **Default Value**: 0 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + ref_trigger_osp_delay_enabled = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.ReferenceTriggerOspDelayEnabled, 1150196) + '''Type: enums.ReferenceTriggerOspDelayEnabled + + Specifies whether the digitizer OSP block delays Reference Triggers, along with the data samples, moving through the OSP block or if the Reference Triggers bypass the OSP block and are processed immediately. + + Enabling this property requires the following equipment configurations: + + - All digitizers being used must be the same model and hardware revision. + - All digitizers must use the same firmware. + - All digitizers must be configured with the same I/Q rate. + - All devices must use the same signal path. + + **PXIe-5663/5663E**: Read the value of the IF_FILTER property to determine the IF filters used by the PXIe-5663/5663E. + + **PXIe-5665/5667/5668**:Refer to the device-specific information in the device_instantaneous_bandwidth property to determine the IF filters used by the PXIe-5665/5667/5668. If you set the fft_width property, refer to the device-specific information for this property and the device_instantaneous_bandwidth property to determine the IF filters used. For frequencies less than 3.6 GHz, set the rf_preamp_enabled to the same value for all devices. + + **PXIe-5665 14 GHz**: Set the downconverter_preselector_enabled to the same value for all devices. + + If the I/Q rate is set programmatically for I/Q acquisitions, the following properties should be identical for the best device synchronization: + + - digital_if_equalization_enabled + - spectrum_osp_sampling_ratio + + For spectrum acquisitions, the following properties should be identical for the best device synchronization: + + - spectrum_span + - resolution_bandwidth_type + - digital_if_equalization_enabled + - spectrum_osp_sampling_ratio + + For more information about the digitizer OSP block and Reference Triggers, refer to the following topics in the *NI High-Speed Digitizers Help*: + + - NI 5622 Onboard Signal Processing (OSP) + - NI 5142 Onboard Signal Processing (OSP) + - NI PXIe-5622 Trigger Sources + - NI PXI-5142 Trigger Sources + - NI PXIe-5622 Block Diagram + - NI PXI-5142 Trigger Sources + + **Default Value**: ReferenceTriggerOspDelayEnabled.ENABLED + + **Supported Devices**:PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841 + + **Defined Values**: + + +------------------------------------------+-----------------------------------------------+ + | Name | Description | + +==========================================+===============================================+ + | ReferenceTriggerOspDelayEnabled.DISABLED | Disables OSP delay for the Reference Trigger. | + +------------------------------------------+-----------------------------------------------+ + | ReferenceTriggerOspDelayEnabled.ENABLED | Enables OSP delay for the Reference Trigger. | + +------------------------------------------+-----------------------------------------------+ + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + ref_trigger_pretrigger_samples = _attributes.AttributeViInt64(1150035) + '''Type: int + + Specifies the number of pretrigger samples the samples acquired before the Reference Trigger is received to be acquired per record. + + **Default Value**: 0 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **High-Level Methods**: + + - configure_digital_edge_ref_trigger + - configure_software_edge_ref_trigger + - ConfigureIqPowerEdgeRefTrigger + ''' + ref_trigger_terminal_name = _attributes.AttributeViString(1150123) + '''Type: str + + Returns the fully qualified signal name as a string. + + **Default Values**: + + **PXIe-5830/5831/5832**: /BasebandModule/ai/0/RefTrigger, where *BasebandModule* is the name of your baseband module of your device in MAX. + + **PXIe-5820/5840/5841/5842**: /ModuleName/ai/0/RefTrigger, where *ModuleName* is the name of your device in MAX. + + **PXIe-5860**: /ModuleName/ai/ChannelNumber/RefTrigger, where *ModuleName* is the name of your device in MAX and *ChannelNumber* is the channel number (0 or 1). + + **All other devices**: /DigitizerName/RefTrigger, where *DigitizerName* is the name associated with your digitizer module in MAX. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - get_terminal_name + ''' + ref_trigger_type = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.ReferenceTriggerType, 1150028) + '''Type: enums.ReferenceTriggerType + + Specifies whether you want the Reference Trigger to be a digital edge, I/Q power edge, or software trigger. + + **Default Value**: ReferenceTriggerType.NONE + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **Defined Values**: + + +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=====================================+=================================================================================================================================================================================================================================+ + | ReferenceTriggerType.NONE | No Reference Trigger is configured. | + +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ReferenceTriggerType.DIGITAL_EDGE | The Reference Trigger is not asserted until a digital edge is detected. The source of the digital edge is specified with the digital_edge_ref_trigger_source property. | + +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ReferenceTriggerType.IQ_POWER_EDGE | The Reference Trigger is asserted when the signal is changing past the level specified with the slope (rising or falling) configured with the iq_power_edge_ref_trigger_slope property. | + +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ReferenceTriggerType.SOFTWARE_EDGE | The Reference Trigger is not asserted until a software trigger occurs. You can assert the software trigger by calling the send_software_edge_trigger method and selecting NIRFSA_VAL_REF_TRIGGER as the **trigger** parameter. | + +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ReferenceTriggerType.IQ_ANALOG_EDGE | The Reference Trigger is asserted when the I or Q signal is changed past the level specified with the slope configured with the IQ_ANALOG_EDGE_REF_TRIGGER_SLOPE property. This value is valid only for PXIe-5644/5645 devices. | + +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + resolution_bandwidth = _attributes.AttributeViReal64(1150013) + '''Type: float + + Specifies the resolution along the x-axis of the spectrum. + + NI-RFSA uses the resolution bandwidth value to determine the acquisition size. If specified, the number_of_spectral_lines property value overrides this value. + + **Units**: hertz (Hz) + + **Default Value**: 100 kHz + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - ConfigureResolutionBandwidth + ''' + resolution_bandwidth_type = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.SpectrumResolutionBandwidthType, 1150014) + '''Type: enums.SpectrumResolutionBandwidthType + + Specifies how the resolution_bandwidth property is expressed. + + **Default Value**: SpectrumResolutionBandwidthType.THREE_DECIBELS + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +============================================================+=============================================================================================================================================+ + | SpectrumResolutionBandwidthType.THREE_DECIBELS | Defines the resolution bandwidth (RBW) in terms of the 3 dB bandwidth of the window specified by the fft_window_type property. | + +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumResolutionBandwidthType.SIX_DECIBELS | Defines the RBW in terms of the 6 dB bandwidth of the window specified by the fft_window_type property. | + +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumResolutionBandwidthType.BIN_WIDTH | Defines the RBW in terms of the display resolution, which is the ratio of the sampling frequency to the number of samples that you acquire. | + +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumResolutionBandwidthType.EQUIVALENT_NOISE_BANDWIDTH | Defines the RBW in terms of the equivalent noise bandwidth (ENBW) of the window specified by the fft_window_type property. | + +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ + ''' + rf_attenuation_step_size = _attributes.AttributeViReal64(1150155) + '''Type: float + + Specifies the step size for the RF attenuation level. + + The actual RF attenuation is coerced up to the next highest multiple of this step size. You can also set this value to change the step size for the device within the supported device precision and configuration. + + **PXI-5600**: The device configuration supports only the following attenuation step size values: 10, 20, 30, 40, and 50. + + **PXIe-5601**: The attenuation is calculated based on the actual calibrated value closest to the desired value, so the step size varies as the actual gain values vary between consecutive attenuation settings. + + **PXIe-5603**: The device configuration supports attenuation changes in 1 dB steps. + + **PXIe-5605**: The available attenuation step size depends on the specified center frequency. In the high band signal path (input frequencies greater than 3.6 GHz), the only available attenuation is the step attenuator that you can change in 5 dB steps. In the low band signal path (input frequencies less than or equal to 3.6 GHz), an additional 31 dB of solid-state attenuation is available in 1 dB steps. The 5 dB default value indicates that, even when in the low band signal path, NI-RFSA changes the attenuation in 5 dB steps using only the mechanical attenuator. You can use this property to affect when the device changes the attenuation settings. To use the solid-state attenuation in the low band signal path, change the step size to a value other than a multiple of 5 (for example, a step size of 1 dB). If you use a value other than a multiple of 5 while in the high band of the PXIe-5605, NI-RFSA returns an error. + + **Units**: dB + + **Valid Values:** + + **PXI-5600/5661**: 10, 20, 30, 40, and 50 + + **PXIe-5601/5663/5663E**: 0.0 to 93.0, continuous + + **PXIe-5603/5665 (3.6 GHz)**: 1.0 to 74.0, in 1 dB steps + + **PXIe-5605/5665 (14 GHz) (low band), PXIe-5606/5668 (low band)**: 1.0 to 106.0, in 1 dB steps + + **PXIe-5605/5665 (14 GHz) (high band), PXIe-5606/5668 (high band)**: 5.0 to 75.0, in 5 dB steps + + **PXIe-5667 (3.6 GHz) using the PXIe-5693 RF preselector low frequency bypass path**: 1.0 to 74.0, in 1 dB steps + + **PXIe-5667 (3.6 GHz) using the PXIe-5693 RF preselector filter path**: 1.0 + + **PXIe-5667 (7 GHz) using the PXIe-5693 preselector low frequency bypass path**: 1.0 to 106.0 in 1 dB steps + + **PXIe-5667 (7 GHz) using the PXIe-5693 RF preselector filter path**: 1.0 + + **Default Value:** + + **PXI-5600/5661**: 10.0 + + **PXIe-5601/5663/5663E**: 0.0 + + **PXIe-5603/5665 (3.6 GHz)**: 1.0 + + **PXIe-5605/5665 (14 GHz), PXIe-5606/5668**: 5.0 + + **PXIe-5667**: 1.0 + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668 + ''' + rf_high_pass_filtering = _attributes.AttributeViReal64(1150220) + '''Type: float + + Specifies the maximum corner frequency of the highpass filter in the RF signal path. + + The device uses the highest frequency highpass filter option below or equal to the value you specify and returns a coerced value. Specifying a value of 0 disables highpass filtering. + + For multispan acquisitions, the device uses the appropriate filter for each subspan during acquisition, depending on the details of your application and the value you specify. In multispan acquisition spectrum applications, this property returns the value you specified rather than a coerced value if multiple highpass filters are used during the acquisition. + + The PXIe-5606 features highpass filters at 1.35 GHz and 2.2 GHz. + + **Valid Values**: 0 to 26.5 + + **Default Value**: 0 + + **Supported Devices**: PXIe-5606, PXIe-5668 + ''' + rf_out_lo_export_enabled = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.RfOutLoExport, 1150298) + '''Type: enums.RfOutLoExport + + Specifies whether to enable the RF OUT LO OUT terminal on the PXIe-5840/5841. + + When this property is enabled, if the lo_source property is set to LoSource.LO_IN and you do not set the lo_frequency or downconverter_center_frequency properties, NI-RFSA rounds the LO frequency to approximately an LO step size as if the source was LoSource.ONBOARD. This ensures that when you configure NI-RFSA and NI-RFSG with compatible settings that result in the same LO frequency, the rounding also is compatible. + + **Default Value:**: RfOutLoExport.UNSPECIFIED + + **Supported Devices**: PXIe-5840/5841/5842 + + **Defined Values**: + + +---------------------------+----------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +===========================+================================================================================================================+ + | RfOutLoExport.DISABLED | The LO signal is not exported from the RF OUT LO OUT terminal. | + +---------------------------+----------------------------------------------------------------------------------------------------------------+ + | RfOutLoExport.ENABLED | The LO signal is exported from the RF OUT LO OUT terminal. | + +---------------------------+----------------------------------------------------------------------------------------------------------------+ + | RfOutLoExport.UNSPECIFIED | The LO signal may or may not be exported to the RF OUT LO OUT terminal, because NI-RFSG may be controlling it. | + +---------------------------+----------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + rf_preamp_enabled = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.EnableRfPreamp, 1150129) + '''Type: enums.EnableRfPreamp + + Specifies whether the RF preamplifier is enabled in the system. + + **PXIe-5667, PXIe-5644/5645/5646, PXIe-5830/5831/5840/5841/5842**: The EnableRfPreamp.AUTOMATIC value enables the RF preamplifier based on the value of the reference_level property and the center frequency. Except on the PXIe-5830/5831/5832, NI-RFSA coerces this property from EnableRfPreamp.AUTOMATIC to the selected value. + + ---- + **Note** + For the PXIe-5840/5841, the automatically selected value may not be optimal for all measurements. At some reference levels, EnableRfPreamp.ENABLED may improve the noise floor while EnableRfPreamp.DISABLED may improve distortion. + + ---- + + **PXIe-5667**: The EnableRfPreamp.AUTOMATIC value is supported only when the LOW_FREQUENCY_BYPASS_ENABLED property is set to EnableRfPreamp.DISABLED. If the reference level is greater than -25 dBm, NI-RFSA disables the preamplifier. If the reference level is less than or equal to -25 dBm, NI-RFSA sets the rf_preamp_enabled property to EnableRfPreamp.ENABLED_WHEN_IN_SIGNAL_PATH. + + **PXIe-5668 with PXIe-5698**: If you set this property to rf_preamp_enabled, only the preamplifier on the PXIe-5698 is used, and the preamplifier on the PXIe-5668 remains disabled. + + **Default Value**: + + **PXIe-5644/5645/5646, PXIe-5830/5831/5832/5840/5841/5842**: EnableRfPreamp.AUTOMATIC + + **All other devices**: EnableRfPreamp.DISABLED + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5698, PXIe-5830/5831/5832/5840/5841/5842 + + **Defined Values**: + + +--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +============================================+========================================================================================================================================================================================================================================================================================================================================================+ + | EnableRfPreamp.DISABLED | Disables the RF preamplifier. | + +--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | EnableRfPreamp.ENABLED_WHEN_IN_SIGNAL_PATH | Enables the RF preamplifier when the RF preamplifier is present in the signal path and disables the preamplifier when it is not in the signal path. Only devices with an RF preamplifier on the downconverter and an RF preselector support this option. Use the rf_preamp_present property to determine whether the downconverter has a preamplifier. | + +--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | EnableRfPreamp.ENABLED | Enables the RF preamplifier. If the RF preamplifier is not in a signal path, NI-RFSA returns an error. Select the EnableRfPreamp.ENABLED_WHEN_IN_SIGNAL_PATH value whenever possible to avoid an error. | + +--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | EnableRfPreamp.AUTOMATIC | Automatically enables the RF preamplifier based on the value of the reference_level property. This value is valid only for the PXIe-5644/5645/5646, PXIe-5667, and PXIe-5830/5831/5832/5840/5841. | + +--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced properties are not in the Python API for this driver. + ''' + rf_preamp_present = _attributes.AttributeViBoolean(1150137) + '''Type: bool + + Returns whether an RF preamplifier is available on the RF downconverter module. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842 + + **Defined Values**: + + +-------+------------------------------------------------------+ + | Name | Description | + +=======+======================================================+ + | True | The device has an enabled RF preamplifier available. | + +-------+------------------------------------------------------+ + | False | The device has no RF preamplifier available. | + +-------+------------------------------------------------------+ + ''' + selected_path = _attributes.AttributeViString(1150331) + '''Type: str + + Specifies which path to configure to acquire a signal. + + **Default Value**: "" (empty string) + ''' + selected_ports = _attributes.AttributeViString(1150297) + '''Type: str + + Specifies the port to configure. + + ---- + **Note** + When using RF list mode, ports cannot be shared with NI-RFSA. + + ---- + + **Valid Values**: + + **PXIe-5644/5645/5646, PXIe-5820/5840/5841/5842/5860**: "" (empty string) + + **PXIe-5830**: if0, if1 + + **PXIe-5831/5832**: if0, if1, rf <0-1> port , where + + *0-1* indicates one (*0*) or two (*1*) mmRH-5582 connections and + + *x* is the port number on the mmRH-5582 front panel. + + **Default Value:** + + **PXIe-5830/5831/5832:**: if1 + + **PXIe-5644/5645/5646, PXIe-5820/5840/5841/5842/5860**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + available_ports + ''' + serial_number = _attributes.AttributeViString(1150053) + '''Type: str + + Returns the serial number of the RF downconverter module. + + ---- + **Note** + For the PXIe-5644/5645/5646 and PXIe-5820/5840/5841, this property returns the serial number of the VST module. For the PXIe-5830/5831/5832, this property returns the serial number of the PXIe-3621/3622. + + ---- + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + signal_bandwidth = _attributes.AttributeViReal64(1150267) + '''Type: float + + Specifies the bandwidth of the input signal around the iq_carrier_frequency. + + This value must be less than or equal to (0.8 7 [I/Q rate](iq_rate.html)). + + NI-RFSA defines *signal bandwidth* as twice the maximum I/Q signal deviation from 0 Hz. Usually, the baseband signal center frequency is 0 Hz. In such cases, the signal bandwidth is simply the baseband signal's minimum frequency subtracted from its maximum frequency, or *f* < sub>max - *f*< sub>min. + + If you do not set this property, NI-RFSA uses the maximum available signal bandwidth. Depending on your device settings, setting this property enables certain optimizations. Based on the specified signal bandwidth, NI-RFSA decides the minimum equalized bandwidth and equalizer gain. + + ---- + **Note** + You must set this property to enable the downconverter_frequency_offset_mode property. + + ---- + + Ensure you set the signal bandwidth wide enough to encompass all significant anticipated input power. In cases where NI-RFSA optimizes the input gain based on the signal bandwidth, significant input power outside the signal bandwidth can lead to clipping and associated overflow warnings if you do not have enough margin in your [reference level.](reference_level.html) + + **Units**: Hz + + **Default Value**: 0 Hz + + **Supported Devices:**: PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `PXIe-5830 Frequency and Bandwidth Selection `_ + + `PXIe-5831/5832 Frequency and Bandwidth Selection `_ + + `PXIe-5841 Frequency and Bandwidth Selection `_ + ''' + signal_conditioning_enabled = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.SignalConditioningEnabled, 1150160) + '''Type: enums.SignalConditioningEnabled + + Specifies whether all signal conditioning is enabled on the PXIe-5694. + + ---- + **Note** + If you set this property to SignalConditioningEnabled.BYPASSED, NI-RFSA bypasses all signal conditioning, prevents any signal downconversion, and fixes the values for downconverter_gain property, the device_instantaneous_bandwidth property, and the if_filter_bandwidth property. + + ---- + + **Default Value**: SignalConditioningEnabled.ENABLED + + **Supported Devices**: PXIe-5694 + + **Defined Values**: + + +------------------------------------+-----------------------------------+ + | Name | Description | + +====================================+===================================+ + | SignalConditioningEnabled.ENABLED | Enables signal conditioning. | + +------------------------------------+-----------------------------------+ + | SignalConditioningEnabled.BYPASSED | Bypasses all signal conditioning. | + +------------------------------------+-----------------------------------+ + ''' + smooth_spectrum_enabled = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.SmoothSpectrumEnabled, 1150219) + '''Type: enums.SmoothSpectrumEnabled + + Specifies that an optimized IF filtering selection is made at different spectrum frequency ranges during spectrum acquisition. + + The IF filter used depends on the configured RF center frequency, as shown in the following table. + + | Center Frequency | IF Filter | + |:--------------------|:----------| + | 0 Hz and <80 MHz | 300 kHz | + | 0 MHz | 50 MHz | + + ---- + **Note** + Setting this property to **Enabled** prevents you from setting if_filter_bandwidth or device_instantaneous_bandwidth. + + ---- + + **Default Value**: SmoothSpectrumEnabled.DISABLED + + **Supported Devices**: PXIe-5665/5668 + + **Defined Values**: + + +--------------------------------+------------------------------+ + | Name | Description | + +================================+==============================+ + | SmoothSpectrumEnabled.DISABLED | Disables spectrum smoothing. | + +--------------------------------+------------------------------+ + | SmoothSpectrumEnabled.ENABLED | Enables spectrum smoothing. | + +--------------------------------+------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + spectrum_averaging_mode = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.SpectrumAveragingMode, 1150016) + '''Type: enums.SpectrumAveragingMode + + Specifies the averaging mode for the spectrum acquisition. + + **Default Value**: SpectrumAveragingMode.NO + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=================================+=======================================================================================================================================================================================================================================================================================================================================================================================================+ + | SpectrumAveragingMode.NO | Configures NI-RFSA to perform no averaging on acquisitions. | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumAveragingMode.RMS | Configures NI-RFSA for root-mean-square (RMS) averaging. RMS averaging reduces signal fluctuations but not the noise floor. RMS averaging averages the energy, or power, of the signal. This averaging prevents noise floor reduction and gives averaged RMS quantities of single-channel measurements zero phase. RMS averaging for dual-channel measurements preserves important phase information. | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumAveragingMode.VECTOR | Configures NI-RFSA for vector averaging. Vector averaging reduces noise from synchronous signals. Vector averaging computes the average of complex quantities directly, which means that it allows separate averaging for real and imaginary parts. Complex averaging such as vector averaging reduces noise and usually requires a trigger to improve block-to-block phase coherence. | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumAveragingMode.PEAK_HOLD | Configures NI-RFSA for peak-hold averaging. Peak-hold averaging retains the RMS peak levels of the averaged quantities. The peak-hold averaging process performs peak-hold at each frequency bin separately to retain peak RMS levels from one FFT record to the next. | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumAveragingMode.MIN_HOLD | Configures NI-RFSA to perform no averaging on acquisitions. | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumAveragingMode.SCALAR | Configures NI-RFSA to perform no averaging on acquisitions. | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SpectrumAveragingMode.LOG | Configures NI-RFSA to perform no averaging on acquisitions. | + +---------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + ''' + spectrum_number_of_averages = _attributes.AttributeViInt32(1150015) + '''Type: int + + Specifies the number of acquisitions to average. + + The averaging process returns the final result after the number of averages is complete. + + **Default Value**: 10 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + spectrum_osp_sampling_ratio = _attributes.AttributeViReal64(1150144) + '''Type: float + + Specifies the oversampling ratio used by the digitizer onboard signal processing (OSP) when you are in spectrum acquisition mode. This property allows you to acquire a larger bandwidth in hardware and reduce that bandwidth in software, decreasing the possibility of hardware data path overflows. + + **PXIe-5644/5645/5646**: The only valid value for this property is 1. + + **Default Value**: 1.0 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + spectrum_span = _attributes.AttributeViReal64(1150003) + '''Type: float + + Specifies the frequency range of the computed spectrum in hertz (Hz). + + For example, if you specify a center frequency of 1 GHz and a span of 100 MHz, the spectrum ranges from 950 MHz to 1,050 MHz after zoom processing. This value may be coerced based on hardware settings and RF downconverter specifications. + + NI-RFSA performs multispan acquisitions by dividing the total requested span into equally sized subspans based on the device instantaneous bandwidth at the range of frequencies you specify. NI-RFSA combines these subspans to yield a multispan acquisition. You can use the fft_width property to improve amplitude accuracy and avoid unwanted effects such as filter roll-off and spurs across the span you select. + + ---- + **Note** + If you configure the spectrum span to a value larger than the hardware instantaneous bandwidth, NI-RFSA performs multiple acquisitions and combines them into a spectrum of the size you requested. + + ---- + + ---- + **Note** + For the PXIe-5663/5663E/5665/5667/5668, NI-RFSA enables dithering by default. The dither noise can appear in your passband and affect measurements. Refer to the digitizer_dither_enabled property for more information about dithering. + + ---- + + **PXIe-5663/5663E**: NI-RFSA does not support multispan acquisitions from frequency ranges that correspond with different instantaneous bandwidths. For example, you cannot configure a multispan acquisition that acquires one span from 110 MHz to 120 MHz and a second from 120 MHz to 130 MHz because the instantaneous bandwidth for frequencies above 120 MHz is different than instantaneous bandwidth for frequencies less than 120 MHz, which are 20 MHz and 10 MHz respectively. + + **PXIe-5665 (14 GHz)/5667 (7 GHz)**: If you enable the downconverter preselector filter, the device instantaneous bandwidth is only a typical specification. + + **Default Value**: 10 MHz + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5840/5841/5842/5860 + + **High-Level Methods**: + + - configure_spectrum_frequency + ''' + start_to_ref_trigger_holdoff = _attributes.AttributeViReal64TimeDeltaSeconds(1150033) + '''Type: hightime.timedelta, datetime.timedelta, or float in seconds + + Specifies the minimum time, in seconds, that must elapse after the Start Trigger is received before the device recognizes a Reference Trigger. + + **Units:** seconds + + **Default Value**: 0 + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + start_trigger_terminal_name = _attributes.AttributeViString(1150122) + '''Type: str + + Returns the fully qualified signal name as a string. + + **Default Values**: + + **PXIe-5830/5831/5832**: /BasebandModule/ai/0/StartTrigger, where *BasebandModule* is the name of the baseband module of your device in MAX. + + **PXIe-5820/5840/5841/5842**: /ModuleName/ai/0/StartTrigger, where *ModuleName* is the name of your device in MAX. + + **PXIe-5860**: /ModuleName/ai/ChannelNumber/StartTrigger, where *ModuleName* is the name of your device in MAX and *ChannelNumber* is the channel number (0 or 1). + + **All other devices**: /DigitizerName/StartTrigger, where *DigitizerName* is the name associated with your digitizer module in MAX. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Events `_ + + **High-Level Methods**: + + - get_terminal_name + ''' + start_trigger_type = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.StartTriggerType, 1150024) + '''Type: enums.StartTriggerType + + Specifies whether you want the Start Trigger to be a digital edge or software trigger. + + ---- + **Note** + Set this property to StartTriggerType.NONE if you set the acquisition_type property to AcquisitionType.SPECTRUM or if you set the **acquisitionType** parameter to AcquisitionType.SPECTRUM using the [cviConfigureAcquisitionType](cviConfigureAcquisitionType.html) method. + + ---- + + **Default Value**: StartTriggerType.NONE + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **Defined Values**: + + +--------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +================================+===========================================================================================================================================================================================================================================+ + | StartTriggerType.NONE | No Start Trigger is configured. | + +--------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | StartTriggerType.DIGITAL_EDGE | The Start Trigger is not asserted until a digital edge is detected. The source of the digital edge is specified with the digital_edge_start_trigger_source property. | + +--------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | StartTriggerType.SOFTWARE_EDGE | The Start Trigger is not asserted until a software trigger occurs. You can assert the software trigger by calling the send_software_edge_trigger method and selecting NIRFSA_VAL_START_TRIGGER as the value of the **trigger** parameter. | + +--------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced methods are not in the Python API for this driver. + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + subspan_overlap = _attributes.AttributeViReal64(1150234) + '''Type: float + + Use subspan overlap process to eliminate or reduce analyzer spurs. + + To enable this feature, specify a non-zero percentage overlap between consecutive subspans in a spectrum acquisition. + + If a value greater than 0 is specified, then for each spectral line in the resulting spectrum, the driver acquires data twice with slightly different hardware settings, so that the analyzer spurs, if any, are present at different frequencies in the two acquisitions. Typically, LO frequency is shifted between the acquisitions causing analyzer spurs that are relative to the LO frequency, to move from one frequency to another. Those spurs, which are present in only one of the acquisitions for each spectral line, get removed. + + The subspan overlap feature will not remove any spurs from the Device Under Test or modify the signal being measured; unlike the analyzer spurs, the spurs in the signal being measured stay at a constant frequency in the two acquisitions. + + ---- + **Note** + Subspan overlap process effectively is performing minimum averaging, which might reduce the measured noise floor level. NI-RFSA Spectrum Averaging can be enabled to minimize the effect of subspan overlap on the noise floor. + + ---- + + ---- + **Note** + NI-RFSA may apply further shifts to the specified value to accommodate fixed-frequency edges of components such as preselectors. + + ---- + + **Valid Values**: + + **PXIe-5665/5668**: 0 to < 100 + + **PXIe-5820/5830/5831/5832/5840/5841/5860**: 0 + + **PXIe-5842**: 0, 50 + + **Default Value**: 0 + + **Supported Devices**: PXIe-5665/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + ---- + **Note** + Subspan overlap will not be supported by PXIe-5842, if RMM-5585 (54GHz Frequency Extension) is connected. + + ---- + ''' + supported_instrument_models = _attributes.AttributeViStringCommaSeparated(1050327) + '''Type: list of str + + Returns a comma-separated list of supported devices. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + temperature_read_interval = _attributes.AttributeViReal64TimeDeltaSeconds(1150061) + '''Type: hightime.timedelta, datetime.timedelta, or float in seconds + + Indicates the minimum time between temperature sensor readings in seconds. + + When you call the read_power_spectrum method, the ReadIqSingleRecordComplexF64 method, or the _initiate method, NI-RFSA checks whether at least the amount of time specified by this property has elapsed before reading the hardware temperature. + + ---- + **Note** + NI-RFSA ignores this property if you call the perform_thermal_correction method or read the downconverter_gain property. + + ---- + + **Default Value**: 30 seconds + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + thermal_correction_headroom_range = _attributes.AttributeViReal64(1150316) + '''Type: float + + Specifies the expected thermal operating range of the instrument from the self-calibration temperature, in degrees Celsius, returned from the device_temperature property. + + For example, if this property is set to 5.0, and the device is self-calibrated at 35 C, then you can expect to run the device from 30 C to 40 C with corrected accuracy and no overflows. Setting this property with a smaller value can result in improved dynamic range, but you must ensure thermal stability while the instrument is running. Operating the instrument outside of the specified range may cause degraded performance and ADC or DSP overflows. + + **Units:** degrees Celsius (C) + + **Default Value**: + + **PXIe-5830/5831/5832/5842/5860**: 5 + + **PXIe-5840/5841**: 10 + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + ''' + thermal_correction_temperature_resolution = _attributes.AttributeViReal64(1150300) + '''Type: float + + Specifies the temperature change required before NI-RFSA recalculates the thermal correction settings when entering the Running state. + + **Units:** degrees Celsius (C) + + **Supported Devices**: PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Default Values**: + + **PXIe-5830/5831/5832/5842/5860**: 0.2 + + **PXIe-5840/5841**: 1.0 + ''' + user_source_pulse_width = _attributes.AttributeViReal64(1150322) + '''Type: float + + Specifies the pulse width for the User Source. + + Use the user_source_pulse_width_units property to set the units for the pulse width. + + **Default Value**: 200E(-9) + + **Supported Devices**: PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + user_source_pulse_width_units = _attributes.AttributeEnum(_attributes.AttributeViInt32, enums.UserSourcePulseWidthUnits, 1150321) + '''Type: enums.UserSourcePulseWidthUnits + + Specifies the pulse width units for the User Source. + + When the value is UserSourcePulseWidthUnits.SECONDS, it is assumed that the clock rate of the signal is the data clock. Use UserSourcePulseWidthUnits.CLOCK_PERIODS if the user source clock rate is anything else. + + **Default Value**: UserSourcePulseWidthUnits.SECONDS + + **Supported Devices**: PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +-----------------------------------------+--------------------------+ + | Name | Description | + +=========================================+==========================+ + | UserSourcePulseWidthUnits.SECONDS | Units are seconds. | + +-----------------------------------------+--------------------------+ + | UserSourcePulseWidthUnits.CLOCK_PERIODS | Units are clock periods. | + +-----------------------------------------+--------------------------+ + ''' + + def __init__(self, repeated_capability_list, all_channels_in_session, interpreter, freeze_it=False): + self._repeated_capability_list = repeated_capability_list + self._repeated_capability = ','.join(repeated_capability_list) + self._all_channels_in_session = all_channels_in_session + self._interpreter = interpreter + + # Store the parameter list for later printing in __repr__ + param_list = [] + param_list.append("repeated_capability_list=" + pp.pformat(repeated_capability_list)) + param_list.append("interpreter=" + pp.pformat(interpreter)) + self._param_list = ', '.join(param_list) + + # Instantiate any repeated capability objects + self.ports = _RepeatedCapabilities(self, '', repeated_capability_list) + self.los = _RepeatedCapabilities(self, 'LO', repeated_capability_list) + self.device_temperatures = _RepeatedCapabilities(self, '', repeated_capability_list) + self.channels = _RepeatedCapabilities(self, '', repeated_capability_list) + + # Finally, set _is_frozen to True which is used to prevent clients from accidentally adding + # members when trying to set a property with a typo. + self._is_frozen = freeze_it + + def __repr__(self): + return '{0}.{1}({2})'.format('nirfsa', self.__class__.__name__, self._param_list) + + def __setattr__(self, key, value): + if self._is_frozen and key not in dir(self): + raise AttributeError("'{0}' object has no attribute '{1}'".format(type(self).__name__, key)) + object.__setattr__(self, key, value) + + ''' These are code-generated ''' + + @ivi_synchronized + def _configure_spectrum_frequency_center_span(self, center_frequency, span): + r'''_configure_spectrum_frequency_center_span + + Configures the span and center frequency of the spectrum read by NI-RFSA. + + A spectrum acquisition consists of data surrounding the center frequency. + + ---- + **Note** + If you configure the spectrum span to a value larger than the instantaneous bandwidth of the device, NI-RFSA performs multiple acquisitions and combines them into a spectrum of the size you requested. + + ---- + + ---- + **Note** + For the PXIe-5663/5663E, NI-RFSA does not support multispan acquisitions from frequency ranges that correspond with different instantaneous bandwidths. For example, you cannot configure a multispan acquisition that acquires one span from 110 MHz to 120 MHz and a second from 120 MHz to 130 MHz because the bandwidths that correspond to each span are different (10 MHz and 20 MHz, respectively). + + ---- + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._configure_spectrum_frequency_center_span` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._configure_spectrum_frequency_center_span` + + Args: + center_frequency (float): Specifies the center frequency in a spectrum acquisition. The value is expressed in hertz (Hz). The NI-RFSA device you use determines the valid range. Refer to your device specifications document for more information about frequency range. + + span (float): Specifies the span of a spectrum acquisition. The value is expressed in hertz (Hz). + + ---- + + *Note* For the PXIe-5663/5663E/5665/5667/5668, NI-RFSA enables dithering by default. The dither noise can appear in your passband and affect your measurements. Refer to the digitizer_dither_enabled property for more information about dithering. + + ---- + + ''' + self._interpreter.configure_spectrum_frequency_center_span(self._repeated_capability, center_frequency, span) + + def configure_spectrum_frequency(self, center_frequency=None, span=None, start_frequency=None, stop_frequency=None): + '''configure_spectrum_frequency + + Configures the frequency range of a spectrum acquisition. + + You can specify the frequency range using either center frequency and span, or start and stop frequencies. + + ---- + **Note** + If you configure the spectrum span to a value larger than the instantaneous bandwidth of the device, NI-RFSA performs multiple acquisitions and combines them into a spectrum of the size you requested. + + ---- + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].configure_spectrum_frequency` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.configure_spectrum_frequency` + + Args: + center_frequency (float): Specifies the center frequency in a spectrum acquisition. The value is expressed in hertz (Hz). Must be used together with **span**. + + span (float): Specifies the span of a spectrum acquisition. The value is expressed in hertz (Hz). Must be used together with **center_frequency**. + + start_frequency (float): Specifies the lower limit of a span of frequencies. The value is expressed in hertz (Hz). Must be used together with **stop_frequency**. + + stop_frequency (float): Specifies the upper limit of a span of frequencies. The value is expressed in hertz (Hz). Must be used together with **start_frequency**. + + ''' + if center_frequency is not None and span is not None: + self._configure_spectrum_frequency_center_span(center_frequency, span) + elif start_frequency is not None and stop_frequency is not None: + self._configure_spectrum_frequency_start_stop(start_frequency, stop_frequency) + else: + raise ValueError( + "Provide either (center_frequency & span) " + "or (start_frequency & stop_frequency)" + ) + + @ivi_synchronized + def _configure_spectrum_frequency_start_stop(self, start_frequency, stop_frequency): + r'''_configure_spectrum_frequency_start_stop + + Configures the start and stop frequencies of a spectrum read by NI-RFSA. + + ---- + **Note** + If you configure the spectrum span (**STOP_FREQUENCY** **START_FREQUENCY**) to a value larger than the instantaneous bandwidth of the device, NI-RFSA performs multiple acquisitions and combines them into a spectrum of the size you request. + + ---- + + ---- + **Note** + For the PXIe-5663/5663E, NI-RFSA does not support multispan acquisitions from frequency ranges that correspond with different instantaneous bandwidths. For example, you cannot configure a multispan acquisition that acquires one span from 110 MHz to 120 MHz and a second from 120 MHz to 130 MHz because the bandwidths that correspond to each span are different (10 MHz and 20 MHz, respectively). + + ---- + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._configure_spectrum_frequency_start_stop` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._configure_spectrum_frequency_start_stop` + + Args: + start_frequency (float): Specifies the lower limit of a span of frequencies. This value is expressed in hertz (Hz). + + stop_frequency (float): Specifies the upper limit of a span of frequencies. This value is expressed in hertz (Hz). + + ''' + self._interpreter.configure_spectrum_frequency_start_stop(self._repeated_capability, start_frequency, stop_frequency) + + def error_message(self, error_code): + r'''error_message + + Converts an error code returned by an NI-RFSA method into a user-readable string. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5840 + + Args: + error_code (int): Passes the **errorCode** parameter that is returned from any NI-RFSA method. + + + Returns: + error_message (str): Returns the user-readable message string that corresponds to the error code you specify. + + You must pass a ViChar array with 1024 bytes or more to this parameter. Only the first 1024 bytes of the array are used. + + ''' + error_message = self._interpreter.error_message(error_code) + return error_message + + @ivi_synchronized + def _fetch_iq_multi_record_complex_f32(self, starting_record, number_of_records, iq_data_arrays, timeout=hightime.timedelta(seconds=10.0)): + r'''_fetch_iq_multi_record_complex_f32 + + Fetches I/Q data from multiple records in an acquisition. + + A fetch transfers acquired waveform data from device memory to computer memory. The data was acquired to onboard memory previously by the hardware after the acquisition was initiated. + + This method is not necessary if you use the read IQ single record complex F64 method because the read IQ single record complex F64 method performs the fetch as part of the method. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `None (Trigger Type) `_ + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._fetch_iq_multi_record_complex_f32` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._fetch_iq_multi_record_complex_f32` + + Args: + starting_record (int): Specifies the first record to retrieve. Record numbers are zero-based. The default value is 0. + + number_of_records (int): Specifies the number of records to fetch. + + iq_data_arrays (numpy.array(dtype=numpy.complex64)): Specifies a pre-allocated 2D numpy array of shape (number_of_records, number_of_samples) to be filled with the acquired I/Q waveforms. Each row corresponds to one record. The real and imaginary parts of this complex data array correspond to the in-phase (I) and quadrature-phase (Q) data, respectively. + + timeout (hightime.timedelta, datetime.timedelta, or float in seconds): **PXI-5661, PXIe-5663/5665/5667** Specifies the time, in seconds, allotted for the method to complete before returning a timeout error. + + **PXIe-5644/5645/5646, PXIe-5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860** Specifies the time, in seconds, allotted to receive the reference trigger. + + ---- + + For all supported devices, a value of specifies the method waits until all data is available. A value of 0 specifies the method immediately returns available data. + + ---- + + + Returns: + wfm_info (WaveformInfo): Contains the absolute and relative timestamps for the operation, the time interval (dt), and the actual number of samples read. Each element of this array corresponds to a record. + + The following list provides more information about each of these properties: + + - **absolute timestamp** Returns the timestamp, in seconds, of the first fetched sample that is comparable between records and acquisitions. + + ---- + + The value of the absolute timestamp returned is always 0 for the PXIe-5644/5645/5646, PXIe-5668, and PXIe-5820/5840/5841/5842/5860. + + ---- + + - **relative timestamp** Returns a timestamp that corresponds to the difference, in seconds, between the first sample returned and the Reference Trigger location. The timestamp is zero if the Reference Trigger has not occurred. + + ---- + + The value of the relative timestamp returned is always 0 for the PXIe-5644/5645/5646. + + ---- + + - **dt** Returns the time interval between data points in the acquired signal. The I/Q data sample rate is the reciprocal of this value. + - **actual samples read** Returns an integer representing the number of samples in the waveform.The actual number of samples for each record can vary if the NIRFSA ATTR NUMBER OF SAMPLES property changes per step during RF list mode. + - **offset** Returns the offset to scale data, (*b*), in *mx* + *b* form. + - **gain** Returns the gain to scale data, (*m*), in *mx* + *b* form. + + ''' + import numpy + + if type(iq_data_arrays) is not numpy.ndarray: + raise TypeError('iq_data_arrays must be {0}, is {1}'.format(numpy.ndarray, type(iq_data_arrays))) + if numpy.isfortran(iq_data_arrays) is True: + raise TypeError('iq_data_arrays must be in C-order') + if iq_data_arrays.dtype is not numpy.dtype('complex64'): + raise TypeError('iq_data_arrays must be numpy.ndarray of dtype=complex64, is ' + str(iq_data_arrays.dtype)) + timeout = _converters.convert_timedelta_to_seconds_real64(timeout) + wfm_info = self._interpreter.fetch_iq_multi_record_complex_f32(self._repeated_capability, starting_record, number_of_records, iq_data_arrays, timeout) + return wfm_info + + @ivi_synchronized + def _fetch_iq_multi_record_complex_f64(self, starting_record, number_of_records, iq_data_arrays, timeout=hightime.timedelta(seconds=10.0)): + r'''_fetch_iq_multi_record_complex_f64 + + Fetches I/Q data from multiple records in an acquisition. + + A fetch transfers acquired waveform data from device memory to computer memory. The data was acquired to onboard memory previously by the hardware after the acquisition was initiated. + + This method is not necessary if you use the read IQ single record complex F64 method because the read IQ single record complex F64 method performs the fetch as part of the method. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `None (Trigger Type) `_ + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._fetch_iq_multi_record_complex_f64` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._fetch_iq_multi_record_complex_f64` + + Args: + starting_record (int): Specifies the first record to retrieve. Record numbers are zero-based. The default value is 0. + + number_of_records (int): Specifies the number of records to fetch. + + iq_data_arrays (numpy.array(dtype=numpy.complex128)): Specifies a pre-allocated 2D numpy array of shape (number_of_records, number_of_samples) to be filled with the acquired I/Q waveforms. Each row corresponds to one record. The real and imaginary parts of this complex data array correspond to the in-phase (I) and quadrature-phase (Q) data, respectively. + + timeout (hightime.timedelta, datetime.timedelta, or float in seconds): **PXI-5661, PXIe-5663/5665/5667** Specifies the time, in seconds, allotted for the method to complete before returning a timeout error. + + **PXIe-5644/5645/5646, PXIe-5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860** Specifies the time, in seconds, allotted to receive the reference trigger. + + ---- + + For all supported devices, a value of specifies the method waits until all data is available. A value of 0 specifies the method immediately returns available data. + + ---- + + + Returns: + wfm_info (WaveformInfo): Contains the absolute and relative timestamps for the operation, the time interval (dt), and the actual number of samples read. Each element of this array corresponds to a record. + + The following list provides more information about each of these properties: + + - **absolute timestamp** Returns the timestamp, in seconds, of the first fetched sample that is comparable between records and acquisitions. + + ---- + + The value of the absolute timestamp returned is always 0 for the PXIe-5644/5645/5646, PXIe-5668, and PXIe-5820/5840/5841/5842/5860. + + ---- + + - **relative timestamp** Returns a timestamp that corresponds to the difference, in seconds, between the first sample returned and the Reference Trigger location. The timestamp is zero if the Reference Trigger has not occurred. + + ---- + + The value of the relative timestamp returned is always 0 for the PXIe-5644/5645/5646. + + ---- + + - **dt** Returns the time interval between data points in the acquired signal. The I/Q data sample rate is the reciprocal of this value. + - **actual samples read** Returns an integer representing the number of samples in the waveform.The actual number of samples for each record can vary if the NIRFSA ATTR NUMBER OF SAMPLES property changes per step during RF list mode. + - **offset** Returns the offset to scale data, (*b*), in *mx* + *b* form. + - **gain** Returns the gain to scale data, (*m*), in *mx* + *b* form. + + ''' + import numpy + + if type(iq_data_arrays) is not numpy.ndarray: + raise TypeError('iq_data_arrays must be {0}, is {1}'.format(numpy.ndarray, type(iq_data_arrays))) + if numpy.isfortran(iq_data_arrays) is True: + raise TypeError('iq_data_arrays must be in C-order') + if iq_data_arrays.dtype is not numpy.dtype('complex128'): + raise TypeError('iq_data_arrays must be numpy.ndarray of dtype=complex128, is ' + str(iq_data_arrays.dtype)) + timeout = _converters.convert_timedelta_to_seconds_real64(timeout) + wfm_info = self._interpreter.fetch_iq_multi_record_complex_f64(self._repeated_capability, starting_record, number_of_records, iq_data_arrays, timeout) + return wfm_info + + @ivi_synchronized + def _fetch_iq_multi_record_complex_i16(self, starting_record, number_of_records, iq_data_arrays, timeout=hightime.timedelta(seconds=10.0)): + r'''_fetch_iq_multi_record_complex_i16 + + Fetches binary I/Q data from multiple records in an acquisition. + + Fetching transfers acquired waveform data from device memory to computer memory. The data was acquired to onboard memory previously by the hardware after the acquisition was initiated. + + This method is not necessary if you use the read IQ single record complex F64 method because the read IQ single record complex F64 method performs the fetch as part of the method. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `None (Trigger Type) `_ + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._fetch_iq_multi_record_complex_i16` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._fetch_iq_multi_record_complex_i16` + + Args: + starting_record (int): Specifies the first record to retrieve. Record numbers are zero-based. The default value is 0. + + number_of_records (int): Specifies the number of records to fetch. + + iq_data_arrays (numpy.array(dtype=numpy.int16)): Specifies a pre-allocated 2D numpy array of shape (number_of_records, number_of_samples) to be filled with the acquired I/Q waveforms. Each row corresponds to one record. The real and imaginary parts of this interleaved data array correspond to the in-phase (I) and quadrature-phase (Q) data, respectively. + + timeout (hightime.timedelta, datetime.timedelta, or float in seconds): **PXI-5661, PXIe-5663/5665/5667** Specifies the time, in seconds, allotted for the method to complete before returning a timeout error. + + **PXIe-5644/5645/5646, PXIe-5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860** Specifies the time, in seconds, allotted to receive the reference trigger. + + ---- + + For all supported devices, a value of specifies the method waits until all data is available. A value of 0 specifies the method immediately returns available data. + + ---- + + + Returns: + wfm_info (WaveformInfo): Contains the absolute and relative timestamps for the operation, the time interval (dt), and the actual number of samples read. Each element of this array corresponds to a record. + + The following list provides more information about each of these properties: + + - **absolute timestamp** Returns the timestamp, in seconds, of the first fetched sample that is comparable between records and acquisitions. + + ---- + + The value of the absolute timestamp returned is always 0 for the PXIe-5644/5645/5646, PXIe-5668, and PXIe-5820/5830/5831/5832/5840/5841/5842/5860. + + ---- + + - **relative timestamp** Returns a timestamp that corresponds to the difference, in seconds, between the first sample returned and the Reference Trigger location. The timestamp is zero if the Reference Trigger has not occurred. + + ---- + + The value of the relative timestamp returned is always 0 for the PXIe-5644/5645/5646. + + ---- + + - **dt** Returns the time interval between data points in the acquired signal. The I/Q data sample rate is the reciprocal of this value. + - **actual samples read** Returns an integer representing the number of samples in the waveform.The actual number of samples for each record can vary if the NIRFSA ATTR NUMBER OF SAMPLES property changes per step during RF list mode. + - **offset** Returns the offset to scale data, (*b*), in *mx* + *b* form. + - **gain** Returns the gain to scale data, (*m*), in *mx* + *b* form. + + ''' + import numpy + + if type(iq_data_arrays) is not numpy.ndarray: + raise TypeError('iq_data_arrays must be {0}, is {1}'.format(numpy.ndarray, type(iq_data_arrays))) + if numpy.isfortran(iq_data_arrays) is True: + raise TypeError('iq_data_arrays must be in C-order') + if iq_data_arrays.dtype is not numpy.dtype('int16'): + raise TypeError('iq_data_arrays must be numpy.ndarray of dtype=int16, is ' + str(iq_data_arrays.dtype)) + timeout = _converters.convert_timedelta_to_seconds_real64(timeout) + wfm_info = self._interpreter.fetch_iq_multi_record_complex_i16(self._repeated_capability, starting_record, number_of_records, iq_data_arrays, timeout) + return wfm_info + + @ivi_synchronized + def _fetch_iq_single_record_complex_f32(self, record_number, iq_data_array, timeout=hightime.timedelta(seconds=10.0)): + r'''_fetch_iq_single_record_complex_f32 + + Fetches I/Q data from a single record in an acquisition. + + The fetch transfers acquired waveform data from device memory to computer memory. The data was acquired to onboard memory previously by the hardware after the acquisition was initiated. + + This method is not necessary if you use the read IQ single record complex F64 method because the read IQ single record complex F64 method performs the fetch as part of the method. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `None (Trigger Type) `_ + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._fetch_iq_single_record_complex_f32` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._fetch_iq_single_record_complex_f32` + + Args: + record_number (int): Specifies the record to retrieve. Record numbers are zero-based. + + iq_data_array (numpy.array(dtype=numpy.complex64)): Returns the acquired waveform. Allocate an NIComplexNumberF32 array at least as large as **number_of_samples**. + + timeout (hightime.timedelta, datetime.timedelta, or float in seconds): **PXI-5661, PXIe-5663/5665/5667** Specifies the time, in seconds, allotted for the method to complete before returning a timeout error. + + **PXIe-5644/5645/5646, PXIe-5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860** Specifies the time, in seconds, allotted to receive the reference trigger. + + ---- + + For all supported devices, a value of specifies the method waits until all data is available. A value of 0 specifies the method immediately returns available data. + + ---- + + + Returns: + wfm_info (WaveformInfo): Contains the absolute and relative timestamps for the operation, the time interval (dt), and the actual number of samples read. + + The following list provides more information about each of these properties: + + - **absolute timestamp** Returns the timestamp, in seconds, of the first fetched sample that is comparable between records and acquisitions. + + ---- + + The value of the absolute timestamp returned is always 0 for the PXIe-5644/5645/5646, PXIe-5668, and PXIe-5820/5830/5831/5832/5840/5841/5842/5860. + + ---- + + - **relative timestamp** Returns a timestamp that corresponds to the difference, in seconds, between the first sample returned and the Reference Trigger location. The timestamp is zero if the Reference Trigger has not occurred. + + ---- + + The value of the relative timestamp returned is always 0 for the PXIe-5644/5645/5646. + + ---- + + - **dt** Returns the time interval between data points in the acquired signal. The I/Q data sample rate is the reciprocal of this value. + - **actual samples read** Returns an integer representing the number of samples in the waveform. + - **offset** Returns the offset to scale data, (*b*), in *mx* + *b* form. + - **gain** Returns the gain to scale data, (*m*), in *mx* + *b* form. + + ''' + import numpy + + if type(iq_data_array) is not numpy.ndarray: + raise TypeError('iq_data_array must be {0}, is {1}'.format(numpy.ndarray, type(iq_data_array))) + if numpy.isfortran(iq_data_array) is True: + raise TypeError('iq_data_array must be in C-order') + if iq_data_array.dtype is not numpy.dtype('complex64'): + raise TypeError('iq_data_array must be numpy.ndarray of dtype=complex64, is ' + str(iq_data_array.dtype)) + timeout = _converters.convert_timedelta_to_seconds_real64(timeout) + wfm_info = self._interpreter.fetch_iq_single_record_complex_f32(self._repeated_capability, record_number, iq_data_array, timeout) + return wfm_info + + @ivi_synchronized + def _fetch_iq_single_record_complex_f64(self, record_number, iq_data_array, timeout=hightime.timedelta(seconds=10.0)): + r'''_fetch_iq_single_record_complex_f64 + + Fetches I/Q data from a single record in an acquisition. + + The fetch transfers acquired waveform data from device memory to computer memory. The data was acquired to onboard memory previously by the hardware after the acquisition was initiated. + + This method is not necessary if you use the read IQ single record complex F64 method because the read IQ single record complex F64 method performs the fetch as part of the method. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `None (Trigger Type) `_ + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._fetch_iq_single_record_complex_f64` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._fetch_iq_single_record_complex_f64` + + Args: + record_number (int): Specifies the record to retrieve. Record numbers are zero-based. + + iq_data_array (numpy.array(dtype=numpy.complex128)): Returns the acquired waveform. Allocate an NIComplexNumber array at least as large as **number_of_samples**. + + timeout (hightime.timedelta, datetime.timedelta, or float in seconds): **PXI-5661, PXIe-5663/5665/5667** Specifies the time, in seconds, allotted for the method to complete before returning a timeout error. + + **PXIe-5644/5645/5646, PXIe-5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860** Specifies the time, in seconds, allotted to receive the reference trigger. + + ---- + + For all supported devices, a value of specifies the method waits until all data is available. A value of 0 specifies the method immediately returns available data. + + ---- + + + Returns: + wfm_info (WaveformInfo): Contains the absolute and relative timestamps for the operation, the time interval (dt), and the actual number of samples read. + + The following list provides more information about each of these properties: + + - **absolute timestamp** Returns the timestamp, in seconds, of the first fetched sample that is comparable between records and acquisitions. + + ---- + + The value of the absolute timestamp returned is always 0 for the PXIe-5644/5645/5646, PXIe-5668, and PXIe-5820/5830/5831/5832/5840/5841/5842/5860. + + ---- + + - **relative timestamp** Returns a timestamp that corresponds to the difference, in seconds, between the first sample returned and the Reference Trigger location. The timestamp is zero if the Reference Trigger has not occurred. + + ---- + + The value of the relative timestamp returned is always 0 for the PXIe-5644/5645/5646. + + ---- + + - **dt** Returns the time interval between data points in the acquired signal. The I/Q data sample rate is the reciprocal of this value. + - **actual samples read** Returns an integer representing the number of samples in the waveform. + - **offset** Returns the offset to scale data, (*b*), in *mx* + *b* form. + - **gain** Returns the gain to scale data, (*m*), in *mx* + *b* form. + + ''' + import numpy + + if type(iq_data_array) is not numpy.ndarray: + raise TypeError('iq_data_array must be {0}, is {1}'.format(numpy.ndarray, type(iq_data_array))) + if numpy.isfortran(iq_data_array) is True: + raise TypeError('iq_data_array must be in C-order') + if iq_data_array.dtype is not numpy.dtype('complex128'): + raise TypeError('iq_data_array must be numpy.ndarray of dtype=complex128, is ' + str(iq_data_array.dtype)) + timeout = _converters.convert_timedelta_to_seconds_real64(timeout) + wfm_info = self._interpreter.fetch_iq_single_record_complex_f64(self._repeated_capability, record_number, iq_data_array, timeout) + return wfm_info + + @ivi_synchronized + def _fetch_iq_single_record_complex_i16(self, record_number, iq_data_array, timeout=hightime.timedelta(seconds=10.0)): + r'''_fetch_iq_single_record_complex_i16 + + Fetches binary I/Q data from a single record in an acquisition. + + The fetch transfers acquired waveform data from device memory to computer memory. The data was acquired to onboard memory previously by the hardware after the acquisition was initiated. + + This method is not necessary if you use the read IQ single record complex F64 method because the read IQ single record complex F64 method performs the fetch as part of the method. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `None (Trigger Type) `_ + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._fetch_iq_single_record_complex_i16` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._fetch_iq_single_record_complex_i16` + + Args: + record_number (int): Specifies the record to retrieve. Record numbers are zero-based. + + iq_data_array (numpy.array(dtype=numpy.int16)): Returns the acquired waveform. Allocate an NIComplexI16 array at least as large as **number_of_samples**. + + timeout (hightime.timedelta, datetime.timedelta, or float in seconds): **PXI-5661, PXIe-5663/5665/5667** Specifies the time, in seconds, allotted for the method to complete before returning a timeout error. + + **PXIe-5644/5645/5646, PXIe-5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860** Specifies the time, in seconds, allotted to receive the reference trigger. + + ---- + + For all supported devices, a value of specifies the method waits until all data is available. A value of 0 specifies the method immediately returns available data. + + ---- + + + Returns: + wfm_info (WaveformInfo): Contains the absolute and relative timestamps for the operation, the time interval (dt), and the actual number of samples read. + + The following list provides more information about each of these properties: + + - **absolute timestamp** Returns the timestamp, in seconds, of the first fetched sample that is comparable between records and acquisitions. + + ---- + + The value of the absolute timestamp returned is always 0 for the PXIe-5644/5645/5646, PXIe-5668, and PXIe-5820/5830/5831/5832/5840/5841/5842/5860. + + ---- + + - **relative timestamp** Returns a timestamp that corresponds to the difference, in seconds, between the first sample returned and the Reference Trigger location. The timestamp is zero if the Reference Trigger has not occurred. + + ---- + + The value of the relative timestamp returned is always 0 for the PXIe-5644/5645/5646. + + ---- + + - **dt** Returns the time interval between data points in the acquired signal. The I/Q data sample rate is the reciprocal of this value. + - **actual samples read** Returns an integer representing the number of samples in the waveform. + - **offset** Returns the offset to scale data, (*b*), in *mx* + *b* form. + - **gain** Returns the gain to scale data, (*m*), in *mx* + *b* form. + + ''' + import numpy + + if type(iq_data_array) is not numpy.ndarray: + raise TypeError('iq_data_array must be {0}, is {1}'.format(numpy.ndarray, type(iq_data_array))) + if numpy.isfortran(iq_data_array) is True: + raise TypeError('iq_data_array must be in C-order') + if iq_data_array.dtype is not numpy.dtype('int16'): + raise TypeError('iq_data_array must be numpy.ndarray of dtype=int16, is ' + str(iq_data_array.dtype)) + timeout = _converters.convert_timedelta_to_seconds_real64(timeout) + wfm_info = self._interpreter.fetch_iq_single_record_complex_i16(self._repeated_capability, record_number, iq_data_array, timeout) + return wfm_info + + def fetch_iq_multi_record_into(self, iq_data_arrays, starting_record=0, number_of_records=None, number_of_samples=None, timeout=hightime.timedelta(seconds=10.0)): + '''fetch_iq_multi_record + + Fetches I/Q data from multiple records in an acquisition. + + A fetch transfers acquired waveform data from device memory to computer memory. The data was acquired to onboard memory previously by the hardware after the acquisition was initiated. + + This method accepts a data_type parameter to specify the desired data format: numpy.complex64, numpy.complex128, or numpy.int16. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `None (Trigger Type) `_ + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].fetch_iq_multi_record` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.fetch_iq_multi_record` + + Args: + iq_data_arrays (2D numpy.array of numpy.complex64, 2D numpy.array of numpy.complex128 or interleaved complex data in the form of 2D numpy.array of numpy.int16): Specifies a pre-allocated 2D numpy array of shape (number_of_records, number_of_samples) to be filled with the acquired I/Q data. Each row corresponds to one record. The real and imaginary parts of this complex data array correspond to the in-phase (I) and quadrature-phase (Q) data, respectively. + + starting_record (int): Specifies the first record to retrieve. Record numbers are zero-based. The default value is 0. + + number_of_records (int): Specifies the number of records to fetch. + + number_of_samples (int): Specifies the number of samples per record. + + timeout (hightime.timedelta, datetime.timedelta, or float in seconds): **PXI-5661, PXIe-5663/5665/5667** Specifies the time, in seconds, allotted for the method to complete before returning a timeout error. + + **PXIe-5644/5645/5646, PXIe-5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860** Specifies the time, in seconds, allotted to receive the reference trigger. + + ---- + + For all supported devices, a value of specifies the method waits until all data is available. A value of 0 specifies the method immediately returns available data. + + ---- + + ''' + import numpy + if str(type(iq_data_arrays)).find("'numpy.ndarray'") != -1: + if number_of_records is None: + number_of_records = self.number_of_records + + if number_of_samples is None: + number_of_samples = self.number_of_samples + + if iq_data_arrays.ndim != 2: + raise ValueError("iq_data_arrays must be a 2D numpy array (number_of_records x number_of_samples), but got {}D array".format(iq_data_arrays.ndim)) + if iq_data_arrays.shape[0] < number_of_records: + raise ValueError("iq_data_arrays must have at least {} rows (number_of_records), but has {}".format(number_of_records, iq_data_arrays.shape[0])) + if iq_data_arrays.dtype == numpy.int16: + expected_buffer_size = 2 * number_of_samples + else: + expected_buffer_size = number_of_samples + + if iq_data_arrays.shape[1] < expected_buffer_size: + try: + iq_data_arrays.resize((iq_data_arrays.shape[0], expected_buffer_size), refcheck=False) + except (MemoryError, ValueError) as e: + raise type(e)( + "Failed to resize iq_data_arrays from {} to {}: {}".format( + iq_data_arrays.shape, (iq_data_arrays.shape[0], expected_buffer_size), e + ) + ) from e + assert iq_data_arrays.shape[1] == expected_buffer_size, "iq_data_arrays width must match requested number_of_samples after resize" + + if iq_data_arrays.dtype == numpy.complex128: + wfm_info = self._fetch_iq_multi_record_complex_f64(starting_record, number_of_records, iq_data_arrays, timeout) + elif iq_data_arrays.dtype == numpy.complex64: + wfm_info = self._fetch_iq_multi_record_complex_f32(starting_record, number_of_records, iq_data_arrays, timeout) + elif iq_data_arrays.dtype == numpy.int16: + wfm_info = self._fetch_iq_multi_record_complex_i16(starting_record, number_of_records, iq_data_arrays, timeout) + else: + raise TypeError("Unsupported datatype. Is {}, expected {} or {} or {}".format(iq_data_arrays.dtype, numpy.complex128, numpy.complex64, numpy.int16)) + else: + raise TypeError("Unsupported datatype. Expected numpy array of {} or {} or {}".format(numpy.complex128, numpy.complex64, numpy.int16)) + + waveform_info._populate_samples_info(wfm_info, iq_data_arrays) + + return wfm_info + + def fetch_iq_single_record_into(self, iq_data_array, record_number=0, number_of_samples=None, timeout=hightime.timedelta(seconds=10.0)): + '''fetch_iq_single_record + + Fetches I/Q data from a single record in an acquisition. + + The fetch transfers acquired waveform data from device memory to computer memory. The data was acquired to onboard memory previously by the hardware after the acquisition was initiated. + + This method accepts a data_type parameter to specify the desired data format: numpy.complex64, numpy.complex128, or numpy.int16. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `None (Trigger Type) `_ + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].fetch_iq_single_record` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.fetch_iq_single_record` + + Args: + iq_data_array (numpy array of numpy.complex64, numpy array of numpy.complex128 or interleaved complex data in the form of numpy array of numpy.int16): Specifies the pre-allocated numpy array to be filled with the acquired I/Q data. The real and imaginary parts of this complex data array correspond to the in-phase (I) and quadrature-phase (Q) data, respectively. + + record_number (int): Specifies the record to retrieve. Record numbers are zero-based. + + number_of_samples (int): Specifies the number of samples to fetch. The value must specify the array size of the DATA parameter. + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + timeout (hightime.timedelta, datetime.timedelta, or float in seconds): **PXI-5661, PXIe-5663/5665/5667** Specifies the time, in seconds, allotted for the method to complete before returning a timeout error. + + **PXIe-5644/5645/5646, PXIe-5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860** Specifies the time, in seconds, allotted to receive the reference trigger. + + ---- + + For all supported devices, a value of specifies the method waits until all data is available. A value of 0 specifies the method immediately returns available data. + + ---- + + ''' + import numpy + if str(type(iq_data_array)).find("'numpy.ndarray'") != -1: + if number_of_samples is None: + number_of_samples = self.number_of_samples + + if iq_data_array.dtype == numpy.int16: + expected_buffer_size = 2 * number_of_samples + else: + expected_buffer_size = number_of_samples + + if len(iq_data_array) < expected_buffer_size: + try: + iq_data_array.resize(expected_buffer_size, refcheck=False) + except (MemoryError, ValueError) as e: + raise type(e)( + "Failed to resize iq_data_array from {} to {}: {}".format( + len(iq_data_array), expected_buffer_size, e + ) + ) from e + assert len(iq_data_array) == expected_buffer_size, "iq_data_array length must match requested number_of_samples after resize" + + if iq_data_array.dtype == numpy.complex128: + wfm_info = self._fetch_iq_single_record_complex_f64(record_number, iq_data_array, timeout) + elif iq_data_array.dtype == numpy.complex64: + wfm_info = self._fetch_iq_single_record_complex_f32(record_number, iq_data_array, timeout) + elif iq_data_array.dtype == numpy.int16: + wfm_info = self._fetch_iq_single_record_complex_i16(record_number, iq_data_array, timeout) + else: + raise TypeError("Unsupported datatype. Is {}, expected {} or {} or {}".format(iq_data_array.dtype, numpy.complex128, numpy.complex64, numpy.int16)) + else: + raise TypeError("Unsupported datatype. Expected numpy array of {} or {} or {}".format(numpy.complex128, numpy.complex64, numpy.int16)) + + mv = memoryview(iq_data_array) + + wfm_info.samples = mv[0:wfm_info.actual_samples] + + return wfm_info + + @ivi_synchronized + def _get_attribute_vi_boolean(self, attribute_id): + r'''_get_attribute_vi_boolean + + Queries the value of a ViBoolean property. + + You can use this low-level method to get the values of inherent IVI properties and instrument-specific properties. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._get_attribute_vi_boolean` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._get_attribute_vi_boolean` + + Args: + attribute_id (int): Pass the ID of a property. + + + Returns: + value (bool): Returns the current value of the property. Pass the address of a ViBoolean variable. + + ''' + value = self._interpreter.get_attribute_vi_boolean(self._repeated_capability, attribute_id) + return value + + @ivi_synchronized + def _get_attribute_vi_int32(self, attribute_id): + r'''_get_attribute_vi_int32 + + Queries the value of a ViInt32 property. + + You can use this low-level method to get the values of inherent IVI properties and instrument-specific properties. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._get_attribute_vi_int32` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._get_attribute_vi_int32` + + Args: + attribute_id (int): Pass the ID of a property. + + + Returns: + value (int): Returns the current value of the property. Pass the address of a ViInt32 variable. + + ''' + value = self._interpreter.get_attribute_vi_int32(self._repeated_capability, attribute_id) + return value + + @ivi_synchronized + def _get_attribute_vi_int64(self, attribute_id): + r'''_get_attribute_vi_int64 + + Queries the value of a ViInt64 property. + + You can use this low-level method to get the values of inherent IVI properties and instrument-specific properties. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._get_attribute_vi_int64` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._get_attribute_vi_int64` + + Args: + attribute_id (int): Pass the ID of a property. + + + Returns: + value (int): Returns the current value of the property. Pass the address of a ViInt64 variable. + + ''' + value = self._interpreter.get_attribute_vi_int64(self._repeated_capability, attribute_id) + return value + + @ivi_synchronized + def _get_attribute_vi_real64(self, attribute_id): + r'''_get_attribute_vi_real64 + + Queries the value of a ViReal64 property. + + You can use this low-level method to get the values of inherent IVI properties and instrument-specific properties. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._get_attribute_vi_real64` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._get_attribute_vi_real64` + + Args: + attribute_id (int): Pass the ID of a property. + + + Returns: + value (float): Returns the current value of the property. Pass the address of a ViReal64 variable. + + ''' + value = self._interpreter.get_attribute_vi_real64(self._repeated_capability, attribute_id) + return value + + @ivi_synchronized + def _get_attribute_vi_session(self, attribute_id): + r'''_get_attribute_vi_session + + Queries the value of a ViSession property. + + You can use this low-level method to get the values of inherent IVI properties and instrument-specific properties. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._get_attribute_vi_session` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._get_attribute_vi_session` + + Args: + attribute_id (int): Pass the ID of a property. + + + Returns: + value (int): Returns the current value of the property. Pass the address of a ViSession variable. + + ''' + value = self._interpreter.get_attribute_vi_session(self._repeated_capability, attribute_id) + return value + + @ivi_synchronized + def _get_attribute_vi_string(self, attribute_id): + r'''_get_attribute_vi_string + + Queries the value of a ViString property. + + You can use this low-level method to get the values of inherent IVI properties and instrument-specific properties. + + You must provide a ViChar array to serve as a buffer for the value. You pass the number of bytes in the buffer as the **BUF_SIZE** parameter. If the current value of the property, including the terminating NULL byte, is larger than the size you indicate in the **BUF_SIZE** parameter, the method copies buffer size 1 bytes into the buffer, places an ASCII NULL byte at the end of the buffer, and returns the buffer size you must pass to get the entire value. For example, if the value is "123456" and the buffer size is 4, the method places "123" into the buffer and returns 7. + + If you want to call this method just to get the required buffer size, you can pass 0 for **BUF_SIZE** and VI_NULL for the **attributeValue** buffer. + + **Supported Devices:** PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._get_attribute_vi_string` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._get_attribute_vi_string` + + Args: + attribute_id (int): Pass the ID of a property. + + + Returns: + value (str): The buffer in which the method returns the current value of the property. The buffer must be of type ViChar and have at least as many bytes as indicated in **BUF_SIZE**. + + If you specify 0 for the **BUF_SIZE** parameter, you can pass VI_NULL for this parameter. + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + ''' + value = self._interpreter.get_attribute_vi_string(self._repeated_capability, attribute_id) + return value + + @ivi_synchronized + def get_fetch_backlog(self, record_number): + r'''get_fetch_backlog + + Returns the number of points acquired that have not yet been fetched. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].get_fetch_backlog` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.get_fetch_backlog` + + Args: + record_number (int): Specifies the record from which to read the backlog. Record numbers are zero-based. + + + Returns: + backlog (int): Returns the number of samples available to read for the requested record. + + ''' + backlog = self._interpreter.get_fetch_backlog(self._repeated_capability, record_number) + return backlog + + @ivi_synchronized + def get_frequency_response(self): + r'''get_frequency_response + + Returns the requested device response type, based on current NI-RFSA settings. The PXI-5661 and PXIe-5663/5663E/5665/5667/5668 automatically corrects the IF and RF response when you set the Digital IF Equalization Enabled property to TRUE. If you are using external digitizer mode, you can use information returned from this VI to correct your measurement. + + Refer to the *Factory Calibration* topic for your device for more information about frequency-response calibration. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].get_frequency_response` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.get_frequency_response` + + Returns: + frequencies (list of float): Returns an array containing the frequencies, in hertz (Hz), that correspond to the response data. + + Pass VI_NULL if you do not want to use this parameter. + + magnitude_response (list of float): Returns an array containing the magnitude of the requested response, in decibels (dB). The magnitude response is normalized to the center frequency at each frequency in the FREQUENCIES array. + + Pass VI_NULL if you do not want to use this parameter. + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + phase_response (list of float): Returns an array containing the phase of the requested response, in radians. The phase response is normalized to the center frequency at each frequency entry in the FREQUENCIES array. + + Pass VI_NULL if you do not want to use this parameter. This array may contain zeros if the device does not contain a stored phase response in its calibration data. + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + ''' + frequencies, magnitude_response, phase_response = self._interpreter.get_frequency_response(self._repeated_capability) + return frequencies, magnitude_response, phase_response + + @ivi_synchronized + def get_scaling_coefficients(self): + r'''get_scaling_coefficients + + Returns coefficients you can use to convert unscaled data to scaled I/Q data. + + Acquired data may be unscaled when sent by a peer-to-peer stream or fetched as unscaled data. Use this method to obtain get_scaling_coefficients structures in the **COEFFICIENT_INFO** array that provide gain and offset values you can use to scale this data into the actual I/Q values. The **COEFFICIENT_INFO** array returns one element for each channel specified in the **CHANNEL_LIST** parameter. The element order matches the order specified by the **CHANNEL_LIST** parameter. To get the actual I/Q values, scale the unscaled data from an acquisition by multiplying it by the gain value of the appropriate **COEFFICIENT_INFO** element then adding the offset from the same element. + + ---- + **Note** + The coefficients are calculated by NI-RFSA for the current configuration of the device, so they are only valid for acquisitions obtained with the same device configuration. + + ---- + + To get the required size of the array, call this method with **ARRAY_SIZE** set to 0 and NULL for the **COEFFICIENT_INFO** array. This method returns the required size in the **NUMBER_OF_COEFFICIENT_SETS** parameter. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].get_scaling_coefficients` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.get_scaling_coefficients` + + Returns: + coefficient_info (list of CoefficientInfo): Specifies the array for storing the coefficient info. + + - **offset** is the number that should be added to the data from a peer-to-peer stream after the gain has been applied if you want to scale unscaled data. + - **gain** returns the multiplier that you should use to scale data obtained from a peer-to-peer stream. + + ''' + coefficient_info = self._interpreter.get_scaling_coefficients(self._repeated_capability) + return coefficient_info + + @ivi_synchronized + def load_configurations_from_file(self, file_path): + r'''load_configurations_from_file + + Loads the configurations from the specified file to the NI-RFSA driver session. + + The VI does an implicit reset before loading the configurations from the file. + + **Supported Devices** : PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].load_configurations_from_file` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.load_configurations_from_file` + + Args: + file_path (str): Specifies the absolute path of the file from which the NI-RFSA loads the configurations. + + ''' + self._interpreter.load_configurations_from_file(self._repeated_capability, file_path) + + def lock(self): + '''lock + + Obtains a multithread lock on the device session. Before doing so, the + software waits until all other execution threads release their locks + on the device session. + + Other threads may have obtained a lock on this session for the + following reasons: + + - The application called the lock method. + - A call to NI-RFSA locked the session. + - After a call to the lock method returns + successfully, no other threads can access the device session until + you call the unlock method or exit out of the with block when using + lock context manager. + - Use the lock method and the + unlock method around a sequence of calls to + instrument driver methods if you require that the device retain its + settings through the end of the sequence. + + You can safely make nested calls to the lock method + within the same thread. To completely unlock the session, you must + balance each call to the lock method with a call to + the unlock method. + + Returns: + lock (context manager): When used in a with statement, nirfsa.Session.lock acts as + a context manager and unlock will be called when the with block is exited + ''' + self._interpreter.lock() # We do not call this in the context manager so that this function can + # act standalone as well and let the client call unlock() explicitly. If they do use the context manager, + # that will handle the unlock for them + return _Lock(self) + + @ivi_synchronized + def _read_iq_single_record_complex_f64(self, iq_data_array, timeout=hightime.timedelta(seconds=10.0)): + r'''_read_iq_single_record_complex_f64 + + Initiates an acquisition and fetches a single I/Q data record. + + Do not use this method if you have configured the device to continuously acquire data samples or to acquire multiple records. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `None (Trigger Type) `_ + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._read_iq_single_record_complex_f64` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._read_iq_single_record_complex_f64` + + Args: + iq_data_array (numpy.array(dtype=numpy.complex128)): Returns the acquired waveform. Allocate an NIComplexNumber array at least as large as the number of samples configured in the ConfigureNumberOfSamples method. + + timeout (hightime.timedelta, datetime.timedelta, or float in seconds): Specifies in seconds the time allotted for the method to complete before returning a timeout error. A value of specifies the method waits until all data is available. + + + Returns: + wfm_info (WaveformInfo): Contains the absolute and relative timestamps for the operation, the time interval (dt), and the actual number of samples read. + + The following list provides more information about each of these properties: + + - **absolute timestamp** Returns the timestamp, in seconds, of the first fetched sample that is comparable between records and acquisitions. + + ---- + + The value of the absolute timestamp returned is always 0 for the PXIe-5644/5645/5646, PXIe-5668, and PXIe-5820/5830/5831/5832/5840/5841/5842/5860. + + ---- + + - **relative timestamp** Returns a timestamp that corresponds to the difference, in seconds, between the first sample returned and the Reference Trigger location. The timestamp is zero if the Reference Trigger has not occurred. + + ---- + + + The value of the relative timestamp returned is always 0 for the PXIe-5644/5645/5646. + + ---- + + - **dt** Returns the time interval between data points in the acquired signal. The I/Q data sample rate is the reciprocal of this value. + - **actual samples read** Returns an integer representing the number of samples in the waveform. + - **offset** Returns the offset to scale data, (*b*), in *mx* + *b* form. + - **gain** Returns the gain to scale data, (*m*), in *mx* + *b* form. + + ''' + import numpy + + if type(iq_data_array) is not numpy.ndarray: + raise TypeError('iq_data_array must be {0}, is {1}'.format(numpy.ndarray, type(iq_data_array))) + if numpy.isfortran(iq_data_array) is True: + raise TypeError('iq_data_array must be in C-order') + if iq_data_array.dtype is not numpy.dtype('complex128'): + raise TypeError('iq_data_array must be numpy.ndarray of dtype=complex128, is ' + str(iq_data_array.dtype)) + timeout = _converters.convert_timedelta_to_seconds_real64(timeout) + wfm_info = self._interpreter.read_iq_single_record_complex_f64(self._repeated_capability, iq_data_array, timeout) + return wfm_info + + def read_iq_single_record_into(self, iq_data_array, timeout=hightime.timedelta(seconds=10.0)): + '''read_iq_single_record + + Initiates an acquisition and fetches a single I/Q data record. + + Do not use this method if you have configured the device to continuously acquire data samples or to acquire multiple records. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `None (Trigger Type) `_ + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].read_iq_single_record` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.read_iq_single_record` + + Args: + iq_data_array (numpy array of numpy.complex64, numpy array of numpy.complex128 or interleaved complex data in the form of numpy array of numpy.int16): Returns the acquired waveform. Allocate an NIComplexNumber array at least as large as the number of samples configured in the ConfigureNumberOfSamples method. + + timeout (hightime.timedelta, datetime.timedelta, or float in seconds): Specifies in seconds the time allotted for the method to complete before returning a timeout error. A value of specifies the method waits until all data is available. + + + Returns: + wfm_info (WaveformInfo): Contains the absolute and relative timestamps for the operation, the time interval (dt), and the actual number of samples read. + + The following list provides more information about each of these properties: + + - **absolute timestamp** Returns the timestamp, in seconds, of the first fetched sample that is comparable between records and acquisitions. + + ---- + + The value of the absolute timestamp returned is always 0 for the PXIe-5644/5645/5646, PXIe-5668, and PXIe-5820/5830/5831/5832/5840/5841/5842/5860. + + ---- + + - **relative timestamp** Returns a timestamp that corresponds to the difference, in seconds, between the first sample returned and the Reference Trigger location. The timestamp is zero if the Reference Trigger has not occurred. + + ---- + + + The value of the relative timestamp returned is always 0 for the PXIe-5644/5645/5646. + + ---- + + - **dt** Returns the time interval between data points in the acquired signal. The I/Q data sample rate is the reciprocal of this value. + - **actual samples read** Returns an integer representing the number of samples in the waveform. + - **offset** Returns the offset to scale data, (*b*), in *mx* + *b* form. + - **gain** Returns the gain to scale data, (*m*), in *mx* + *b* form. + + ''' + import numpy + if str(type(iq_data_array)).find("'numpy.ndarray'") != -1: + if iq_data_array.dtype != numpy.complex128: + raise TypeError("Unsupported dtype. Is {}, expected {}".format(iq_data_array.dtype, numpy.complex128)) + + expected_buffer_size = self.number_of_samples + if len(iq_data_array) < expected_buffer_size: + try: + iq_data_array.resize(expected_buffer_size, refcheck=False) + except (MemoryError, ValueError) as e: + raise type(e)( + "Failed to resize iq_data_array from {} to {}: {}".format( + len(iq_data_array), expected_buffer_size, e + ) + ) from e + assert len(iq_data_array) == expected_buffer_size, "iq_data_array length must match requested number_of_samples after resize" + + wfm_info = self._read_iq_single_record_complex_f64(iq_data_array, timeout) + else: + raise TypeError("Unsupported datatype. Expected numpy array of {}".format(numpy.complex128)) + + mv = memoryview(iq_data_array) + + wfm_info.samples = mv[0:self.number_of_samples] + + return wfm_info + + def read_power_spectrum_into(self, power_spectrum_data_array, data_array_size=None, timeout=hightime.timedelta(seconds=10.0)): + '''read_power_spectrum + + Initiates a spectrum acquisition and returns power spectrum data. + + ---- + **Note** + Under certain configurations, negative infinity is returned from this VI. If the Reference Level is very high and if the Signal Bandwidth is comparatively less, the ADC returns zero, which equates to negative infinity in dBm. This is expected behavior. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].read_power_spectrum` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.read_power_spectrum` + + Args: + power_spectrum_data_array (numpy.array of numpy.float64 or numpy.array of numpy.float32): Specifies a pre-allocated numpy array to be filled with power spectrum data. The dtype of this array determines the data format: numpy.float64 or numpy.float32. Allocate an array at least as large as the number of spectral lines returned by the get_number_of_spectral_lines method. + + data_array_size (int): Specifies the expected number of spectral lines. If None, falls back to self.number_of_spectral_lines. + + timeout (hightime.timedelta, datetime.timedelta, or float in seconds): Specifies the time, in seconds, allotted for the method to complete before returning a timeout error. A value of specifies the method waits until all data is available. + + ''' + import numpy + if str(type(power_spectrum_data_array)).find("'numpy.ndarray'") != -1: + expected_buffer_size = self.number_of_spectral_lines + + if len(power_spectrum_data_array) < expected_buffer_size: + try: + power_spectrum_data_array.resize(expected_buffer_size, refcheck=False) + except (MemoryError, ValueError) as e: + raise type(e)( + "Failed to resize power_spectrum_data_array from {} to {}: {}".format( + len(power_spectrum_data_array), expected_buffer_size, e + ) + ) from e + assert len(power_spectrum_data_array) == expected_buffer_size, "power_spectrum_data_array length must match number_of_spectral_lines after resize" + + if power_spectrum_data_array.dtype == numpy.float64: + spectrum_info = self._read_power_spectrum_f64(power_spectrum_data_array, timeout) + elif power_spectrum_data_array.dtype == numpy.float32: + spectrum_info = self._read_power_spectrum_f32(power_spectrum_data_array, timeout) + else: + raise TypeError("Unsupported dtype. Is {}, expected {} or {}".format(power_spectrum_data_array.dtype, numpy.float64, numpy.float32)) + else: + raise TypeError("Unsupported datatype. Expected numpy array of {} or {}".format(numpy.float64, numpy.float32)) + + mv = memoryview(power_spectrum_data_array) + + spectrum_info_type._populate_samples_info(spectrum_info, mv) + + return spectrum_info + + @ivi_synchronized + def _read_power_spectrum_f32(self, power_spectrum_data_array, timeout=hightime.timedelta(seconds=10.0)): + r'''_read_power_spectrum_f32 + + Initiates a spectrum acquisition and returns power spectrum data. + + ---- + **Note** + Under certain configurations, negative infinity is returned from this VI. If the Reference Level is very high and if the Signal Bandwidth is comparatively less, the ADC returns zero, which equates to negative infinity in dBm. This is expected behavior. + + ---- + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._read_power_spectrum_f32` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._read_power_spectrum_f32` + + Args: + power_spectrum_data_array (list of float): Returns power spectrum data. Allocate an array as large as **DATA_ARRAY_SIZE**. + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + timeout (hightime.timedelta, datetime.timedelta, or float in seconds): Specifies the time, in seconds, allotted for the method to complete before returning a timeout error. A value of specifies the method waits until all data is available. + + + Returns: + spectrum_info (SpectrumInfo): Returns additional information about the **POWER_SPECTRUM_DATA** array. This information includes the frequency, in hertz (Hz), corresponding to the first element in the array, the frequency increment, in Hz, between adjacent array elements, and the number of spectral lines the method returned. + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + ''' + timeout = _converters.convert_timedelta_to_seconds_real64(timeout) + spectrum_info = self._interpreter.read_power_spectrum_f32(self._repeated_capability, timeout, power_spectrum_data_array) + return spectrum_info + + @ivi_synchronized + def _read_power_spectrum_f64(self, power_spectrum_data_array, timeout=hightime.timedelta(seconds=10.0)): + r'''_read_power_spectrum_f64 + + Initiates a spectrum acquisition and returns power spectrum data. + + ---- + **Note** + Under certain configurations, negative infinity is returned from this VI. If the Reference Level is very high and if the Signal Bandwidth is comparatively less, the ADC returns zero, which equates to negative infinity in dBm. This is expected behavior. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._read_power_spectrum_f64` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._read_power_spectrum_f64` + + Args: + power_spectrum_data_array (list of float): Specifies a pre-allocated numpy array to be filled with power spectrum data. Allocate an array at least as large as the number of spectral lines returned by the get_number_of_spectral_lines method. + + timeout (hightime.timedelta, datetime.timedelta, or float in seconds): Specifies the time, in seconds, allotted for the method to complete before returning a timeout error. A value of specifies the method waits until all data is available. + + + Returns: + spectrum_info (SpectrumInfo): Returns additional information about the **POWER_SPECTRUM_DATA** array. This information includes the frequency, in hertz (Hz), corresponding to the first element in the array, the frequency increment, in Hz, between adjacent array elements, and the number of spectral lines the method returned. + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + ''' + timeout = _converters.convert_timedelta_to_seconds_real64(timeout) + spectrum_info = self._interpreter.read_power_spectrum_f64(self._repeated_capability, timeout, power_spectrum_data_array) + return spectrum_info + + @ivi_synchronized + def save_configurations_to_file(self, file_path): + r'''save_configurations_to_file + + Saves the configurations of the session to the specified file. + + **Supported Devices** : PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].save_configurations_to_file` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.save_configurations_to_file` + + Args: + file_path (str): Specifies the absolute path of the file to which the NI-RFSA saves the configurations. + + ''' + self._interpreter.save_configurations_to_file(self._repeated_capability, file_path) + + @ivi_synchronized + def _set_attribute_vi_boolean(self, attribute_id, value): + r'''_set_attribute_vi_boolean + + Sets the value of a ViBoolean property. + + Use this low-level method to set the values of inherent IVI properties and instrument-specific properties. + + NI-RFSA contains high-level methods that set most of the instrument properties. NI recommends you use the high-level methods as much as possible. High-level methods handle order dependencies and multithread locking for you. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._set_attribute_vi_boolean` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._set_attribute_vi_boolean` + + Args: + attribute_id (int): Pass the ID of a property. + + value (bool): Pass the value to which you want to set the property. + + ---- + + Some of the values might not be valid depending on the current state of the instrument session. + + ---- + + ''' + self._interpreter.set_attribute_vi_boolean(self._repeated_capability, attribute_id, value) + + @ivi_synchronized + def _set_attribute_vi_int32(self, attribute_id, value): + r'''_set_attribute_vi_int32 + + Sets the value of a ViInt32 property. + + Use this low-level method to set the values of inherent IVI properties and instrument-specific properties. + + NI-RFSA contains high-level methods that set most of the instrument properties. NI recommends you use the high-level methods as much as possible. High-level methods handle order dependencies and multithread locking for you. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._set_attribute_vi_int32` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._set_attribute_vi_int32` + + Args: + attribute_id (int): Pass the ID of a property. + + value (int): Pass the value to which you want to set the property. + + ---- + + Some of the values might not be valid depending on the current state of the instrument session. + + ---- + + ''' + self._interpreter.set_attribute_vi_int32(self._repeated_capability, attribute_id, value) + + @ivi_synchronized + def _set_attribute_vi_int64(self, attribute_id, value): + r'''_set_attribute_vi_int64 + + Sets the value of a ViInt64 property. + + Use this low-level method to set the values of inherent IVI properties and instrument-specific properties. + + NI-RFSA contains high-level methods that set most of the instrument properties. NI recommends you use the high-level methods as much as possible. High-level methods handle order dependencies and multithread locking for you. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._set_attribute_vi_int64` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._set_attribute_vi_int64` + + Args: + attribute_id (int): Pass the ID of a property. + + value (int): Pass the value to which you want to set the property. + + ---- + + Some of the values might not be valid depending on the current state of the instrument session. + + ---- + + ''' + self._interpreter.set_attribute_vi_int64(self._repeated_capability, attribute_id, value) + + @ivi_synchronized + def _set_attribute_vi_real64(self, attribute_id, value): + r'''_set_attribute_vi_real64 + + Sets the value of a ViReal64 property. + + Use this low-level method to set the values of inherent IVI properties, and instrument-specific properties. + + NI-RFSA contains high-level methods that set most of the instrument properties. NI recommends you use the high-level methods as much as possible. High-level methods handle order dependencies and multithread-locking for you. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._set_attribute_vi_real64` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._set_attribute_vi_real64` + + Args: + attribute_id (int): Pass the ID of a property. + + value (float): Pass the value to which you want to set the property. + + ---- + + Some of the values might not be valid depending on the current state of the instrument session. + + ---- + + ''' + self._interpreter.set_attribute_vi_real64(self._repeated_capability, attribute_id, value) + + @ivi_synchronized + def _set_attribute_vi_session(self, attribute_id): + r'''_set_attribute_vi_session + + Sets the value of a ViSession property. + + Use this low-level method to set the values of inherent IVI properties and instrument-specific properties. + + NI-RFSA contains high-level methods that set most of the instrument properties. NI recommends you use the high-level methods as much as possible. High-level methods handle order dependencies and multithread locking for you. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._set_attribute_vi_session` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._set_attribute_vi_session` + + Args: + attribute_id (int): Pass the ID of a property. + + ''' + self._interpreter.set_attribute_vi_session(self._repeated_capability, attribute_id) + + @ivi_synchronized + def _set_attribute_vi_string(self, attribute_id, value): + r'''_set_attribute_vi_string + + Sets the value of a ViString property. + + Use this low-level method to set the values of inherent IVI properties and instrument-specific properties. + + NI-RFSA contains high-level methods that set most of the instrument properties. NI recommends you use the high-level methods as much as possible. High-level methods handle order dependencies and multithread locking for you. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Tip: + This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ]._set_attribute_vi_string` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session._set_attribute_vi_string` + + Args: + attribute_id (int): Pass the ID of a property. + + value (str): Pass the value to which you want to set the property. + + ---- + + Some of the values might not be valid depending on the current state of the instrument session. + + ---- + + ''' + self._interpreter.set_attribute_vi_string(self._repeated_capability, attribute_id, value) + + def unlock(self): + '''unlock + + Releases a lock that you acquired on an device session using + lock. Refer to lock for additional + information on session locks. + ''' + self._interpreter.unlock() + + +class Session(_SessionBase): + '''An NI-RFSA session to the NI-RFSA driver''' + + def __init__(self, resource_name, id_query=False, reset_device=False, options={}): + r'''An NI-RFSA session to the NI-RFSA driver + + Creates a new session for the device. + + This method sets the initial value of certain properties and sends initialization commands to reset all hardware modules to a known state necessary for NI-RFSA operation. + + To create a new session, pass the downconverter resource name for the RF vector signal analyzer to the **resource name** parameter. + + You can access the device session this VI creates using the NI-RFSA Soft Front Panel (SFP). Accessing the device session with the SFP can help you debug your code. Refer to `Debugging Your Application Using SFP Session Access `_ for more information about accessing your session with the SFP. + + ---- + **Note** + Before initializing your device, you must first associate the modules that comprise your device in MAX. After associating the modules, pass the resource name of the device to this method to initialize all the modules. Refer to `Associating NI-RFSA Modules `_ for information about MAX association. + + ---- + + ---- + **Note** + For multichannel devices such as the PXIe-5860, the resource name must include the channel number to use. The channel number is specified by appending *ChannelNumber* to the device name, where *ChannelNumber* is the channel number (0, 1, etc.). For example, if the device name is PXI1Slot2 and you want to use channel 0, use the resource name PXI1Slot2/0. + + ---- + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Driver Setup Options `_ + + Args: + resource_name (str): Specifies the resource name of the device to initialize. + + For NI-RFSA devices, the syntax is the device name specified in MAX. The typical default name for your device in MAX is PXI1Slot2. You can rename your device by right-clicking the name in MAX, selecting **Rename** from the drop-down menu, and entering a new name. You can also pass in the name of an IVI logical name configured with the IVI Configuration utility. For additional information, refer to the **Installed Devices IVI** topic of the *Measurement & Automation Explorer Help*. + + Device names are not case-sensitive. However, IVI logical names are case-sensitive. If you use an IVI logical name, verify the name is identical to the name shown in the IVI Configuration Utility. + + id_query (bool): Specifies whether you want NI-RFSA to perform an ID query. + + **Defined Values** : + + +--------------------------+ + | Description | + +==========================+ + | Perform ID query. | + +--------------------------+ + | Do not perform ID query. | + +--------------------------+ + + reset_device (bool): Specifies whether the NI-RFSA device is reset during the initialization procedure. + + **Defined Values** : + + +----------------------+ + | Description | + +======================+ + | Reset the device. | + +----------------------+ + | Do not reset device. | + +----------------------+ + + options (dict): Specifies the initial value of certain properties for the session. The + syntax for **options** is a dictionary of properties with an assigned + value. For example: + + { 'simulate': False } + + You do not have to specify a value for all the properties. If you do not + specify a value for a property, the default value is used. + + Advanced Example: + { 'simulate': True, 'driver_setup': { 'Model': '', 'BoardType': '' } } + + +-------------------------+---------+ + | Property | Default | + +=========================+=========+ + | range_check | True | + +-------------------------+---------+ + | query_instrument_status | False | + +-------------------------+---------+ + | cache | True | + +-------------------------+---------+ + | simulate | False | + +-------------------------+---------+ + | record_value_coersions | False | + +-------------------------+---------+ + | driver_setup | {} | + +-------------------------+---------+ + + + Returns: + new_vi (int): Identifies your instrument session. + + ''' + interpreter = _library_interpreter.LibraryInterpreter(encoding='windows-1251') + + # Initialize the superclass with default values first, populate them later + super(Session, self).__init__( + repeated_capability_list=[], + interpreter=interpreter, + freeze_it=False, + all_channels_in_session=None + ) + options = _converters.convert_init_with_options_dictionary(options) + + # Call specified init function + # Note that _interpreter default-initializes the session handle in its constructor, so that + # if _init_with_options fails, the error handler can reference it. + # And then here, once _init_with_options succeeds, we call set_session_handle + # with the actual session handle. + self._interpreter.set_session_handle(self._init_with_options(resource_name, id_query, reset_device, options)) + + self.tclk = nitclk.SessionReference(self._interpreter.get_session_handle()) + + # Store the parameter list for later printing in __repr__ + param_list = [] + param_list.append("resource_name=" + pp.pformat(resource_name)) + param_list.append("id_query=" + pp.pformat(id_query)) + param_list.append("reset_device=" + pp.pformat(reset_device)) + param_list.append("options=" + pp.pformat(options)) + self._param_list = ', '.join(param_list) + + # Store the list of channels in the Session which is needed by some nimi-python modules. + # Use try/except because not all the modules support channels. + # self.get_channel_names() and self.channel_count can only be called after the session + # handle is set + try: + self._all_channels_in_session = self.get_channel_names(range(self.channel_count)) + except AttributeError: + self._all_channels_in_session = None + + # Finally, set _is_frozen to True which is used to prevent clients from accidentally adding + # members when trying to set a property with a typo. + self._is_frozen = True + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.close() + + def initiate(self): + '''initiate + + Commits settings to hardware, waits for hardware settling, and starts an acquisition. + + You can use this method in conjunction with one of the niRFSA fetch I/Q methods to retrieve acquired I/Q data, or you can use the read IQ single record complex F64 method to both initiate the acquisition and retrieve I/Q data at one time. + + ---- + **Note** + If you are using external digitizer mode, this method commits settings and waits for settling, but it does not start an acquisition. Notice that using the commit method on its own commits settings to hardware, but the device does not wait for hardware settling. + + ---- + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `None (Trigger Type) `_ + + `RF List Mode `_ + + `NI RF Vector Signal Analyzer State Diagram `_ + + Note: + This method will return a Python context manager that will initiate on entering and abort on exit. + ''' + return _Acquisition(self) + + def close(self): + '''close + + Closes the session to the device. + + If you close a session that has Soft Front Panel (SFP) session access enabled, any application connected to the shared device session is no longer usable. Refer to `Debugging Your Application Using SFP Session Access `_ for more information about using SFP session access. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Note: + This method is not needed when using the session context manager + ''' + try: + self._close() + except errors.DriverError: + self._interpreter.set_session_handle() + raise + self._interpreter.set_session_handle() + + ''' These are code-generated ''' + + @ivi_synchronized + def abort(self): + r'''abort + + Stops an acquisition previously started with the _initiate method or the read_power_spectrum method. + + You can also use the abort method to stop a self-calibration. Calling this method is optional, unless you want to stop an acquisition before it is complete or you are continuously acquiring data. + + You can stop the following kinds of acquisitions: + + - Triggered spectrum acquisitions that have not yet been triggered + - Multispan acquisitions in progress + - Average spectrum acquisitions in progress + - Single-record spectrum acquisitions in progress + - Streaming in progress + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + self._interpreter.abort() + + @ivi_synchronized + def change_external_calibration_password(self, old_password, new_password): + r'''change_external_calibration_password + + Changes the password that is required to initialize an external calibration session. + + **Supported Devices**: PXIe-5601/5603/5605/5606, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Args: + old_password (str): Specifies the old (current) external calibration password. + + The maximum length of the password varies by device. + + new_password (str): Specifies the new (desired) external calibration password. + + The maximum length of the password varies by device. + + ''' + self._interpreter.change_external_calibration_password(old_password, new_password) + + @ivi_synchronized + def check_acquisition_status(self): + r'''check_acquisition_status + + Checks the status of the acquisition. + + Use this method to check for any errors that may occur during signal acquisition or to check whether the device has completed the acquisition operation. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `NI RF Vector Signal Analyzer State Diagram `_ + + Returns: + is_done (bool): Returns signal acquisition status. + + |Value |Description | + |:---------|:------------------------------------| + | True | Signal acquisition is complete. | + | False | Signal acquisition is not complete. | + + ''' + is_done = self._interpreter.check_acquisition_status() + return is_done + + @ivi_synchronized + def clear_self_calibrate_range(self): + r'''clear_self_calibrate_range + + Clears the data obtained from the self_calibrate_range method. + + **Supported Devices**: PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842 + ''' + self._interpreter.clear_self_calibrate_range() + + @ivi_synchronized + def commit(self): + r'''commit + + Commits settings to hardware. + + Calling this method is optional. Settings are automatically committed to hardware when you call the _initiate method, the read IQ single record complex F64 method, or the read_power_spectrum method. + + ---- + **Note** + This method does not wait for settling time, unlike the _initiate method. + + ---- + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `NI RF Vector Signal Analyzer State Diagram `_ + ''' + self._interpreter.commit() + + @ivi_synchronized + def configure_deembedding_table_interpolation_linear(self, port, table_name, format): + r'''configure_deembedding_table_interpolation_linear + + Selects the linear interpolation method. + + If the carrier frequency does not match a row in the de-embedding table, NI-RFSA performs a linear interpolation based on the entries in the de-embedding table to determine the parameters to use for de-embedding. + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + Args: + port (str): Specifies the name of the port. The only valid value for the PXIe-5840/5841/5842/5860 is "" (empty string). + + table_name (str): Specifies the name of the table. + + format (enums.LinearInterpolationFormat): Specifies the format of parameters to interpolate. **Defined Values** : + + +--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +==================================================+=========================================================================================================================================+ + | LinearInterpolationFormat.REAL_AND_IMAGINARY | Results in a linear interpolation of the real portion of the complex number and a separate linear interpolation of the complex portion. | + +--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + | LinearInterpolationFormat.MAGNITUDE_AND_PHASE | Results in a linear interpolation of the magnitude and a separate linear interpolation of the phase. | + +--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + | LinearInterpolationFormat.MAGNITUDE_DB_AND_PHASE | Results in a linear interpolation of the magnitude, in decibels, and a separate linear interpolation of the phase. | + +--------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + + ''' + if type(format) is not enums.LinearInterpolationFormat: + raise TypeError('Parameter format must be of type ' + str(enums.LinearInterpolationFormat)) + self._interpreter.configure_deembedding_table_interpolation_linear(port, table_name, format) + + @ivi_synchronized + def configure_deembedding_table_interpolation_nearest(self, port, table_name): + r'''configure_deembedding_table_interpolation_nearest + + Selects the nearest interpolation method. + + NI-RFSA uses the parameters of the table nearest to the carrier frequency for de-embedding. + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + Args: + port (str): Specifies the name of the port. The only valid value for the PXIe-5840/5841/5842/5860 is "" (empty string). + + table_name (str): Specifies the name of the table. + + ''' + self._interpreter.configure_deembedding_table_interpolation_nearest(port, table_name) + + @ivi_synchronized + def configure_deembedding_table_interpolation_spline(self, port, table_name): + r'''configure_deembedding_table_interpolation_spline + + Selects the spline interpolation method. + + If the carrier frequency does not match a row in the de-embedding table, NI-RFSA performs a spline interpolation based on the entries in the de-embedding table to determine the parameters to use for de-embedding. + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + Args: + port (str): Specifies the name of the port. The only valid value for the PXIe-5840/5841/5842/5860 is "" (empty string). + + table_name (str): Specifies the name of the table. + + ''' + self._interpreter.configure_deembedding_table_interpolation_spline(port, table_name) + + @ivi_synchronized + def configure_digital_edge_advance_trigger(self, source, edge): + r'''configure_digital_edge_advance_trigger + + Configures the device to wait for a digital edge Advance Trigger. + + The Advance Trigger indicates where a new record begins. + + ---- + **Note** + This method is not supported if you set the **acquisitionType** parameter to AcquisitionType.SPECTRUM using the ConfigureAcquisitionType method or if you set the acquisition_type property to AcquisitionType.SPECTRUM. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + Args: + source (str): Specifies the source of the digital edge for the Advance Trigger. + + | Value | Description | + |:-------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + | NIRFSA_VAL_PFI0 ('PFI0') | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + | NIRFSA_VAL_PFI1 ('PFI1') | The trigger is received on PFI 1. | + | NIRFSA_VAL_PXI_TRIG0 ('PXI_Trig0') | The trigger is received on PXI trigger line 0. | + | NIRFSA_VAL_PXI_TRIG1 ('PXI_Trig1') | The trigger is received on PXI trigger line 1. | + | NIRFSA_VAL_PXI_TRIG2 ('PXI_Trig2') | The trigger is received on PXI trigger line 2. | + | NIRFSA_VAL_PXI_TRIG3 ('PXI_Trig3') | The trigger is received on PXI trigger line 3. | + | NIRFSA_VAL_PXI_TRIG4 ('PXI_Trig4') | The trigger is received on PXI trigger line 4. | + | NIRFSA_VAL_PXI_TRIG5 ('PXI_Trig5') | The trigger is received on PXI trigger line 5. | + | NIRFSA_VAL_PXI_TRIG6 ('PXI_Trig6') | The trigger is received on PXI trigger line 6. | + | NIRFSA_VAL_PXI_TRIG7 ('PXI_Trig7') | The trigger is received on PXI trigger line 7. | + | NIRFSA_VAL_PXI_STAR ('PXI_STAR') | The trigger is received on the PXI star trigger line. This value is not supported for PXIe-5644/5645/5646 devices. | + | OutputTerm.PXIE_DSTARB ('PXIE_DSTARB') | The trigger is received on the PXIe DStar B trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841/5842/5860. | + | OutputTerm.TIMER_EVENT ('TimerEvent') | The trigger is received from Timer Event on the digitizer. This value is valid on only the PXIe-5820/5840/5841/5842/5860 and for digital edge Advance Triggers on the PXIe-5644/5645/5646 and PXIe-5663E/5665. | + | NIRFSA_VAL_DIO_PFI0 ('PFI0') | The trigger is received on PFI 0 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI1('PFI1') | The trigger is received on PFI 1 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI2 ('PFI2') | The trigger is received on PFI 2 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI3 ('PFI3') | The trigger is received on PFI 3 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI4 ('PFI4') | The trigger is received on PFI 4 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI5 ('PFI5') | The trigger is received on PFI 5 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI6 ('PFI6') | The trigger is received on PFI 6 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI7 ('PFI7') | The trigger is received on PFI 7 of the DIO Terminal. | + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + edge (enums.AdvanceTriggerDigitalEdgeEdge): Specifies the trigger edge to detect. The default value is AdvanceTriggerDigitalEdgeEdge.RISING. + + | Value | Description | + |:------------------------------|:--------------------------------| + | AdvanceTriggerDigitalEdgeEdge.RISING (900) | NI-RFSA detects a rising edge. | + | AdvanceTriggerDigitalEdgeEdge.FALLING (901) | NI-RFSA detects a falling edge. | + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + ''' + if type(edge) is not enums.AdvanceTriggerDigitalEdgeEdge: + raise TypeError('Parameter edge must be of type ' + str(enums.AdvanceTriggerDigitalEdgeEdge)) + self._interpreter.configure_digital_edge_advance_trigger(source, edge) + + @ivi_synchronized + def configure_digital_edge_ref_trigger(self, source, edge, pretrigger_samples=0): + r'''configure_digital_edge_ref_trigger + + Configures the device to wait for a digital edge Reference Trigger to mark a reference point within the record. + + You can use this trigger with the `NI-TClk API `_. + + ---- + **Note** + The PXIe-5644/5645/5646 does not support the NI-TClk API. + + ---- + + ---- + **Note** + This method is not supported if you set the **acquisitionType** parameter to AcquisitionType.SPECTRUM using the ConfigureAcquisitionType method or if you set the acquisition_type property to AcquisitionType.SPECTRUM. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + Args: + source (str): Specifies the source of the digital edge for the Reference trigger. + + |Value |Description | + |:-------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + | NIRFSA_VAL_PFI0 ('PFI0') | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + | NIRFSA_VAL_PFI1 ('PFI1') | The trigger is received on PFI 1. | + | NIRFSA_VAL_PXI_TRIG0 ('PXI_Trig0') | The trigger is received on PXI trigger line 0. | + | NIRFSA_VAL_PXI_TRIG1 ('PXI_Trig1') | The trigger is received on PXI trigger line 1. | + | NIRFSA_VAL_PXI_TRIG2 ('PXI_Trig2') | The trigger is received on PXI trigger line 2. | + | NIRFSA_VAL_PXI_TRIG3 ('PXI_Trig3') | The trigger is received on PXI trigger line 3. | + | NIRFSA_VAL_PXI_TRIG4 ('PXI_Trig4') | The trigger is received on PXI trigger line 4. | + | NIRFSA_VAL_PXI_TRIG5 ('PXI_Trig5') | The trigger is received on PXI trigger line 5. | + | NIRFSA_VAL_PXI_TRIG6 ('PXI_Trig6') | The trigger is received on PXI trigger line 6. | + | NIRFSA_VAL_PXI_TRIG7 ('PXI_Trig7') | The trigger is received on PXI trigger line 7. | + | NIRFSA_VAL_PXI_STAR ('PXI_STAR') | The trigger is received on the PXI star trigger line. This value is not supported for PXIe-5644/5645/5646 devices. | + | OutputTerm.PXIE_DSTARB ('PXIE_DSTARB') | The trigger is received on the PXIe DStar B trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841/5842/5860. | + | OutputTerm.TIMER_EVENT ('TimerEvent') | The trigger is received from Timer Event on the digitizer. This value is valid on only the PXIe-5820/5840/5841/5842/5860 and for digital edge Advance Triggers on the PXIe-5644/5645/5646 and PXIe-5663E/5665. | + | NIRFSA_VAL_DIO_PFI0 ('PFI0') | The trigger is received on PFI 0 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI1('PFI1') | The trigger is received on PFI 1 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI2 ('PFI2') | The trigger is received on PFI 2 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI3 ('PFI3') | The trigger is received on PFI 3 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI4 ('PFI4') | The trigger is received on PFI 4 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI5 ('PFI5') | The trigger is received on PFI 5 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI6 ('PFI6') | The trigger is received on PFI 6 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI7 ('PFI7') | The trigger is received on PFI 7 of the DIO Terminal. | + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + edge (enums.ReferenceTriggerDigitalEdgeEdge): Specifies the trigger edge to detect. The default value is ReferenceTriggerDigitalEdgeEdge.RISING. + + |Value |Description | + |:------------------------------|:--------------------------------| + | ReferenceTriggerDigitalEdgeEdge.RISING (900) | NI-RFSA detects a rising edge. | + | ReferenceTriggerDigitalEdgeEdge.FALLING (901) | NI-RFSA detects a falling edge. | + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + pretrigger_samples (int): Specifies the number of samples to store for each record that was acquired in the time period immediately before the trigger occurred. + + ''' + if type(edge) is not enums.ReferenceTriggerDigitalEdgeEdge: + raise TypeError('Parameter edge must be of type ' + str(enums.ReferenceTriggerDigitalEdgeEdge)) + self._interpreter.configure_digital_edge_ref_trigger(source, edge, pretrigger_samples) + + @ivi_synchronized + def configure_digital_edge_start_trigger(self, source, edge): + r'''configure_digital_edge_start_trigger + + Configures the device to wait for a digital edge Start Trigger at the beginning of the acquisition. + + You can use this trigger with the `NI-TClk API `_. + + ---- + **Note** + The PXIe-5644/5645/5646 does not support the NI-TClk API. + + ---- + + ---- + **Note** + This method is not supported if you set the **acquisitionType** parameter to AcquisitionType.SPECTRUM using the ConfigureAcquisitionType method or if you set the acquisition_type property to AcquisitionType.SPECTRUM. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + Args: + source (str): Specifies the source of the digital edge for the Start Trigger. + + | Value | Description | + |:-------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + | NIRFSA_VAL_PFI0 ('PFI0') | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + | NIRFSA_VAL_PFI1 ('PFI1') | The trigger is received on PFI 1. | + | NIRFSA_VAL_PXI_TRIG0 ('PXI_Trig0') | The trigger is received on PXI trigger line 0. | + | NIRFSA_VAL_PXI_TRIG1 ('PXI_Trig1') | The trigger is received on PXI trigger line 1. | + | NIRFSA_VAL_PXI_TRIG2 ('PXI_Trig2') | The trigger is received on PXI trigger line 2. | + | NIRFSA_VAL_PXI_TRIG3 ('PXI_Trig3') | The trigger is received on PXI trigger line 3. | + | NIRFSA_VAL_PXI_TRIG4 ('PXI_Trig4') | The trigger is received on PXI trigger line 4. | + | NIRFSA_VAL_PXI_TRIG5 ('PXI_Trig5') | The trigger is received on PXI trigger line 5. | + | NIRFSA_VAL_PXI_TRIG6 ('PXI_Trig6') | The trigger is received on PXI trigger line 6. | + | NIRFSA_VAL_PXI_TRIG7 ('PXI_Trig7') | The trigger is received on PXI trigger line 7. | + | NIRFSA_VAL_PXI_STAR ('PXI_STAR') | The trigger is received on the PXI star trigger line. This value is not supported for PXIe-5644/5645/5646 devices. | + | OutputTerm.PXIE_DSTARB ('PXIE_DSTARB') | The trigger is received on the PXIe DStar B trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841/5842/5860. | + | OutputTerm.TIMER_EVENT ('TimerEvent') | The trigger is received from Timer Event on the digitizer. This value is valid on only the PXIe-5820/5840/5841/5842/5860 and for digital edge Advance Triggers on the PXIe-5644/5645/5646 and PXIe-5663E/5665. | + | NIRFSA_VAL_DIO_PFI0 ('PFI1') | The trigger is received on PFI 0 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI1('PFI2') | The trigger is received on PFI 1 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI2 ('PFI3') | The trigger is received on PFI 2 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI3 ('PFI4') | The trigger is received on PFI 3 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI4 ('PFI5') | The trigger is received on PFI 4 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI5 ('PFI6') | The trigger is received on PFI 5 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI6 ('PFI7') | The trigger is received on PFI 6 of the DIO Terminal. | + | NIRFSA_VAL_DIO_PFI7 ('PFI8') | The trigger is received on PFI 7 of the DIO Terminal. | + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + edge (enums.StartTriggerDigitalEdgeEdge): Specifies the trigger edge to detect. The default value is StartTriggerDigitalEdgeEdge.RISING. + + | Value | Description | + |:------------------------------|:--------------------------------| + | StartTriggerDigitalEdgeEdge.RISING (900) | NI-RFSA detects a rising edge. | + | StartTriggerDigitalEdgeEdge.FALLING (901) | NI-RFSA detects a falling edge. | + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + ''' + if type(edge) is not enums.StartTriggerDigitalEdgeEdge: + raise TypeError('Parameter edge must be of type ' + str(enums.StartTriggerDigitalEdgeEdge)) + self._interpreter.configure_digital_edge_start_trigger(source, edge) + + @ivi_synchronized + def configure_iq_power_edge_ref_trigger(self, source, level, slope, pretrigger_samples=0): + r'''configure_iq_power_edge_ref_trigger + + Configures the device to wait for the complex power of the I/Q data to cross the specified threshold to mark a reference point within the record. + + To trigger on burst signals, add a minimum quiet time, configured with the ref_trigger_minimum_quiet_time property, to ensure the trigger does not occur in the middle of a burst if the acquisition starts while a burst is being generated. The quiet time should be set to a value smaller than the time between bursts, but large enough to ignore power changes within a burst. + + You can use this trigger with the `NI-TClk API `_. + + ---- + **Note** + This method is not supported if you set the **acquisitionType** parameter to AcquisitionType.SPECTRUM using the ConfigureAcquisitionType method or if you set the acquisition_type property to AcquisitionType.SPECTRUM. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + Args: + source (str): Specifies the source of the RF signal for the power edge Reference trigger. The only supported value is "0". + + level (float): Specifies the threshold, in dBm, above or below which the device triggers. + + slope (enums.ReferenceTriggerIqPowerEdgeSlope): Specifies whether the device detects a positive or negative slope on the trigger signal. The default value is ReferenceTriggerIqPowerEdgeSlope.RISING. + + | Value | Description | + |:--------------------------------|:-------------------------------------------------| + | ReferenceTriggerIqPowerEdgeSlope.RISING (1000) | NI-RFSA detects a rising edge (positive slope). | + | ReferenceTriggerIqPowerEdgeSlope.FALLING (1001) | NI-RFSA detects a falling edge (negative slope). | + + pretrigger_samples (int): Specifies the number of samples to store for each record that was acquired in the time period immediately before the trigger occurred. + + ''' + if type(slope) is not enums.ReferenceTriggerIqPowerEdgeSlope: + raise TypeError('Parameter slope must be of type ' + str(enums.ReferenceTriggerIqPowerEdgeSlope)) + self._interpreter.configure_iq_power_edge_ref_trigger(source, level, slope, pretrigger_samples) + + @ivi_synchronized + def configure_ref_clock(self, clock_source, ref_clock_rate): + r'''configure_ref_clock + + Configures the NI-RFSA device Reference Clock. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5694, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `PXI-5661 Reference Clock `_ + + `PXIe-5663 Timing Configurations `_ + + `PXIe-5665 Timing Configurations `_ + + `PXIe-5667 Timing Configurations `_ + + `PXIe-5668 Timing Configurations `_ + + `PXIe-5830 Timing Configurations `_ + + `PXIe-5831 Timing Configurations `_ + + Args: + clock_source (enums.ReferenceClockSource): specifies the source of the Reference Clock signal. + | Clock Source | Description | + |-----------------------|-------------| + | **Onboard Clock (default)** | Uses the onboard Reference Clock as the clock source.
**PXIe-5830/5831/5832**-
- PXIe-5830: Connect PXIe-5820 REF IN to PXIe-3621 REF OUT.
- PXIe-5831: Connect PXIe-5820 REF IN to PXIe-3622 REF OUT.
- PXIe-5832: Connect PXIe-5820 REF IN to PXIe-3623 REF OUT.
**PXIe-5831 with PXIe-5653**-
- Connect PXIe-5820 REF IN to PXIe-3622 REF OUT.
- Connect PXIe-5653 REF OUT (10 MHz) to PXIe-3622 REF IN.
**PXIe-5832 with PXIe-5653**-
- Connect PXIe-5820 REF IN to PXIe-3623 REF OUT.
- Connect PXIe-5653 REF OUT (10 MHz) to PXIe-3623 REF IN.
**PXIe-5841 with PXIe-5655**-
- Lock to PXIe-5655 onboard clock. Connect REF OUT on PXIe-5655 to PXIe-5841 REF IN.
**PXIe-5842**-
- Lock to PXIe-5655 onboard clock. Use cables as shown in the Getting Started Guide. | + | **RefIn** | Uses the signal at the front panel REF IN connector.
**PXIe-5830/5831/5832**-
- PXIe-5830: Connect PXIe-5820 REF IN to PXIe-3621 REF OUT; lock external signal to PXIe-3621 REF IN.
- PXIe-5831: Connect PXIe-5820 REF IN to PXIe-3622 REF OUT; lock external signal to PXIe-3622 REF IN.
- PXIe-5832: Connect PXIe-5820 REF IN to PXIe-3623 REF OUT; lock external signal to PXIe-3623 REF IN.
**PXIe-5831 with PXIe-5653**-
- Connect PXIe-5820 REF IN to PXIe-3622 REF OUT.
- Connect PXIe-5653 REF OUT (10 MHz) to PXIe-3622 REF IN.
- Lock external signal to PXIe-5653 REF IN.
**PXIe-5832 with PXIe-5653**-
- Connect PXIe-5820 REF IN to PXIe-3623 REF OUT.
- Connect PXIe-5653 REF OUT (10 MHz) to PXIe-3623 REF IN.
- Lock external signal to PXIe-5653 REF IN.
**PXIe-5841 with PXIe-5655**-
- Lock to signal at REF IN on PXIe-5655. Connect REF OUT on PXIe-5655 to PXIe-5841 REF IN.
**PXIe-5842**-
- Lock to signal at REF IN on PXIe-5655. Use cables as shown in the Getting Started Guide. | + | **PXI Clock** | Uses the PXI_CLK signal present on the PXI backplane. | + | **PXI_ClkMaster** | Valid only for PXIe-5831 with PXIe-5653 and PXIe-5832 with PXIe-5653.
**PXIe-5831 with PXIe-5653**-
- NI-RFSG configures PXIe-5653 to export Reference Clock.
- Configures PXIe-5820 and PXIe-3622 to use PXI_Clk.
- Connect PXIe-5653 REF OUT (10 MHz) to PXI chassis REF IN.
**PXIe-5832 with PXIe-5653**-
- NI-RFSG configures PXIe-5653 to export Reference Clock.
- Configures PXIe-5820 and PXIe-3623 to use PXI_Clk.
- Connect PXIe-5653 REF OUT (10 MHz) to PXI chassis REF IN. | + + ref_clock_rate (float): specifies the Reference Clock rate, in hertz (Hz), of the signal present at the REF IN or CLK IN connector. This parameter is only valid when the **ref clock source** parameter is set to **RefIn**. The default value is Auto (-1.0), which allows NI-RFSG to use the default Reference Clock rate for the device or automatically detect the Reference Clock rate, if supported. Refer to the Reference Clock Rate property for possible values. + + ''' + if type(clock_source) is not enums.ReferenceClockSource: + raise TypeError('Parameter clock_source must be of type ' + str(enums.ReferenceClockSource)) + self._interpreter.configure_ref_clock(clock_source, ref_clock_rate) + + @ivi_synchronized + def configure_software_edge_advance_trigger(self): + r'''configure_software_edge_advance_trigger + + Configures the device to wait for a software Advance Trigger. + + The Advance Trigger indicates where a new record begins. The device waits until you call the send_software_edge_trigger method to assert the trigger. + + ---- + **Note** + This method is not supported if you set the **acquisitionType** parameter to AcquisitionType.SPECTRUM using the ConfigureAcquisitionType method or if you set the acquisition_type property to AcquisitionType.SPECTRUM. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + ''' + self._interpreter.configure_software_edge_advance_trigger() + + @ivi_synchronized + def configure_software_edge_ref_trigger(self, pretrigger_samples=0): + r'''configure_software_edge_ref_trigger + + Configures the device to wait for a software Reference Trigger to mark a reference point within the record. + + The device waits until you call the send_software_edge_trigger method to assert the trigger. + + You can use this trigger with the `NI-TClk API `_. + + ---- + **Note** + The PXIe-5644/5645/5646 does not support the NI-TClk API. + + ---- + + ---- + **Note** + This method is not supported if you set the **acquisitionType** parameter to AcquisitionType.SPECTRUM using the ConfigureAcquisitionType method or if you set the acquisition_type property to AcquisitionType.SPECTRUM. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + Args: + pretrigger_samples (int): Specifies the number of samples to store for each record that was acquired in the time period immediately before the trigger occurred. + + ''' + self._interpreter.configure_software_edge_ref_trigger(pretrigger_samples) + + @ivi_synchronized + def configure_software_edge_start_trigger(self): + r'''configure_software_edge_start_trigger + + Configures the device to wait for a software Start Trigger at the beginning of the acquisition. + + The device waits until you call the send_software_edge_trigger method to assert the trigger. + + You can use this trigger with the `NI-TClk API `_. + + ---- + **Note** + The PXIe-5644/5645/5646 does not support the NI-TClk API. + + ---- + + ---- + **Note** + This method is not supported if you set the **acquisitionType** parameter to AcquisitionType.SPECTRUM using the ConfigureAcquisitionType method or if you set the acquisition_type property to AcquisitionType.SPECTRUM. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + ''' + self._interpreter.configure_software_edge_start_trigger() + + @ivi_synchronized + def _create_deembedding_sparameter_table_array(self, port, table_name, frequencies, sparameter_table, number_of_ports, sparameter_orientation): + r'''_create_deembedding_sparameter_table_array + + Creates an s-parameter de-embedding table for the port from the input data. + + If you only create one table for a port, NI-RFSA automatically selects that table to de-embed the measurement. + + **Supported Devices** : PXIe-5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `De-embedding Overview `_ + + Args: + port (str): Specifies the name of the port. The only valid value for the PXIe-5840/5841/5842/5860 is "" (empty string). + + table_name (str): Specifies the name of the table. The name must be unique for a given port, but not across ports. If you use the same name as an existing table, the table is replaced. + + frequencies (numpy.array(dtype=numpy.float64)): Specifies the frequencies for the SPARAMETER_TABLE rows. Frequencies must be unique and in ascending order. + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + sparameter_table (numpy.array(dtype=numpy.complex128)): Specifies the S-parameters for each frequency. S-parameters for each frequency are placed in the array in the following order: s11, s12, s21, s22. + + sparameter_orientation (enums.SparameterOrientation): Specifies the orientation of the input data relative to the port on the DUT port. + + **Defined Values** : + + +-----------------------------------------+-----------------------------------------------------+ + | Name | Description | + +=========================================+=====================================================+ + | SparameterOrientation.PORT1_TOWARDS_DUT | Port 1 of the S2P is oriented towards the DUT port. | + +-----------------------------------------+-----------------------------------------------------+ + | SparameterOrientation.PORT2_TOWARDS_DUT | Port 2 of the S2P is oriented towards the DUT port. | + +-----------------------------------------+-----------------------------------------------------+ + + ''' + import numpy + + if type(sparameter_orientation) is not enums.SparameterOrientation: + raise TypeError('Parameter sparameter_orientation must be of type ' + str(enums.SparameterOrientation)) + if type(frequencies) is not numpy.ndarray: + raise TypeError('frequencies must be {0}, is {1}'.format(numpy.ndarray, type(frequencies))) + if numpy.isfortran(frequencies) is True: + raise TypeError('frequencies must be in C-order') + if frequencies.dtype is not numpy.dtype('float64'): + raise TypeError('frequencies must be numpy.ndarray of dtype=float64, is ' + str(frequencies.dtype)) + if frequencies.ndim != 1: + raise TypeError('frequencies must be numpy.ndarray of dimension=1, is ' + str(frequencies.ndim)) + if type(sparameter_table) is not numpy.ndarray: + raise TypeError('sparameter_table must be {0}, is {1}'.format(numpy.ndarray, type(sparameter_table))) + if numpy.isfortran(sparameter_table) is True: + raise TypeError('sparameter_table must be in C-order') + if sparameter_table.dtype is not numpy.dtype('complex128'): + raise TypeError('sparameter_table must be numpy.ndarray of dtype=complex128, is ' + str(sparameter_table.dtype)) + if sparameter_table.ndim != 3: + raise TypeError('sparameter_table must be numpy.ndarray of dimension=3, is ' + str(sparameter_table.ndim)) + self._interpreter.create_deembedding_sparameter_table_array(port, table_name, frequencies, sparameter_table, number_of_ports, sparameter_orientation) + + @ivi_synchronized + def create_deembedding_sparameter_table_s2p_file(self, port, table_name, s2p_file_path, sparameter_orientation): + r'''create_deembedding_sparameter_table_s2p_file + + Creates an S-parameter de-embedding table for the port based on the specified S2P file. + + If you only create one table for a port, NI-RFSA automatically selects that table to de-embed the measurement. + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `De-embedding Overview `_ + + `S-parameters `_ + + Args: + port (str): Specifies the name of the port. The only valid value for the PXIe-5840/5841/5842/5860 is "" (empty string). + + table_name (str): Specifies the name of the table. The name must be unique for a given port, but not across ports. If you use the same name as an existing table, the table is replaced. + + s2p_file_path (str): Specifies the path to the S2P file that contains de-embedding information for the specified port. + + sparameter_orientation (enums.SparameterOrientation): Specifies the orientation of the data in the S2P file relative to the port on the DUT port. **Defined Values** : + + +-----------------------------------------+-----------------------------------------------------+ + | Name | Description | + +=========================================+=====================================================+ + | SparameterOrientation.PORT1_TOWARDS_DUT | Port 1 of the S2P is oriented towards the DUT port. | + +-----------------------------------------+-----------------------------------------------------+ + | SparameterOrientation.PORT2_TOWARDS_DUT | Port 2 of the S2P is oriented towards the DUT port. | + +-----------------------------------------+-----------------------------------------------------+ + + ''' + if type(sparameter_orientation) is not enums.SparameterOrientation: + raise TypeError('Parameter sparameter_orientation must be of type ' + str(enums.SparameterOrientation)) + self._interpreter.create_deembedding_sparameter_table_s2p_file(port, table_name, s2p_file_path, sparameter_orientation) + + @ivi_synchronized + def delete_all_deembedding_tables(self): + r'''delete_all_deembedding_tables + + Deletes all configured de-embedding tables for the session. + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + ''' + self._interpreter.delete_all_deembedding_tables() + + @ivi_synchronized + def delete_deembedding_table(self, port, table_name): + r'''delete_deembedding_table + + Deletes the selected de-embedding table for a given port. + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + Args: + port (str): Specifies the name of the port. The only valid value for the PXIe-5840/5841/5842/5860 is "" (empty string). + + table_name (str): Specifies the name of the table. + + ''' + self._interpreter.delete_deembedding_table(port, table_name) + + @ivi_synchronized + def disable_advance_trigger(self): + r'''disable_advance_trigger + + Configures the device to not use an Advance Trigger. + + This method is necessary only if you configured an Advance Trigger in the past and now want to disable it. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + ''' + self._interpreter.disable_advance_trigger() + + @ivi_synchronized + def disable_ref_trigger(self): + r'''disable_ref_trigger + + Configures the device to not wait for a Reference Trigger to mark a reference point within a record. + + This method is necessary only if you previously configured a Reference trigger in the past and now want to disable it. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5668, PXIe-5820/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + ''' + self._interpreter.disable_ref_trigger() + + @ivi_synchronized + def disable_start_trigger(self): + r'''disable_start_trigger + + Configures the device to not wait for a Start Trigger at the beginning of the acquisition. + + This method is necessary only if you previously configured a Start Trigger in the past and now want to disable it. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + ''' + self._interpreter.disable_start_trigger() + + @ivi_synchronized + def enable_session_access(self, enable): + r'''enable_session_access + + Enables or disables SFP session access for the specified instrument. + + SFP session access allows the NI-RFSA Soft Front Panel (SFP) to access a device with an existing open session and can help you debug your code. To enable session access, pass True to the **enabled** parameter. To disable session access, pass False to the **enabled** parameter. + + Refer to `Configuring SFP Session Access using LabWindows/CVI or C `_ for more information about SFP session access. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694, PXIe-5830/5831/5832/5840/5841/5842/5860 + + ---- + **Note** + NI-RFSA does not support NI-TClk when driver session debugging is enabled. + + ---- + + Args: + enable (bool): Enables or disables SFP session access for the specified device. + + | Value | Description | + |:---------|:-------------------------| + | True | Enables session access. | + | False | Disables session access. | + + ''' + self._interpreter.enable_session_access(enable) + + def create_deembedding_sparameter_table_array(self, port, table_name, frequencies, sparameter_table, sparameter_orientation): + '''create_deembedding_sparameter_table_array + + Creates an s-parameter de-embedding table for the port from the input data. + + If you only create one table for a port, NI-RFSA automatically selects that table to de-embed the measurement. + + **Supported Devices** : PXIe-5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `De-embedding Overview`_ + + Args: + port (str): Specifies the name of the port. The only valid value for the PXIe-5840/5841/5842/5860 is "" (empty string). + + table_name (str): Specifies the name of the table. The name must be unique for a given port, but not across ports. If you use the same name as an existing table, the table is replaced. + + frequencies (numpy.array(dtype=numpy.float64)): Specifies the frequencies for the SPARAMETER_TABLE rows. Frequencies must be unique and in ascending order. + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + sparameter_table (numpy.array(dtype=numpy.complex128)): Specifies the S-parameters for each frequency. S-parameters for each frequency are placed in the array in the following order: s11, s12, s21, s22. + + sparameter_orientation (enums.SparameterOrientation): Specifies the orientation of the input data relative to the port on the DUT port. + + **Defined Values** : + + +-----------------------------------------+-----------------------------------------------------+ + | Name | Description | + +=========================================+=====================================================+ + | SparameterOrientation.PORT1_TOWARDS_DUT | Port 1 of the S2P is oriented towards the DUT port. | + +-----------------------------------------+-----------------------------------------------------+ + | SparameterOrientation.PORT2_TOWARDS_DUT | Port 2 of the S2P is oriented towards the DUT port. | + +-----------------------------------------+-----------------------------------------------------+ + + ''' + if (str(type(sparameter_table)).find("'numpy.ndarray'") != -1) or (str(type(frequencies)).find("'numpy.ndarray'") != -1): + if sparameter_table.ndim == 3: + if frequencies.size == sparameter_table.shape[0]: + if sparameter_table.shape[1] == sparameter_table.shape[2]: + number_of_ports = sparameter_table.shape[1] + return self._create_deembedding_sparameter_table_array(port, table_name, frequencies, sparameter_table, number_of_ports, sparameter_orientation) + else: + raise ValueError("Row and column count of sparameter table should be equal. Table row count is {} and column count is {}.".format(sparameter_table.shape[1], sparameter_table.shape[2])) + else: + raise ValueError("Frequencies count does not match the sparameter table count. Frequencies count is {} and sparameter table count is {}.".format(frequencies.size, sparameter_table.shape[0])) + else: + raise ValueError("Unsupported array dimension. Is {}, expected 3".format(sparameter_table.ndim)) + else: + raise TypeError("Unsupported datatype. Expected numpy array.") + + def get_deembedding_sparameters(self): + r'''get_deembedding_sparameters + + Returns the S-parameters used for de-embedding a measurement on the selected port. + + This includes interpolation of the parameters based on the configured carrier frequency. This method returns an empty array if no de-embedding is done. + + If you want to call this method just to get the required buffer size, you can pass 0 for **S-parameter Size** and VI_NULL for the **S-parameters** buffer. + + **Supported Devices** : PXIe-5830/5831/5832/5840/5841/5842/5860 + + Note: The port orientation for the returned S-parameters is normalized to SparameterOrientation.PORT1_TOWARDS_DUT. + + Returns: + sparameters (numpy.array(dtype=numpy.complex128)): Returns an array of S-parameters. The S-parameters are returned in the following order: s11, s12, s21, s22. + + ''' + sparameters = self._interpreter.get_deembedding_sparameters() + return sparameters + + @ivi_synchronized + def _get_ext_cal_last_date_and_time(self): + r'''_get_ext_cal_last_date_and_time + + Returns the date and time of the last successful external calibration. + + The time returned is 24-hour local time, and the date is returned as integer values. For example, if the device was calibrated at 2:30 PM on December 31, 2010, this method returns 14 for the HOUR parameter, 30 for the MINUTE parameter, 12 for the MONTH parameter, 31 for the DAY parameter, and 2010 for the YEAR parameter. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Returns: + year (int): Returns the year of the last external calibration. + + month (int): Returns the month of the last external calibration. + + day (int): Returns the day of the last external calibration. + + hour (int): Returns the hour of the last external calibration. + + minute (int): Returns the minute of the last external calibration. + + ''' + year, month, day, hour, minute = self._interpreter.get_ext_cal_last_date_and_time() + return year, month, day, hour, minute + + @ivi_synchronized + def get_ext_cal_recommended_interval(self): + r'''get_ext_cal_recommended_interval + + Returns the recommended interval between external calibrations, in months. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Returns: + months (hightime.timedelta, datetime.timedelta, or int in months): Returns the recommended maximum interval between external calibrations, in months. + + ''' + months = self._interpreter.get_ext_cal_recommended_interval() + return _converters.convert_month_to_timedelta(months) + + @ivi_synchronized + def get_ext_cal_last_date_and_time(self): + '''get_ext_cal_last_date_and_time + + Returns the date and time of the last successful external calibration. + + The time returned is 24-hour (military) local time; for example, if the device was calibrated at 2:30PM, this method returns + + 14 for the hours parameter and + + 30 for the minutes parameter. + + **Supported Devices** : PXI-5610, PXIe-5611, PXIe-5644/5645/5646, PXI/PXIe-5650/5651/5652, PXIe-5653/5654/5654, PXI-5670/5671, PXIe-5672/5673/5673E, PXIe-5696, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Returns: + last_cal_datetime (hightime.datetime): + + ''' + year, month, day, hour, minute = self._get_ext_cal_last_date_and_time() + return hightime.datetime(year, month, day, hour, minute) + + @ivi_synchronized + def get_self_cal_last_date_and_time(self, self_calibration_step): + '''get_self_cal_last_date_and_time + + Returns the date and time of the last successful self-calibration. + + The time returned is 24-hour local time. For example, if the device was calibrated at 2:30PM, this method returns + + 14 for the hours parameter and + + 30 for the minutes parameter. + + **Supported Devices** : PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Args: + self_calibration_step (enums.SelfCalibrationStep): Specifies the self-calibration step to query for the last successful self-calibration date and time data. + + + Returns: + last_cal_datetime (hightime.datetime): + + ''' + year, month, day, hour, minute = self._get_self_cal_last_date_and_time(self_calibration_step) + return hightime.datetime(year, month, day, hour, minute) + + @ivi_synchronized + def _get_self_cal_last_date_and_time(self, self_calibration_step): + r'''_get_self_cal_last_date_and_time + + Returns the date and time of the last successful self-calibration. + + The time returned is 24-hour local time, and the date is returned as integer values. For example, if the device was calibrated at 2:30 PM on December 31, 2010, this method returns 14 for the HOUR parameter, 30 for the MINUTE parameter, 12 for the MONTH parameter, 31 for the DAY parameter, and 2010 for the YEAR parameter. + + ---- + **Note** + For the PXIe-5644/5645/5646, you must select NIRFSA_VAL_SELF_CAL_IMAGE_SUPPRESSION for the **SELF_CALIBRATION_STEP** parameter. + + ---- + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + Args: + self_calibration_step (Bitwise combination of enums.SelfCalibrationStep flags): Specifies the self-calibration step to query for the last successful self-calibration date and time data. + + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | Name | Description | + +===========================================+=================================================================================================+ + | SelfCalibrationStep.PRESELECTOR_ALIGNMENT | Calls for preselector alignment. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.GAIN_REFERENCE | Measures the changes in gain since the last external calibration was run. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.IF_FLATNESS | Measures the IF response of the entire system for each of the supported IF filters | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.DIGITIZER_SELF_CAL | Calls for digitizer self-calibration, if the digitizer is associated with the RF downconverter. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.LO_SELF_CAL | Calls for LO self-calibration, if the LO source module is associated with the RF downconverter. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.AMPLITUDE_ACCURACY | Selects the Amplitude Accuracy self-calibration step. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.RESIDUAL_LO_POWER | Selects the Residual LO Power self-calibration step. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.IMAGE_SUPPRESSION | Selects the Image Suppression self-calibration step. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.SYNTHESIZER_ALIGNMENT | Selects the Synthesizer Alignment self-calibration step. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.DC_OFFSET | Selects the DC Offset self-calibration step. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + + + Returns: + year (int): Returns the year of the last external calibration. + + month (int): Returns the month of the last external calibration. + + day (int): Returns the day of the last external calibration. + + hour (int): Returns the year of the last external calibration. It is expressed as an integer. + + minute (int): Returns the minute of the last external calibration. + + ''' + if type(self_calibration_step) is not enums.SelfCalibrationStep: + raise TypeError('Parameter self_calibration_step must be of type ' + str(enums.SelfCalibrationStep)) + year, month, day, hour, minute = self._interpreter.get_self_cal_last_date_and_time(self_calibration_step) + return year, month, day, hour, minute + + @ivi_synchronized + def get_self_calibration_temperature(self, self_calibration_step): + r'''get_self_calibration_temperature + + Returns the temperature, in degrees Celsius, at the last successful self-calibration. + + ---- + **Note** + For the PXIe-5644/5645/5646, you must select NIRFSA_VAL_SELF_CAL_IMAGE_SUPPRESSION for the **selfCalibrationStep** parameter. + + ---- + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831 (IF only)/5832 (IF only)/5840/5841/5842/5860 + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + Args: + self_calibration_step (Bitwise combination of enums.SelfCalibrationStep flags): Specifies the self-calibration step to query for the last successful self-calibration date and time data. + + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | Name | Description | + +===========================================+=================================================================================================+ + | SelfCalibrationStep.PRESELECTOR_ALIGNMENT | Calls for preselector alignment. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.GAIN_REFERENCE | Measures the changes in gain since the last external calibration was run. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.IF_FLATNESS | Measures the IF response of the entire system for each of the supported IF filters | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.DIGITIZER_SELF_CAL | Calls for digitizer self-calibration, if the digitizer is associated with the RF downconverter. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.LO_SELF_CAL | Calls for LO self-calibration, if the LO source module is associated with the RF downconverter. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.AMPLITUDE_ACCURACY | Selects the Amplitude Accuracy self-calibration step. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.RESIDUAL_LO_POWER | Selects the Residual LO Power self-calibration step. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.IMAGE_SUPPRESSION | Selects the Image Suppression self-calibration step. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.SYNTHESIZER_ALIGNMENT | Selects the Synthesizer Alignment self-calibration step. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.DC_OFFSET | Selects the DC Offset self-calibration step. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + + + Returns: + temperature (float): Returns the temperature, in degrees Celsius, of the device at the last successful self-calibration. + + ''' + if type(self_calibration_step) is not enums.SelfCalibrationStep: + raise TypeError('Parameter self_calibration_step must be of type ' + str(enums.SelfCalibrationStep)) + temperature = self._interpreter.get_self_calibration_temperature(self_calibration_step) + return temperature + + @ivi_synchronized + def get_terminal_name(self, signal, signal_identifier=""): + r'''get_terminal_name + + Returns the fully qualified name of the signal being queried. + + Signals can be triggers, clocks, or events. + + You can pass the **TERMINAL_NAME** parameter that is returned to the **source** parameter of a configure trigger method. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Events `_ + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Args: + signal (enums.Signal): Specifies the signal for which you want to query the terminal. + + +------------------------------+----------------------------------------------+ + | Name | Description | + +==============================+==============================================+ + | Signal.START_TRIGGER | NI-RFSA routes a Start Trigger. | + +------------------------------+----------------------------------------------+ + | Signal.REF_TRIGGER | NI-RFSA routes a Reference | + +------------------------------+----------------------------------------------+ + | Signal.ADVANCE_TRIGGER | NI-RFSA routes an Advance | + +------------------------------+----------------------------------------------+ + | Signal.READY_FOR_START_EVENT | NI-RFSA routes a Ready for Start Event. | + +------------------------------+----------------------------------------------+ + | Signal.READY_FOR_REF_EVENT | NI-RFSA routes a Ready for Reference Event.. | + +------------------------------+----------------------------------------------+ + | Signal.END_OF_RECORD_EVENT | NI-RFSA routes a End of Record Event. | + +------------------------------+----------------------------------------------+ + | Signal.DONE_EVENT | NI-RFSA routes a Done Event. | + +------------------------------+----------------------------------------------+ + | Signal.REF_CLOCK | NI-RFSA routes a Reference Clock. | + +------------------------------+----------------------------------------------+ + | Signal.USER | NI-RFSA routes a User Defined Signal. | + +------------------------------+----------------------------------------------+ + + signal_identifier (str): Specifies a particular instance of a trigger. NI-RFSA does not support this parameter. + + + Returns: + terminal_name (str): Returns the fully qualified name of the signal being queried. + + ''' + if type(signal) is not enums.Signal: + raise TypeError('Parameter signal must be of type ' + str(enums.Signal)) + terminal_name = self._interpreter.get_terminal_name(signal, signal_identifier) + return terminal_name + + def _init_with_options(self, resource_name, id_query=False, reset_device=False, option_string=""): + r'''_init_with_options + + Creates a new session for the device. + + This method sets the initial value of certain properties and sends initialization commands to reset all hardware modules to a known state necessary for NI-RFSA operation. + + To create a new session, pass the downconverter resource name for the RF vector signal analyzer to the **resource name** parameter. + + You can access the device session this VI creates using the NI-RFSA Soft Front Panel (SFP). Accessing the device session with the SFP can help you debug your code. Refer to `Debugging Your Application Using SFP Session Access `_ for more information about accessing your session with the SFP. + + ---- + **Note** + Before initializing your device, you must first associate the modules that comprise your device in MAX. After associating the modules, pass the resource name of the device to this method to initialize all the modules. Refer to `Associating NI-RFSA Modules `_ for information about MAX association. + + ---- + + ---- + **Note** + For multichannel devices such as the PXIe-5860, the resource name must include the channel number to use. The channel number is specified by appending *ChannelNumber* to the device name, where *ChannelNumber* is the channel number (0, 1, etc.). For example, if the device name is PXI1Slot2 and you want to use channel 0, use the resource name PXI1Slot2/0. + + ---- + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Driver Setup Options `_ + + Args: + resource_name (str): Specifies the resource name of the device to initialize. + + For NI-RFSA devices, the syntax is the device name specified in MAX. The typical default name for your device in MAX is PXI1Slot2. You can rename your device by right-clicking the name in MAX, selecting **Rename** from the drop-down menu, and entering a new name. You can also pass in the name of an IVI logical name configured with the IVI Configuration utility. For additional information, refer to the **Installed Devices IVI** topic of the *Measurement & Automation Explorer Help*. + + Device names are not case-sensitive. However, IVI logical names are case-sensitive. If you use an IVI logical name, verify the name is identical to the name shown in the IVI Configuration Utility. + + id_query (bool): Specifies whether you want NI-RFSA to perform an ID query. + + **Defined Values** : + + +--------------------------+ + | Description | + +==========================+ + | Perform ID query. | + +--------------------------+ + | Do not perform ID query. | + +--------------------------+ + + reset_device (bool): Specifies whether the NI-RFSA device is reset during the initialization procedure. + + **Defined Values** : + + +----------------------+ + | Description | + +======================+ + | Reset the device. | + +----------------------+ + | Do not reset device. | + +----------------------+ + + option_string (dict): Sets the initial value of certain properties for the session. The properties shown in the following table are used in this parameter. + + | Name | Property | + |:-----------------|:-------------------------------------------------------------------------------------------------------------------------------------------| + | RangeCheck | RANGE_CHECK | + | QueryInstrStatus | QUERY_INSTRUMENT_STATUS | + | Cache | CACHE | + | RecordCoercions | RECORD_COERCIONS | + | DriverSetup | driver_setup | + | Simulate | SIMULATE | + + The format of this string is *AttributeName=Value*, where *AttributeName* is the name of the property and *Value* is the value to which the property will be set. For example, you can simulate the PXIe-5663 using the following strings: + + *Simulate=1, DriverSetup=Model:5663\E*. + + *Simulate=1, DriverSetup=Model:5601*; *Digitizer:5622; LO:5652; LOBoardType:PXIe*. + + To set multiple properties, separate their assignments with a comma. + + Refer to `Driver Setup Options `_ for more information about the driver setup string. + + Note: To simulate a device using the PXIe-5622 25 MHz digitizer, set the *Digitizer* field to 5622_25MHz_DDC and the *Simulate* field to 1. You can set the *Digitizer* field to 5622_25MHz_DDC only when using the PXIe-5665. + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + + Returns: + new_vi (int): Identifies your instrument session. + + ''' + option_string = _converters.convert_init_with_options_dictionary(option_string) + new_vi = self._interpreter.init_with_options(resource_name, id_query, reset_device, option_string) + return new_vi + + @ivi_synchronized + def _initiate(self): + r'''_initiate + + Commits settings to hardware, waits for hardware settling, and starts an acquisition. + + You can use this method in conjunction with one of the niRFSA fetch I/Q methods to retrieve acquired I/Q data, or you can use the read IQ single record complex F64 method to both initiate the acquisition and retrieve I/Q data at one time. + + ---- + **Note** + If you are using external digitizer mode, this method commits settings and waits for settling, but it does not start an acquisition. Notice that using the commit method on its own commits settings to hardware, but the device does not wait for hardware settling. + + ---- + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `None (Trigger Type) `_ + + `RF List Mode `_ + + `NI RF Vector Signal Analyzer State Diagram `_ + ''' + self._interpreter.initiate() + + @ivi_synchronized + def is_self_cal_valid(self): + r'''is_self_cal_valid + + Indicates which calibration steps contain valid calibration data. + + To omit steps with valid calibration data from self-calibration, you can pass the **VALID_STEPS** parameter to the **stepsToOmit** parameter of the SelfCalibrate method. + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668 + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Returns: + self_cal_valid (bool): Returns True if all the calibration data is valid and False if any of the calibration data is invalid. + + valid_steps (Bitwise combination of enums.SelfCalSteps flags): Returns valid steps. + + ---- + If two or more calibration steps are valid, this parameter returns a bitwise-OR combination of the calibration steps. For example, if both SelfCalSteps.IF_FLATNESS and SelfCalSteps.LO_SELF_CAL steps are valid, NI-RFSA returns the following string: + + SelfCalSteps.IF_FLATNESS | + + SelfCalSteps.LO_SELF_CAL + + ---- + + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +====================================+=====================================================================================================================+ + | SelfCalSteps.DIGITIZER_SELF_CAL | Omits the Image Suppression step. If you omit this step, the Residual Sideband Image performance is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.PRESELECTOR_ALIGNMENT | Omits the LO Self Cal step. If you omit this step, the power level of the LO is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.OMIT_NONE | No calibration steps are omitted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.GAIN_REFERENCE | Omits the Power Level Accuracy step. If you omit this step, the power level accuracy of the device is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.IF_FLATNESS | Omits the Residual LO Power step. If you omit this step, the Residual LO Power performance is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.LO_SELF_CAL | Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.AMPLITUDE_ACCURACY | Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.RESIDUAL_LO_POWER | Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.IMAGE_SUPPRESSION | Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.SYNTHESIZER_ALIGNMENT | Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.DC_OFFSET | Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + ''' + self_cal_valid, valid_steps = self._interpreter.is_self_cal_valid() + return self_cal_valid, valid_steps + + @ivi_synchronized + def perform_thermal_correction(self): + r'''perform_thermal_correction + + Corrects for temperature variations while acquiring the same signal for an extended period of time in a continuous acquisition. + + NI-RFSA internally acquires the temperature every time you initiate an acquisition. If you are performing a continuous acquisition, National Instruments recommends calling this method once every 10 minutes in a stable temperature environment to periodically update temperature calibration. If the ambient temperature varies, call this method more frequently. + + ---- + **Note** + You cannot call this method if your device is operating in `RF list mode `_. + + ---- + + Refer to the *Thermal Management* section for your device for more information about typical operating temperatures. + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694, PXIe-5830/5831/5832/5840/5841/5842 + ''' + self._interpreter.perform_thermal_correction() + + @ivi_synchronized + def reset_device(self): + r'''reset_device + + Performs a hard reset on the device. + + A hard reset consists of the following actions: + + - Signal acquisition is stopped. + - All routes are released. + - External bidirectional terminals are tristated. + - FPGAs are reset. + - Hardware is configured to its default state. + - All session properties are reset to their default states. + + During a device reset, routes of signals between this and other devices are released, regardless of which device created the route. For example, a trigger signal exported to a PXI trigger line that is used by another device is no longer exported. + + On the PXI-5600, if you are driving the PXI_CLK10 line, you continue to drive the clock even after a device reset. To stop driving the PXI_CLK10 line, use the ConfigurePxiChassisClk10 method and set the **pxiClk10Source** parameter to NIRFSA_VAL_NONE or set the PXI_CHASSIS_CLK10_SOURCE property to NIRFSA_VAL_NONE. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698 + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + self._interpreter.reset_device() + + @ivi_synchronized + def reset_with_options(self, steps_to_omit): + r'''reset_with_options + + Resets all properties to default values and specifies steps to omit during the reset process, such as signal routes. + + For the PXI-5600, this method does not reset the PXI Clock signal that is driven by devices installed in the Star Trigger Controller Slot, also known as the System Timing Slot. + + By default, this method resets all properties to their default values, deletes all de-embedding tables, aborts generation, clears all routes, and resets session properties to initial values. You can specify steps to omit using the steps to omit parameter. For example, if you specify NIRFSA_VAL_RESET_WITH_OPTIONS_ROUTES for the **STEPS_TO_OMIT** parameter, this method does not release signal routes during the reset process. + + When routes of signals between two devices are released, they are released regardless of which device created the route. + + To avoid resetting routes on PXIe-5820/5830/5831/5832/5840/5841/5842/5860 that are in use by NI-RFSG sessions, NI recommends using this method instead of Reset, with **STEPS_TO_OMIT** set to NIRFSA_VAL_RESET_WITH_OPTIONS_ROUTES. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + `Events `_ + + Note: + One or more of the referenced properties are not in the Python API for this driver. + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + Args: + steps_to_omit (Bitwise combination of enums.ResetWithOptionsStepsToOmit flags): Specifies a list of steps to skip during the reset process. The default value is ResetWithOptionsStepsToOmit.NONE, which specifies that no step is omitted during reset. + + Note:ResetWithOptionsStepsToOmit.ROUTES is not supported in external calibration or alignment sessions. + + Note:ResetWithOptionsStepsToOmit.ROUTES is not supported for the PXI-5600/5661. + + +------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +================================================+============================================================================================================================================================================================================+ + | ResetWithOptionsStepsToOmit.DEEMBEDDING_TABLES | Omits deleting de-embedding tables. This step is valid only for the PXIe-5830/5831/5832/5840. | + +------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ResetWithOptionsStepsToOmit.NONE | No step is omitted during reset. | + +------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ResetWithOptionsStepsToOmit.ROUTES | Omits the routing reset step. Routing is preserved after a reset. However, routing related properties are reset to default, and routing is released if the default properties are committed after a reset. | + +------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + ''' + if type(steps_to_omit) is not enums.ResetWithOptionsStepsToOmit: + raise TypeError('Parameter steps_to_omit must be of type ' + str(enums.ResetWithOptionsStepsToOmit)) + self._interpreter.reset_with_options(steps_to_omit) + + @ivi_synchronized + def self_calibrate_range(self, steps_to_omit, minimum_frequency, maximum_frequency, minimum_reference_level, maximum_reference_level): + r'''self_calibrate_range + + Self-calibrates all configurations within the specified frequency and reference level limits. + + Self-calibration range data is valid until you restart the system or call the clear_self_calibrate_range method. + + NI recommends that no external signals are present on the RF In port while the calibration is taking place. + + ---- + **Note** + This method does not update self-calibration date and temperature. + + ---- + + For best results, NI recommends that you perform a complete self-calibration without omitting any steps. However, if certain aspects of performance are less important for your application, you can omit that step for faster execution. + + ---- + **Note** + If there is an existing NI-RFSG session open for the same PXIe-5820/5830/5831/5832/5840/5841/5842/5860 while this method runs, it may remain open but cannot be used for operations that access the hardware, for example niRFSG Commit or niRFSG Initiate. + + ---- + + ---- + **Note** + If there is an existing NI-RFSG session open for the same PXIe-5644/5645/5646, it may remain open but cannot be used while this method runs. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842 + + Args: + steps_to_omit (Bitwise combination of enums.SelfCalibrateRangeStepsToOmit flags): Specifies which calibration steps to skip as part of the self-calibration process. A value of 0 specifies all supported calibration steps are performed. + + ---- + + To omit two or more calibration steps, specify a bitwise-OR combination of the following constants. For example, if you wanted to omit SelfCalibrateRangeStepsToOmit.AMPLITUDE_ACCURACY and SelfCalibrateRangeStepsToOmit.LO_SELF_CAL, you would pass the following string to the SelfCalibrate method: SelfCalibrateRangeStepsToOmit.AMPLITUDE_ACCURACY | SelfCalibrateRangeStepsToOmit.LO_SELF_CAL + + ---- + + | Value | Description | + |:------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + | NIRFSA_VAL_RESET_WITH_OPTIONS_NONE | No step is omitted during self-calibration. | + | SelfCalibrateRangeStepsToOmit.PRESELECTOR_ALIGNMENT | Not used by this method. | + | SelfCalibrateRangeStepsToOmit.GAIN_REFERENCE | Not used by this method. | + | SelfCalibrateRangeStepsToOmit.IF_FLATNESS | Not used by this method. | + | SelfCalibrateRangeStepsToOmit.DIGITIZER_SELF_CAL | Not used by this method. | + | SelfCalibrateRangeStepsToOmit.LO_SELF_CAL | Omits the Local Oscillator (LO) Self Cal step. If you omit this step and the is_self_cal_valid method indicates the calibration data for this step is invalid, the LO phase-locked loop (PLL) may fail to lock. | + | SelfCalibrateRangeStepsToOmit.AMPLITUDE_ACCURACY | Omits the Amplitude Accuracy step. If you omit this step, the absolute accuracy of the device is not adjusted. | + | SelfCalibrateRangeStepsToOmit.RESIDUAL_LO_POWER | Omits the Residual LO Power step. If you omit this step, the Residual LO Power performance is not adjusted. | + |SelfCalibrateRangeStepsToOmit.IMAGE_SUPPRESSION | Omits the Image Suppression step. If you omit this step, the Residual Sideband Image Performance is not adjusted. | + | SelfCalibrateRangeStepsToOmit.SYNTHESIZER_ALIGNMENT | Omits the Synthesizer Alignment step. If you omit this step, the LO PLL is not adjusted. This step is not valid for the PXIe-5820. | + | SelfCalibrateRangeStepsToOmit.DC_OFFSET | Omits the DC Offset step. This step applies only to the PXIe-5820. | + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + minimum_frequency (float): Specifies the minimum RF frequency in Hz. + + maximum_frequency (float): Specifies the maximum RF frequency in Hz. + + minimum_reference_level (float): Specifies the minimum reference level in dBm. + + maximum_reference_level (float): Specifies the maximum reference level in dBm. + + ''' + if type(steps_to_omit) is not enums.SelfCalibrateRangeStepsToOmit: + raise TypeError('Parameter steps_to_omit must be of type ' + str(enums.SelfCalibrateRangeStepsToOmit)) + self._interpreter.self_calibrate_range(steps_to_omit, minimum_frequency, maximum_frequency, minimum_reference_level, maximum_reference_level) + + @ivi_synchronized + def send_software_edge_trigger(self, trigger, trigger_identifier=""): + r'''send_software_edge_trigger + + Sends a trigger to the device when you use a software version of a supported trigger and the device is waiting for the trigger to be sent. + + You can also use this method to override a hardware trigger. + + This method returns an error in the following situations: + + - You configure an invalid trigger. + - You set the **acquisitionType** to AcquisitionType.SPECTRUM using the ConfigureAcquisitionType method. + - You have not previously called the _initiate method. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Software Trigger `_ + + `Triggers `_ + + Args: + trigger (enums.SoftwareTriggerType): Specifies the trigger to send. + + **Default Value:** SoftwareTriggerType.START + + **Defined Values:** + + +---------------------------+-------------------------------+ + | Name | Description | + +===========================+===============================+ + | SoftwareTriggerType.START | Specifies the Start Trigger. | + +---------------------------+-------------------------------+ + | NIRFSA_VAL_SCRIPT_TRIGGER | Specifies the Script Trigger. | + +---------------------------+-------------------------------+ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + trigger_identifier (str): Specifies a particular instance of a trigger. NI-RFSA does not currently support this parameter. + + ''' + if type(trigger) is not enums.SoftwareTriggerType: + raise TypeError('Parameter trigger must be of type ' + str(enums.SoftwareTriggerType)) + self._interpreter.send_software_edge_trigger(trigger, trigger_identifier) + + def _close(self): + r'''_close + + Closes the session to the device. + + If you close a session that has Soft Front Panel (SFP) session access enabled, any application connected to the shared device session is no longer usable. Refer to `Debugging Your Application Using SFP Session Access `_ for more information about using SFP session access. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + ''' + self._interpreter.close() + + @ivi_synchronized + def self_test(self): + '''self_test + + Performs a self-test on the NI-RFSA device and returns the test results. + + This method performs a simple series of tests to ensure that the NI-RFSA device is powered up and responding. + + This method does not affect external I/O connections or connections between devices. Complete functional testing and calibration are not performed by this method. The NI-RFSA device must be in the Configuration state before you call this method. + + **Supported Devices** : PXI-5610, PXIe-5611, PXI/PXIe-5650/5651/5652, PXIe-5653/5654/5654 with PXIe-5696, PXI-5670/5671, PXIe-5672/5673/5673E, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Device Warm-Up `_ + + +----------------+------------------+ + | Self-Test Code | Description | + +================+==================+ + | 0 | Passed self-test | + +----------------+------------------+ + | 1 | Self-test failed | + +----------------+------------------+ + ''' + code, msg = self._self_test() + if code: + raise errors.SelfTestError(code, msg) + return None + + @ivi_synchronized + def reset(self): + r'''reset + + Resets all properties to default values, deletes all de-embedding tables, and stops the export of all external signals and events. + + For the PXI-5600, this method does not reset the PXI Clock signal that is driven by devices installed in the Trigger Controller Slot, also known as the System Timing Slot. + + This method resets all configured routes for the PXIe-5644/5645/5646 and PXIe-5820/5830/5831/5832/5840/5841/5842/5860 in NI-RFSA and NI-RFSG. To avoid resetting routes on the device that are in use by NI-RFSG sessions, NI recommends using the reset_with_options method, with **stepsToOmit** set to NIRFSA_VAL_RESET_WITH_OPTIONS_ROUTES. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + `Events `_ + + Note: + One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + ''' + self._interpreter.reset() + + @ivi_synchronized + def _self_test(self): + r'''_self_test + + Performs a self-test on the NI-RFSA device and returns the test results. + + This method performs a simple series of tests to ensure that the NI-RFSA device is powered up and responding. + + This method does not affect external I/O connections or connections between devices. Complete functional testing and calibration are not performed by this method. The NI-RFSA device must be in the Configuration state before you call this method. + + **Supported Devices** : PXI-5610, PXIe-5611, PXI/PXIe-5650/5651/5652, PXIe-5653/5654/5654 with PXIe-5696, PXI-5670/5671, PXIe-5672/5673/5673E, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Device Warm-Up `_ + + Returns: + self_test_result (int): This parameter contains the value returned from the NI-RFSA device self test. + + +----------------+------------------+ + | Self-Test Code | Description | + +================+==================+ + | 0 | Self test passed | + +----------------+------------------+ + | 1 | Self test failed | + +----------------+------------------+ + + self_test_message (str): Returns the self-test response string from the NI-RFSA device. For an explanation of the string contents, refer to the **status** parameter of this method. + + You must pass a ViChar array with at least 256 bytes. + + ''' + self_test_result, self_test_message = self._interpreter.self_test() + return self_test_result, self_test_message diff --git a/generated/nirfsa/nirfsa/spectrum_info_type.py b/generated/nirfsa/nirfsa/spectrum_info_type.py new file mode 100644 index 000000000..33c736abf --- /dev/null +++ b/generated/nirfsa/nirfsa/spectrum_info_type.py @@ -0,0 +1,112 @@ +import ctypes +import nirfsa._visatype + + +# This class is an internal ctypes implementation detail that corresponds to +# niRFSA_spectrumInfo in the C API +class struct_niRFSA_spectrumInfo(ctypes.Structure): # noqa N801 + _pack_ = 8 + _fields_ = [ + ('initial_frequency', nirfsa._visatype.ViReal64), + ('frequency_increment', nirfsa._visatype.ViReal64), + ('number_of_spectral_lines', nirfsa._visatype.ViInt32), + ('reserved1', nirfsa._visatype.ViReal64), + ('reserved2', nirfsa._visatype.ViReal64), + ('reserved3', nirfsa._visatype.ViReal64), + ('reserved4', nirfsa._visatype.ViReal64), + ('reserved5', nirfsa._visatype.ViReal64), + ] + + def __init__(self, data=None, initial_frequency=0.0, frequency_increment=0.0, + number_of_spectral_lines=0, reserved1=0.0, reserved2=0.0, + reserved3=0.0, reserved4=0.0, reserved5=0.0): + super(ctypes.Structure, self).__init__() + if data is not None: + self.initial_frequency = data.initial_frequency + self.frequency_increment = data.frequency_increment + self.number_of_spectral_lines = data.number_of_spectral_lines + self.reserved1 = data.reserved1 + self.reserved2 = data.reserved2 + self.reserved3 = data.reserved3 + self.reserved4 = data.reserved4 + self.reserved5 = data.reserved5 + else: + self.initial_frequency = initial_frequency + self.frequency_increment = frequency_increment + self.number_of_spectral_lines = number_of_spectral_lines + self.reserved1 = reserved1 + self.reserved2 = reserved2 + self.reserved3 = reserved3 + self.reserved4 = reserved4 + self.reserved5 = reserved5 + + +class SpectrumInfo: + """Python-friendly wrapper for niRFSA spectrum info.""" + + def __init__(self, data=None, initial_frequency=0.0, frequency_increment=0.0, + number_of_spectral_lines=0, reserved1=0.0, reserved2=0.0, + reserved3=0.0, reserved4=0.0, reserved5=0.0): + if data is not None: + self.initial_frequency = data.initial_frequency + self.frequency_increment = data.frequency_increment + self.number_of_spectral_lines = data.number_of_spectral_lines + self.reserved1 = data.reserved1 + self.reserved2 = data.reserved2 + self.reserved3 = data.reserved3 + self.reserved4 = data.reserved4 + self.reserved5 = data.reserved5 + else: + self.initial_frequency = initial_frequency + self.frequency_increment = frequency_increment + self.number_of_spectral_lines = number_of_spectral_lines + self.reserved1 = reserved1 + self.reserved2 = reserved2 + self.reserved3 = reserved3 + self.reserved4 = reserved4 + self.reserved5 = reserved5 + + def _create_copy(self, target_class): + try: + return target_class( + initial_frequency=self.initial_frequency, + frequency_increment=self.frequency_increment, + number_of_spectral_lines=self.number_of_spectral_lines, + reserved1=self.reserved1, + reserved2=self.reserved2, + reserved3=self.reserved3, + reserved4=self.reserved4, + reserved5=self.reserved5, + ) + except TypeError: + return target_class(data=self) + + def __repr__(self): + return "{}.{}(initial_frequency={}, frequency_increment={}, number_of_spectral_lines={}, reserved1={}, reserved2={}, reserved3={}, reserved4={}, reserved5={})".format( + self.__class__.__module__, + self.__class__.__qualname__, + self.initial_frequency, + self.frequency_increment, + self.number_of_spectral_lines, + self.reserved1, + self.reserved2, + self.reserved3, + self.reserved4, + self.reserved5, + ) + + def __str__(self): + return self.__repr__() + + +def _populate_samples_info(spectrum_info, sample_data): + '''Chunk up flat array of sample_data and copy each chunk into individual SpectrumInfo instance + + Args: + spectrum_info (SpectrumInfo): SpectrumInfo class instance + + sample_data (Iterable of float): Spectrum sample data + ''' + start = 0 + end = start + spectrum_info.number_of_spectral_lines + spectrum_info.samples = sample_data[start:end] diff --git a/generated/nirfsa/nirfsa/unit_tests/_matchers.py b/generated/nirfsa/nirfsa/unit_tests/_matchers.py new file mode 100644 index 000000000..6236713ee --- /dev/null +++ b/generated/nirfsa/nirfsa/unit_tests/_matchers.py @@ -0,0 +1,369 @@ +# -*- coding: utf-8 -*- +# This file was generated +'''Matcher classes used by unit tests in order to set mock expectations. +These work well with our visatype definitions. +''' + +import ctypes +import nirfsa._complextype as _complextype +import nirfsa._visatype as _visatype +import pprint + +pp = pprint.PrettyPrinter(indent=4) + + +# Base classes + + +class _ScalarMatcher(object): + def __init__(self, expected_type, expected_value): + self.expected_type = expected_type + self.expected_value = expected_value + + def __eq__(self, other): + if not isinstance(other, self.expected_type): + print("{}: Unexpected type. Expected: {}. Received: {}".format(self.__class__.__name__, self.expected_type, type(other))) + return False + if other.value != self.expected_value: + print("{}: Unexpected value. Expected: {}. Received: {}".format(self.__class__.__name__, self.expected_value, other.value)) + return False + return True + + def __repr__(self): + return '{}({}, {})'.format(self.__class__.__name__, pp.pformat(self.expected_type), pp.pformat(self.expected_value)) + + +class _PointerMatcher(object): + def __init__(self, expected_type): + self.expected_type = expected_type + + def __eq__(self, other): + if not isinstance(other, ctypes.POINTER(self.expected_type)): + print("Unexpected type. Expected: {}. Received: {}".format(ctypes.POINTER(self.expected_type), type(other))) + return False + return True + + def __repr__(self): + return '{}({})'.format(self.__class__.__name__, pp.pformat(self.expected_type)) + + +class _BufferMatcher(object): + def __init__(self, expected_element_type, expected_size_or_value): + if isinstance(expected_size_or_value, int): + # Were given the size of the buffer + self.expected_value = None + self.expected_size = expected_size_or_value + else: + # Were given a list or something that behaves like a list + self.expected_value = expected_size_or_value + self.expected_size = len(expected_size_or_value) + self.expected_type = expected_element_type * self.expected_size + # Store params for __repr__ + self._expected_element_type = expected_element_type + self._expected_size_or_value = expected_size_or_value + + def __eq__(self, other): + if not isinstance(other, self.expected_type): + # We try to "dereference" this in case it is a pointer and then do the check again. Only then saying they don't match + try: + other = other.contents + except AttributeError: + pass + + # Because of object lifetimes, we may need to mock the other instance and provide lists instead of the actual array + if not isinstance(other, self.expected_type) and not isinstance(other, list): + print("Unexpected type. Expected: {} or {}. Received: {}".format(self.expected_type, list, type(other))) + return False + if self.expected_size != len(other): + print("Unexpected length. Expected: {}. Received: {}".format(self.expected_size, len(other))) + return False + if self.expected_value is not None: + # Can't compare the objects directly because they're different types (one is list, another is ctypes array). + # Go element by element, which allows for reporting the first index where different values were found. + for i in range(0, len(self.expected_value)): + if self.expected_value[i] != other[i]: + print("Unexpected value at index {}. Expected: {}. Received: {}".format(i, self.expected_value[i], other[i])) + return False + return True + + def __repr__(self): + return '{}({}, {})'.format(self.__class__.__name__, pp.pformat(self._expected_element_type), pp.pformat(self._expected_size_or_value)) + + def __str__(self): + ret_str = self.__repr__() + '\n' + ret_str += ' expected_type = ' + str(self.expected_type) + '\n' + ret_str += ' expected_value = ' + str(self.expected_value) + '\n' + ret_str += ' expected_size = ' + str(self.expected_size) + '\n' + return ret_str + + +# Strings + + +class ViStringMatcher(object): + def __init__(self, expected_string_value): + self.expected_string_value = expected_string_value + + def __eq__(self, other): + if not isinstance(other, ctypes.Array): + # We try to "dereference" this in case it is a pointer and then do the check again. Only then saying they don't match + try: + other = other.contents + except AttributeError: + pass + + if not isinstance(other, ctypes.Array): + print("Unexpected type. Expected: {}. Received: {}".format(self.expected_type, type(other))) + return False + if len(other) < len(self.expected_string_value) + 1: # +1 for NULL terminating character + print("Unexpected length in C string. Expected at least: {}. Received {}".format(len(other), len(self.expected_string_value) + 1)) + return False + if not isinstance(other[0], bytes): + print("Unexpected type. Not a string. Received: {}".format(type(other[0]))) + return False + if other.value.decode("ascii") != self.expected_string_value: + print("Unexpected value. Expected {}. Received: {}".format(self.expected_string_value, other.value.decode)) + return False + return True + + def __repr__(self): + return '{}({})'.format(self.__class__.__name__, pp.pformat(self.expected_string_value)) + + +# Custom Type + + +def _compare_ctype_structs(expected, actual): + # From https://stackoverflow.com/questions/20986330/print-all-fields-of-ctypes-structure-with-introspection + for field in expected._fields_: + field_name = field[0] + expected_val = getattr(expected, field_name) + actual_val = getattr(actual, field_name) + if expected_val != actual_val: + print("Unexpected value field {}. Expected: {}. Received: {}".format(field_name, expected_val, actual_val)) + return False + return True + + +class CustomTypeMatcher(object): + def __init__(self, expected_type, expected_value): + self.expected_type = expected_type + self.expected_value = expected_value + + def __eq__(self, actual): + if not isinstance(actual, self.expected_type): + print("Unexpected type. Expected: {}. Received: {}".format(self.expected_type, type(actual))) + return False + return _compare_ctype_structs(self.expected_value, actual) + + def __repr__(self): + return '{}({}, {})'.format(self.__class__.__name__, pp.pformat(self.expected_type), pp.pformat(self.expected_value)) + + +class CustomTypeBufferMatcher(object): + def __init__(self, expected_element_type, expected_value): + self.expected_value = expected_value + self.expected_size = len(expected_value) + self.expected_type = expected_element_type * self.expected_size + self.expected_element_type = expected_element_type + + def __eq__(self, actual): + if not isinstance(actual, self.expected_type): + print("Unexpected array type. Expected: {}. Received: {}".format(self.expected_type, type(actual))) + return False + if self.expected_size != len(actual): + print("Unexpected length. Expected: {}. Received: {}".format(self.expected_size, len(actual))) + return False + if self.expected_value is not None: + # Can't compare the objects directly because they're different types (one is list, another is ctypes array). + # Go element by element, which allows for reporting the first index where different values were found. + for a, e in zip(actual, self.expected_value): + if not isinstance(a, self.expected_element_type): + print("Unexpected type. Expected: {}. Received: {}".format(self.expected_element_type, type(a))) + return False + if not _compare_ctype_structs(e, a): + return False + return True + + def __repr__(self): + expected_val_repr = '[' + ', '.join([x.__repr__() for x in self.expected_value]) + ']' + return '{}({}, {})'.format(self.__class__.__name__, pp.pformat(self.expected_element_type), expected_val_repr) + + def __str__(self): + ret_str = self.__repr__() + '\n' + ret_str += ' expected_type = ' + str(self.expected_type) + '\n' + ret_str += ' expected_size = ' + str(self.expected_size) + '\n' + return ret_str + + +# Scalars + + +class ViBooleanMatcher(_ScalarMatcher): + def __init__(self, expected_value): + _ScalarMatcher.__init__(self, _visatype.ViBoolean, 1 if expected_value is True else 0) + + +class ViSessionMatcher(_ScalarMatcher): + def __init__(self, expected_value): + _ScalarMatcher.__init__(self, _visatype.ViSession, expected_value) + + +class ViInt16Matcher(_ScalarMatcher): + def __init__(self, expected_value): + _ScalarMatcher.__init__(self, _visatype.ViInt16, expected_value) + + +class ViInt32Matcher(_ScalarMatcher): + def __init__(self, expected_value): + _ScalarMatcher.__init__(self, _visatype.ViInt32, expected_value) + + +class ViUInt32Matcher(_ScalarMatcher): + def __init__(self, expected_value): + _ScalarMatcher.__init__(self, _visatype.ViUInt32, expected_value) + + +class ViAttrMatcher(_ScalarMatcher): + def __init__(self, expected_value): + _ScalarMatcher.__init__(self, _visatype.ViAttr, expected_value) + + +class ViInt64Matcher(_ScalarMatcher): + def __init__(self, expected_value): + _ScalarMatcher.__init__(self, _visatype.ViInt64, expected_value) + + +class ViReal64Matcher(_ScalarMatcher): + def __init__(self, expected_value): + _ScalarMatcher.__init__(self, _visatype.ViReal64, expected_value) + + +# Pointers + + +class ViBooleanPointerMatcher(_PointerMatcher): + def __init__(self): + _PointerMatcher.__init__(self, _visatype.ViBoolean) + + +class ViSessionPointerMatcher(_PointerMatcher): + def __init__(self): + _PointerMatcher.__init__(self, _visatype.ViSession) + + +class ViInt16PointerMatcher(_PointerMatcher): + def __init__(self): + _PointerMatcher.__init__(self, _visatype.ViInt16) + + +class ViInt32PointerMatcher(_PointerMatcher): + def __init__(self): + _PointerMatcher.__init__(self, _visatype.ViInt32) + + +class ViInt64PointerMatcher(_PointerMatcher): + def __init__(self): + _PointerMatcher.__init__(self, _visatype.ViInt64) + + +class ViReal64PointerMatcher(_PointerMatcher): + def __init__(self): + _PointerMatcher.__init__(self, _visatype.ViReal64) + + +def _compare_complex_number_arrays(expected, actual): + for i in range(expected.expected_size): + expected_value = expected.expected_data[i] + actual_value = actual[i] + if expected_value.real != actual_value.real or expected_value.imag != actual_value.imag: + return False + return True + + +class NIComplexNumberPointerMatcher(_PointerMatcher): + def __init__(self, expected_data, expected_size): + _PointerMatcher.__init__(self, _complextype.NIComplexNumber) + self.expected_data = expected_data + self.expected_size = expected_size + + def __eq__(self, other): + _PointerMatcher.__eq__(self, other) + return _compare_complex_number_arrays(self, other) + + def __repr__(self): + return f"NIComplexNumberPointerMatcher({self.expected_data})" + + +class NIComplexNumberF32PointerMatcher(_PointerMatcher): + def __init__(self, expected_data, expected_size): + _PointerMatcher.__init__(self, _complextype.NIComplexNumberF32) + self.expected_data = expected_data + self.expected_size = expected_size + + def __eq__(self, other): + _PointerMatcher.__eq__(self, other) + return _compare_complex_number_arrays(self, other) + + def __repr__(self): + return f"NIComplexNumberF32PointerMatcher({self.expected_data})" + + +class NIComplexI16PointerMatcher(_PointerMatcher): + def __init__(self, expected_data, expected_size): + _PointerMatcher.__init__(self, _complextype.NIComplexI16) + self.expected_data = expected_data + self.expected_size = expected_size + + def __eq__(self, other): + _PointerMatcher.__eq__(self, other) + return _compare_complex_number_arrays(self, other) + + def __repr__(self): + return f"NIComplexI16PointerMatcher({self.expected_data})" + + +# Buffers + + +class ViBooleanBufferMatcher(_BufferMatcher): + def __init__(self, expected_size_or_value): + _BufferMatcher.__init__(self, _visatype.ViBoolean, expected_size_or_value) + + +class ViCharBufferMatcher(_BufferMatcher): + def __init__(self, expected_size_or_value): + _BufferMatcher.__init__(self, _visatype.ViChar, expected_size_or_value) + + +class ViInt8BufferMatcher(_BufferMatcher): + def __init__(self, expected_size_or_value): + _BufferMatcher.__init__(self, _visatype.ViInt8, expected_size_or_value) + + +class ViInt16BufferMatcher(_BufferMatcher): + def __init__(self, expected_size_or_value): + _BufferMatcher.__init__(self, _visatype.ViInt16, expected_size_or_value) + + +class ViInt32BufferMatcher(_BufferMatcher): + def __init__(self, expected_size_or_value): + _BufferMatcher.__init__(self, _visatype.ViInt32, expected_size_or_value) + + +class ViInt64BufferMatcher(_BufferMatcher): + def __init__(self, expected_size_or_value): + _BufferMatcher.__init__(self, _visatype.ViInt64, expected_size_or_value) + + +class ViReal64BufferMatcher(_BufferMatcher): + def __init__(self, expected_size_or_value): + _BufferMatcher.__init__(self, _visatype.ViReal64, expected_size_or_value) + + +class ViSessionBufferMatcher(_BufferMatcher): + def __init__(self, expected_size_or_value): + _BufferMatcher.__init__(self, _visatype.ViSession, expected_size_or_value) + + + diff --git a/generated/nirfsa/nirfsa/unit_tests/_mock_helper.py b/generated/nirfsa/nirfsa/unit_tests/_mock_helper.py new file mode 100644 index 000000000..579b09b47 --- /dev/null +++ b/generated/nirfsa/nirfsa/unit_tests/_mock_helper.py @@ -0,0 +1,1043 @@ +# -*- coding: utf-8 -*- +# This file was generated +import sys # noqa: F401 - Not all mock_helpers will need this + + +class MockFunctionCallError(Exception): + def __init__(self, function, param=None): + self.function = function + self.param = param + msg = "{0} called without setting side_effect".format(self.function) + if param is not None: + msg += " or setting the {0} parameter return value".format(self.param) + super(Exception, self).__init__(msg) + + +class SideEffectsHelper(object): + def __init__(self): + self._defaults = {} + self._defaults['Abort'] = {} + self._defaults['Abort']['return'] = 0 + self._defaults['ChangeExternalCalibrationPassword'] = {} + self._defaults['ChangeExternalCalibrationPassword']['return'] = 0 + self._defaults['CheckAcquisitionStatus'] = {} + self._defaults['CheckAcquisitionStatus']['return'] = 0 + self._defaults['CheckAcquisitionStatus']['isDone'] = None + self._defaults['ClearSelfCalibrateRange'] = {} + self._defaults['ClearSelfCalibrateRange']['return'] = 0 + self._defaults['Commit'] = {} + self._defaults['Commit']['return'] = 0 + self._defaults['ConfigureDeembeddingTableInterpolationLinear'] = {} + self._defaults['ConfigureDeembeddingTableInterpolationLinear']['return'] = 0 + self._defaults['ConfigureDeembeddingTableInterpolationNearest'] = {} + self._defaults['ConfigureDeembeddingTableInterpolationNearest']['return'] = 0 + self._defaults['ConfigureDeembeddingTableInterpolationSpline'] = {} + self._defaults['ConfigureDeembeddingTableInterpolationSpline']['return'] = 0 + self._defaults['ConfigureDigitalEdgeAdvanceTrigger'] = {} + self._defaults['ConfigureDigitalEdgeAdvanceTrigger']['return'] = 0 + self._defaults['ConfigureDigitalEdgeRefTrigger'] = {} + self._defaults['ConfigureDigitalEdgeRefTrigger']['return'] = 0 + self._defaults['ConfigureDigitalEdgeStartTrigger'] = {} + self._defaults['ConfigureDigitalEdgeStartTrigger']['return'] = 0 + self._defaults['ConfigureIQPowerEdgeRefTrigger'] = {} + self._defaults['ConfigureIQPowerEdgeRefTrigger']['return'] = 0 + self._defaults['ConfigureRefClock'] = {} + self._defaults['ConfigureRefClock']['return'] = 0 + self._defaults['ConfigureSoftwareEdgeAdvanceTrigger'] = {} + self._defaults['ConfigureSoftwareEdgeAdvanceTrigger']['return'] = 0 + self._defaults['ConfigureSoftwareEdgeRefTrigger'] = {} + self._defaults['ConfigureSoftwareEdgeRefTrigger']['return'] = 0 + self._defaults['ConfigureSoftwareEdgeStartTrigger'] = {} + self._defaults['ConfigureSoftwareEdgeStartTrigger']['return'] = 0 + self._defaults['ConfigureSpectrumFrequencyCenterSpan'] = {} + self._defaults['ConfigureSpectrumFrequencyCenterSpan']['return'] = 0 + self._defaults['ConfigureSpectrumFrequencyStartStop'] = {} + self._defaults['ConfigureSpectrumFrequencyStartStop']['return'] = 0 + self._defaults['CreateDeembeddingSparameterTableArray'] = {} + self._defaults['CreateDeembeddingSparameterTableArray']['return'] = 0 + self._defaults['CreateDeembeddingSparameterTableS2PFile'] = {} + self._defaults['CreateDeembeddingSparameterTableS2PFile']['return'] = 0 + self._defaults['DeleteAllDeembeddingTables'] = {} + self._defaults['DeleteAllDeembeddingTables']['return'] = 0 + self._defaults['DeleteDeembeddingTable'] = {} + self._defaults['DeleteDeembeddingTable']['return'] = 0 + self._defaults['DisableAdvanceTrigger'] = {} + self._defaults['DisableAdvanceTrigger']['return'] = 0 + self._defaults['DisableRefTrigger'] = {} + self._defaults['DisableRefTrigger']['return'] = 0 + self._defaults['DisableStartTrigger'] = {} + self._defaults['DisableStartTrigger']['return'] = 0 + self._defaults['EnableSessionAccess'] = {} + self._defaults['EnableSessionAccess']['return'] = 0 + self._defaults['ErrorMessage'] = {} + self._defaults['ErrorMessage']['return'] = 0 + self._defaults['ErrorMessage']['errorMessage'] = None + self._defaults['FetchIQMultiRecordComplexF32'] = {} + self._defaults['FetchIQMultiRecordComplexF32']['return'] = 0 + self._defaults['FetchIQMultiRecordComplexF32']['wfmInfo'] = None + self._defaults['FetchIQMultiRecordComplexF64'] = {} + self._defaults['FetchIQMultiRecordComplexF64']['return'] = 0 + self._defaults['FetchIQMultiRecordComplexF64']['wfmInfo'] = None + self._defaults['FetchIQMultiRecordComplexI16'] = {} + self._defaults['FetchIQMultiRecordComplexI16']['return'] = 0 + self._defaults['FetchIQMultiRecordComplexI16']['wfmInfo'] = None + self._defaults['FetchIQSingleRecordComplexF32'] = {} + self._defaults['FetchIQSingleRecordComplexF32']['return'] = 0 + self._defaults['FetchIQSingleRecordComplexF32']['wfmInfo'] = None + self._defaults['FetchIQSingleRecordComplexF64'] = {} + self._defaults['FetchIQSingleRecordComplexF64']['return'] = 0 + self._defaults['FetchIQSingleRecordComplexF64']['wfmInfo'] = None + self._defaults['FetchIQSingleRecordComplexI16'] = {} + self._defaults['FetchIQSingleRecordComplexI16']['return'] = 0 + self._defaults['FetchIQSingleRecordComplexI16']['wfmInfo'] = None + self._defaults['GetAttributeViBoolean'] = {} + self._defaults['GetAttributeViBoolean']['return'] = 0 + self._defaults['GetAttributeViBoolean']['value'] = None + self._defaults['GetAttributeViInt32'] = {} + self._defaults['GetAttributeViInt32']['return'] = 0 + self._defaults['GetAttributeViInt32']['value'] = None + self._defaults['GetAttributeViInt64'] = {} + self._defaults['GetAttributeViInt64']['return'] = 0 + self._defaults['GetAttributeViInt64']['value'] = None + self._defaults['GetAttributeViReal64'] = {} + self._defaults['GetAttributeViReal64']['return'] = 0 + self._defaults['GetAttributeViReal64']['value'] = None + self._defaults['GetAttributeViSession'] = {} + self._defaults['GetAttributeViSession']['return'] = 0 + self._defaults['GetAttributeViSession']['value'] = None + self._defaults['GetAttributeViString'] = {} + self._defaults['GetAttributeViString']['return'] = 0 + self._defaults['GetAttributeViString']['value'] = None + self._defaults['GetDeembeddingSparameters'] = {} + self._defaults['GetDeembeddingSparameters']['return'] = 0 + self._defaults['GetDeembeddingSparameters']['sparameters'] = None + self._defaults['GetDeembeddingSparameters']['numberOfSparameters'] = None + self._defaults['GetDeembeddingSparameters']['numberOfPorts'] = None + self._defaults['GetDeembeddingTableNumberOfPorts'] = {} + self._defaults['GetDeembeddingTableNumberOfPorts']['return'] = 0 + self._defaults['GetDeembeddingTableNumberOfPorts']['numberOfPorts'] = None + self._defaults['GetError'] = {} + self._defaults['GetError']['return'] = 0 + self._defaults['GetError']['errorCode'] = None + self._defaults['GetError']['errorDescription'] = None + self._defaults['GetExtCalLastDateAndTime'] = {} + self._defaults['GetExtCalLastDateAndTime']['return'] = 0 + self._defaults['GetExtCalLastDateAndTime']['year'] = None + self._defaults['GetExtCalLastDateAndTime']['month'] = None + self._defaults['GetExtCalLastDateAndTime']['day'] = None + self._defaults['GetExtCalLastDateAndTime']['hour'] = None + self._defaults['GetExtCalLastDateAndTime']['minute'] = None + self._defaults['GetExtCalRecommendedInterval'] = {} + self._defaults['GetExtCalRecommendedInterval']['return'] = 0 + self._defaults['GetExtCalRecommendedInterval']['months'] = None + self._defaults['GetFetchBacklog'] = {} + self._defaults['GetFetchBacklog']['return'] = 0 + self._defaults['GetFetchBacklog']['backlog'] = None + self._defaults['GetFrequencyResponse'] = {} + self._defaults['GetFrequencyResponse']['return'] = 0 + self._defaults['GetFrequencyResponse']['numberOfFrequencies'] = None + self._defaults['GetFrequencyResponse']['frequencies'] = None + self._defaults['GetFrequencyResponse']['magnitudeResponse'] = None + self._defaults['GetFrequencyResponse']['phaseResponse'] = None + self._defaults['GetScalingCoefficients'] = {} + self._defaults['GetScalingCoefficients']['return'] = 0 + self._defaults['GetScalingCoefficients']['numberOfCoefficientSets'] = None + self._defaults['GetScalingCoefficients']['coefficientInfo'] = None + self._defaults['GetSelfCalLastDateAndTime'] = {} + self._defaults['GetSelfCalLastDateAndTime']['return'] = 0 + self._defaults['GetSelfCalLastDateAndTime']['year'] = None + self._defaults['GetSelfCalLastDateAndTime']['month'] = None + self._defaults['GetSelfCalLastDateAndTime']['day'] = None + self._defaults['GetSelfCalLastDateAndTime']['hour'] = None + self._defaults['GetSelfCalLastDateAndTime']['minute'] = None + self._defaults['GetSelfCalLastTemp'] = {} + self._defaults['GetSelfCalLastTemp']['return'] = 0 + self._defaults['GetSelfCalLastTemp']['temperature'] = None + self._defaults['GetTerminalName'] = {} + self._defaults['GetTerminalName']['return'] = 0 + self._defaults['GetTerminalName']['terminalName'] = None + self._defaults['InitWithOptions'] = {} + self._defaults['InitWithOptions']['return'] = 0 + self._defaults['InitWithOptions']['newVi'] = None + self._defaults['Initiate'] = {} + self._defaults['Initiate']['return'] = 0 + self._defaults['IsSelfCalValid'] = {} + self._defaults['IsSelfCalValid']['return'] = 0 + self._defaults['IsSelfCalValid']['selfCalValid'] = None + self._defaults['IsSelfCalValid']['validSteps'] = None + self._defaults['LoadConfigurationsFromFile'] = {} + self._defaults['LoadConfigurationsFromFile']['return'] = 0 + self._defaults['LockSession'] = {} + self._defaults['LockSession']['return'] = 0 + self._defaults['LockSession']['callerHasLock'] = None + self._defaults['PerformThermalCorrection'] = {} + self._defaults['PerformThermalCorrection']['return'] = 0 + self._defaults['ReadIQSingleRecordComplexF64'] = {} + self._defaults['ReadIQSingleRecordComplexF64']['return'] = 0 + self._defaults['ReadIQSingleRecordComplexF64']['wfmInfo'] = None + self._defaults['ReadPowerSpectrumF32'] = {} + self._defaults['ReadPowerSpectrumF32']['return'] = 0 + self._defaults['ReadPowerSpectrumF32']['spectrumInfo'] = None + self._defaults['ReadPowerSpectrumF64'] = {} + self._defaults['ReadPowerSpectrumF64']['return'] = 0 + self._defaults['ReadPowerSpectrumF64']['spectrumInfo'] = None + self._defaults['ResetDevice'] = {} + self._defaults['ResetDevice']['return'] = 0 + self._defaults['ResetWithOptions'] = {} + self._defaults['ResetWithOptions']['return'] = 0 + self._defaults['SaveConfigurationsToFile'] = {} + self._defaults['SaveConfigurationsToFile']['return'] = 0 + self._defaults['SelfCalibrateRange'] = {} + self._defaults['SelfCalibrateRange']['return'] = 0 + self._defaults['SendSoftwareEdgeTrigger'] = {} + self._defaults['SendSoftwareEdgeTrigger']['return'] = 0 + self._defaults['SetAttributeViBoolean'] = {} + self._defaults['SetAttributeViBoolean']['return'] = 0 + self._defaults['SetAttributeViInt32'] = {} + self._defaults['SetAttributeViInt32']['return'] = 0 + self._defaults['SetAttributeViInt64'] = {} + self._defaults['SetAttributeViInt64']['return'] = 0 + self._defaults['SetAttributeViReal64'] = {} + self._defaults['SetAttributeViReal64']['return'] = 0 + self._defaults['SetAttributeViSession'] = {} + self._defaults['SetAttributeViSession']['return'] = 0 + self._defaults['SetAttributeViString'] = {} + self._defaults['SetAttributeViString']['return'] = 0 + self._defaults['UnlockSession'] = {} + self._defaults['UnlockSession']['return'] = 0 + self._defaults['UnlockSession']['callerHasLock'] = None + self._defaults['close'] = {} + self._defaults['close']['return'] = 0 + self._defaults['reset'] = {} + self._defaults['reset']['return'] = 0 + self._defaults['self_test'] = {} + self._defaults['self_test']['return'] = 0 + self._defaults['self_test']['selfTestResult'] = None + self._defaults['self_test']['selfTestMessage'] = None + + def __getitem__(self, func): + return self._defaults[func] + + def __setitem__(self, func, val): + self._defaults[func] = val + + def niRFSA_Abort(self, vi): # noqa: N802 + if self._defaults['Abort']['return'] != 0: + return self._defaults['Abort']['return'] + return self._defaults['Abort']['return'] + + def niRFSA_ChangeExternalCalibrationPassword(self, vi, old_password, new_password): # noqa: N802 + if self._defaults['ChangeExternalCalibrationPassword']['return'] != 0: + return self._defaults['ChangeExternalCalibrationPassword']['return'] + return self._defaults['ChangeExternalCalibrationPassword']['return'] + + def niRFSA_CheckAcquisitionStatus(self, vi, is_done): # noqa: N802 + if self._defaults['CheckAcquisitionStatus']['return'] != 0: + return self._defaults['CheckAcquisitionStatus']['return'] + # is_done + if self._defaults['CheckAcquisitionStatus']['isDone'] is None: + raise MockFunctionCallError("niRFSA_CheckAcquisitionStatus", param='isDone') + if is_done is not None: + is_done.contents.value = self._defaults['CheckAcquisitionStatus']['isDone'] + return self._defaults['CheckAcquisitionStatus']['return'] + + def niRFSA_ClearSelfCalibrateRange(self, vi): # noqa: N802 + if self._defaults['ClearSelfCalibrateRange']['return'] != 0: + return self._defaults['ClearSelfCalibrateRange']['return'] + return self._defaults['ClearSelfCalibrateRange']['return'] + + def niRFSA_Commit(self, vi): # noqa: N802 + if self._defaults['Commit']['return'] != 0: + return self._defaults['Commit']['return'] + return self._defaults['Commit']['return'] + + def niRFSA_ConfigureDeembeddingTableInterpolationLinear(self, vi, port, table_name, format): # noqa: N802 + if self._defaults['ConfigureDeembeddingTableInterpolationLinear']['return'] != 0: + return self._defaults['ConfigureDeembeddingTableInterpolationLinear']['return'] + return self._defaults['ConfigureDeembeddingTableInterpolationLinear']['return'] + + def niRFSA_ConfigureDeembeddingTableInterpolationNearest(self, vi, port, table_name): # noqa: N802 + if self._defaults['ConfigureDeembeddingTableInterpolationNearest']['return'] != 0: + return self._defaults['ConfigureDeembeddingTableInterpolationNearest']['return'] + return self._defaults['ConfigureDeembeddingTableInterpolationNearest']['return'] + + def niRFSA_ConfigureDeembeddingTableInterpolationSpline(self, vi, port, table_name): # noqa: N802 + if self._defaults['ConfigureDeembeddingTableInterpolationSpline']['return'] != 0: + return self._defaults['ConfigureDeembeddingTableInterpolationSpline']['return'] + return self._defaults['ConfigureDeembeddingTableInterpolationSpline']['return'] + + def niRFSA_ConfigureDigitalEdgeAdvanceTrigger(self, vi, source, edge): # noqa: N802 + if self._defaults['ConfigureDigitalEdgeAdvanceTrigger']['return'] != 0: + return self._defaults['ConfigureDigitalEdgeAdvanceTrigger']['return'] + return self._defaults['ConfigureDigitalEdgeAdvanceTrigger']['return'] + + def niRFSA_ConfigureDigitalEdgeRefTrigger(self, vi, source, edge, pretrigger_samples): # noqa: N802 + if self._defaults['ConfigureDigitalEdgeRefTrigger']['return'] != 0: + return self._defaults['ConfigureDigitalEdgeRefTrigger']['return'] + return self._defaults['ConfigureDigitalEdgeRefTrigger']['return'] + + def niRFSA_ConfigureDigitalEdgeStartTrigger(self, vi, source, edge): # noqa: N802 + if self._defaults['ConfigureDigitalEdgeStartTrigger']['return'] != 0: + return self._defaults['ConfigureDigitalEdgeStartTrigger']['return'] + return self._defaults['ConfigureDigitalEdgeStartTrigger']['return'] + + def niRFSA_ConfigureIQPowerEdgeRefTrigger(self, vi, source, level, slope, pretrigger_samples): # noqa: N802 + if self._defaults['ConfigureIQPowerEdgeRefTrigger']['return'] != 0: + return self._defaults['ConfigureIQPowerEdgeRefTrigger']['return'] + return self._defaults['ConfigureIQPowerEdgeRefTrigger']['return'] + + def niRFSA_ConfigureRefClock(self, vi, clock_source, ref_clock_rate): # noqa: N802 + if self._defaults['ConfigureRefClock']['return'] != 0: + return self._defaults['ConfigureRefClock']['return'] + return self._defaults['ConfigureRefClock']['return'] + + def niRFSA_ConfigureSoftwareEdgeAdvanceTrigger(self, vi): # noqa: N802 + if self._defaults['ConfigureSoftwareEdgeAdvanceTrigger']['return'] != 0: + return self._defaults['ConfigureSoftwareEdgeAdvanceTrigger']['return'] + return self._defaults['ConfigureSoftwareEdgeAdvanceTrigger']['return'] + + def niRFSA_ConfigureSoftwareEdgeRefTrigger(self, vi, pretrigger_samples): # noqa: N802 + if self._defaults['ConfigureSoftwareEdgeRefTrigger']['return'] != 0: + return self._defaults['ConfigureSoftwareEdgeRefTrigger']['return'] + return self._defaults['ConfigureSoftwareEdgeRefTrigger']['return'] + + def niRFSA_ConfigureSoftwareEdgeStartTrigger(self, vi): # noqa: N802 + if self._defaults['ConfigureSoftwareEdgeStartTrigger']['return'] != 0: + return self._defaults['ConfigureSoftwareEdgeStartTrigger']['return'] + return self._defaults['ConfigureSoftwareEdgeStartTrigger']['return'] + + def niRFSA_ConfigureSpectrumFrequencyCenterSpan(self, vi, channel_list, center_frequency, span): # noqa: N802 + if self._defaults['ConfigureSpectrumFrequencyCenterSpan']['return'] != 0: + return self._defaults['ConfigureSpectrumFrequencyCenterSpan']['return'] + return self._defaults['ConfigureSpectrumFrequencyCenterSpan']['return'] + + def niRFSA_ConfigureSpectrumFrequencyStartStop(self, vi, channel_list, start_frequency, stop_frequency): # noqa: N802 + if self._defaults['ConfigureSpectrumFrequencyStartStop']['return'] != 0: + return self._defaults['ConfigureSpectrumFrequencyStartStop']['return'] + return self._defaults['ConfigureSpectrumFrequencyStartStop']['return'] + + def niRFSA_CreateDeembeddingSparameterTableArray(self, vi, port, table_name, frequencies, frequencies_size, sparameter_table, sparameter_table_size, number_of_ports, sparameter_orientation): # noqa: N802 + if self._defaults['CreateDeembeddingSparameterTableArray']['return'] != 0: + return self._defaults['CreateDeembeddingSparameterTableArray']['return'] + return self._defaults['CreateDeembeddingSparameterTableArray']['return'] + + def niRFSA_CreateDeembeddingSparameterTableS2PFile(self, vi, port, table_name, s2p_file_path, sparameter_orientation): # noqa: N802 + if self._defaults['CreateDeembeddingSparameterTableS2PFile']['return'] != 0: + return self._defaults['CreateDeembeddingSparameterTableS2PFile']['return'] + return self._defaults['CreateDeembeddingSparameterTableS2PFile']['return'] + + def niRFSA_DeleteAllDeembeddingTables(self, vi): # noqa: N802 + if self._defaults['DeleteAllDeembeddingTables']['return'] != 0: + return self._defaults['DeleteAllDeembeddingTables']['return'] + return self._defaults['DeleteAllDeembeddingTables']['return'] + + def niRFSA_DeleteDeembeddingTable(self, vi, port, table_name): # noqa: N802 + if self._defaults['DeleteDeembeddingTable']['return'] != 0: + return self._defaults['DeleteDeembeddingTable']['return'] + return self._defaults['DeleteDeembeddingTable']['return'] + + def niRFSA_DisableAdvanceTrigger(self, vi): # noqa: N802 + if self._defaults['DisableAdvanceTrigger']['return'] != 0: + return self._defaults['DisableAdvanceTrigger']['return'] + return self._defaults['DisableAdvanceTrigger']['return'] + + def niRFSA_DisableRefTrigger(self, vi): # noqa: N802 + if self._defaults['DisableRefTrigger']['return'] != 0: + return self._defaults['DisableRefTrigger']['return'] + return self._defaults['DisableRefTrigger']['return'] + + def niRFSA_DisableStartTrigger(self, vi): # noqa: N802 + if self._defaults['DisableStartTrigger']['return'] != 0: + return self._defaults['DisableStartTrigger']['return'] + return self._defaults['DisableStartTrigger']['return'] + + def niRFSA_EnableSessionAccess(self, vi, enable): # noqa: N802 + if self._defaults['EnableSessionAccess']['return'] != 0: + return self._defaults['EnableSessionAccess']['return'] + return self._defaults['EnableSessionAccess']['return'] + + def niRFSA_ErrorMessage(self, vi, error_code, error_message): # noqa: N802 + if self._defaults['ErrorMessage']['return'] != 0: + return self._defaults['ErrorMessage']['return'] + # error_message + if self._defaults['ErrorMessage']['errorMessage'] is None: + raise MockFunctionCallError("niRFSA_ErrorMessage", param='errorMessage') + test_value = self._defaults['ErrorMessage']['errorMessage'] + if type(test_value) is str: + test_value = test_value.encode('ascii') + assert len(error_message) >= len(test_value) + for i in range(len(test_value)): + error_message[i] = test_value[i] + return self._defaults['ErrorMessage']['return'] + + def niRFSA_FetchIQMultiRecordComplexF32(self, vi, channel_list, starting_record, number_of_records, number_of_samples, timeout, iq_data_arrays, wfm_info): # noqa: N802 + if self._defaults['FetchIQMultiRecordComplexF32']['return'] != 0: + return self._defaults['FetchIQMultiRecordComplexF32']['return'] + # wfm_info + if self._defaults['FetchIQMultiRecordComplexF32']['wfmInfo'] is None: + raise MockFunctionCallError("niRFSA_FetchIQMultiRecordComplexF32", param='wfmInfo') + for field in self._defaults['FetchIQMultiRecordComplexF32']['wfm_info']._fields_: + field_name = field[0] + setattr(wfm_info.contents, field_name, getattr(self._defaults['FetchIQMultiRecordComplexF32']['wfm_info'], field_name)) + return self._defaults['FetchIQMultiRecordComplexF32']['return'] + + def niRFSA_FetchIQMultiRecordComplexF64(self, vi, channel_list, starting_record, number_of_records, number_of_samples, timeout, iq_data_arrays, wfm_info): # noqa: N802 + if self._defaults['FetchIQMultiRecordComplexF64']['return'] != 0: + return self._defaults['FetchIQMultiRecordComplexF64']['return'] + # wfm_info + if self._defaults['FetchIQMultiRecordComplexF64']['wfmInfo'] is None: + raise MockFunctionCallError("niRFSA_FetchIQMultiRecordComplexF64", param='wfmInfo') + for field in self._defaults['FetchIQMultiRecordComplexF64']['wfm_info']._fields_: + field_name = field[0] + setattr(wfm_info.contents, field_name, getattr(self._defaults['FetchIQMultiRecordComplexF64']['wfm_info'], field_name)) + return self._defaults['FetchIQMultiRecordComplexF64']['return'] + + def niRFSA_FetchIQMultiRecordComplexI16(self, vi, channel_list, starting_record, number_of_records, number_of_samples, timeout, iq_data_arrays, wfm_info): # noqa: N802 + if self._defaults['FetchIQMultiRecordComplexI16']['return'] != 0: + return self._defaults['FetchIQMultiRecordComplexI16']['return'] + # wfm_info + if self._defaults['FetchIQMultiRecordComplexI16']['wfmInfo'] is None: + raise MockFunctionCallError("niRFSA_FetchIQMultiRecordComplexI16", param='wfmInfo') + for field in self._defaults['FetchIQMultiRecordComplexI16']['wfm_info']._fields_: + field_name = field[0] + setattr(wfm_info.contents, field_name, getattr(self._defaults['FetchIQMultiRecordComplexI16']['wfm_info'], field_name)) + return self._defaults['FetchIQMultiRecordComplexI16']['return'] + + def niRFSA_FetchIQSingleRecordComplexF32(self, vi, channel_list, record_number, number_of_samples, timeout, iq_data_array, wfm_info): # noqa: N802 + if self._defaults['FetchIQSingleRecordComplexF32']['return'] != 0: + return self._defaults['FetchIQSingleRecordComplexF32']['return'] + # wfm_info + if self._defaults['FetchIQSingleRecordComplexF32']['wfmInfo'] is None: + raise MockFunctionCallError("niRFSA_FetchIQSingleRecordComplexF32", param='wfmInfo') + for field in self._defaults['FetchIQSingleRecordComplexF32']['wfm_info']._fields_: + field_name = field[0] + setattr(wfm_info.contents, field_name, getattr(self._defaults['FetchIQSingleRecordComplexF32']['wfm_info'], field_name)) + return self._defaults['FetchIQSingleRecordComplexF32']['return'] + + def niRFSA_FetchIQSingleRecordComplexF64(self, vi, channel_list, record_number, number_of_samples, timeout, iq_data_array, wfm_info): # noqa: N802 + if self._defaults['FetchIQSingleRecordComplexF64']['return'] != 0: + return self._defaults['FetchIQSingleRecordComplexF64']['return'] + # wfm_info + if self._defaults['FetchIQSingleRecordComplexF64']['wfmInfo'] is None: + raise MockFunctionCallError("niRFSA_FetchIQSingleRecordComplexF64", param='wfmInfo') + for field in self._defaults['FetchIQSingleRecordComplexF64']['wfm_info']._fields_: + field_name = field[0] + setattr(wfm_info.contents, field_name, getattr(self._defaults['FetchIQSingleRecordComplexF64']['wfm_info'], field_name)) + return self._defaults['FetchIQSingleRecordComplexF64']['return'] + + def niRFSA_FetchIQSingleRecordComplexI16(self, vi, channel_list, record_number, number_of_samples, timeout, iq_data_array, wfm_info): # noqa: N802 + if self._defaults['FetchIQSingleRecordComplexI16']['return'] != 0: + return self._defaults['FetchIQSingleRecordComplexI16']['return'] + # wfm_info + if self._defaults['FetchIQSingleRecordComplexI16']['wfmInfo'] is None: + raise MockFunctionCallError("niRFSA_FetchIQSingleRecordComplexI16", param='wfmInfo') + for field in self._defaults['FetchIQSingleRecordComplexI16']['wfm_info']._fields_: + field_name = field[0] + setattr(wfm_info.contents, field_name, getattr(self._defaults['FetchIQSingleRecordComplexI16']['wfm_info'], field_name)) + return self._defaults['FetchIQSingleRecordComplexI16']['return'] + + def niRFSA_GetAttributeViBoolean(self, vi, channel_name, attribute_id, value): # noqa: N802 + if self._defaults['GetAttributeViBoolean']['return'] != 0: + return self._defaults['GetAttributeViBoolean']['return'] + # value + if self._defaults['GetAttributeViBoolean']['value'] is None: + raise MockFunctionCallError("niRFSA_GetAttributeViBoolean", param='value') + if value is not None: + value.contents.value = self._defaults['GetAttributeViBoolean']['value'] + return self._defaults['GetAttributeViBoolean']['return'] + + def niRFSA_GetAttributeViInt32(self, vi, channel_name, attribute_id, value): # noqa: N802 + if self._defaults['GetAttributeViInt32']['return'] != 0: + return self._defaults['GetAttributeViInt32']['return'] + # value + if self._defaults['GetAttributeViInt32']['value'] is None: + raise MockFunctionCallError("niRFSA_GetAttributeViInt32", param='value') + if value is not None: + value.contents.value = self._defaults['GetAttributeViInt32']['value'] + return self._defaults['GetAttributeViInt32']['return'] + + def niRFSA_GetAttributeViInt64(self, vi, channel_name, attribute_id, value): # noqa: N802 + if self._defaults['GetAttributeViInt64']['return'] != 0: + return self._defaults['GetAttributeViInt64']['return'] + # value + if self._defaults['GetAttributeViInt64']['value'] is None: + raise MockFunctionCallError("niRFSA_GetAttributeViInt64", param='value') + if value is not None: + value.contents.value = self._defaults['GetAttributeViInt64']['value'] + return self._defaults['GetAttributeViInt64']['return'] + + def niRFSA_GetAttributeViReal64(self, vi, channel_name, attribute_id, value): # noqa: N802 + if self._defaults['GetAttributeViReal64']['return'] != 0: + return self._defaults['GetAttributeViReal64']['return'] + # value + if self._defaults['GetAttributeViReal64']['value'] is None: + raise MockFunctionCallError("niRFSA_GetAttributeViReal64", param='value') + if value is not None: + value.contents.value = self._defaults['GetAttributeViReal64']['value'] + return self._defaults['GetAttributeViReal64']['return'] + + def niRFSA_GetAttributeViSession(self, vi, channel_name, attribute_id, value): # noqa: N802 + if self._defaults['GetAttributeViSession']['return'] != 0: + return self._defaults['GetAttributeViSession']['return'] + # value + if self._defaults['GetAttributeViSession']['value'] is None: + raise MockFunctionCallError("niRFSA_GetAttributeViSession", param='value') + if value is not None: + value.contents.value = self._defaults['GetAttributeViSession']['value'] + return self._defaults['GetAttributeViSession']['return'] + + def niRFSA_GetAttributeViString(self, vi, channel_name, attribute_id, buf_size, value): # noqa: N802 + if self._defaults['GetAttributeViString']['return'] != 0: + return self._defaults['GetAttributeViString']['return'] + # value + if self._defaults['GetAttributeViString']['value'] is None: + raise MockFunctionCallError("niRFSA_GetAttributeViString", param='value') + if buf_size.value == 0: + return len(self._defaults['GetAttributeViString']['value']) + value.value = self._defaults['GetAttributeViString']['value'].encode('ascii') + return self._defaults['GetAttributeViString']['return'] + + def niRFSA_GetDeembeddingSparameters(self, vi, sparameters, sparameters_array_size, number_of_sparameters, number_of_ports): # noqa: N802 + if self._defaults['GetDeembeddingSparameters']['return'] != 0: + return self._defaults['GetDeembeddingSparameters']['return'] + # sparameters + if self._defaults['GetDeembeddingSparameters']['sparameters'] is None: + raise MockFunctionCallError("niRFSA_GetDeembeddingSparameters", param='sparameters') + test_value = self._defaults['GetDeembeddingSparameters']['sparameters'] + try: + sparameters_ref = sparameters.contents + except AttributeError: + sparameters_ref = sparameters + assert len(sparameters_ref) >= len(test_value) + for i in range(len(test_value)): + sparameters_ref[i] = test_value[i] + # number_of_sparameters + if self._defaults['GetDeembeddingSparameters']['numberOfSparameters'] is None: + raise MockFunctionCallError("niRFSA_GetDeembeddingSparameters", param='numberOfSparameters') + if number_of_sparameters is not None: + number_of_sparameters.contents.value = self._defaults['GetDeembeddingSparameters']['numberOfSparameters'] + # number_of_ports + if self._defaults['GetDeembeddingSparameters']['numberOfPorts'] is None: + raise MockFunctionCallError("niRFSA_GetDeembeddingSparameters", param='numberOfPorts') + if number_of_ports is not None: + number_of_ports.contents.value = self._defaults['GetDeembeddingSparameters']['numberOfPorts'] + return self._defaults['GetDeembeddingSparameters']['return'] + + def niRFSA_GetDeembeddingTableNumberOfPorts(self, vi, number_of_ports): # noqa: N802 + if self._defaults['GetDeembeddingTableNumberOfPorts']['return'] != 0: + return self._defaults['GetDeembeddingTableNumberOfPorts']['return'] + # number_of_ports + if self._defaults['GetDeembeddingTableNumberOfPorts']['numberOfPorts'] is None: + raise MockFunctionCallError("niRFSA_GetDeembeddingTableNumberOfPorts", param='numberOfPorts') + if number_of_ports is not None: + number_of_ports.contents.value = self._defaults['GetDeembeddingTableNumberOfPorts']['numberOfPorts'] + return self._defaults['GetDeembeddingTableNumberOfPorts']['return'] + + def niRFSA_GetError(self, vi, error_code, error_description_buffer_size, error_description): # noqa: N802 + if self._defaults['GetError']['return'] != 0: + return self._defaults['GetError']['return'] + # error_code + if self._defaults['GetError']['errorCode'] is None: + raise MockFunctionCallError("niRFSA_GetError", param='errorCode') + if error_code is not None: + error_code.contents.value = self._defaults['GetError']['errorCode'] + # error_description + if self._defaults['GetError']['errorDescription'] is None: + raise MockFunctionCallError("niRFSA_GetError", param='errorDescription') + if error_description_buffer_size.value == 0: + return len(self._defaults['GetError']['errorDescription']) + error_description.value = self._defaults['GetError']['errorDescription'].encode('ascii') + return self._defaults['GetError']['return'] + + def niRFSA_GetExtCalLastDateAndTime(self, vi, year, month, day, hour, minute): # noqa: N802 + if self._defaults['GetExtCalLastDateAndTime']['return'] != 0: + return self._defaults['GetExtCalLastDateAndTime']['return'] + # year + if self._defaults['GetExtCalLastDateAndTime']['year'] is None: + raise MockFunctionCallError("niRFSA_GetExtCalLastDateAndTime", param='year') + if year is not None: + year.contents.value = self._defaults['GetExtCalLastDateAndTime']['year'] + # month + if self._defaults['GetExtCalLastDateAndTime']['month'] is None: + raise MockFunctionCallError("niRFSA_GetExtCalLastDateAndTime", param='month') + if month is not None: + month.contents.value = self._defaults['GetExtCalLastDateAndTime']['month'] + # day + if self._defaults['GetExtCalLastDateAndTime']['day'] is None: + raise MockFunctionCallError("niRFSA_GetExtCalLastDateAndTime", param='day') + if day is not None: + day.contents.value = self._defaults['GetExtCalLastDateAndTime']['day'] + # hour + if self._defaults['GetExtCalLastDateAndTime']['hour'] is None: + raise MockFunctionCallError("niRFSA_GetExtCalLastDateAndTime", param='hour') + if hour is not None: + hour.contents.value = self._defaults['GetExtCalLastDateAndTime']['hour'] + # minute + if self._defaults['GetExtCalLastDateAndTime']['minute'] is None: + raise MockFunctionCallError("niRFSA_GetExtCalLastDateAndTime", param='minute') + if minute is not None: + minute.contents.value = self._defaults['GetExtCalLastDateAndTime']['minute'] + return self._defaults['GetExtCalLastDateAndTime']['return'] + + def niRFSA_GetExtCalRecommendedInterval(self, vi, months): # noqa: N802 + if self._defaults['GetExtCalRecommendedInterval']['return'] != 0: + return self._defaults['GetExtCalRecommendedInterval']['return'] + # months + if self._defaults['GetExtCalRecommendedInterval']['months'] is None: + raise MockFunctionCallError("niRFSA_GetExtCalRecommendedInterval", param='months') + if months is not None: + months.contents.value = self._defaults['GetExtCalRecommendedInterval']['months'] + return self._defaults['GetExtCalRecommendedInterval']['return'] + + def niRFSA_GetFetchBacklog(self, vi, channel_list, record_number, backlog): # noqa: N802 + if self._defaults['GetFetchBacklog']['return'] != 0: + return self._defaults['GetFetchBacklog']['return'] + # backlog + if self._defaults['GetFetchBacklog']['backlog'] is None: + raise MockFunctionCallError("niRFSA_GetFetchBacklog", param='backlog') + if backlog is not None: + backlog.contents.value = self._defaults['GetFetchBacklog']['backlog'] + return self._defaults['GetFetchBacklog']['return'] + + def niRFSA_GetFrequencyResponse(self, vi, channel_list, buffer_size, frequencies, magnitude_response, phase_response, number_of_frequencies): # noqa: N802 + if self._defaults['GetFrequencyResponse']['return'] != 0: + return self._defaults['GetFrequencyResponse']['return'] + # number_of_frequencies + if self._defaults['GetFrequencyResponse']['numberOfFrequencies'] is None: + raise MockFunctionCallError("niRFSA_GetFrequencyResponse", param='numberOfFrequencies') + if number_of_frequencies is not None: + number_of_frequencies.contents.value = self._defaults['GetFrequencyResponse']['numberOfFrequencies'] + # frequencies + if self._defaults['GetFrequencyResponse']['frequencies'] is None: + raise MockFunctionCallError("niRFSA_GetFrequencyResponse", param='frequencies') + if buffer_size.value == 0: + return len(self._defaults['GetFrequencyResponse']['frequencies']) + try: + frequencies_ref = frequencies.contents + except AttributeError: + frequencies_ref = frequencies + for i in range(len(self._defaults['GetFrequencyResponse']['frequencies'])): + frequencies_ref[i] = self._defaults['GetFrequencyResponse']['frequencies'][i] + # magnitude_response + if self._defaults['GetFrequencyResponse']['magnitudeResponse'] is None: + raise MockFunctionCallError("niRFSA_GetFrequencyResponse", param='magnitudeResponse') + if buffer_size.value == 0: + return len(self._defaults['GetFrequencyResponse']['magnitudeResponse']) + try: + magnitude_response_ref = magnitude_response.contents + except AttributeError: + magnitude_response_ref = magnitude_response + for i in range(len(self._defaults['GetFrequencyResponse']['magnitudeResponse'])): + magnitude_response_ref[i] = self._defaults['GetFrequencyResponse']['magnitudeResponse'][i] + # phase_response + if self._defaults['GetFrequencyResponse']['phaseResponse'] is None: + raise MockFunctionCallError("niRFSA_GetFrequencyResponse", param='phaseResponse') + if buffer_size.value == 0: + return len(self._defaults['GetFrequencyResponse']['phaseResponse']) + try: + phase_response_ref = phase_response.contents + except AttributeError: + phase_response_ref = phase_response + for i in range(len(self._defaults['GetFrequencyResponse']['phaseResponse'])): + phase_response_ref[i] = self._defaults['GetFrequencyResponse']['phaseResponse'][i] + return self._defaults['GetFrequencyResponse']['return'] + + def niRFSA_GetScalingCoefficients(self, vi, channel_list, array_size, coefficient_info, number_of_coefficient_sets): # noqa: N802 + if self._defaults['GetScalingCoefficients']['return'] != 0: + return self._defaults['GetScalingCoefficients']['return'] + # number_of_coefficient_sets + if self._defaults['GetScalingCoefficients']['numberOfCoefficientSets'] is None: + raise MockFunctionCallError("niRFSA_GetScalingCoefficients", param='numberOfCoefficientSets') + if number_of_coefficient_sets is not None: + number_of_coefficient_sets.contents.value = self._defaults['GetScalingCoefficients']['numberOfCoefficientSets'] + # coefficient_info + if self._defaults['GetScalingCoefficients']['coefficientInfo'] is None: + raise MockFunctionCallError("niRFSA_GetScalingCoefficients", param='coefficientInfo') + if array_size.value == 0: + return len(self._defaults['GetScalingCoefficients']['coefficientInfo']) + try: + coefficient_info_ref = coefficient_info.contents + except AttributeError: + coefficient_info_ref = coefficient_info + for i in range(len(self._defaults['GetScalingCoefficients']['coefficientInfo'])): + coefficient_info_ref[i] = self._defaults['GetScalingCoefficients']['coefficientInfo'][i] + return self._defaults['GetScalingCoefficients']['return'] + + def niRFSA_GetSelfCalLastDateAndTime(self, vi, self_calibration_step, year, month, day, hour, minute): # noqa: N802 + if self._defaults['GetSelfCalLastDateAndTime']['return'] != 0: + return self._defaults['GetSelfCalLastDateAndTime']['return'] + # year + if self._defaults['GetSelfCalLastDateAndTime']['year'] is None: + raise MockFunctionCallError("niRFSA_GetSelfCalLastDateAndTime", param='year') + if year is not None: + year.contents.value = self._defaults['GetSelfCalLastDateAndTime']['year'] + # month + if self._defaults['GetSelfCalLastDateAndTime']['month'] is None: + raise MockFunctionCallError("niRFSA_GetSelfCalLastDateAndTime", param='month') + if month is not None: + month.contents.value = self._defaults['GetSelfCalLastDateAndTime']['month'] + # day + if self._defaults['GetSelfCalLastDateAndTime']['day'] is None: + raise MockFunctionCallError("niRFSA_GetSelfCalLastDateAndTime", param='day') + if day is not None: + day.contents.value = self._defaults['GetSelfCalLastDateAndTime']['day'] + # hour + if self._defaults['GetSelfCalLastDateAndTime']['hour'] is None: + raise MockFunctionCallError("niRFSA_GetSelfCalLastDateAndTime", param='hour') + if hour is not None: + hour.contents.value = self._defaults['GetSelfCalLastDateAndTime']['hour'] + # minute + if self._defaults['GetSelfCalLastDateAndTime']['minute'] is None: + raise MockFunctionCallError("niRFSA_GetSelfCalLastDateAndTime", param='minute') + if minute is not None: + minute.contents.value = self._defaults['GetSelfCalLastDateAndTime']['minute'] + return self._defaults['GetSelfCalLastDateAndTime']['return'] + + def niRFSA_GetSelfCalLastTemp(self, vi, self_calibration_step, temperature): # noqa: N802 + if self._defaults['GetSelfCalLastTemp']['return'] != 0: + return self._defaults['GetSelfCalLastTemp']['return'] + # temperature + if self._defaults['GetSelfCalLastTemp']['temperature'] is None: + raise MockFunctionCallError("niRFSA_GetSelfCalLastTemp", param='temperature') + if temperature is not None: + temperature.contents.value = self._defaults['GetSelfCalLastTemp']['temperature'] + return self._defaults['GetSelfCalLastTemp']['return'] + + def niRFSA_GetTerminalName(self, vi, signal, signal_identifier, buffer_size, terminal_name): # noqa: N802 + if self._defaults['GetTerminalName']['return'] != 0: + return self._defaults['GetTerminalName']['return'] + # terminal_name + if self._defaults['GetTerminalName']['terminalName'] is None: + raise MockFunctionCallError("niRFSA_GetTerminalName", param='terminalName') + if buffer_size.value == 0: + return len(self._defaults['GetTerminalName']['terminalName']) + terminal_name.value = self._defaults['GetTerminalName']['terminalName'].encode('ascii') + return self._defaults['GetTerminalName']['return'] + + def niRFSA_InitWithOptions(self, resource_name, id_query, reset_device, option_string, new_vi): # noqa: N802 + if self._defaults['InitWithOptions']['return'] != 0: + return self._defaults['InitWithOptions']['return'] + # new_vi + if self._defaults['InitWithOptions']['newVi'] is None: + raise MockFunctionCallError("niRFSA_InitWithOptions", param='newVi') + if new_vi is not None: + new_vi.contents.value = self._defaults['InitWithOptions']['newVi'] + return self._defaults['InitWithOptions']['return'] + + def niRFSA_Initiate(self, vi): # noqa: N802 + if self._defaults['Initiate']['return'] != 0: + return self._defaults['Initiate']['return'] + return self._defaults['Initiate']['return'] + + def niRFSA_IsSelfCalValid(self, vi, self_cal_valid, valid_steps): # noqa: N802 + if self._defaults['IsSelfCalValid']['return'] != 0: + return self._defaults['IsSelfCalValid']['return'] + # self_cal_valid + if self._defaults['IsSelfCalValid']['selfCalValid'] is None: + raise MockFunctionCallError("niRFSA_IsSelfCalValid", param='selfCalValid') + if self_cal_valid is not None: + self_cal_valid.contents.value = self._defaults['IsSelfCalValid']['selfCalValid'] + # valid_steps + if self._defaults['IsSelfCalValid']['validSteps'] is None: + raise MockFunctionCallError("niRFSA_IsSelfCalValid", param='validSteps') + if valid_steps is not None: + valid_steps.contents.value = self._defaults['IsSelfCalValid']['validSteps'] + return self._defaults['IsSelfCalValid']['return'] + + def niRFSA_LoadConfigurationsFromFile(self, vi, channel_name, file_path): # noqa: N802 + if self._defaults['LoadConfigurationsFromFile']['return'] != 0: + return self._defaults['LoadConfigurationsFromFile']['return'] + return self._defaults['LoadConfigurationsFromFile']['return'] + + def niRFSA_LockSession(self, vi, caller_has_lock): # noqa: N802 + if self._defaults['LockSession']['return'] != 0: + return self._defaults['LockSession']['return'] + # caller_has_lock + if self._defaults['LockSession']['callerHasLock'] is None: + raise MockFunctionCallError("niRFSA_LockSession", param='callerHasLock') + if caller_has_lock is not None: + caller_has_lock.contents.value = self._defaults['LockSession']['callerHasLock'] + return self._defaults['LockSession']['return'] + + def niRFSA_PerformThermalCorrection(self, vi): # noqa: N802 + if self._defaults['PerformThermalCorrection']['return'] != 0: + return self._defaults['PerformThermalCorrection']['return'] + return self._defaults['PerformThermalCorrection']['return'] + + def niRFSA_ReadIQSingleRecordComplexF64(self, vi, channel_list, timeout, iq_data_array, data_array_size, wfm_info): # noqa: N802 + if self._defaults['ReadIQSingleRecordComplexF64']['return'] != 0: + return self._defaults['ReadIQSingleRecordComplexF64']['return'] + # wfm_info + if self._defaults['ReadIQSingleRecordComplexF64']['wfmInfo'] is None: + raise MockFunctionCallError("niRFSA_ReadIQSingleRecordComplexF64", param='wfmInfo') + for field in self._defaults['ReadIQSingleRecordComplexF64']['wfm_info']._fields_: + field_name = field[0] + setattr(wfm_info.contents, field_name, getattr(self._defaults['ReadIQSingleRecordComplexF64']['wfm_info'], field_name)) + return self._defaults['ReadIQSingleRecordComplexF64']['return'] + + def niRFSA_ReadPowerSpectrumF32(self, vi, channel_list, timeout, power_spectrum_data_array, data_array_size, spectrum_info): # noqa: N802 + if self._defaults['ReadPowerSpectrumF32']['return'] != 0: + return self._defaults['ReadPowerSpectrumF32']['return'] + # spectrum_info + if self._defaults['ReadPowerSpectrumF32']['spectrumInfo'] is None: + raise MockFunctionCallError("niRFSA_ReadPowerSpectrumF32", param='spectrumInfo') + for field in self._defaults['ReadPowerSpectrumF32']['spectrum_info']._fields_: + field_name = field[0] + setattr(spectrum_info.contents, field_name, getattr(self._defaults['ReadPowerSpectrumF32']['spectrum_info'], field_name)) + return self._defaults['ReadPowerSpectrumF32']['return'] + + def niRFSA_ReadPowerSpectrumF64(self, vi, channel_list, timeout, power_spectrum_data_array, data_array_size, spectrum_info): # noqa: N802 + if self._defaults['ReadPowerSpectrumF64']['return'] != 0: + return self._defaults['ReadPowerSpectrumF64']['return'] + # spectrum_info + if self._defaults['ReadPowerSpectrumF64']['spectrumInfo'] is None: + raise MockFunctionCallError("niRFSA_ReadPowerSpectrumF64", param='spectrumInfo') + for field in self._defaults['ReadPowerSpectrumF64']['spectrum_info']._fields_: + field_name = field[0] + setattr(spectrum_info.contents, field_name, getattr(self._defaults['ReadPowerSpectrumF64']['spectrum_info'], field_name)) + return self._defaults['ReadPowerSpectrumF64']['return'] + + def niRFSA_ResetDevice(self, vi): # noqa: N802 + if self._defaults['ResetDevice']['return'] != 0: + return self._defaults['ResetDevice']['return'] + return self._defaults['ResetDevice']['return'] + + def niRFSA_ResetWithOptions(self, vi, steps_to_omit): # noqa: N802 + if self._defaults['ResetWithOptions']['return'] != 0: + return self._defaults['ResetWithOptions']['return'] + return self._defaults['ResetWithOptions']['return'] + + def niRFSA_SaveConfigurationsToFile(self, vi, channel_name, file_path): # noqa: N802 + if self._defaults['SaveConfigurationsToFile']['return'] != 0: + return self._defaults['SaveConfigurationsToFile']['return'] + return self._defaults['SaveConfigurationsToFile']['return'] + + def niRFSA_SelfCalibrateRange(self, vi, steps_to_omit, minimum_frequency, maximum_frequency, minimum_reference_level, maximum_reference_level): # noqa: N802 + if self._defaults['SelfCalibrateRange']['return'] != 0: + return self._defaults['SelfCalibrateRange']['return'] + return self._defaults['SelfCalibrateRange']['return'] + + def niRFSA_SendSoftwareEdgeTrigger(self, vi, trigger, trigger_identifier): # noqa: N802 + if self._defaults['SendSoftwareEdgeTrigger']['return'] != 0: + return self._defaults['SendSoftwareEdgeTrigger']['return'] + return self._defaults['SendSoftwareEdgeTrigger']['return'] + + def niRFSA_SetAttributeViBoolean(self, vi, channel_name, attribute_id, value): # noqa: N802 + if self._defaults['SetAttributeViBoolean']['return'] != 0: + return self._defaults['SetAttributeViBoolean']['return'] + return self._defaults['SetAttributeViBoolean']['return'] + + def niRFSA_SetAttributeViInt32(self, vi, channel_name, attribute_id, value): # noqa: N802 + if self._defaults['SetAttributeViInt32']['return'] != 0: + return self._defaults['SetAttributeViInt32']['return'] + return self._defaults['SetAttributeViInt32']['return'] + + def niRFSA_SetAttributeViInt64(self, vi, channel_name, attribute_id, value): # noqa: N802 + if self._defaults['SetAttributeViInt64']['return'] != 0: + return self._defaults['SetAttributeViInt64']['return'] + return self._defaults['SetAttributeViInt64']['return'] + + def niRFSA_SetAttributeViReal64(self, vi, channel_name, attribute_id, value): # noqa: N802 + if self._defaults['SetAttributeViReal64']['return'] != 0: + return self._defaults['SetAttributeViReal64']['return'] + return self._defaults['SetAttributeViReal64']['return'] + + def niRFSA_SetAttributeViSession(self, vi, channel_name, attribute_id, value): # noqa: N802 + if self._defaults['SetAttributeViSession']['return'] != 0: + return self._defaults['SetAttributeViSession']['return'] + return self._defaults['SetAttributeViSession']['return'] + + def niRFSA_SetAttributeViString(self, vi, channel_name, attribute_id, value): # noqa: N802 + if self._defaults['SetAttributeViString']['return'] != 0: + return self._defaults['SetAttributeViString']['return'] + return self._defaults['SetAttributeViString']['return'] + + def niRFSA_UnlockSession(self, vi, caller_has_lock): # noqa: N802 + if self._defaults['UnlockSession']['return'] != 0: + return self._defaults['UnlockSession']['return'] + # caller_has_lock + if self._defaults['UnlockSession']['callerHasLock'] is None: + raise MockFunctionCallError("niRFSA_UnlockSession", param='callerHasLock') + if caller_has_lock is not None: + caller_has_lock.contents.value = self._defaults['UnlockSession']['callerHasLock'] + return self._defaults['UnlockSession']['return'] + + def niRFSA_close(self, vi): # noqa: N802 + if self._defaults['close']['return'] != 0: + return self._defaults['close']['return'] + return self._defaults['close']['return'] + + def niRFSA_reset(self, vi): # noqa: N802 + if self._defaults['reset']['return'] != 0: + return self._defaults['reset']['return'] + return self._defaults['reset']['return'] + + def niRFSA_self_test(self, vi, self_test_result, self_test_message): # noqa: N802 + if self._defaults['self_test']['return'] != 0: + return self._defaults['self_test']['return'] + # self_test_result + if self._defaults['self_test']['selfTestResult'] is None: + raise MockFunctionCallError("niRFSA_self_test", param='selfTestResult') + if self_test_result is not None: + self_test_result.contents.value = self._defaults['self_test']['selfTestResult'] + # self_test_message + if self._defaults['self_test']['selfTestMessage'] is None: + raise MockFunctionCallError("niRFSA_self_test", param='selfTestMessage') + test_value = self._defaults['self_test']['selfTestMessage'] + if type(test_value) is str: + test_value = test_value.encode('ascii') + assert len(self_test_message) >= len(test_value) + for i in range(len(test_value)): + self_test_message[i] = test_value[i] + return self._defaults['self_test']['return'] + + # Helper function to setup Mock object with default side effects and return values + def set_side_effects_and_return_values(self, mock_library): + mock_library.niRFSA_Abort.side_effect = MockFunctionCallError("niRFSA_Abort") + mock_library.niRFSA_Abort.return_value = 0 + mock_library.niRFSA_ChangeExternalCalibrationPassword.side_effect = MockFunctionCallError("niRFSA_ChangeExternalCalibrationPassword") + mock_library.niRFSA_ChangeExternalCalibrationPassword.return_value = 0 + mock_library.niRFSA_CheckAcquisitionStatus.side_effect = MockFunctionCallError("niRFSA_CheckAcquisitionStatus") + mock_library.niRFSA_CheckAcquisitionStatus.return_value = 0 + mock_library.niRFSA_ClearSelfCalibrateRange.side_effect = MockFunctionCallError("niRFSA_ClearSelfCalibrateRange") + mock_library.niRFSA_ClearSelfCalibrateRange.return_value = 0 + mock_library.niRFSA_Commit.side_effect = MockFunctionCallError("niRFSA_Commit") + mock_library.niRFSA_Commit.return_value = 0 + mock_library.niRFSA_ConfigureDeembeddingTableInterpolationLinear.side_effect = MockFunctionCallError("niRFSA_ConfigureDeembeddingTableInterpolationLinear") + mock_library.niRFSA_ConfigureDeembeddingTableInterpolationLinear.return_value = 0 + mock_library.niRFSA_ConfigureDeembeddingTableInterpolationNearest.side_effect = MockFunctionCallError("niRFSA_ConfigureDeembeddingTableInterpolationNearest") + mock_library.niRFSA_ConfigureDeembeddingTableInterpolationNearest.return_value = 0 + mock_library.niRFSA_ConfigureDeembeddingTableInterpolationSpline.side_effect = MockFunctionCallError("niRFSA_ConfigureDeembeddingTableInterpolationSpline") + mock_library.niRFSA_ConfigureDeembeddingTableInterpolationSpline.return_value = 0 + mock_library.niRFSA_ConfigureDigitalEdgeAdvanceTrigger.side_effect = MockFunctionCallError("niRFSA_ConfigureDigitalEdgeAdvanceTrigger") + mock_library.niRFSA_ConfigureDigitalEdgeAdvanceTrigger.return_value = 0 + mock_library.niRFSA_ConfigureDigitalEdgeRefTrigger.side_effect = MockFunctionCallError("niRFSA_ConfigureDigitalEdgeRefTrigger") + mock_library.niRFSA_ConfigureDigitalEdgeRefTrigger.return_value = 0 + mock_library.niRFSA_ConfigureDigitalEdgeStartTrigger.side_effect = MockFunctionCallError("niRFSA_ConfigureDigitalEdgeStartTrigger") + mock_library.niRFSA_ConfigureDigitalEdgeStartTrigger.return_value = 0 + mock_library.niRFSA_ConfigureIQPowerEdgeRefTrigger.side_effect = MockFunctionCallError("niRFSA_ConfigureIQPowerEdgeRefTrigger") + mock_library.niRFSA_ConfigureIQPowerEdgeRefTrigger.return_value = 0 + mock_library.niRFSA_ConfigureRefClock.side_effect = MockFunctionCallError("niRFSA_ConfigureRefClock") + mock_library.niRFSA_ConfigureRefClock.return_value = 0 + mock_library.niRFSA_ConfigureSoftwareEdgeAdvanceTrigger.side_effect = MockFunctionCallError("niRFSA_ConfigureSoftwareEdgeAdvanceTrigger") + mock_library.niRFSA_ConfigureSoftwareEdgeAdvanceTrigger.return_value = 0 + mock_library.niRFSA_ConfigureSoftwareEdgeRefTrigger.side_effect = MockFunctionCallError("niRFSA_ConfigureSoftwareEdgeRefTrigger") + mock_library.niRFSA_ConfigureSoftwareEdgeRefTrigger.return_value = 0 + mock_library.niRFSA_ConfigureSoftwareEdgeStartTrigger.side_effect = MockFunctionCallError("niRFSA_ConfigureSoftwareEdgeStartTrigger") + mock_library.niRFSA_ConfigureSoftwareEdgeStartTrigger.return_value = 0 + mock_library.niRFSA_ConfigureSpectrumFrequencyCenterSpan.side_effect = MockFunctionCallError("niRFSA_ConfigureSpectrumFrequencyCenterSpan") + mock_library.niRFSA_ConfigureSpectrumFrequencyCenterSpan.return_value = 0 + mock_library.niRFSA_ConfigureSpectrumFrequencyStartStop.side_effect = MockFunctionCallError("niRFSA_ConfigureSpectrumFrequencyStartStop") + mock_library.niRFSA_ConfigureSpectrumFrequencyStartStop.return_value = 0 + mock_library.niRFSA_CreateDeembeddingSparameterTableArray.side_effect = MockFunctionCallError("niRFSA_CreateDeembeddingSparameterTableArray") + mock_library.niRFSA_CreateDeembeddingSparameterTableArray.return_value = 0 + mock_library.niRFSA_CreateDeembeddingSparameterTableS2PFile.side_effect = MockFunctionCallError("niRFSA_CreateDeembeddingSparameterTableS2PFile") + mock_library.niRFSA_CreateDeembeddingSparameterTableS2PFile.return_value = 0 + mock_library.niRFSA_DeleteAllDeembeddingTables.side_effect = MockFunctionCallError("niRFSA_DeleteAllDeembeddingTables") + mock_library.niRFSA_DeleteAllDeembeddingTables.return_value = 0 + mock_library.niRFSA_DeleteDeembeddingTable.side_effect = MockFunctionCallError("niRFSA_DeleteDeembeddingTable") + mock_library.niRFSA_DeleteDeembeddingTable.return_value = 0 + mock_library.niRFSA_DisableAdvanceTrigger.side_effect = MockFunctionCallError("niRFSA_DisableAdvanceTrigger") + mock_library.niRFSA_DisableAdvanceTrigger.return_value = 0 + mock_library.niRFSA_DisableRefTrigger.side_effect = MockFunctionCallError("niRFSA_DisableRefTrigger") + mock_library.niRFSA_DisableRefTrigger.return_value = 0 + mock_library.niRFSA_DisableStartTrigger.side_effect = MockFunctionCallError("niRFSA_DisableStartTrigger") + mock_library.niRFSA_DisableStartTrigger.return_value = 0 + mock_library.niRFSA_EnableSessionAccess.side_effect = MockFunctionCallError("niRFSA_EnableSessionAccess") + mock_library.niRFSA_EnableSessionAccess.return_value = 0 + mock_library.niRFSA_ErrorMessage.side_effect = MockFunctionCallError("niRFSA_ErrorMessage") + mock_library.niRFSA_ErrorMessage.return_value = 0 + mock_library.niRFSA_FetchIQMultiRecordComplexF32.side_effect = MockFunctionCallError("niRFSA_FetchIQMultiRecordComplexF32") + mock_library.niRFSA_FetchIQMultiRecordComplexF32.return_value = 0 + mock_library.niRFSA_FetchIQMultiRecordComplexF64.side_effect = MockFunctionCallError("niRFSA_FetchIQMultiRecordComplexF64") + mock_library.niRFSA_FetchIQMultiRecordComplexF64.return_value = 0 + mock_library.niRFSA_FetchIQMultiRecordComplexI16.side_effect = MockFunctionCallError("niRFSA_FetchIQMultiRecordComplexI16") + mock_library.niRFSA_FetchIQMultiRecordComplexI16.return_value = 0 + mock_library.niRFSA_FetchIQSingleRecordComplexF32.side_effect = MockFunctionCallError("niRFSA_FetchIQSingleRecordComplexF32") + mock_library.niRFSA_FetchIQSingleRecordComplexF32.return_value = 0 + mock_library.niRFSA_FetchIQSingleRecordComplexF64.side_effect = MockFunctionCallError("niRFSA_FetchIQSingleRecordComplexF64") + mock_library.niRFSA_FetchIQSingleRecordComplexF64.return_value = 0 + mock_library.niRFSA_FetchIQSingleRecordComplexI16.side_effect = MockFunctionCallError("niRFSA_FetchIQSingleRecordComplexI16") + mock_library.niRFSA_FetchIQSingleRecordComplexI16.return_value = 0 + mock_library.niRFSA_GetAttributeViBoolean.side_effect = MockFunctionCallError("niRFSA_GetAttributeViBoolean") + mock_library.niRFSA_GetAttributeViBoolean.return_value = 0 + mock_library.niRFSA_GetAttributeViInt32.side_effect = MockFunctionCallError("niRFSA_GetAttributeViInt32") + mock_library.niRFSA_GetAttributeViInt32.return_value = 0 + mock_library.niRFSA_GetAttributeViInt64.side_effect = MockFunctionCallError("niRFSA_GetAttributeViInt64") + mock_library.niRFSA_GetAttributeViInt64.return_value = 0 + mock_library.niRFSA_GetAttributeViReal64.side_effect = MockFunctionCallError("niRFSA_GetAttributeViReal64") + mock_library.niRFSA_GetAttributeViReal64.return_value = 0 + mock_library.niRFSA_GetAttributeViSession.side_effect = MockFunctionCallError("niRFSA_GetAttributeViSession") + mock_library.niRFSA_GetAttributeViSession.return_value = 0 + mock_library.niRFSA_GetAttributeViString.side_effect = MockFunctionCallError("niRFSA_GetAttributeViString") + mock_library.niRFSA_GetAttributeViString.return_value = 0 + mock_library.niRFSA_GetDeembeddingSparameters.side_effect = MockFunctionCallError("niRFSA_GetDeembeddingSparameters") + mock_library.niRFSA_GetDeembeddingSparameters.return_value = 0 + mock_library.niRFSA_GetDeembeddingTableNumberOfPorts.side_effect = MockFunctionCallError("niRFSA_GetDeembeddingTableNumberOfPorts") + mock_library.niRFSA_GetDeembeddingTableNumberOfPorts.return_value = 0 + mock_library.niRFSA_GetError.side_effect = MockFunctionCallError("niRFSA_GetError") + mock_library.niRFSA_GetError.return_value = 0 + mock_library.niRFSA_GetExtCalLastDateAndTime.side_effect = MockFunctionCallError("niRFSA_GetExtCalLastDateAndTime") + mock_library.niRFSA_GetExtCalLastDateAndTime.return_value = 0 + mock_library.niRFSA_GetExtCalRecommendedInterval.side_effect = MockFunctionCallError("niRFSA_GetExtCalRecommendedInterval") + mock_library.niRFSA_GetExtCalRecommendedInterval.return_value = 0 + mock_library.niRFSA_GetFetchBacklog.side_effect = MockFunctionCallError("niRFSA_GetFetchBacklog") + mock_library.niRFSA_GetFetchBacklog.return_value = 0 + mock_library.niRFSA_GetFrequencyResponse.side_effect = MockFunctionCallError("niRFSA_GetFrequencyResponse") + mock_library.niRFSA_GetFrequencyResponse.return_value = 0 + mock_library.niRFSA_GetScalingCoefficients.side_effect = MockFunctionCallError("niRFSA_GetScalingCoefficients") + mock_library.niRFSA_GetScalingCoefficients.return_value = 0 + mock_library.niRFSA_GetSelfCalLastDateAndTime.side_effect = MockFunctionCallError("niRFSA_GetSelfCalLastDateAndTime") + mock_library.niRFSA_GetSelfCalLastDateAndTime.return_value = 0 + mock_library.niRFSA_GetSelfCalLastTemp.side_effect = MockFunctionCallError("niRFSA_GetSelfCalLastTemp") + mock_library.niRFSA_GetSelfCalLastTemp.return_value = 0 + mock_library.niRFSA_GetTerminalName.side_effect = MockFunctionCallError("niRFSA_GetTerminalName") + mock_library.niRFSA_GetTerminalName.return_value = 0 + mock_library.niRFSA_InitWithOptions.side_effect = MockFunctionCallError("niRFSA_InitWithOptions") + mock_library.niRFSA_InitWithOptions.return_value = 0 + mock_library.niRFSA_Initiate.side_effect = MockFunctionCallError("niRFSA_Initiate") + mock_library.niRFSA_Initiate.return_value = 0 + mock_library.niRFSA_IsSelfCalValid.side_effect = MockFunctionCallError("niRFSA_IsSelfCalValid") + mock_library.niRFSA_IsSelfCalValid.return_value = 0 + mock_library.niRFSA_LoadConfigurationsFromFile.side_effect = MockFunctionCallError("niRFSA_LoadConfigurationsFromFile") + mock_library.niRFSA_LoadConfigurationsFromFile.return_value = 0 + mock_library.niRFSA_LockSession.side_effect = MockFunctionCallError("niRFSA_LockSession") + mock_library.niRFSA_LockSession.return_value = 0 + mock_library.niRFSA_PerformThermalCorrection.side_effect = MockFunctionCallError("niRFSA_PerformThermalCorrection") + mock_library.niRFSA_PerformThermalCorrection.return_value = 0 + mock_library.niRFSA_ReadIQSingleRecordComplexF64.side_effect = MockFunctionCallError("niRFSA_ReadIQSingleRecordComplexF64") + mock_library.niRFSA_ReadIQSingleRecordComplexF64.return_value = 0 + mock_library.niRFSA_ReadPowerSpectrumF32.side_effect = MockFunctionCallError("niRFSA_ReadPowerSpectrumF32") + mock_library.niRFSA_ReadPowerSpectrumF32.return_value = 0 + mock_library.niRFSA_ReadPowerSpectrumF64.side_effect = MockFunctionCallError("niRFSA_ReadPowerSpectrumF64") + mock_library.niRFSA_ReadPowerSpectrumF64.return_value = 0 + mock_library.niRFSA_ResetDevice.side_effect = MockFunctionCallError("niRFSA_ResetDevice") + mock_library.niRFSA_ResetDevice.return_value = 0 + mock_library.niRFSA_ResetWithOptions.side_effect = MockFunctionCallError("niRFSA_ResetWithOptions") + mock_library.niRFSA_ResetWithOptions.return_value = 0 + mock_library.niRFSA_SaveConfigurationsToFile.side_effect = MockFunctionCallError("niRFSA_SaveConfigurationsToFile") + mock_library.niRFSA_SaveConfigurationsToFile.return_value = 0 + mock_library.niRFSA_SelfCalibrateRange.side_effect = MockFunctionCallError("niRFSA_SelfCalibrateRange") + mock_library.niRFSA_SelfCalibrateRange.return_value = 0 + mock_library.niRFSA_SendSoftwareEdgeTrigger.side_effect = MockFunctionCallError("niRFSA_SendSoftwareEdgeTrigger") + mock_library.niRFSA_SendSoftwareEdgeTrigger.return_value = 0 + mock_library.niRFSA_SetAttributeViBoolean.side_effect = MockFunctionCallError("niRFSA_SetAttributeViBoolean") + mock_library.niRFSA_SetAttributeViBoolean.return_value = 0 + mock_library.niRFSA_SetAttributeViInt32.side_effect = MockFunctionCallError("niRFSA_SetAttributeViInt32") + mock_library.niRFSA_SetAttributeViInt32.return_value = 0 + mock_library.niRFSA_SetAttributeViInt64.side_effect = MockFunctionCallError("niRFSA_SetAttributeViInt64") + mock_library.niRFSA_SetAttributeViInt64.return_value = 0 + mock_library.niRFSA_SetAttributeViReal64.side_effect = MockFunctionCallError("niRFSA_SetAttributeViReal64") + mock_library.niRFSA_SetAttributeViReal64.return_value = 0 + mock_library.niRFSA_SetAttributeViSession.side_effect = MockFunctionCallError("niRFSA_SetAttributeViSession") + mock_library.niRFSA_SetAttributeViSession.return_value = 0 + mock_library.niRFSA_SetAttributeViString.side_effect = MockFunctionCallError("niRFSA_SetAttributeViString") + mock_library.niRFSA_SetAttributeViString.return_value = 0 + mock_library.niRFSA_UnlockSession.side_effect = MockFunctionCallError("niRFSA_UnlockSession") + mock_library.niRFSA_UnlockSession.return_value = 0 + mock_library.niRFSA_close.side_effect = MockFunctionCallError("niRFSA_close") + mock_library.niRFSA_close.return_value = 0 + mock_library.niRFSA_reset.side_effect = MockFunctionCallError("niRFSA_reset") + mock_library.niRFSA_reset.return_value = 0 + mock_library.niRFSA_self_test.side_effect = MockFunctionCallError("niRFSA_self_test") + mock_library.niRFSA_self_test.return_value = 0 diff --git a/generated/nirfsa/nirfsa/unit_tests/test_nirfsa.py b/generated/nirfsa/nirfsa/unit_tests/test_nirfsa.py new file mode 100644 index 000000000..192af084a --- /dev/null +++ b/generated/nirfsa/nirfsa/unit_tests/test_nirfsa.py @@ -0,0 +1,25 @@ +import nirfsa.waveform_info +import numpy + + +def test_populate_samples_info(): + waveform_infos = [] + for i in range(1, 4): + waveform_infos.append(nirfsa.waveform_info.WaveformInfo()) + waveform_infos[-1].actual_samples = i + + # 2D case (multi-record fetch): each row may be wider than actual_samples. + sample_data = numpy.array([ + [0, 0, 0], + [3, 4, 0], + [6, 7, 8], + ], dtype=numpy.float64) + nirfsa.waveform_info._populate_samples_info(waveform_infos, sample_data) + + expected = [ + [0], + [3, 4], + [6, 7, 8], + ] + for i in range(len(waveform_infos)): + assert list(waveform_infos[i].samples) == expected[i] diff --git a/generated/nirfsa/nirfsa/waveform_info.py b/generated/nirfsa/nirfsa/waveform_info.py new file mode 100644 index 000000000..b30a5bc8f --- /dev/null +++ b/generated/nirfsa/nirfsa/waveform_info.py @@ -0,0 +1,116 @@ +import ctypes +import nirfsa._visatype + + +# This class is an internal ctypes implementation detail that corresponds to +# niRFSA_wfmInfo in the C API +class struct_niRFSA_wfmInfo(ctypes.Structure): # noqa N801 + _pack_ = 8 + _fields_ = [ + ('absolute_initial_x', nirfsa._visatype.ViReal64), + ('relative_initial_x', nirfsa._visatype.ViReal64), + ('x_increment', nirfsa._visatype.ViReal64), + ('actual_samples', nirfsa._visatype.ViInt64), + ('offset', nirfsa._visatype.ViReal64), + ('gain', nirfsa._visatype.ViReal64), + ('reserved1', nirfsa._visatype.ViReal64), + ('reserved2', nirfsa._visatype.ViReal64), + ] + + def __init__(self, data=None, absolute_initial_x=0.0, relative_initial_x=0.0, + x_increment=0.0, actual_samples=0, offset=0.0, gain=0.0, + reserved1=0.0, reserved2=0.0): + super(ctypes.Structure, self).__init__() + if data is not None: + self.absolute_initial_x = data.absolute_initial_x + self.relative_initial_x = data.relative_initial_x + self.x_increment = data.x_increment + self.actual_samples = data.actual_samples + self.offset = data.offset + self.gain = data.gain + self.reserved1 = data.reserved1 + self.reserved2 = data.reserved2 + else: + self.absolute_initial_x = absolute_initial_x + self.relative_initial_x = relative_initial_x + self.x_increment = x_increment + self.actual_samples = actual_samples + self.offset = offset + self.gain = gain + self.reserved1 = reserved1 + self.reserved2 = reserved2 + + +class WaveformInfo: + """Python-friendly wrapper for niRFSA waveform info.""" + + def __init__(self, data=None, absolute_initial_x=0.0, relative_initial_x=0.0, + x_increment=0.0, actual_samples=0, offset=0.0, gain=0.0, + reserved1=0.0, reserved2=0.0): + if data is not None: + self.absolute_initial_x = data.absolute_initial_x + self.relative_initial_x = data.relative_initial_x + self.x_increment = data.x_increment + self.actual_samples = data.actual_samples + self.offset = data.offset + self.gain = data.gain + self.reserved1 = data.reserved1 + self.reserved2 = data.reserved2 + else: + self.absolute_initial_x = absolute_initial_x + self.relative_initial_x = relative_initial_x + self.x_increment = x_increment + self.actual_samples = actual_samples + self.offset = offset + self.gain = gain + self.reserved1 = reserved1 + self.reserved2 = reserved2 + + def _create_copy(self, target_class): + try: + return target_class( + absolute_initial_x=self.absolute_initial_x, + relative_initial_x=self.relative_initial_x, + x_increment=self.x_increment, + actual_samples=self.actual_samples, + offset=self.offset, + gain=self.gain, + reserved1=self.reserved1, + reserved2=self.reserved2, + ) + except TypeError: + return target_class(data=self) + + def __repr__(self): + return "{}.{}(absolute_initial_x={}, relative_initial_x={}, x_increment={}, actual_samples={}, offset={}, gain={}, reserved1={}, reserved2={})".format( + self.__class__.__module__, + self.__class__.__qualname__, + self.absolute_initial_x, + self.relative_initial_x, + self.x_increment, + self.actual_samples, + self.offset, + self.gain, + self.reserved1, + self.reserved2, + ) + + def __str__(self): + return self.__repr__() + + +def _populate_samples_info(waveform_infos, sample_data): + '''Chunk up flat array of sample_data and copy each chunk into individual WaveformInfo instance + + Args: + waveform_infos (Iterable of WaveformInfo): WaveformInfo class instances + + sample_data (Iterable of float): Waveform sample data + ''' + if hasattr(sample_data, 'ndim') and sample_data.ndim == 2: + # 2D case (multi-record fetch): sample_data[i] is a 1D view of row i. + # Slice to exact actual_samples to handle rows wider than actual_samples (e.g. int16). + for i in range(len(waveform_infos)): + actual_samples = waveform_infos[i].actual_samples + waveform_infos[i].samples = sample_data[i, :actual_samples] + diff --git a/generated/nirfsa/setup.py b/generated/nirfsa/setup.py new file mode 100644 index 000000000..8e940446c --- /dev/null +++ b/generated/nirfsa/setup.py @@ -0,0 +1,57 @@ +#!/usr/bin/python +# This file was generated + + +from setuptools import setup + + +pypi_name = 'nirfsa' + + +def read_contents(file_to_read): + with open(file_to_read, 'r') as f: + return f.read() + + +setup( + name=pypi_name, + zip_safe=True, + version='1.0.0.dev0', + description='NI-RFSA Python API', + long_description=read_contents('README.rst'), + long_description_content_type='text/x-rst', + author='NI', + author_email="opensource@ni.com", + url="https://github.com/ni/nimi-python", + maintainer="NI", + maintainer_email="opensource@ni.com", + keywords=['nirfsa'], + license='MIT', + include_package_data=True, + packages=['nirfsa'], + python_requires='>=3.10', + install_requires=[ + 'hightime>=0.2.0', + 'nitclk', + 'numpy', + ], + classifiers=[ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: Manufacturing", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: MIT License", + "Operating System :: Microsoft :: Windows", + "Operating System :: POSIX", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: Implementation :: CPython", + "Topic :: Scientific/Engineering :: Instrument Drivers", + "Topic :: System :: Hardware :: Hardware Drivers" + ], + package_data={pypi_name: ['VERSION']}, +) diff --git a/generated/nirfsa/tox-system_tests.ini b/generated/nirfsa/tox-system_tests.ini new file mode 100644 index 000000000..a1211fd17 --- /dev/null +++ b/generated/nirfsa/tox-system_tests.ini @@ -0,0 +1,72 @@ +# Tox (http://tox.testrun.org/) is a tool for running tests +# in multiple virtualenvs. This configuration file will run the +# test suite on all supported python versions. To use it, "pip install tox" +# and then run "tox -c tox-system_tests.ini" from the driver directory. (generated/nirfsa) +[tox] +envlist = py{310,311,312,313,314}-nirfsa-wheel_dep,py{310,311,312,313,314}-nirfsa-system_tests, py314-nirfsa-coverage +skip_missing_interpreters=True +ignore_basepython_conflict=True +# We put the .tox directory outside of the Jenkins workspace so that it isn't wiped with the rest of the repo +toxworkdir = ../../../.tox + +[testenv] +description = + nirfsa-wheel_dep: Build the nitclk wheel because we use it in nirfsa tests + nirfsa-system_tests: Run nirfsa system tests (requires NI-RFSA runtime to be installed) + nirfsa-coverage: Prepare coverage report for upload to codecov.io # upload handled by GitHub Actions + +changedir = + nirfsa-wheel_dep: ../nitclk + nirfsa-system_tests: . + nirfsa-coverage: . + +commands = + nirfsa-wheel_dep: python -m build --wheel + + # --disable-pip-version-check prevents pip from telling us we need to upgrade pip, since we are doing that now + nirfsa-system_tests: python -m pip install --disable-pip-version-check --upgrade pip + nirfsa-system_tests: python ../../tools/install_local_wheel.py --driver nitclk --start-path ../.. + nirfsa-system_tests: python -c "import nirfsa; nirfsa.print_diagnostic_information()" + nirfsa-system_tests: coverage run --rcfile=../../tools/coverage_system_tests.rc --source nirfsa --parallel-mode -m pytest ../../src/nirfsa/examples --junitxml=../junit/junit-nirfsa-{envname}-examples-{env:BITNESS:64}.xml {posargs} + nirfsa-system_tests: coverage run --rcfile=../../tools/coverage_system_tests.rc --source nirfsa --parallel-mode -m pytest ../../src/nirfsa/system_tests -c tox-system_tests.ini --junitxml=../junit/junit-nirfsa-{envname}-{env:BITNESS:64}.xml --durations=5 -p system_test_pytest_delay_terminate_plugin {posargs} + + nirfsa-coverage: coverage combine --rcfile=../../tools/coverage_system_tests.rc ./ + # Create the report to upload + nirfsa-coverage: coverage xml -i --rcfile=../../tools/coverage_system_tests.rc + # Display the coverage results + nirfsa-coverage: coverage report --rcfile=../../tools/coverage_system_tests.rc + +deps = + nirfsa-wheel_dep: build + + nirfsa-system_tests: pytest + nirfsa-system_tests: coverage + nirfsa-system_tests: numpy + nirfsa-system_tests: hightime + nirfsa-system_tests: fasteners + nirfsa-system_tests: pytest-json + + nirfsa-coverage: coverage + +depends = + nirfsa-coverage: py{310,311,312,313,314}-nirfsa-system_tests + nirfsa-system_tests: py{310,311,312,313,314}-nirfsa-wheel_dep, + +passenv = + GIT_BRANCH + GIT_COMMIT + BUILD_URL + BRANCH_NAME + JENKINS_URL + BUILD_NUMBER + +setenv = + PYTHONPATH = ../../src/shared + +[pytest] +addopts = --verbose +filterwarnings = + error::pytest.PytestUnhandledThreadExceptionWarning +norecursedirs = .* build dist CVS _darcs {arch} *.egg venv +junit_suite_name = nimi-python +junit_family = xunit1 From babd35ea0577fb4cb1ca4bebac67bed4b90a8d1c Mon Sep 17 00:00:00 2001 From: mohit-emerson Date: Thu, 13 Aug 2026 12:02:21 +0000 Subject: [PATCH 4/7] rfsa docs --- docs/nirfsa/.readthedocs.yaml | 51 + docs/nirfsa/about_nirfsa.inc | 15 + docs/nirfsa/class.rst | 10720 ++++++++++++++++++++++++++++++++ docs/nirfsa/conf.py | 198 + docs/nirfsa/enums.rst | 3510 +++++++++++ docs/nirfsa/errors.rst | 90 + docs/nirfsa/examples.rst | 23 + docs/nirfsa/index.rst | 30 + docs/nirfsa/installation.inc | 13 + docs/nirfsa/nirfsa.rst | 9 + docs/nirfsa/rep_caps.rst | 88 + docs/nirfsa/status.inc | 46 + docs/nirfsa/toc.inc | 11 + nirfsaunittest.xml | 2197 +++++++ 14 files changed, 17001 insertions(+) create mode 100644 docs/nirfsa/.readthedocs.yaml create mode 100644 docs/nirfsa/about_nirfsa.inc create mode 100644 docs/nirfsa/class.rst create mode 100644 docs/nirfsa/conf.py create mode 100644 docs/nirfsa/enums.rst create mode 100644 docs/nirfsa/errors.rst create mode 100644 docs/nirfsa/examples.rst create mode 100644 docs/nirfsa/index.rst create mode 100644 docs/nirfsa/installation.inc create mode 100644 docs/nirfsa/nirfsa.rst create mode 100644 docs/nirfsa/rep_caps.rst create mode 100644 docs/nirfsa/status.inc create mode 100644 docs/nirfsa/toc.inc create mode 100644 nirfsaunittest.xml diff --git a/docs/nirfsa/.readthedocs.yaml b/docs/nirfsa/.readthedocs.yaml new file mode 100644 index 000000000..7e6f4f505 --- /dev/null +++ b/docs/nirfsa/.readthedocs.yaml @@ -0,0 +1,51 @@ +# .readthedocs.yaml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Why Use A Configuration File? +# https://docs.readthedocs.io/en/stable/config-file/index.html +# The main advantages of using a configuration file over the web interface are: +# * Settings are per version rather than per project. +# * Settings live in your VCS. +# * They enable reproducible build environments over time. +# * Some settings are only available using a configuration file + +# Required +version: 2 + +# Set the version of Python and other tools you might need +build: + os: ubuntu-22.04 + tools: + python: "3.11" + jobs: + # pre_build: + # # Check for broken external links + # - python -m sphinx -b linkcheck -D linkcheck_timeout=1 docs/ _build/linkcheck + post_checkout: + # https://docs.readthedocs.io/en/stable/build-customization.html#cancel-build-based-on-a-condition + # Build-cancellation rules are recommended for monorepos. + # Cancel building pull requests when there aren't changes in any of these paths: docs/_static/ docs/nirfsa/. + # + # If there are no changes (git diff exits with 0) we force the command to return with 183. + # This is a special exit code on Read the Docs that will cancel the build immediately. + - | + if [ "$READTHEDOCS_VERSION_TYPE" = "external" ] && git diff --quiet origin/master -- docs/_static/ docs/nirfsa/; + then + exit 183; + fi + +# Have Read the Docs build documentation with Sphinx +sphinx: + builder: html + configuration: docs/nirfsa/conf.py + +# If using Sphinx, optionally build your docs in additional formats such as PDF +formats: + - epub + - pdf + +# Declare the Python requirements required to build your docs +python: + install: + - requirements: docs/requirements.txt diff --git a/docs/nirfsa/about_nirfsa.inc b/docs/nirfsa/about_nirfsa.inc new file mode 100644 index 000000000..0ae36fb26 --- /dev/null +++ b/docs/nirfsa/about_nirfsa.inc @@ -0,0 +1,15 @@ +.. _about-section: + +About +===== + +The **nirfsa** module provides a Python API for NI-RFSA. The code is maintained in the Open Source repository for `nimi-python `_. + +Support Policy +-------------- +**nirfsa** supports all the Operating Systems supported by NI-RFSA. + +It follows `Python Software Foundation `_ support policy for different versions of CPython. + +NI created and supports **nirfsa**. + diff --git a/docs/nirfsa/class.rst b/docs/nirfsa/class.rst new file mode 100644 index 000000000..f83f664a3 --- /dev/null +++ b/docs/nirfsa/class.rst @@ -0,0 +1,10720 @@ +.. py:module:: nirfsa + +Session +======= + +.. py:class:: Session(self, resource_name, id_query=False, reset_device=False, options={}) + + + + Creates a new session for the device. + + This method sets the initial value of certain properties and sends initialization commands to reset all hardware modules to a known state necessary for NI-RFSA operation. + + To create a new session, pass the downconverter resource name for the RF vector signal analyzer to the **resource name** parameter. + + You can access the device session this VI creates using the NI-RFSA Soft Front Panel (SFP). Accessing the device session with the SFP can help you debug your code. Refer to `Debugging Your Application Using SFP Session Access `_ for more information about accessing your session with the SFP. + + ---- + **Note** + Before initializing your device, you must first associate the modules that comprise your device in MAX. After associating the modules, pass the resource name of the device to this method to initialize all the modules. Refer to `Associating NI-RFSA Modules `_ for information about MAX association. + + ---- + + ---- + **Note** + For multichannel devices such as the PXIe-5860, the resource name must include the channel number to use. The channel number is specified by appending *ChannelNumber* to the device name, where *ChannelNumber* is the channel number (0, 1, etc.). For example, if the device name is PXI1Slot2 and you want to use channel 0, use the resource name PXI1Slot2/0. + + ---- + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Driver Setup Options `_ + + + + + + :param resource_name: + + + Specifies the resource name of the device to initialize. + + For NI-RFSA devices, the syntax is the device name specified in MAX. The typical default name for your device in MAX is PXI1Slot2. You can rename your device by right-clicking the name in MAX, selecting **Rename** from the drop-down menu, and entering a new name. You can also pass in the name of an IVI logical name configured with the IVI Configuration utility. For additional information, refer to the **Installed Devices IVI** topic of the *Measurement & Automation Explorer Help*. + + Device names are not case-sensitive. However, IVI logical names are case-sensitive. If you use an IVI logical name, verify the name is identical to the name shown in the IVI Configuration Utility. + + + + + :type resource_name: str + + :param id_query: + + + Specifies whether you want NI-RFSA to perform an ID query. + + **Defined Values** : + + +--------------------------+ + | Description | + +==========================+ + | Perform ID query. | + +--------------------------+ + | Do not perform ID query. | + +--------------------------+ + + + :type id_query: bool + + :param reset_device: + + + Specifies whether the NI-RFSA device is reset during the initialization procedure. + + **Defined Values** : + + +----------------------+ + | Description | + +======================+ + | Reset the device. | + +----------------------+ + | Do not reset device. | + +----------------------+ + + + :type reset_device: bool + + :param options: + + + Specifies the initial value of certain properties for the session. The + syntax for **options** is a dictionary of properties with an assigned + value. For example: + + { 'simulate': False } + + You do not have to specify a value for all the properties. If you do not + specify a value for a property, the default value is used. + + Advanced Example: + { 'simulate': True, 'driver_setup': { 'Model': '', 'BoardType': '' } } + + +-------------------------+---------+ + | Property | Default | + +=========================+=========+ + | range_check | True | + +-------------------------+---------+ + | query_instrument_status | False | + +-------------------------+---------+ + | cache | True | + +-------------------------+---------+ + | simulate | False | + +-------------------------+---------+ + | record_value_coersions | False | + +-------------------------+---------+ + | driver_setup | {} | + +-------------------------+---------+ + + + :type options: dict + + +Methods +======= + +abort +----- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: abort() + + Stops an acquisition previously started with the :py:meth:`nirfsa.Session._initiate` method or the :py:meth:`nirfsa.Session.read_power_spectrum` method. + + You can also use the :py:meth:`nirfsa.Session.abort` method to stop a self-calibration. Calling this method is optional, unless you want to stop an acquisition before it is complete or you are continuously acquiring data. + + You can stop the following kinds of acquisitions: + + - Triggered spectrum acquisitions that have not yet been triggered + - Multispan acquisitions in progress + - Average spectrum acquisitions in progress + - Single-record spectrum acquisitions in progress + - Streaming in progress + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + + + + +change_external_calibration_password +------------------------------------ + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: change_external_calibration_password(old_password, new_password) + + Changes the password that is required to initialize an external calibration session. + + **Supported Devices**: PXIe-5601/5603/5605/5606, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + + + + + :param old_password: + + + Specifies the old (current) external calibration password. + + The maximum length of the password varies by device. + + + + + :type old_password: str + :param new_password: + + + Specifies the new (desired) external calibration password. + + The maximum length of the password varies by device. + + + + + :type new_password: str + +check_acquisition_status +------------------------ + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: check_acquisition_status() + + Checks the status of the acquisition. + + Use this method to check for any errors that may occur during signal acquisition or to check whether the device has completed the acquisition operation. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `NI RF Vector Signal Analyzer State Diagram `_ + + + + + + :rtype: bool + :return: + + + Returns signal acquisition status. + + |Value |Description | + |:---------|:------------------------------------| + | True | Signal acquisition is complete. | + | False | Signal acquisition is not complete. | + + + + + +clear_self_calibrate_range +-------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: clear_self_calibrate_range() + + Clears the data obtained from the :py:meth:`nirfsa.Session.self_calibrate_range` method. + + **Supported Devices**: PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842 + + + + + +close +----- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: close() + + Closes the session to the device. + + If you close a session that has Soft Front Panel (SFP) session access enabled, any application connected to the shared device session is no longer usable. Refer to `Debugging Your Application Using SFP Session Access `_ for more information about using SFP session access. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + + + .. note:: This method is not needed when using the session context manager + + + +commit +------ + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: commit() + + Commits settings to hardware. + + Calling this method is optional. Settings are automatically committed to hardware when you call the :py:meth:`nirfsa.Session._initiate` method, the read IQ single record complex F64 method, or the :py:meth:`nirfsa.Session.read_power_spectrum` method. + + ---- + **Note** + This method does not wait for settling time, unlike the :py:meth:`nirfsa.Session._initiate` method. + + ---- + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `NI RF Vector Signal Analyzer State Diagram `_ + + + + + +configure_deembedding_table_interpolation_linear +------------------------------------------------ + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: configure_deembedding_table_interpolation_linear(port, table_name, format) + + Selects the linear interpolation method. + + If the carrier frequency does not match a row in the de-embedding table, NI-RFSA performs a linear interpolation based on the entries in the de-embedding table to determine the parameters to use for de-embedding. + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + + + + + :param port: + + + Specifies the name of the port. The only valid value for the PXIe-5840/5841/5842/5860 is "" (empty string). + + + + + :type port: str + :param table_name: + + + Specifies the name of the table. + + + + + :type table_name: str + :param format: + + + Specifies the format of parameters to interpolate. **Defined Values** : + + +---------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=====================================================================+=========================================================================================================================================+ + | :py:data:`~nirfsa.LinearInterpolationFormat.REAL_AND_IMAGINARY` | Results in a linear interpolation of the real portion of the complex number and a separate linear interpolation of the complex portion. | + +---------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.LinearInterpolationFormat.MAGNITUDE_AND_PHASE` | Results in a linear interpolation of the magnitude and a separate linear interpolation of the phase. | + +---------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.LinearInterpolationFormat.MAGNITUDE_DB_AND_PHASE` | Results in a linear interpolation of the magnitude, in decibels, and a separate linear interpolation of the phase. | + +---------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ + + + :type format: :py:data:`nirfsa.LinearInterpolationFormat` + +configure_deembedding_table_interpolation_nearest +------------------------------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: configure_deembedding_table_interpolation_nearest(port, table_name) + + Selects the nearest interpolation method. + + NI-RFSA uses the parameters of the table nearest to the carrier frequency for de-embedding. + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + + + + + :param port: + + + Specifies the name of the port. The only valid value for the PXIe-5840/5841/5842/5860 is "" (empty string). + + + + + :type port: str + :param table_name: + + + Specifies the name of the table. + + + + + :type table_name: str + +configure_deembedding_table_interpolation_spline +------------------------------------------------ + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: configure_deembedding_table_interpolation_spline(port, table_name) + + Selects the spline interpolation method. + + If the carrier frequency does not match a row in the de-embedding table, NI-RFSA performs a spline interpolation based on the entries in the de-embedding table to determine the parameters to use for de-embedding. + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + + + + + :param port: + + + Specifies the name of the port. The only valid value for the PXIe-5840/5841/5842/5860 is "" (empty string). + + + + + :type port: str + :param table_name: + + + Specifies the name of the table. + + + + + :type table_name: str + +configure_digital_edge_advance_trigger +-------------------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: configure_digital_edge_advance_trigger(source, edge) + + Configures the device to wait for a digital edge Advance Trigger. + + The Advance Trigger indicates where a new record begins. + + ---- + **Note** + This method is not supported if you set the **acquisitionType** parameter to :py:data:`~nirfsa.AcquisitionType.SPECTRUM` using the :py:meth:`nirfsa.Session.ConfigureAcquisitionType` method or if you set the :py:attr:`nirfsa.Session.acquisition_type` property to :py:data:`~nirfsa.AcquisitionType.SPECTRUM`. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + + + + + :param source: + + + Specifies the source of the digital edge for the Advance Trigger. + + | Value | Description | + |:-------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + | :py:data:`~nirfsa.NIRFSA_VAL_PFI0` ('PFI0') | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + | :py:data:`~nirfsa.NIRFSA_VAL_PFI1` ('PFI1') | The trigger is received on PFI 1. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG0` ('PXI_Trig0') | The trigger is received on PXI trigger line 0. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG1` ('PXI_Trig1') | The trigger is received on PXI trigger line 1. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG2` ('PXI_Trig2') | The trigger is received on PXI trigger line 2. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG3` ('PXI_Trig3') | The trigger is received on PXI trigger line 3. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG4` ('PXI_Trig4') | The trigger is received on PXI trigger line 4. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG5` ('PXI_Trig5') | The trigger is received on PXI trigger line 5. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG6` ('PXI_Trig6') | The trigger is received on PXI trigger line 6. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG7` ('PXI_Trig7') | The trigger is received on PXI trigger line 7. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_STAR` ('PXI_STAR') | The trigger is received on the PXI star trigger line. This value is not supported for PXIe-5644/5645/5646 devices. | + | :py:data:`~nirfsa.OutputTerm.PXIE_DSTARB` ('PXIE_DSTARB') | The trigger is received on the PXIe DStar B trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841/5842/5860. | + | :py:data:`~nirfsa.OutputTerm.TIMER_EVENT` ('TimerEvent') | The trigger is received from Timer Event on the digitizer. This value is valid on only the PXIe-5820/5840/5841/5842/5860 and for digital edge Advance Triggers on the PXIe-5644/5645/5646 and PXIe-5663E/5665. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI0` ('PFI0') | The trigger is received on PFI 0 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI1`('PFI1') | The trigger is received on PFI 1 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI2` ('PFI2') | The trigger is received on PFI 2 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI3` ('PFI3') | The trigger is received on PFI 3 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI4` ('PFI4') | The trigger is received on PFI 4 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI5` ('PFI5') | The trigger is received on PFI 5 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI6` ('PFI6') | The trigger is received on PFI 6 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI7` ('PFI7') | The trigger is received on PFI 7 of the DIO Terminal. | + + + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + :type source: str + :param edge: + + + Specifies the trigger edge to detect. The default value is :py:data:`~nirfsa.AdvanceTriggerDigitalEdgeEdge.RISING`. + + | Value | Description | + |:------------------------------|:--------------------------------| + | :py:data:`~nirfsa.AdvanceTriggerDigitalEdgeEdge.RISING` (900) | NI-RFSA detects a rising edge. | + | :py:data:`~nirfsa.AdvanceTriggerDigitalEdgeEdge.FALLING` (901) | NI-RFSA detects a falling edge. | + + + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + :type edge: :py:data:`nirfsa.AdvanceTriggerDigitalEdgeEdge` + +configure_digital_edge_ref_trigger +---------------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: configure_digital_edge_ref_trigger(source, edge, pretrigger_samples=0) + + Configures the device to wait for a digital edge Reference Trigger to mark a reference point within the record. + + You can use this trigger with the `NI-TClk API `_. + + ---- + **Note** + The PXIe-5644/5645/5646 does not support the NI-TClk API. + + ---- + + ---- + **Note** + This method is not supported if you set the **acquisitionType** parameter to :py:data:`~nirfsa.AcquisitionType.SPECTRUM` using the :py:meth:`nirfsa.Session.ConfigureAcquisitionType` method or if you set the :py:attr:`nirfsa.Session.acquisition_type` property to :py:data:`~nirfsa.AcquisitionType.SPECTRUM`. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + + + + + :param source: + + + Specifies the source of the digital edge for the Reference trigger. + + |Value |Description | + |:-------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + | :py:data:`~nirfsa.NIRFSA_VAL_PFI0` ('PFI0') | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + | :py:data:`~nirfsa.NIRFSA_VAL_PFI1` ('PFI1') | The trigger is received on PFI 1. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG0` ('PXI_Trig0') | The trigger is received on PXI trigger line 0. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG1` ('PXI_Trig1') | The trigger is received on PXI trigger line 1. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG2` ('PXI_Trig2') | The trigger is received on PXI trigger line 2. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG3` ('PXI_Trig3') | The trigger is received on PXI trigger line 3. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG4` ('PXI_Trig4') | The trigger is received on PXI trigger line 4. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG5` ('PXI_Trig5') | The trigger is received on PXI trigger line 5. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG6` ('PXI_Trig6') | The trigger is received on PXI trigger line 6. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG7` ('PXI_Trig7') | The trigger is received on PXI trigger line 7. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_STAR` ('PXI_STAR') | The trigger is received on the PXI star trigger line. This value is not supported for PXIe-5644/5645/5646 devices. | + | :py:data:`~nirfsa.OutputTerm.PXIE_DSTARB` ('PXIE_DSTARB') | The trigger is received on the PXIe DStar B trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841/5842/5860. | + | :py:data:`~nirfsa.OutputTerm.TIMER_EVENT` ('TimerEvent') | The trigger is received from Timer Event on the digitizer. This value is valid on only the PXIe-5820/5840/5841/5842/5860 and for digital edge Advance Triggers on the PXIe-5644/5645/5646 and PXIe-5663E/5665. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI0` ('PFI0') | The trigger is received on PFI 0 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI1`('PFI1') | The trigger is received on PFI 1 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI2` ('PFI2') | The trigger is received on PFI 2 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI3` ('PFI3') | The trigger is received on PFI 3 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI4` ('PFI4') | The trigger is received on PFI 4 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI5` ('PFI5') | The trigger is received on PFI 5 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI6` ('PFI6') | The trigger is received on PFI 6 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI7` ('PFI7') | The trigger is received on PFI 7 of the DIO Terminal. | + + + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + :type source: str + :param edge: + + + Specifies the trigger edge to detect. The default value is :py:data:`~nirfsa.ReferenceTriggerDigitalEdgeEdge.RISING`. + + |Value |Description | + |:------------------------------|:--------------------------------| + | :py:data:`~nirfsa.ReferenceTriggerDigitalEdgeEdge.RISING` (900) | NI-RFSA detects a rising edge. | + | :py:data:`~nirfsa.ReferenceTriggerDigitalEdgeEdge.FALLING` (901) | NI-RFSA detects a falling edge. | + + + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + :type edge: :py:data:`nirfsa.ReferenceTriggerDigitalEdgeEdge` + :param pretrigger_samples: + + + Specifies the number of samples to store for each record that was acquired in the time period immediately before the trigger occurred. + + + + + :type pretrigger_samples: int + +configure_digital_edge_start_trigger +------------------------------------ + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: configure_digital_edge_start_trigger(source, edge) + + Configures the device to wait for a digital edge Start Trigger at the beginning of the acquisition. + + You can use this trigger with the `NI-TClk API `_. + + ---- + **Note** + The PXIe-5644/5645/5646 does not support the NI-TClk API. + + ---- + + ---- + **Note** + This method is not supported if you set the **acquisitionType** parameter to :py:data:`~nirfsa.AcquisitionType.SPECTRUM` using the :py:meth:`nirfsa.Session.ConfigureAcquisitionType` method or if you set the :py:attr:`nirfsa.Session.acquisition_type` property to :py:data:`~nirfsa.AcquisitionType.SPECTRUM`. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + + + + + :param source: + + + Specifies the source of the digital edge for the Start Trigger. + + | Value | Description | + |:-------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + | :py:data:`~nirfsa.NIRFSA_VAL_PFI0` ('PFI0') | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + | :py:data:`~nirfsa.NIRFSA_VAL_PFI1` ('PFI1') | The trigger is received on PFI 1. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG0` ('PXI_Trig0') | The trigger is received on PXI trigger line 0. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG1` ('PXI_Trig1') | The trigger is received on PXI trigger line 1. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG2` ('PXI_Trig2') | The trigger is received on PXI trigger line 2. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG3` ('PXI_Trig3') | The trigger is received on PXI trigger line 3. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG4` ('PXI_Trig4') | The trigger is received on PXI trigger line 4. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG5` ('PXI_Trig5') | The trigger is received on PXI trigger line 5. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG6` ('PXI_Trig6') | The trigger is received on PXI trigger line 6. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG7` ('PXI_Trig7') | The trigger is received on PXI trigger line 7. | + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_STAR` ('PXI_STAR') | The trigger is received on the PXI star trigger line. This value is not supported for PXIe-5644/5645/5646 devices. | + | :py:data:`~nirfsa.OutputTerm.PXIE_DSTARB` ('PXIE_DSTARB') | The trigger is received on the PXIe DStar B trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841/5842/5860. | + | :py:data:`~nirfsa.OutputTerm.TIMER_EVENT` ('TimerEvent') | The trigger is received from Timer Event on the digitizer. This value is valid on only the PXIe-5820/5840/5841/5842/5860 and for digital edge Advance Triggers on the PXIe-5644/5645/5646 and PXIe-5663E/5665. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI0` ('PFI1') | The trigger is received on PFI 0 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI1`('PFI2') | The trigger is received on PFI 1 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI2` ('PFI3') | The trigger is received on PFI 2 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI3` ('PFI4') | The trigger is received on PFI 3 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI4` ('PFI5') | The trigger is received on PFI 4 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI5` ('PFI6') | The trigger is received on PFI 5 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI6` ('PFI7') | The trigger is received on PFI 6 of the DIO Terminal. | + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI7` ('PFI8') | The trigger is received on PFI 7 of the DIO Terminal. | + + + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + :type source: str + :param edge: + + + Specifies the trigger edge to detect. The default value is :py:data:`~nirfsa.StartTriggerDigitalEdgeEdge.RISING`. + + | Value | Description | + |:------------------------------|:--------------------------------| + | :py:data:`~nirfsa.StartTriggerDigitalEdgeEdge.RISING` (900) | NI-RFSA detects a rising edge. | + | :py:data:`~nirfsa.StartTriggerDigitalEdgeEdge.FALLING` (901) | NI-RFSA detects a falling edge. | + + + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + :type edge: :py:data:`nirfsa.StartTriggerDigitalEdgeEdge` + +configure_iq_power_edge_ref_trigger +----------------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: configure_iq_power_edge_ref_trigger(source, level, slope, pretrigger_samples=0) + + Configures the device to wait for the complex power of the I/Q data to cross the specified threshold to mark a reference point within the record. + + To trigger on burst signals, add a minimum quiet time, configured with the :py:attr:`nirfsa.Session.ref_trigger_minimum_quiet_time` property, to ensure the trigger does not occur in the middle of a burst if the acquisition starts while a burst is being generated. The quiet time should be set to a value smaller than the time between bursts, but large enough to ignore power changes within a burst. + + You can use this trigger with the `NI-TClk API `_. + + ---- + **Note** + This method is not supported if you set the **acquisitionType** parameter to :py:data:`~nirfsa.AcquisitionType.SPECTRUM` using the :py:meth:`nirfsa.Session.ConfigureAcquisitionType` method or if you set the :py:attr:`nirfsa.Session.acquisition_type` property to :py:data:`~nirfsa.AcquisitionType.SPECTRUM`. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + + + + + :param source: + + + Specifies the source of the RF signal for the power edge Reference trigger. The only supported value is "0". + + + + + :type source: str + :param level: + + + Specifies the threshold, in dBm, above or below which the device triggers. + + + + + :type level: float + :param slope: + + + Specifies whether the device detects a positive or negative slope on the trigger signal. The default value is :py:data:`~nirfsa.ReferenceTriggerIqPowerEdgeSlope.RISING`. + + | Value | Description | + |:--------------------------------|:-------------------------------------------------| + | :py:data:`~nirfsa.ReferenceTriggerIqPowerEdgeSlope.RISING` (1000) | NI-RFSA detects a rising edge (positive slope). | + | :py:data:`~nirfsa.ReferenceTriggerIqPowerEdgeSlope.FALLING` (1001) | NI-RFSA detects a falling edge (negative slope). | + + + + + :type slope: :py:data:`nirfsa.ReferenceTriggerIqPowerEdgeSlope` + :param pretrigger_samples: + + + Specifies the number of samples to store for each record that was acquired in the time period immediately before the trigger occurred. + + + + + :type pretrigger_samples: int + +configure_ref_clock +------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: configure_ref_clock(clock_source, ref_clock_rate) + + Configures the NI-RFSA device Reference Clock. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5694, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `PXI-5661 Reference Clock `_ + + `PXIe-5663 Timing Configurations `_ + + `PXIe-5665 Timing Configurations `_ + + `PXIe-5667 Timing Configurations `_ + + `PXIe-5668 Timing Configurations `_ + + `PXIe-5830 Timing Configurations `_ + + `PXIe-5831 Timing Configurations `_ + + + + + + :param clock_source: + + + specifies the source of the Reference Clock signal. + | Clock Source | Description | + |-----------------------|-------------| + | **Onboard Clock (default)** | Uses the onboard Reference Clock as the clock source.
**PXIe-5830/5831/5832**-
- PXIe-5830: Connect PXIe-5820 REF IN to PXIe-3621 REF OUT.
- PXIe-5831: Connect PXIe-5820 REF IN to PXIe-3622 REF OUT.
- PXIe-5832: Connect PXIe-5820 REF IN to PXIe-3623 REF OUT.
**PXIe-5831 with PXIe-5653**-
- Connect PXIe-5820 REF IN to PXIe-3622 REF OUT.
- Connect PXIe-5653 REF OUT (10 MHz) to PXIe-3622 REF IN.
**PXIe-5832 with PXIe-5653**-
- Connect PXIe-5820 REF IN to PXIe-3623 REF OUT.
- Connect PXIe-5653 REF OUT (10 MHz) to PXIe-3623 REF IN.
**PXIe-5841 with PXIe-5655**-
- Lock to PXIe-5655 onboard clock. Connect REF OUT on PXIe-5655 to PXIe-5841 REF IN.
**PXIe-5842**-
- Lock to PXIe-5655 onboard clock. Use cables as shown in the Getting Started Guide. | + | **RefIn** | Uses the signal at the front panel REF IN connector.
**PXIe-5830/5831/5832**-
- PXIe-5830: Connect PXIe-5820 REF IN to PXIe-3621 REF OUT; lock external signal to PXIe-3621 REF IN.
- PXIe-5831: Connect PXIe-5820 REF IN to PXIe-3622 REF OUT; lock external signal to PXIe-3622 REF IN.
- PXIe-5832: Connect PXIe-5820 REF IN to PXIe-3623 REF OUT; lock external signal to PXIe-3623 REF IN.
**PXIe-5831 with PXIe-5653**-
- Connect PXIe-5820 REF IN to PXIe-3622 REF OUT.
- Connect PXIe-5653 REF OUT (10 MHz) to PXIe-3622 REF IN.
- Lock external signal to PXIe-5653 REF IN.
**PXIe-5832 with PXIe-5653**-
- Connect PXIe-5820 REF IN to PXIe-3623 REF OUT.
- Connect PXIe-5653 REF OUT (10 MHz) to PXIe-3623 REF IN.
- Lock external signal to PXIe-5653 REF IN.
**PXIe-5841 with PXIe-5655**-
- Lock to signal at REF IN on PXIe-5655. Connect REF OUT on PXIe-5655 to PXIe-5841 REF IN.
**PXIe-5842**-
- Lock to signal at REF IN on PXIe-5655. Use cables as shown in the Getting Started Guide. | + | **PXI Clock** | Uses the PXI_CLK signal present on the PXI backplane. | + | **PXI_ClkMaster** | Valid only for PXIe-5831 with PXIe-5653 and PXIe-5832 with PXIe-5653.
**PXIe-5831 with PXIe-5653**-
- NI-RFSG configures PXIe-5653 to export Reference Clock.
- Configures PXIe-5820 and PXIe-3622 to use PXI_Clk.
- Connect PXIe-5653 REF OUT (10 MHz) to PXI chassis REF IN.
**PXIe-5832 with PXIe-5653**-
- NI-RFSG configures PXIe-5653 to export Reference Clock.
- Configures PXIe-5820 and PXIe-3623 to use PXI_Clk.
- Connect PXIe-5653 REF OUT (10 MHz) to PXI chassis REF IN. | + + + + + :type clock_source: :py:data:`nirfsa.ReferenceClockSource` + :param ref_clock_rate: + + + specifies the Reference Clock rate, in hertz (Hz), of the signal present at the REF IN or CLK IN connector. This parameter is only valid when the **ref clock source** parameter is set to **RefIn**. The default value is Auto (-1.0), which allows NI-RFSG to use the default Reference Clock rate for the device or automatically detect the Reference Clock rate, if supported. Refer to the Reference Clock Rate property for possible values. + + + + + :type ref_clock_rate: float + +configure_software_edge_advance_trigger +--------------------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: configure_software_edge_advance_trigger() + + Configures the device to wait for a software Advance Trigger. + + The Advance Trigger indicates where a new record begins. The device waits until you call the :py:meth:`nirfsa.Session.send_software_edge_trigger` method to assert the trigger. + + ---- + **Note** + This method is not supported if you set the **acquisitionType** parameter to :py:data:`~nirfsa.AcquisitionType.SPECTRUM` using the :py:meth:`nirfsa.Session.ConfigureAcquisitionType` method or if you set the :py:attr:`nirfsa.Session.acquisition_type` property to :py:data:`~nirfsa.AcquisitionType.SPECTRUM`. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + + + + +configure_software_edge_ref_trigger +----------------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: configure_software_edge_ref_trigger(pretrigger_samples=0) + + Configures the device to wait for a software Reference Trigger to mark a reference point within the record. + + The device waits until you call the :py:meth:`nirfsa.Session.send_software_edge_trigger` method to assert the trigger. + + You can use this trigger with the `NI-TClk API `_. + + ---- + **Note** + The PXIe-5644/5645/5646 does not support the NI-TClk API. + + ---- + + ---- + **Note** + This method is not supported if you set the **acquisitionType** parameter to :py:data:`~nirfsa.AcquisitionType.SPECTRUM` using the :py:meth:`nirfsa.Session.ConfigureAcquisitionType` method or if you set the :py:attr:`nirfsa.Session.acquisition_type` property to :py:data:`~nirfsa.AcquisitionType.SPECTRUM`. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + + + + + :param pretrigger_samples: + + + Specifies the number of samples to store for each record that was acquired in the time period immediately before the trigger occurred. + + + + + :type pretrigger_samples: int + +configure_software_edge_start_trigger +------------------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: configure_software_edge_start_trigger() + + Configures the device to wait for a software Start Trigger at the beginning of the acquisition. + + The device waits until you call the :py:meth:`nirfsa.Session.send_software_edge_trigger` method to assert the trigger. + + You can use this trigger with the `NI-TClk API `_. + + ---- + **Note** + The PXIe-5644/5645/5646 does not support the NI-TClk API. + + ---- + + ---- + **Note** + This method is not supported if you set the **acquisitionType** parameter to :py:data:`~nirfsa.AcquisitionType.SPECTRUM` using the :py:meth:`nirfsa.Session.ConfigureAcquisitionType` method or if you set the :py:attr:`nirfsa.Session.acquisition_type` property to :py:data:`~nirfsa.AcquisitionType.SPECTRUM`. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + + + + +configure_spectrum_frequency +---------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: configure_spectrum_frequency(center_frequency=None, span=None, start_frequency=None, stop_frequency=None) + + Configures the frequency range of a spectrum acquisition. + + You can specify the frequency range using either center frequency and span, or start and stop frequencies. + + ---- + **Note** + If you configure the spectrum span to a value larger than the instantaneous bandwidth of the device, NI-RFSA performs multiple acquisitions and combines them into a spectrum of the size you requested. + + ---- + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + + + + .. tip:: This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].configure_spectrum_frequency` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.configure_spectrum_frequency` + + + :param center_frequency: + + + Specifies the center frequency in a spectrum acquisition. The value is expressed in hertz (Hz). Must be used together with **span**. + + + + + :type center_frequency: float + :param span: + + + Specifies the span of a spectrum acquisition. The value is expressed in hertz (Hz). Must be used together with **center_frequency**. + + + + + :type span: float + :param start_frequency: + + + Specifies the lower limit of a span of frequencies. The value is expressed in hertz (Hz). Must be used together with **stop_frequency**. + + + + + :type start_frequency: float + :param stop_frequency: + + + Specifies the upper limit of a span of frequencies. The value is expressed in hertz (Hz). Must be used together with **start_frequency**. + + + + + :type stop_frequency: float + +create_deembedding_sparameter_table_array +----------------------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: create_deembedding_sparameter_table_array(port, table_name, frequencies, sparameter_table, sparameter_orientation) + + Creates an s-parameter de-embedding table for the port from the input data. + + If you only create one table for a port, NI-RFSA automatically selects that table to de-embed the measurement. + + **Supported Devices** : PXIe-5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `De-embedding Overview`_ + + + + + + :param port: + + + Specifies the name of the port. The only valid value for the PXIe-5840/5841/5842/5860 is "" (empty string). + + + + + :type port: str + :param table_name: + + + Specifies the name of the table. The name must be unique for a given port, but not across ports. If you use the same name as an existing table, the table is replaced. + + + + + :type table_name: str + :param frequencies: + + + Specifies the frequencies for the :py:attr:`nirfsa.Session.SPARAMETER_TABLE` rows. Frequencies must be unique and in ascending order. + + + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + + :type frequencies: numpy.array(dtype=numpy.float64) + :param sparameter_table: + + + Specifies the S-parameters for each frequency. S-parameters for each frequency are placed in the array in the following order: s11, s12, s21, s22. + + + + + :type sparameter_table: numpy.array(dtype=numpy.complex128) + :param sparameter_orientation: + + + Specifies the orientation of the input data relative to the port on the DUT port. + + **Defined Values** : + + +------------------------------------------------------------+-----------------------------------------------------+ + | Name | Description | + +============================================================+=====================================================+ + | :py:data:`~nirfsa.SparameterOrientation.PORT1_TOWARDS_DUT` | Port 1 of the S2P is oriented towards the DUT port. | + +------------------------------------------------------------+-----------------------------------------------------+ + | :py:data:`~nirfsa.SparameterOrientation.PORT2_TOWARDS_DUT` | Port 2 of the S2P is oriented towards the DUT port. | + +------------------------------------------------------------+-----------------------------------------------------+ + + + :type sparameter_orientation: :py:data:`nirfsa.SparameterOrientation` + +create_deembedding_sparameter_table_s2p_file +-------------------------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: create_deembedding_sparameter_table_s2p_file(port, table_name, s2p_file_path, sparameter_orientation) + + Creates an S-parameter de-embedding table for the port based on the specified S2P file. + + If you only create one table for a port, NI-RFSA automatically selects that table to de-embed the measurement. + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `De-embedding Overview `_ + + `S-parameters `_ + + + + + + :param port: + + + Specifies the name of the port. The only valid value for the PXIe-5840/5841/5842/5860 is "" (empty string). + + + + + :type port: str + :param table_name: + + + Specifies the name of the table. The name must be unique for a given port, but not across ports. If you use the same name as an existing table, the table is replaced. + + + + + :type table_name: str + :param s2p_file_path: + + + Specifies the path to the S2P file that contains de-embedding information for the specified port. + + + + + :type s2p_file_path: str + :param sparameter_orientation: + + + Specifies the orientation of the data in the S2P file relative to the port on the DUT port. **Defined Values** : + + +------------------------------------------------------------+-----------------------------------------------------+ + | Name | Description | + +============================================================+=====================================================+ + | :py:data:`~nirfsa.SparameterOrientation.PORT1_TOWARDS_DUT` | Port 1 of the S2P is oriented towards the DUT port. | + +------------------------------------------------------------+-----------------------------------------------------+ + | :py:data:`~nirfsa.SparameterOrientation.PORT2_TOWARDS_DUT` | Port 2 of the S2P is oriented towards the DUT port. | + +------------------------------------------------------------+-----------------------------------------------------+ + + + :type sparameter_orientation: :py:data:`nirfsa.SparameterOrientation` + +delete_all_deembedding_tables +----------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: delete_all_deembedding_tables() + + Deletes all configured de-embedding tables for the session. + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + + + + +delete_deembedding_table +------------------------ + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: delete_deembedding_table(port, table_name) + + Deletes the selected de-embedding table for a given port. + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + + + + + :param port: + + + Specifies the name of the port. The only valid value for the PXIe-5840/5841/5842/5860 is "" (empty string). + + + + + :type port: str + :param table_name: + + + Specifies the name of the table. + + + + + :type table_name: str + +disable_advance_trigger +----------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: disable_advance_trigger() + + Configures the device to not use an Advance Trigger. + + This method is necessary only if you configured an Advance Trigger in the past and now want to disable it. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + + + + +disable_ref_trigger +------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: disable_ref_trigger() + + Configures the device to not wait for a Reference Trigger to mark a reference point within a record. + + This method is necessary only if you previously configured a Reference trigger in the past and now want to disable it. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5668, PXIe-5820/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + + + + +disable_start_trigger +--------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: disable_start_trigger() + + Configures the device to not wait for a Start Trigger at the beginning of the acquisition. + + This method is necessary only if you previously configured a Start Trigger in the past and now want to disable it. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + + + + +enable_session_access +--------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: enable_session_access(enable) + + Enables or disables SFP session access for the specified instrument. + + SFP session access allows the NI-RFSA Soft Front Panel (SFP) to access a device with an existing open session and can help you debug your code. To enable session access, pass True to the **enabled** parameter. To disable session access, pass False to the **enabled** parameter. + + Refer to `Configuring SFP Session Access using LabWindows/CVI or C `_ for more information about SFP session access. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694, PXIe-5830/5831/5832/5840/5841/5842/5860 + + ---- + **Note** + NI-RFSA does not support NI-TClk when driver session debugging is enabled. + + ---- + + + + + + :param enable: + + + Enables or disables SFP session access for the specified device. + + | Value | Description | + |:---------|:-------------------------| + | True | Enables session access. | + | False | Disables session access. | + + + + + :type enable: bool + +error_message +------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: error_message(error_code) + + Converts an error code returned by an NI-RFSA method into a user-readable string. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5840 + + + + + + :param error_code: + + + Passes the **errorCode** parameter that is returned from any NI-RFSA method. + + + + + :type error_code: int + + :rtype: str + :return: + + + Returns the user-readable message string that corresponds to the error code you specify. + + You must pass a ViChar array with 1024 bytes or more to this parameter. Only the first 1024 bytes of the array are used. + + + + + +fetch_iq_multi_record_into +-------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: fetch_iq_multi_record_into(iq_data_arrays, starting_record=0, number_of_records=None, number_of_samples=None, timeout=hightime.timedelta(seconds=10.0)) + + Fetches I/Q data from multiple records in an acquisition. + + A fetch transfers acquired waveform data from device memory to computer memory. The data was acquired to onboard memory previously by the hardware after the acquisition was initiated. + + This method accepts a data_type parameter to specify the desired data format: numpy.complex64, numpy.complex128, or numpy.int16. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `None (Trigger Type) `_ + + + + + .. tip:: This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].fetch_iq_multi_record` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.fetch_iq_multi_record` + + + :param iq_data_arrays: + + + Specifies a pre-allocated 2D numpy array of shape (number_of_records, number_of_samples) to be filled with the acquired I/Q data. Each row corresponds to one record. The real and imaginary parts of this complex data array correspond to the in-phase (I) and quadrature-phase (Q) data, respectively. + + + + + :type iq_data_arrays: 2D numpy.array of numpy.complex64, 2D numpy.array of numpy.complex128 or interleaved complex data in the form of 2D numpy.array of numpy.int16 + :param starting_record: + + + Specifies the first record to retrieve. Record numbers are zero-based. The default value is 0. + + + + + :type starting_record: int + :param number_of_records: + + + Specifies the number of records to fetch. + + + + + :type number_of_records: int + :param number_of_samples: + + + Specifies the number of samples per record. + + + + + :type number_of_samples: int + :param timeout: + + + **PXI-5661, PXIe-5663/5665/5667** Specifies the time, in seconds, allotted for the method to complete before returning a timeout error. + + **PXIe-5644/5645/5646, PXIe-5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860** Specifies the time, in seconds, allotted to receive the reference trigger. + + ---- + + For all supported devices, a value of specifies the method waits until all data is available. A value of 0 specifies the method immediately returns available data. + + ---- + + + + + :type timeout: hightime.timedelta, datetime.timedelta, or float in seconds + +fetch_iq_single_record_into +--------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: fetch_iq_single_record_into(iq_data_array, record_number=0, number_of_samples=None, timeout=hightime.timedelta(seconds=10.0)) + + Fetches I/Q data from a single record in an acquisition. + + The fetch transfers acquired waveform data from device memory to computer memory. The data was acquired to onboard memory previously by the hardware after the acquisition was initiated. + + This method accepts a data_type parameter to specify the desired data format: numpy.complex64, numpy.complex128, or numpy.int16. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `None (Trigger Type) `_ + + + + + .. tip:: This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].fetch_iq_single_record` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.fetch_iq_single_record` + + + :param iq_data_array: + + + Specifies the pre-allocated numpy array to be filled with the acquired I/Q data. The real and imaginary parts of this complex data array correspond to the in-phase (I) and quadrature-phase (Q) data, respectively. + + + + + :type iq_data_array: numpy array of numpy.complex64, numpy array of numpy.complex128 or interleaved complex data in the form of numpy array of numpy.int16 + :param record_number: + + + Specifies the record to retrieve. Record numbers are zero-based. + + + + + :type record_number: int + :param number_of_samples: + + + Specifies the number of samples to fetch. The value must specify the array size of the :py:attr:`nirfsa.Session.DATA` parameter. + + + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + + :type number_of_samples: int + :param timeout: + + + **PXI-5661, PXIe-5663/5665/5667** Specifies the time, in seconds, allotted for the method to complete before returning a timeout error. + + **PXIe-5644/5645/5646, PXIe-5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860** Specifies the time, in seconds, allotted to receive the reference trigger. + + ---- + + For all supported devices, a value of specifies the method waits until all data is available. A value of 0 specifies the method immediately returns available data. + + ---- + + + + + :type timeout: hightime.timedelta, datetime.timedelta, or float in seconds + +get_deembedding_sparameters +--------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: get_deembedding_sparameters() + + Returns the S-parameters used for de-embedding a measurement on the selected port. + + This includes interpolation of the parameters based on the configured carrier frequency. This method returns an empty array if no de-embedding is done. + + If you want to call this method just to get the required buffer size, you can pass 0 for **S-parameter Size** and VI_NULL for the **S-parameters** buffer. + + **Supported Devices** : PXIe-5830/5831/5832/5840/5841/5842/5860 + + + + .. note:: The port orientation for the returned S-parameters is normalized to :py:data:`~nirfsa.SparameterOrientation.PORT1_TOWARDS_DUT`. + + + + :rtype: numpy.array(dtype=numpy.complex128) + :return: + + + Returns an array of S-parameters. The S-parameters are returned in the following order: s11, s12, s21, s22. + + + + + +get_ext_cal_last_date_and_time +------------------------------ + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: get_ext_cal_last_date_and_time() + + Returns the date and time of the last successful external calibration. + + The time returned is 24-hour (military) local time; for example, if the device was calibrated at 2:30PM, this method returns + + 14 for the hours parameter and + + 30 for the minutes parameter. + + **Supported Devices** : PXI-5610, PXIe-5611, PXIe-5644/5645/5646, PXI/PXIe-5650/5651/5652, PXIe-5653/5654/5654, PXI-5670/5671, PXIe-5672/5673/5673E, PXIe-5696, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + + + + + :rtype: hightime.datetime + :return: + + + + + + +get_ext_cal_recommended_interval +-------------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: get_ext_cal_recommended_interval() + + Returns the recommended interval between external calibrations, in months. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + + + + + :rtype: hightime.timedelta, datetime.timedelta, or int in months + :return: + + + Returns the recommended maximum interval between external calibrations, in months. + + + + + +get_fetch_backlog +----------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: get_fetch_backlog(record_number) + + Returns the number of points acquired that have not yet been fetched. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + + + + .. tip:: This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].get_fetch_backlog` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.get_fetch_backlog` + + + :param record_number: + + + Specifies the record from which to read the backlog. Record numbers are zero-based. + + + + + :type record_number: int + + :rtype: int + :return: + + + Returns the number of samples available to read for the requested record. + + + + + +get_frequency_response +---------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: get_frequency_response() + + Returns the requested device response type, based on current NI-RFSA settings. The PXI-5661 and PXIe-5663/5663E/5665/5667/5668 automatically corrects the IF and RF response when you set the Digital IF Equalization Enabled property to TRUE. If you are using external digitizer mode, you can use information returned from this VI to correct your measurement. + + Refer to the *Factory Calibration* topic for your device for more information about frequency-response calibration. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698 + + + + + .. tip:: This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].get_frequency_response` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.get_frequency_response` + + + :rtype: tuple (frequencies, magnitude_response, phase_response) + + WHERE + + frequencies (list of float): + + + Returns an array containing the frequencies, in hertz (Hz), that correspond to the response data. + + Pass VI_NULL if you do not want to use this parameter. + + + + + magnitude_response (list of float): + + + Returns an array containing the magnitude of the requested response, in decibels (dB). The magnitude response is normalized to the center frequency at each frequency in the :py:attr:`nirfsa.Session.FREQUENCIES` array. + + Pass VI_NULL if you do not want to use this parameter. + + + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + + phase_response (list of float): + + + Returns an array containing the phase of the requested response, in radians. The phase response is normalized to the center frequency at each frequency entry in the :py:attr:`nirfsa.Session.FREQUENCIES` array. + + Pass VI_NULL if you do not want to use this parameter. This array may contain zeros if the device does not contain a stored phase response in its calibration data. + + + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + + +get_scaling_coefficients +------------------------ + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: get_scaling_coefficients() + + Returns coefficients you can use to convert unscaled data to scaled I/Q data. + + Acquired data may be unscaled when sent by a peer-to-peer stream or fetched as unscaled data. Use this method to obtain :py:meth:`nirfsa.Session.get_scaling_coefficients` structures in the **:py:attr:`nirfsa.Session.COEFFICIENT_INFO`** array that provide gain and offset values you can use to scale this data into the actual I/Q values. The **:py:attr:`nirfsa.Session.COEFFICIENT_INFO`** array returns one element for each channel specified in the **:py:attr:`nirfsa.Session.CHANNEL_LIST`** parameter. The element order matches the order specified by the **:py:attr:`nirfsa.Session.CHANNEL_LIST`** parameter. To get the actual I/Q values, scale the unscaled data from an acquisition by multiplying it by the gain value of the appropriate **:py:attr:`nirfsa.Session.COEFFICIENT_INFO`** element then adding the offset from the same element. + + ---- + **Note** + The coefficients are calculated by NI-RFSA for the current configuration of the device, so they are only valid for acquisitions obtained with the same device configuration. + + ---- + + To get the required size of the array, call this method with **:py:attr:`nirfsa.Session.ARRAY_SIZE`** set to 0 and NULL for the **:py:attr:`nirfsa.Session.COEFFICIENT_INFO`** array. This method returns the required size in the **:py:attr:`nirfsa.Session.NUMBER_OF_COEFFICIENT_SETS`** parameter. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + + .. tip:: This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].get_scaling_coefficients` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.get_scaling_coefficients` + + + :rtype: list of CoefficientInfo + :return: + + + Specifies the array for storing the coefficient info. + + - **offset** is the number that should be added to the data from a peer-to-peer stream after the gain has been applied if you want to scale unscaled data. + - **gain** returns the multiplier that you should use to scale data obtained from a peer-to-peer stream. + + + + + +get_self_cal_last_date_and_time +------------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: get_self_cal_last_date_and_time(self_calibration_step) + + Returns the date and time of the last successful self-calibration. + + The time returned is 24-hour local time. For example, if the device was calibrated at 2:30PM, this method returns + + 14 for the hours parameter and + + 30 for the minutes parameter. + + **Supported Devices** : PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + + + + + :param self_calibration_step: + + + Specifies the self-calibration step to query for the last successful self-calibration date and time data. + + + + + :type self_calibration_step: :py:data:`nirfsa.SelfCalibrationStep` + + :rtype: hightime.datetime + :return: + + + + + + +get_self_calibration_temperature +-------------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: get_self_calibration_temperature(self_calibration_step) + + Returns the temperature, in degrees Celsius, at the last successful self-calibration. + + ---- + **Note** + For the PXIe-5644/5645/5646, you must select :py:data:`~nirfsa.NIRFSA_VAL_SELF_CAL_IMAGE_SUPPRESSION` for the **selfCalibrationStep** parameter. + + ---- + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831 (IF only)/5832 (IF only)/5840/5841/5842/5860 + + + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + + :param self_calibration_step: + + + Specifies the self-calibration step to query for the last successful self-calibration date and time data. + + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | Name | Description | + +===========================================+=================================================================================================+ + | SelfCalibrationStep.PRESELECTOR_ALIGNMENT | Calls for preselector alignment. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.GAIN_REFERENCE | Measures the changes in gain since the last external calibration was run. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.IF_FLATNESS | Measures the IF response of the entire system for each of the supported IF filters | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.DIGITIZER_SELF_CAL | Calls for digitizer self-calibration, if the digitizer is associated with the RF downconverter. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.LO_SELF_CAL | Calls for LO self-calibration, if the LO source module is associated with the RF downconverter. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.AMPLITUDE_ACCURACY | Selects the Amplitude Accuracy self-calibration step. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.RESIDUAL_LO_POWER | Selects the Residual LO Power self-calibration step. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.IMAGE_SUPPRESSION | Selects the Image Suppression self-calibration step. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.SYNTHESIZER_ALIGNMENT | Selects the Synthesizer Alignment self-calibration step. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + | SelfCalibrationStep.DC_OFFSET | Selects the DC Offset self-calibration step. | + +-------------------------------------------+-------------------------------------------------------------------------------------------------+ + + + :type self_calibration_step: :py:data:`nirfsa.SelfCalibrationStep` + + :rtype: float + :return: + + + Returns the temperature, in degrees Celsius, of the device at the last successful self-calibration. + + + + + +get_terminal_name +----------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: get_terminal_name(signal, signal_identifier="") + + Returns the fully qualified name of the signal being queried. + + Signals can be triggers, clocks, or events. + + You can pass the **:py:attr:`nirfsa.Session.TERMINAL_NAME`** parameter that is returned to the **source** parameter of a configure trigger method. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Events `_ + + + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + + + :param signal: + + + Specifies the signal for which you want to query the terminal. + + +------------------------------+----------------------------------------------+ + | Name | Description | + +==============================+==============================================+ + | Signal.START_TRIGGER | NI-RFSA routes a Start Trigger. | + +------------------------------+----------------------------------------------+ + | Signal.REF_TRIGGER | NI-RFSA routes a Reference | + +------------------------------+----------------------------------------------+ + | Signal.ADVANCE_TRIGGER | NI-RFSA routes an Advance | + +------------------------------+----------------------------------------------+ + | Signal.READY_FOR_START_EVENT | NI-RFSA routes a Ready for Start Event. | + +------------------------------+----------------------------------------------+ + | Signal.READY_FOR_REF_EVENT | NI-RFSA routes a Ready for Reference Event.. | + +------------------------------+----------------------------------------------+ + | Signal.END_OF_RECORD_EVENT | NI-RFSA routes a End of Record Event. | + +------------------------------+----------------------------------------------+ + | Signal.DONE_EVENT | NI-RFSA routes a Done Event. | + +------------------------------+----------------------------------------------+ + | Signal.REF_CLOCK | NI-RFSA routes a Reference Clock. | + +------------------------------+----------------------------------------------+ + | Signal.USER | NI-RFSA routes a User Defined Signal. | + +------------------------------+----------------------------------------------+ + + + :type signal: :py:data:`nirfsa.Signal` + :param signal_identifier: + + + Specifies a particular instance of a trigger. NI-RFSA does not support this parameter. + + + + + :type signal_identifier: str + + :rtype: str + :return: + + + Returns the fully qualified name of the signal being queried. + + + + + +initiate +-------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: initiate() + + Commits settings to hardware, waits for hardware settling, and starts an acquisition. + + You can use this method in conjunction with one of the niRFSA fetch I/Q methods to retrieve acquired I/Q data, or you can use the read IQ single record complex F64 method to both initiate the acquisition and retrieve I/Q data at one time. + + ---- + **Note** + If you are using external digitizer mode, this method commits settings and waits for settling, but it does not start an acquisition. Notice that using the :py:meth:`nirfsa.Session.commit` method on its own commits settings to hardware, but the device does not wait for hardware settling. + + ---- + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `None (Trigger Type) `_ + + `RF List Mode `_ + + `NI RF Vector Signal Analyzer State Diagram `_ + + + + .. note:: This method will return a Python context manager that will initiate on entering and abort on exit. + + + +is_self_cal_valid +----------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: is_self_cal_valid() + + Indicates which calibration steps contain valid calibration data. + + To omit steps with valid calibration data from self-calibration, you can pass the **:py:attr:`nirfsa.Session.VALID_STEPS`** parameter to the **stepsToOmit** parameter of the :py:meth:`nirfsa.Session.SelfCalibrate` method. + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668 + + + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + + + :rtype: tuple (self_cal_valid, valid_steps) + + WHERE + + self_cal_valid (bool): + + + Returns True if all the calibration data is valid and False if any of the calibration data is invalid. + + + + + valid_steps (:py:data:`nirfsa.SelfCalSteps`): + + + Returns valid steps. + + ---- + If two or more calibration steps are valid, this parameter returns a bitwise-OR combination of the calibration steps. For example, if both :py:data:`~nirfsa.SelfCalSteps.IF_FLATNESS` and :py:data:`~nirfsa.SelfCalSteps.LO_SELF_CAL` steps are valid, NI-RFSA returns the following string: + + :py:data:`~nirfsa.SelfCalSteps.IF_FLATNESS` | + + :py:data:`~nirfsa.SelfCalSteps.LO_SELF_CAL` + + ---- + + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +====================================+=====================================================================================================================+ + | SelfCalSteps.DIGITIZER_SELF_CAL | Omits the Image Suppression step. If you omit this step, the Residual Sideband Image performance is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.PRESELECTOR_ALIGNMENT | Omits the LO Self Cal step. If you omit this step, the power level of the LO is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.OMIT_NONE | No calibration steps are omitted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.GAIN_REFERENCE | Omits the Power Level Accuracy step. If you omit this step, the power level accuracy of the device is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.IF_FLATNESS | Omits the Residual LO Power step. If you omit this step, the Residual LO Power performance is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.LO_SELF_CAL | Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.AMPLITUDE_ACCURACY | Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.RESIDUAL_LO_POWER | Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.IMAGE_SUPPRESSION | Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.SYNTHESIZER_ALIGNMENT | Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + | SelfCalSteps.DC_OFFSET | Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. | + +------------------------------------+---------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + +load_configurations_from_file +----------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: load_configurations_from_file(file_path) + + Loads the configurations from the specified file to the NI-RFSA driver session. + + The VI does an implicit reset before loading the configurations from the file. + + **Supported Devices** : PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + + + + .. tip:: This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].load_configurations_from_file` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.load_configurations_from_file` + + + :param file_path: + + + Specifies the absolute path of the file from which the NI-RFSA loads the configurations. + + + + + :type file_path: str + +lock +---- + + .. py:currentmodule:: nirfsa.Session + +.. py:method:: lock() + + Obtains a multithread lock on the device session. Before doing so, the + software waits until all other execution threads release their locks + on the device session. + + Other threads may have obtained a lock on this session for the + following reasons: + + - The application called the :py:meth:`nirfsa.Session.lock` method. + - A call to NI-RFSA locked the session. + - After a call to the :py:meth:`nirfsa.Session.lock` method returns + successfully, no other threads can access the device session until + you call the :py:meth:`nirfsa.Session.unlock` method or exit out of the with block when using + lock context manager. + - Use the :py:meth:`nirfsa.Session.lock` method and the + :py:meth:`nirfsa.Session.unlock` method around a sequence of calls to + instrument driver methods if you require that the device retain its + settings through the end of the sequence. + + You can safely make nested calls to the :py:meth:`nirfsa.Session.lock` method + within the same thread. To completely unlock the session, you must + balance each call to the :py:meth:`nirfsa.Session.lock` method with a call to + the :py:meth:`nirfsa.Session.unlock` method. + + One method for ensuring there are the same number of unlock method calls as there is lock calls + is to use lock as a context manager + + .. code:: python + + with nirfsa.Session('dev1') as session: + with session.lock(): + # Calls to session within a single lock context + + The first `with` block ensures the session is closed regardless of any exceptions raised + + The second `with` block ensures that unlock is called regardless of any exceptions raised + + :rtype: context manager + :return: + When used in a `with` statement, :py:meth:`nirfsa.Session.lock` acts as + a context manager and unlock will be called when the `with` block is exited + +perform_thermal_correction +-------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: perform_thermal_correction() + + Corrects for temperature variations while acquiring the same signal for an extended period of time in a continuous acquisition. + + NI-RFSA internally acquires the temperature every time you initiate an acquisition. If you are performing a continuous acquisition, National Instruments recommends calling this method once every 10 minutes in a stable temperature environment to periodically update temperature calibration. If the ambient temperature varies, call this method more frequently. + + ---- + **Note** + You cannot call this method if your device is operating in `RF list mode `_. + + ---- + + Refer to the *Thermal Management* section for your device for more information about typical operating temperatures. + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694, PXIe-5830/5831/5832/5840/5841/5842 + + + + + +read_iq_single_record_into +-------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: read_iq_single_record_into(iq_data_array, data_array_size, timeout=hightime.timedelta(seconds=10.0)) + + Initiates an acquisition and fetches a single I/Q data record. + + Do not use this method if you have configured the device to continuously acquire data samples or to acquire multiple records. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `None (Trigger Type) `_ + + + + + .. tip:: This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].read_iq_single_record` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.read_iq_single_record` + + + :param iq_data_array: + + + Returns the acquired waveform. Allocate an NIComplexNumber array at least as large as the number of samples configured in the :py:meth:`nirfsa.Session.ConfigureNumberOfSamples` method. + + + + + :type iq_data_array: numpy array of numpy.complex64, numpy array of numpy.complex128 or interleaved complex data in the form of numpy array of numpy.int16 + :param timeout: + + + Specifies in seconds the time allotted for the method to complete before returning a timeout error. A value of specifies the method waits until all data is available. + + + + + :type timeout: hightime.timedelta, datetime.timedelta, or float in seconds + + :rtype: WaveformInfo + :return: + + + Contains the absolute and relative timestamps for the operation, the time interval (dt), and the actual number of samples read. + + The following list provides more information about each of these properties: + + - **absolute timestamp** Returns the timestamp, in seconds, of the first fetched sample that is comparable between records and acquisitions. + + ---- + + The value of the absolute timestamp returned is always 0 for the PXIe-5644/5645/5646, PXIe-5668, and PXIe-5820/5830/5831/5832/5840/5841/5842/5860. + + ---- + + - **relative timestamp** Returns a timestamp that corresponds to the difference, in seconds, between the first sample returned and the Reference Trigger location. The timestamp is zero if the Reference Trigger has not occurred. + + ---- + + + The value of the relative timestamp returned is always 0 for the PXIe-5644/5645/5646. + + ---- + + - **dt** Returns the time interval between data points in the acquired signal. The I/Q data sample rate is the reciprocal of this value. + - **actual samples read** Returns an integer representing the number of samples in the waveform. + - **offset** Returns the offset to scale data, (*b*), in *mx* + *b* form. + - **gain** Returns the gain to scale data, (*m*), in *mx* + *b* form. + + + + + +read_power_spectrum_into +------------------------ + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: read_power_spectrum_into(power_spectrum_data_array, data_array_size=None, timeout=hightime.timedelta(seconds=10.0)) + + Initiates a spectrum acquisition and returns power spectrum data. + + ---- + **Note** + Under certain configurations, negative infinity is returned from this VI. If the Reference Level is very high and if the Signal Bandwidth is comparatively less, the ADC returns zero, which equates to negative infinity in dBm. This is expected behavior. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5830/5831/5832/5840/5841/5842/5860 + + + + + .. tip:: This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].read_power_spectrum` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.read_power_spectrum` + + + :param power_spectrum_data_array: + + + Specifies a pre-allocated numpy array to be filled with power spectrum data. The dtype of this array determines the data format: numpy.float64 or numpy.float32. Allocate an array at least as large as the number of spectral lines returned by the get_number_of_spectral_lines method. + + + + + :type power_spectrum_data_array: numpy.array of numpy.float64 or numpy.array of numpy.float32 + :param data_array_size: + + + Specifies the expected number of spectral lines. If None, falls back to self.number_of_spectral_lines. + + + + + :type data_array_size: int + :param timeout: + + + Specifies the time, in seconds, allotted for the method to complete before returning a timeout error. A value of specifies the method waits until all data is available. + + + + + :type timeout: hightime.timedelta, datetime.timedelta, or float in seconds + +reset +----- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: reset() + + Resets all properties to default values, deletes all de-embedding tables, and stops the export of all external signals and events. + + For the PXI-5600, this method does not reset the PXI Clock signal that is driven by devices installed in the Trigger Controller Slot, also known as the System Timing Slot. + + This method resets all configured routes for the PXIe-5644/5645/5646 and PXIe-5820/5830/5831/5832/5840/5841/5842/5860 in NI-RFSA and NI-RFSG. To avoid resetting routes on the device that are in use by NI-RFSG sessions, NI recommends using the :py:meth:`nirfsa.Session.reset_with_options` method, with **stepsToOmit** set to :py:data:`~nirfsa.NIRFSA_VAL_RESET_WITH_OPTIONS_ROUTES`. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + `Events `_ + + + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + +reset_device +------------ + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: reset_device() + + Performs a hard reset on the device. + + A hard reset consists of the following actions: + + - Signal acquisition is stopped. + - All routes are released. + - External bidirectional terminals are tristated. + - FPGAs are reset. + - Hardware is configured to its default state. + - All session properties are reset to their default states. + + During a device reset, routes of signals between this and other devices are released, regardless of which device created the route. For example, a trigger signal exported to a PXI trigger line that is used by another device is no longer exported. + + On the PXI-5600, if you are driving the PXI_CLK10 line, you continue to drive the clock even after a device reset. To stop driving the PXI_CLK10 line, use the :py:meth:`nirfsa.Session.ConfigurePxiChassisClk10` method and set the **pxiClk10Source** parameter to :py:data:`~nirfsa.NIRFSA_VAL_NONE` or set the :py:attr:`nirfsa.Session.PXI_CHASSIS_CLK10_SOURCE` property to :py:data:`~nirfsa.NIRFSA_VAL_NONE`. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698 + + + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + +reset_with_options +------------------ + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: reset_with_options(steps_to_omit) + + Resets all properties to default values and specifies steps to omit during the reset process, such as signal routes. + + For the PXI-5600, this method does not reset the PXI Clock signal that is driven by devices installed in the Star Trigger Controller Slot, also known as the System Timing Slot. + + By default, this method resets all properties to their default values, deletes all de-embedding tables, aborts generation, clears all routes, and resets session properties to initial values. You can specify steps to omit using the steps to omit parameter. For example, if you specify :py:data:`~nirfsa.NIRFSA_VAL_RESET_WITH_OPTIONS_ROUTES` for the **:py:attr:`nirfsa.Session.STEPS_TO_OMIT`** parameter, this method does not release signal routes during the reset process. + + When routes of signals between two devices are released, they are released regardless of which device created the route. + + To avoid resetting routes on PXIe-5820/5830/5831/5832/5840/5841/5842/5860 that are in use by NI-RFSG sessions, NI recommends using this method instead of :py:meth:`nirfsa.Session.Reset`, with **:py:attr:`nirfsa.Session.STEPS_TO_OMIT`** set to :py:data:`~nirfsa.NIRFSA_VAL_RESET_WITH_OPTIONS_ROUTES`. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + `Events `_ + + + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + + :param steps_to_omit: + + + Specifies a list of steps to skip during the reset process. The default value is :py:data:`~nirfsa.ResetWithOptionsStepsToOmit.NONE`, which specifies that no step is omitted during reset. + + Note::py:data:`~nirfsa.ResetWithOptionsStepsToOmit.ROUTES` is not supported in external calibration or alignment sessions. + + Note::py:data:`~nirfsa.ResetWithOptionsStepsToOmit.ROUTES` is not supported for the PXI-5600/5661. + + +------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +================================================+============================================================================================================================================================================================================+ + | ResetWithOptionsStepsToOmit.DEEMBEDDING_TABLES | Omits deleting de-embedding tables. This step is valid only for the PXIe-5830/5831/5832/5840. | + +------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ResetWithOptionsStepsToOmit.NONE | No step is omitted during reset. | + +------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ResetWithOptionsStepsToOmit.ROUTES | Omits the routing reset step. Routing is preserved after a reset. However, routing related properties are reset to default, and routing is released if the default properties are committed after a reset. | + +------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + :type steps_to_omit: :py:data:`nirfsa.ResetWithOptionsStepsToOmit` + +save_configurations_to_file +--------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: save_configurations_to_file(file_path) + + Saves the configurations of the session to the specified file. + + **Supported Devices** : PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + + + + .. tip:: This method can be called on specific channels within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container channels to specify a subset, + and then call this method on the result. + + Example: :py:meth:`my_session.channels[ ... ].save_configurations_to_file` + + To call the method on all channels, you can call it directly on the :py:class:`nirfsa.Session`. + + Example: :py:meth:`my_session.save_configurations_to_file` + + + :param file_path: + + + Specifies the absolute path of the file to which the NI-RFSA saves the configurations. + + + + + :type file_path: str + +self_calibrate_range +-------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: self_calibrate_range(steps_to_omit, minimum_frequency, maximum_frequency, minimum_reference_level, maximum_reference_level) + + Self-calibrates all configurations within the specified frequency and reference level limits. + + Self-calibration range data is valid until you restart the system or call the :py:meth:`nirfsa.Session.clear_self_calibrate_range` method. + + NI recommends that no external signals are present on the RF In port while the calibration is taking place. + + ---- + **Note** + This method does not update self-calibration date and temperature. + + ---- + + For best results, NI recommends that you perform a complete self-calibration without omitting any steps. However, if certain aspects of performance are less important for your application, you can omit that step for faster execution. + + ---- + **Note** + If there is an existing NI-RFSG session open for the same PXIe-5820/5830/5831/5832/5840/5841/5842/5860 while this method runs, it may remain open but cannot be used for operations that access the hardware, for example niRFSG Commit or niRFSG Initiate. + + ---- + + ---- + **Note** + If there is an existing NI-RFSG session open for the same PXIe-5644/5645/5646, it may remain open but cannot be used while this method runs. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842 + + + + + + :param steps_to_omit: + + + Specifies which calibration steps to skip as part of the self-calibration process. A value of 0 specifies all supported calibration steps are performed. + + ---- + + To omit two or more calibration steps, specify a bitwise-OR combination of the following constants. For example, if you wanted to omit :py:data:`~nirfsa.SelfCalibrateRangeStepsToOmit.AMPLITUDE_ACCURACY` and :py:data:`~nirfsa.SelfCalibrateRangeStepsToOmit.LO_SELF_CAL`, you would pass the following string to the :py:meth:`nirfsa.Session.SelfCalibrate` method: :py:data:`~nirfsa.SelfCalibrateRangeStepsToOmit.AMPLITUDE_ACCURACY` | :py:data:`~nirfsa.SelfCalibrateRangeStepsToOmit.LO_SELF_CAL` + + ---- + + | Value | Description | + |:------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + | :py:data:`~nirfsa.NIRFSA_VAL_RESET_WITH_OPTIONS_NONE` | No step is omitted during self-calibration. | + | :py:data:`~nirfsa.SelfCalibrateRangeStepsToOmit.PRESELECTOR_ALIGNMENT` | Not used by this method. | + | :py:data:`~nirfsa.SelfCalibrateRangeStepsToOmit.GAIN_REFERENCE` | Not used by this method. | + | :py:data:`~nirfsa.SelfCalibrateRangeStepsToOmit.IF_FLATNESS` | Not used by this method. | + | :py:data:`~nirfsa.SelfCalibrateRangeStepsToOmit.DIGITIZER_SELF_CAL` | Not used by this method. | + | :py:data:`~nirfsa.SelfCalibrateRangeStepsToOmit.LO_SELF_CAL` | Omits the Local Oscillator (LO) Self Cal step. If you omit this step and the :py:meth:`nirfsa.Session.is_self_cal_valid` method indicates the calibration data for this step is invalid, the LO phase-locked loop (PLL) may fail to lock. | + | :py:data:`~nirfsa.SelfCalibrateRangeStepsToOmit.AMPLITUDE_ACCURACY` | Omits the Amplitude Accuracy step. If you omit this step, the absolute accuracy of the device is not adjusted. | + | :py:data:`~nirfsa.SelfCalibrateRangeStepsToOmit.RESIDUAL_LO_POWER` | Omits the Residual LO Power step. If you omit this step, the Residual LO Power performance is not adjusted. | + |:py:data:`~nirfsa.SelfCalibrateRangeStepsToOmit.IMAGE_SUPPRESSION` | Omits the Image Suppression step. If you omit this step, the Residual Sideband Image Performance is not adjusted. | + | :py:data:`~nirfsa.SelfCalibrateRangeStepsToOmit.SYNTHESIZER_ALIGNMENT` | Omits the Synthesizer Alignment step. If you omit this step, the LO PLL is not adjusted. This step is not valid for the PXIe-5820. | + | :py:data:`~nirfsa.SelfCalibrateRangeStepsToOmit.DC_OFFSET` | Omits the DC Offset step. This step applies only to the PXIe-5820. | + + + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + :type steps_to_omit: :py:data:`nirfsa.SelfCalibrateRangeStepsToOmit` + :param minimum_frequency: + + + Specifies the minimum RF frequency in Hz. + + + + + :type minimum_frequency: float + :param maximum_frequency: + + + Specifies the maximum RF frequency in Hz. + + + + + :type maximum_frequency: float + :param minimum_reference_level: + + + Specifies the minimum reference level in dBm. + + + + + :type minimum_reference_level: float + :param maximum_reference_level: + + + Specifies the maximum reference level in dBm. + + + + + :type maximum_reference_level: float + +self_test +--------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: self_test() + + Performs a self-test on the NI-RFSA device and returns the test results. + + This method performs a simple series of tests to ensure that the NI-RFSA device is powered up and responding. + + This method does not affect external I/O connections or connections between devices. Complete functional testing and calibration are not performed by this method. The NI-RFSA device must be in the Configuration state before you call this method. + + **Supported Devices** : PXI-5610, PXIe-5611, PXI/PXIe-5650/5651/5652, PXIe-5653/5654/5654 with PXIe-5696, PXI-5670/5671, PXIe-5672/5673/5673E, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Device Warm-Up `_ + + +----------------+------------------+ + | Self-Test Code | Description | + +================+==================+ + | 0 | Passed self-test | + +----------------+------------------+ + | 1 | Self-test failed | + +----------------+------------------+ + + + +send_software_edge_trigger +-------------------------- + + .. py:currentmodule:: nirfsa.Session + + .. py:method:: send_software_edge_trigger(trigger, trigger_identifier="") + + Sends a trigger to the device when you use a software version of a supported trigger and the device is waiting for the trigger to be sent. + + You can also use this method to override a hardware trigger. + + This method returns an error in the following situations: + + - You configure an invalid trigger. + - You set the **acquisitionType** to :py:data:`~nirfsa.AcquisitionType.SPECTRUM` using the :py:meth:`nirfsa.Session.ConfigureAcquisitionType` method. + - You have not previously called the :py:meth:`nirfsa.Session._initiate` method. + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Software Trigger `_ + + `Triggers `_ + + + + + + :param trigger: + + + Specifies the trigger to send. + + **Default Value:** :py:data:`~nirfsa.SoftwareTriggerType.START` + + **Defined Values:** + + +----------------------------------------------+-------------------------------+ + | Name | Description | + +==============================================+===============================+ + | :py:data:`~nirfsa.SoftwareTriggerType.START` | Specifies the Start Trigger. | + +----------------------------------------------+-------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_SCRIPT_TRIGGER` | Specifies the Script Trigger. | + +----------------------------------------------+-------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + :type trigger: :py:data:`nirfsa.SoftwareTriggerType` + :param trigger_identifier: + + + Specifies a particular instance of a trigger. NI-RFSA does not currently support this parameter. + + + + + :type trigger_identifier: str + +unlock +------ + + .. py:currentmodule:: nirfsa.Session + +.. py:method:: unlock() + + Releases a lock that you acquired on an device session using + :py:meth:`nirfsa.Session.lock`. Refer to :py:meth:`nirfsa.Session.unlock` for additional + information on session locks. + + +Properties +========== + +absolute_delay +-------------- + + .. py:attribute:: absolute_delay + + Specifies the sub-sample clock delay, in seconds, to apply to the acquired signal. + + Use this property to reduce the trigger jitter when synchronizing multiple devices with NI-TClk. + This property can also help maintain synchronization repeatability by writing the absolute delay value of a previous measurement to the current session. + + To set this property, the NI-RFSA device must be in the Configuration state. + + ---- + **Note** + If this property is set, NI-TClk cannot do any sub-sample clock adjustment. + + ---- + + **Units:** Seconds + + **Valid Values:** Plus or minus half of one sample clock period + + **Default Value**: 0 + + **Supported Devices:** PXIe-5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-------------------------------------------------------------+ + | Characteristic | Value | + +=======================+=============================================================+ + | Datatype | hightime.timedelta, datetime.timedelta, or float in seconds | + +-----------------------+-------------------------------------------------------------+ + | Permissions | read-write | + +-----------------------+-------------------------------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+-------------------------------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Specific:Vector Signal Transceiver:Signal Path:Absolute Delay** + - C Attribute: **NIRFSA_ATTR_ABSOLUTE_DELAY** + +acquisition_type +---------------- + + .. py:attribute:: acquisition_type + + Configures the session to either acquire I/Q data or to compute a power spectrum over the specified frequency range. + + **Default Value**: :py:data:`~nirfsa.AcquisitionType.IQ` + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `I/Q Modulation `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ConfigureAcquisitionType` + + **Defined Values**: + + +---------------------------------------------+-----------------------------------------------+ + | Name | Description | + +=============================================+===============================================+ + | :py:data:`~nirfsa.AcquisitionType.IQ` | Configures NI-RFSA for I/Q acquisitions. | + +---------------------------------------------+-----------------------------------------------+ + | :py:data:`~nirfsa.AcquisitionType.SPECTRUM` | Configures NI-RFSA for spectrum acquisitions. | + +---------------------------------------------+-----------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+-----------------------+ + | Characteristic | Value | + +=======================+=======================+ + | Datatype | enums.AcquisitionType | + +-----------------------+-----------------------+ + | Permissions | read-write | + +-----------------------+-----------------------+ + | Repeated Capabilities | None | + +-----------------------+-----------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition Type** + - C Attribute: **NIRFSA_ATTR_ACQUISITION_TYPE** + +advance_trigger_terminal_name +----------------------------- + + .. py:attribute:: advance_trigger_terminal_name + + Returns the fully qualified signal name as a string. + + **Default Values**: + + **PXIe-5830/5831/5832**: /BasebandModule/ai/0/AdvanceTrigger, where *BasebandModule* is the name of the baseband module of your device in MAX. + + **PXIe-5820/5840/5841/5842**: /ModuleNameai/0/AdvanceTrigger, where *ModuleName* is the name of your device in MAX. + + **PXIe-5860**: /ModuleName/ai/ChannelNumber/AdvanceTrigger, where *ModuleName* is the name of your device in MAX and *ChannelNumber* is the channel number (0 or 1). + + **All other devices**: /DigitizerName/AdvanceTrigger, where *DigitizerName* is the name associated with your digitizer module in MAX. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Events `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.get_terminal_name` + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Advance:Terminal Name** + - C Attribute: **NIRFSA_ATTR_ADVANCE_TRIGGER_TERMINAL_NAME** + +advance_trigger_type +-------------------- + + .. py:attribute:: advance_trigger_type + + Specifies whether you want the Advance Trigger to be a digital edge or software trigger. + + ---- + **Note** + Set this property to :py:data:`~nirfsa.AdvanceTriggerType.NONE` if you set the :py:attr:`nirfsa.Session.acquisition_type` property to :py:data:`~nirfsa.AcquisitionType.SPECTRUM` or if you set the **acquisitionType** parameter to :py:data:`~nirfsa.AcquisitionType.SPECTRUM` using the :py:meth:`nirfsa.Session.ConfigureAcquisitionType` method. + + ---- + + **Default Value**: :py:data:`~nirfsa.AdvanceTriggerType.NONE` + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **Defined Values**: + + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=====================================================+===============================================================================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.AdvanceTriggerType.NONE` | No Advance Trigger is configured. | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.AdvanceTriggerType.DIGITAL_EDGE` | The Advance Trigger is not asserted until a digital edge is detected. The source of the digital edge is specified with the :py:attr:`nirfsa.Session.digital_edge_advance_trigger_source` property. | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.AdvanceTriggerType.SOFTWARE_EDGE` | The Advance Trigger is not asserted until a software trigger occurs. You can assert the software trigger by calling the :py:meth:`nirfsa.Session.send_software_edge_trigger` method and selecting :py:data:`~nirfsa.NIRFSA_VAL_ADVANCE_TRIGGER` as the **trigger** parameter. | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+--------------------------+ + | Characteristic | Value | + +=======================+==========================+ + | Datatype | enums.AdvanceTriggerType | + +-----------------------+--------------------------+ + | Permissions | read-write | + +-----------------------+--------------------------+ + | Repeated Capabilities | None | + +-----------------------+--------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Advance:Type** + - C Attribute: **NIRFSA_ATTR_ADVANCE_TRIGGER_TYPE** + +allow_more_records_than_memory +------------------------------ + + .. py:attribute:: allow_more_records_than_memory + + Specifies whether to allow the device to acquire more records than can fit in the device memory of the PXIe-5622/5624. + + ---- + **Note** + If you set the property to FALSE and attempt to acquire more records than can fit into the PXIe-5622/5624 device memory, NI-RFSA returns an error. If this property is set to TRUE, NI-RFSA returns an error only in the event of an acquisition buffer overflow. + + ---- + + ---- + **Note** + This property is always set to True for the PXIe-5644/5645/5646 and PXIe-5820/5830/5831/5832/5840/5841. + + ---- + + **Default Value**: False + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +-------+------------------------------------------------------------------------+ + | Name | Description | + +=======+========================================================================+ + | True | Allows acquisition of more records than fit in device memory. | + +-------+------------------------------------------------------------------------+ + | False | Does not allow acquisitions of more records than fit in device memory. | + +-------+------------------------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | bool | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:IQ:Allow More Records Than Memory** + - C Attribute: **NIRFSA_ATTR_ALLOW_MORE_RECORDS_THAN_MEMORY** + +allow_out_of_specification_user_settings +---------------------------------------- + + .. py:attribute:: allow_out_of_specification_user_settings + + Enables or disables warnings and errors when you set frequency, power, or bandwidth values beyond the limits of the NI-RFSA device specifications. + + When you set this property to :py:data:`~nirfsa.AllowOutOfSpecificationUserSettings.ENABLED`, the driver does not report out-of-specification warnings and errors. + + **Default Value**: :py:data:`~nirfsa.AllowOutOfSpecificationUserSettings.DISABLED` + + **Supported Devices:** PXIe-5820/5830/5831/5840/5841/5842/5860 + + **Defined Values**: + + +-----------------------------------------------------------------+----------------------------------------------+ + | Name | Description | + +=================================================================+==============================================+ + | :py:data:`~nirfsa.AllowOutOfSpecificationUserSettings.DISABLED` | Disables out-of-specification user settings. | + +-----------------------------------------------------------------+----------------------------------------------+ + | :py:data:`~nirfsa.AllowOutOfSpecificationUserSettings.ENABLED` | Enables out-of-specification user settings. | + +-----------------------------------------------------------------+----------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+-------------------------------------------+ + | Characteristic | Value | + +=======================+===========================================+ + | Datatype | enums.AllowOutOfSpecificationUserSettings | + +-----------------------+-------------------------------------------+ + | Permissions | read-write | + +-----------------------+-------------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+-------------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Advanced:Allow Out Of Specification User Settings** + - C Attribute: **NIRFSA_ATTR_ALLOW_OUT_OF_SPECIFICATION_USER_SETTINGS** + +amplitude_settling +------------------ + + .. py:attribute:: amplitude_settling + + Configures the amplitude settling accuracy in decibels. + + NI-RFSA waits until the RF power settles within the specified accuracy level after calling the :py:meth:`nirfsa.Session._initiate` method. + + Any specified amplitude settling value that is above the acceptable minimum value is coerced down to the closest valid value. + + **Units**: dB + + **Default Value:** 0.5 + + **Supported Devices:** PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Advanced:Amplitude Settling** + - C Attribute: **NIRFSA_ATTR_AMPLITUDE_SETTLING** + +arm_ref_trigger_type +-------------------- + + .. py:attribute:: arm_ref_trigger_type + + Specifies whether you want the Arm Reference Trigger to be a digital edge or software trigger. + + ---- + **Note** + The PXIe-5644/5645/5646 and PXIe-5820/5830/5831/5832/5840/5841 only support :py:data:`~nirfsa.ArmReferenceTriggerType.NONE`. + + ---- + + ---- + **Note** + Set this property to :py:data:`~nirfsa.ArmReferenceTriggerType.NONE` if you set the :py:attr:`nirfsa.Session.acquisition_type` property to :py:data:`~nirfsa.AcquisitionType.SPECTRUM` or if you set the **acquisitionType** parameter to :py:data:`~nirfsa.AcquisitionType.SPECTRUM` using the :py:meth:`nirfsa.Session.ConfigureAcquisitionType` method. + + ---- + + **Default Value**: :py:data:`~nirfsa.ArmReferenceTriggerType.NONE` + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +==========================================================+======================================================================================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.ArmReferenceTriggerType.NONE` | No Arm Reference Trigger is configured. | + +----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ArmReferenceTriggerType.DIGITAL_EDGE` | The Arm Reference Trigger is not asserted until a digital edge is detected. The source of the digital edge is specified with the :py:attr:`nirfsa.Session.digital_edge_arm_ref_trigger_source` property. | + +----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ArmReferenceTriggerType.SOFTWARE_EDGE` | The Arm Reference Trigger is not asserted until a software trigger occurs. You can assert the software trigger by calling the :py:meth:`nirfsa.Session.send_software_edge_trigger` method and selecting :py:data:`~nirfsa.SoftwareTriggerType.ARM_REF` as the **trigger** parameter. | + +----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+-------------------------------+ + | Characteristic | Value | + +=======================+===============================+ + | Datatype | enums.ArmReferenceTriggerType | + +-----------------------+-------------------------------+ + | Permissions | read-write | + +-----------------------+-------------------------------+ + | Repeated Capabilities | None | + +-----------------------+-------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Arm Ref:Type** + - C Attribute: **NIRFSA_ATTR_ARM_REF_TRIGGER_TYPE** + +attenuation +----------- + + .. py:attribute:: attenuation + + Specifies the nominal attenuation setting, in dB, for all attenuators before the first mixer in the RF signal chain. + + If you do not set this property, NI-RFSA automatically chooses an attenuation setting based on the reference level you configure. The valid values for this property depend on the device configuration. + + **PXI-5600/5661**: You can change the attenuation value to modify the amount of noise and distortion. Higher attenuation levels increase the noise level while decreasing distortion; lower attenuation levels decrease the noise level while increasing distortion. + + **PXIe-5601/5663/5663E**: You can change the attenuation value and the value of the :py:attr:`nirfsa.Session.if_attenuation` property to modify the amount of noise and distortion. Higher attenuation levels increase the noise level while decreasing distortion; lower attenuation levels decrease the noise level while increasing distortion. + + **PXIe-5603/5605/5606/5665/5668**: You can set multiple properties to modify the attenuation values for the device. Refer to `PXIe-5665 RF Attenuation and Signal Levels `_ for more information about configuring attenuation. + + **PXIe-5667**: This property specifies the nominal attenuation setting for all attenuators before the first RF mixer in the input signal path. This property is read-only when the :py:attr:`nirfsa.Session.LOW_FREQUENCY_BYPASS_ENABLED` property is set to :py:data:`~nirfsa.NIRFSA_VAL_DISABLED`. + + **PXIe-5693**: This property is read-only and returns the nominal RF attenuation of the PXIe-5693. + + **Units**: dB + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693 + + + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Advanced:RF Attenuation (dB)** + - C Attribute: **NIRFSA_ATTR_ATTENUATION** + +available_paths +--------------- + + .. py:attribute:: available_paths + + Returns a comma separated list of the configurable paths available for use based on your instrument configuration. + + The following table lists the characteristics of this property. + + +-----------------------+-------------+ + | Characteristic | Value | + +=======================+=============+ + | Datatype | list of str | + +-----------------------+-------------+ + | Permissions | read only | + +-----------------------+-------------+ + | Repeated Capabilities | None | + +-----------------------+-------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Advanced:Available Paths** + - C Attribute: **NIRFSA_ATTR_AVAILABLE_PATHS** + +available_ports +--------------- + + .. py:attribute:: available_ports + + Returns a comma-separated list of the available ports for use based on your instrument configuration. + + **Supported Devices**: PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-------------+ + | Characteristic | Value | + +=======================+=============+ + | Datatype | list of str | + +-----------------------+-------------+ + | Permissions | read only | + +-----------------------+-------------+ + | Repeated Capabilities | None | + +-----------------------+-------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Advanced:Available Ports** + - C Attribute: **NIRFSA_ATTR_AVAILABLE_PORTS** + +center_frequency +---------------- + + .. py:attribute:: center_frequency + + Specifies the center frequency in a spectrum acquisition. + + The value is expressed in hertz (Hz). An acquisition consists of a span of data surrounding the center frequency. + + ---- + **Note** + Use this property to tune the downconverter when using external digitizer mode. + + ---- + + **Units**: hertz (Hz) + + **Default Values**: + + **PXIe-5694**: 193.6 MHz + + **PXIe-5820**: 0 Hz + + **PXIe-5830/5831/5832**: 6.5 GHz + + **All other devices**: 1 GHz + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Spectrum:Center Frequency** + - C Attribute: **NIRFSA_ATTR_CENTER_FREQUENCY** + +channel_coupling +---------------- + + .. py:attribute:: channel_coupling + + Specifies whether the RF IN connector is AC- or DC-coupled on the downconverter. + + ---- + **Note** + For the PXIe-5605/5606/5665/5667/5668, this property must be set to :py:data:`~nirfsa.ChannelCoupling.AC` when the DC block is present and set to :py:data:`~nirfsa.ChannelCoupling.DC` when the DC block is not present to ensure device specifications are met and proper calibration data is used. For more information about removing or attaching the DC block, refer to the `PXIe-5665 Block Diagram `_, the `PXIe-5605 Front Panel and LEDs `_, the `PXIe-5667 Block Diagram `_, or the `PXIe-5668 Block Diagram `_ topics in this help file. + + ---- + + **Valid Values**: + + **PXIe-5603/5665 (3.6 GHz)**: :py:data:`~nirfsa.ChannelCoupling.AC`, :py:data:`~nirfsa.ChannelCoupling.DC` + + **PXIe-5605/5665 (14 GHz)**: :py:data:`~nirfsa.ChannelCoupling.AC`, :py:data:`~nirfsa.ChannelCoupling.DC` + + **PXIe-5667 (3.6 GHz) using the PXIe-5693 RF preselector low-frequency bypass path**: :py:data:`~nirfsa.ChannelCoupling.AC`, :py:data:`~nirfsa.ChannelCoupling.DC` + + **PXIe-5667 (3.6 GHz) using the PXIe-5693 RF preselector filter path**: :py:data:`~nirfsa.ChannelCoupling.AC` + + **PXIe-5667 (7 GHz)**: :py:data:`~nirfsa.ChannelCoupling.AC` + + **PXIe-5606/5668**: :py:data:`~nirfsa.ChannelCoupling.AC`, :py:data:`~nirfsa.ChannelCoupling.DC` + + **Default Value**: :py:data:`~nirfsa.ChannelCoupling.AC` + + **Supported Devices**: PXIe-5603/5605/5606 (external digitizer mode), PXIe-5665/5667/5668 + + **Defined Values**: + + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=======================================+============================================================================================================================================================+ + | :py:data:`~nirfsa.ChannelCoupling.AC` | Specifies that the RF input channel is AC-coupled. For low frequencies (<10 MHz), accuracy decreases because NI-RFSA does not calibrate the configuration. | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ChannelCoupling.DC` | Specifies that the RF input channel is DC-coupled. NI-RFSA enforces a minimum RF attenuation for device protection. | + +---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+-----------------------+ + | Characteristic | Value | + +=======================+=======================+ + | Datatype | enums.ChannelCoupling | + +-----------------------+-----------------------+ + | Permissions | read-write | + +-----------------------+-----------------------+ + | Repeated Capabilities | None | + +-----------------------+-----------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Advanced:NI 5665/5667/5668R:Channel Coupling** + - C Attribute: **NIRFSA_ATTR_CHANNEL_COUPLING** + +common_mode_level +----------------- + + .. py:attribute:: common_mode_level + + Specifies the common-mode level presented at each differential input terminal. + + Common-mode level shifts both positive and negative terminals in the same direction. This must match the common-mode level of the device under test (DUT). + + **Units**: volts + + **Default Value**: 0 V + + **Supported Devices**: PXIe-5820 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Specific:Vector Signal Transceiver:IQ In Port:Common Mode Level** + - C Attribute: **NIRFSA_ATTR_COMMON_MODE_LEVEL** + +deembedding_compensation_gain +----------------------------- + + .. py:attribute:: deembedding_compensation_gain + + Returns the de-embedding gain applied to compensate for the mismatch on the specified port. Use the Active Channel property to specify the name of the port to configure for de-embedding. + + If de-embedding is enabled, NI-RFSA uses the returned compensation gain to remove the effects of the external network between the instrument and the DUT. + + **Supported Devices**: PXIe-5830/5831/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | float | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **De-embedding:Compensation Gain** + - C Attribute: **NIRFSA_ATTR_DEEMBEDDING_COMPENSATION_GAIN** + +deembedding_selected_table +-------------------------- + + .. py:attribute:: deembedding_selected_table + + Selects the de-embedding table to apply to the measurements on the specified port. + + To use this property, you must use the channelName parameter of the :py:meth:`nirfsa.Session._set_attribute_vi_string` method to specify the name of the port to configure for de-embedding. + + If de-embedding is enabled, NI-RFSA uses the specified table to remove the effects of the external network between the instrument and the DUT. + + Use the :py:meth:`nirfsa.Session._create_deembedding_sparameter_table_array` method to create tables. + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + + + + .. tip:: This property can be set/get on specific ports within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container ports to specify a subset. + + Example: :py:attr:`my_session.ports[ ... ].deembedding_selected_table` + + To set/get on all ports, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.deembedding_selected_table` + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | str | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | ports | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **De-embedding:Selected Table** + - C Attribute: **NIRFSA_ATTR_DEEMBEDDING_SELECTED_TABLE** + +deembedding_type +---------------- + + .. py:attribute:: deembedding_type + + Specifies the type of de-embedding to apply to measurements on the specified port. + + To use this property, you must use the channelName parameter of the :py:meth:`nirfsa.Session._set_attribute_vi_int32` method to specify the name of the port to configure for de-embedding. + + If you set this property to any value besides :py:data:`~nirfsa.DeembeddingType.NONE`, NI-RFSA adjusts the instrument settings and the returned data to remove the effects of the external network between the instrument and the DUT. + + **Default Value**: :py:data:`~nirfsa.DeembeddingType.SCALAR` + + **Valid Values for PXIe-5830/5832/5840/5841** : :py:data:`~nirfsa.DeembeddingType.NONE` or :py:data:`~nirfsa.DeembeddingType.SCALAR` + + **Valid Values for PXIe-5842/5860** : :py:data:`~nirfsa.DeembeddingType.NONE` or :py:data:`~nirfsa.DeembeddingType.SCALAR` or :py:data:`~nirfsa.NIRFSA_VAL_DEEMBEDDING_TYPE_AMPLITUDE_FLATNESS` or :py:data:`~nirfsa.NIRFSA_VAL_DEEMBEDDING_TYPE_AMPLITUDE_AND_PHASE_FLATNESS` + + **Valid Values for PXIe-5831:** :py:data:`~nirfsa.DeembeddingType.NONE`, :py:data:`~nirfsa.DeembeddingType.SCALAR`, or :py:data:`~nirfsa.DeembeddingType.VECTOR`. :py:data:`~nirfsa.DeembeddingType.VECTOR` is only supported for TRX Ports in a Semiconductor Test System (STS). + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +-------------------------------------------+------------------------------------------------------------------------+ + | Name | Description | + +===========================================+========================================================================+ + | :py:data:`~nirfsa.DeembeddingType.NONE` | De-embedding is not applied to the measurement. | + +-------------------------------------------+------------------------------------------------------------------------+ + | :py:data:`~nirfsa.DeembeddingType.SCALAR` | De-embeds the measurement using only the gain term. | + +-------------------------------------------+------------------------------------------------------------------------+ + | :py:data:`~nirfsa.DeembeddingType.VECTOR` | De-embeds the measurement using the gain term and the reflection term. | + +-------------------------------------------+------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + .. tip:: This property can be set/get on specific ports within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container ports to specify a subset. + + Example: :py:attr:`my_session.ports[ ... ].deembedding_type` + + To set/get on all ports, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.deembedding_type` + + The following table lists the characteristics of this property. + + +-----------------------+-----------------------+ + | Characteristic | Value | + +=======================+=======================+ + | Datatype | enums.DeembeddingType | + +-----------------------+-----------------------+ + | Permissions | read-write | + +-----------------------+-----------------------+ + | Repeated Capabilities | ports | + +-----------------------+-----------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **De-embedding:Type** + - C Attribute: **NIRFSA_ATTR_DEEMBEDDING_TYPE** + +device_configuration_temperature +-------------------------------- + + .. py:attribute:: device_configuration_temperature + + Specifies the temperature, in degrees Celsius, that NI-RFSA uses to calculate the device configuration settings. + + ---- + **Note** + For most applications, you can choose not to set this property, so NI-RFSA uses the device temperature to calculate best attenuation settings. Set this property only if you want NI-RFSA to maintain the same device configuration settings from acquisition to acquisition, independent of device temperature changes. + + ---- + + **PXIe-5820/5830/5831/5832/5840/5841/5842/5860**: This property is read-only. + + **Units**: degrees Celsius + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Advanced:Device Configuration Temperature (Degrees C)** + - C Attribute: **NIRFSA_ATTR_DEVICE_CONFIGURATION_TEMPERATURE** + +device_instantaneous_bandwidth +------------------------------ + + .. py:attribute:: device_instantaneous_bandwidth + + Specifies the instantaneous bandwidth of the device in hertz (Hz). + + The instantaneous bandwidth is the effective real-time bandwidth of the signal path for your configuration. + + Specify the maximum instantaneous bandwidth needed for your measurement. NI-RFSA coerces the actual IF filter to use based on other measurement constraints such as the :py:attr:`nirfsa.Session.if_filter_bandwidth` property and the :py:attr:`nirfsa.Session.digital_if_equalization_enabled` property. + + To change the value that NI-RFSA uses for the maximum size of multispan acquisition subspans, use the :py:attr:`nirfsa.Session.fft_width` property. + + ---- + **Note** + If your application uses the PXIe-5622 IF digitizer, your maximum device instantaneous bandwidth is constrained to 50 MHz or 25 MHz, depending on the digitizer option you purchased. If your application uses the PXIe-5624 digitizer, your maximum device instantaneous bandwidth is constrained by the hardware option you purchased and your FPGA image. + + ---- + + **PXI-5661**: The PXI-5600 RF downconverter instantaneous bandwidth is 20 MHz. + + **PXIe-5663/5663E**: Your maximum allowed instantaneous bandwidth depends on the downconverter center frequency you use. Refer to the `PXIe-5601 RF Signal Downconverter Overview `_ for more information about instantaneous bandwidth. + + ---- + **Note** + For the PXIe-5663/5663E, NI-RFSA does not support multispan acquisitions from frequency ranges that correspond with different instantaneous bandwidths. For example, you cannot configure a multispan acquisition that acquires one span from 110 MHz to 120 MHz and a second from 120 MHz to 130 MHz because the instantaneous bandwidth for frequencies above 120 MHz is different than the instantaneous bandwidth for frequencies less than 120 MHz, which are 20 MHz and 10 MHz respectively. + + ---- + + **PXIe-5665**: Your maximum allowed instantaneous bandwidth is independent of the downconverter center frequency. Refer to the *NI PXIe-5665 Specifications* for more information about instantaneous bandwidth. + + **PXIe-5665 (14 GHz), PXIe-5668**: If you have enabled the preselector for the PXIe-5605/5606, the device instantaneous bandwidth value is only a typical specification. For multispan acquisitions, NI-RFSA uses this typical specification as the maximum size for the acquisition subspans. + + ---- + **Note** + When used with an external digitizer, the PXIe-5603 and the low band signal path of the PXIe-5605 provide a nominal 80 MHz bandwidth at dB. At frequencies greater than 3.6 GHz, the PXIe-5605 provides a typical bandwidth of 47 MHz at dB with the preselector (YIG-tuned filter) enabled. + + ---- + + ---- + **Note** + For PXIe-5606 devices, the 765 MHz IF filter is available only at center frequencies above 3.6 GHz. + + ---- + + **PXIe-5693**: This property is read-only for the PXIe-5693. The value for the device instantaneous bandwidth depends on the value for the RF preselector filter. + + **PXIe-5694/PXIe-5667**: If your application uses the PXIe-5694 as part of an PXIe-5667 spectrum monitoring receiver or the PXIe-5694 as a stand-alone device, NI-RFSA determines the appropriate IF filter to use based on the value that you set for this property. + + ---- + **Note** + + ---- + + **PXIe-5644/5645/5646**: This property is read-only for the PXIe-5644/5645/5646. Refer to the specifications document for your device for more information about instantaneous bandwidth. + + **PXIe-5840/5841/5860**: Your maximum allowed instantaneous bandwidth depends on the downconverter center frequency you use. Refer to the *PXIe-5840/5841/5860 Specifications* for more information about instantaneous bandwidth. Set this property to select different device instantaneous bandwidths for a given downconverter center frequency. The device instantaneous bandwidth that you select is greater than or equal to the requested instantaneous bandwidth. If this property is not set, NI-RFSA uses the maximum allowed instantaneous bandwidth. + + **PXIe-5842**: Your maximum allowed instantaneous bandwidth depends on the device's hardware options, configured device personality, and the downconverter center frequency you use. Refer to the *PXIe-5842 Specifications* for more information about instantaneous bandwidth. Set this property to select different device instantaneous bandwidths for a given downconverter center frequency. The device instantaneous bandwidth that you select is greater than or equal to the requested instantaneous bandwidth. If this property is not set, NI-RFSA uses the maximum allowed instantaneous bandwidth. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `PXIe-5830 Frequency and Bandwidth Selection `_ + + `PXIe-5831/5832 Frequency and Bandwidth Selection `_ + + `PXIe-5841 Frequency and Bandwidth Selection `_ + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Device Instantaneous Bandwidth (Hz)** + - C Attribute: **NIRFSA_ATTR_DEVICE_INSTANTANEOUS_BANDWIDTH** + +device_temperature +------------------ + + .. py:attribute:: device_temperature + + Returns the current temperature, in degrees Celsius, of the module. + + **PXIe-5644/5645/5646, PXIe-5820/5840/5841/5842/5860**: If you query this property during RF list mode, list steps may take longer to complete during list execution. + + **PXIe-5830/5831/5832**: To use this property, you must first set the channelName parameter of the :py:meth:`nirfsa.Session._set_attribute_vi_real64` method to using the appropriate string for your instrument configuration. Setting the :py:meth:`nirfsa.Session._set_attribute_vi_real64` property is not required for the PXIe-3621/3622. Refer to the following table to determine which strings are valid for your configuration. + + **Units**: degrees Celcius + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + +--------------------------------+---------------------------+---------------------------+ + | Hardware Module | TRX Port Type | Active Channel String | + +================================+===========================+===========================+ + | PXIe-3621/3622/5842 | - | if or "" (empty string) | + +--------------------------------+---------------------------+---------------------------+ + | PXIe-5820 | - | fpga | + +--------------------------------+---------------------------+---------------------------+ + | PXIe-5860 | - | 5860 or "" (empty string) | + +--------------------------------+---------------------------+---------------------------+ + | First connected mmRH-5582 | DIRECT TRX PORTS Only | rf0 | + +--------------------------------+---------------------------+---------------------------+ + | First connected mmRH-5582 | SWITCHED TRX PORTS [0-7] | rf0switch0 | + +--------------------------------+---------------------------+---------------------------+ + | First connected mmRH-5582 | SWITCHED TRX PORTS [8-15] | rf0switch1 | + +--------------------------------+---------------------------+---------------------------+ + | Second connected mmRH-5582 | DIRECT TRX PORTS Only | rf1 | + +--------------------------------+---------------------------+---------------------------+ + | Second connected mmRH-5582 | SWITCHED TRX PORTS [0-7] | rf1switch0 | + +--------------------------------+---------------------------+---------------------------+ + | Second connected mmRH-5582 | SWITCHED TRX PORTS [8-15] | rf1switch1 | + +--------------------------------+---------------------------+---------------------------+ + | First connected RMM-5544/5546 | - | rmm0 | + +--------------------------------+---------------------------+---------------------------+ + | Second connected RMM-5544/5546 | - | rmm1 | + +--------------------------------+---------------------------+---------------------------+ + + + .. tip:: This property can be set/get on specific device_temperatures within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container device_temperatures to specify a subset. + + Example: :py:attr:`my_session.device_temperatures[ ... ].device_temperature` + + To set/get on all device_temperatures, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.device_temperature` + + The following table lists the characteristics of this property. + + +-----------------------+---------------------+ + | Characteristic | Value | + +=======================+=====================+ + | Datatype | float | + +-----------------------+---------------------+ + | Permissions | read only | + +-----------------------+---------------------+ + | Repeated Capabilities | device_temperatures | + +-----------------------+---------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Characteristics:Device Temperature (Degrees C)** + - C Attribute: **NIRFSA_ATTR_DEVICE_TEMPERATURE** + +digital_edge_advance_trigger_source +----------------------------------- + + .. py:attribute:: digital_edge_advance_trigger_source + + Specifies the source terminal for the Advance Trigger. + + This property is used only when the :py:attr:`nirfsa.Session.advance_trigger_type` property is set to :py:data:`~nirfsa.NIRFSA_VAL_DIGITAL_EDGE`. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.configure_digital_edge_ref_trigger` + + **Defined Values**: + + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=============================================+=================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.NIRFSA_VAL_DO_NOT_EXPORT` | The signal is not exported. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_CLK_OUT` | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_REF_OUT` | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_REF_OUT2` | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PFI0` | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PFI1` | The trigger is received on the PFI 1. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG0` | The trigger is received on the PXI trigger line 0. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG1` | The trigger is received on the PXI trigger line 1. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG2` | The trigger is received on the PXI trigger line 2. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG3` | The trigger is received on the PXI trigger line 3. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG4` | The trigger is received on the PXI trigger line 4. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG5` | The trigger is received on the PXI trigger line 5. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG6` | The trigger is received on the PXI trigger line 6. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG7` | The trigger is received on the PXI trigger line 7. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_STAR` | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.OutputTerm.PXIE_DSTARB` | The trigger is received on the PXIe DStar B trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI0` | The trigger is received on PFI0 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI1` | The trigger is received on PFI1 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI2` | The trigger is received on PFI2 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI3` | The trigger is received on PFI3 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI4` | The trigger is received on PFI4 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI5` | The trigger is received on PFI5 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI6` | The trigger is received on PFI6 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI7` | The trigger is received on PFI7 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.OutputTerm.TIMER_EVENT` | The trigger is received from the Timer Event. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841, and for digital edge Advance Triggers on the PXIe-5663E/5665. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | str | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Advance:Digital Edge:Source** + - C Attribute: **NIRFSA_ATTR_DIGITAL_EDGE_ADVANCE_TRIGGER_SOURCE** + +digital_edge_arm_ref_trigger_source +----------------------------------- + + .. py:attribute:: digital_edge_arm_ref_trigger_source + + Specifies the source terminal for the digital edge Arm Reference Trigger. + + This property is used only when the :py:attr:`nirfsa.Session.arm_ref_trigger_type` property is set to :py:data:`~nirfsa.NIRFSA_VAL_DIGITAL_EDGE`. + + **Default Value**: "" (empty string) + + ---- + **Note** + The PXIe-5644/5645/5646 and PXIe-5820/5830/5831/5832/5840/5841 devices only support "" (empty string). + + The trigger is received on PFI0 from the front panel DIO terminal. + + The trigger is received on PFI1 from the front panel DIO terminal. + + The trigger is received on PFI2 from the front panel DIO terminal. + + The trigger is received on PFI3 from the front panel DIO terminal. + + The trigger is received on PFI4 from the front panel DIO terminal. + + The trigger is received on PFI5 from the front panel DIO terminal. + + The trigger is received on PFI6 from the front panel DIO terminal. + + The trigger is received on PFI7 from the front panel DIO terminal. + + ---- + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667, PXIe-5820/5830/5831/5832/5840/5841 + + **Related Topics** + + `Triggers `_ + + **Defined Values**: + + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=============================================+=================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.NIRFSA_VAL_DO_NOT_EXPORT` | The signal is not exported. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_CLK_OUT` | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_REF_OUT` | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_REF_OUT2` | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PFI0` | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PFI1` | The trigger is received on PFI 1. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG0` | The trigger is received on PXI trigger line 0. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG1` | The trigger is received on PXI trigger line 1. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG2` | The trigger is received on PXI trigger line 2. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG3` | The trigger is received on PXI trigger line 3. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG4` | The trigger is received on PXI trigger line 4. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG5` | The trigger is received on PXI trigger line 5. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG6` | The trigger is received on PXI trigger line 6. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG7` | The trigger is received on PXI trigger line 7. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_STAR` | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.OutputTerm.PXIE_DSTARB` | The trigger is received on the PXIe DStar B trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI0` | The trigger is received on PFI0 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI1` | The trigger is received on PFI1 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI2` | The trigger is received on PFI2 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI3` | The trigger is received on PFI3 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI4` | The trigger is received on PFI4 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI5` | The trigger is received on PFI5 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI6` | The trigger is received on PFI6 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI7` | The trigger is received on PFI7 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.OutputTerm.TIMER_EVENT` | The trigger is received from the Timer Event. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841, and for digital edge Advance Triggers on the PXIe-5663E/5665. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | str | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Arm Ref:Digital Edge:Source** + - C Attribute: **NIRFSA_ATTR_DIGITAL_EDGE_ARM_REF_TRIGGER_SOURCE** + +digital_edge_ref_trigger_edge +----------------------------- + + .. py:attribute:: digital_edge_ref_trigger_edge + + Specifies the active edge for the Reference Trigger. + + This property is used only when the :py:attr:`nirfsa.Session.ref_trigger_type` property is set to :py:data:`~nirfsa.NIRFSA_VAL_DIGITAL_EDGE`. + + **Default Value**: :py:data:`~nirfsa.ReferenceTriggerDigitalEdgeEdge.RISING` + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.configure_digital_edge_ref_trigger` + + **Defined Values**: + + +------------------------------------------------------------+-------------------------------------------------------+ + | Name | Description | + +============================================================+=======================================================+ + | :py:data:`~nirfsa.ReferenceTriggerDigitalEdgeEdge.RISING` | The trigger asserts on the rising edge of the signal. | + +------------------------------------------------------------+-------------------------------------------------------+ + | :py:data:`~nirfsa.ReferenceTriggerDigitalEdgeEdge.FALLING` | The trigger asserts on the falling edge of the signal | + +------------------------------------------------------------+-------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+---------------------------------------+ + | Characteristic | Value | + +=======================+=======================================+ + | Datatype | enums.ReferenceTriggerDigitalEdgeEdge | + +-----------------------+---------------------------------------+ + | Permissions | read-write | + +-----------------------+---------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+---------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Ref:Digital Edge:Edge** + - C Attribute: **NIRFSA_ATTR_DIGITAL_EDGE_REF_TRIGGER_EDGE** + +digital_edge_ref_trigger_source +------------------------------- + + .. py:attribute:: digital_edge_ref_trigger_source + + Specifies the source terminal for the digital edge Reference Trigger. + + This property is used only when the :py:attr:`nirfsa.Session.ref_trigger_type` property is set to :py:data:`~nirfsa.NIRFSA_VAL_DIGITAL_EDGE`. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **Defined Values**: + + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=============================================+=================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.NIRFSA_VAL_DO_NOT_EXPORT` | The signal is not exported. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_CLK_OUT` | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_REF_OUT` | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_REF_OUT2` | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PFI0` | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PFI1` | The trigger is received on PFI 1. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG0` | The trigger is received on PXI trigger line 0. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG1` | The trigger is received on PXI trigger line 1. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG2` | The trigger is received on PXI trigger line 2. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG3` | The trigger is received on PXI trigger line 3. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG4` | The trigger is received on PXI trigger line 4. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG5` | The trigger is received on PXI trigger line 5. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG6` | The trigger is received on PXI trigger line 6. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG7` | The trigger is received on PXI trigger line 7. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_STAR` | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.OutputTerm.PXIE_DSTARB` | The trigger is received on the PXIe DStar B trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI0` | The trigger is received on PFI0 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI1` | The trigger is received on PFI1 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI2` | The trigger is received on PFI2 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI3` | The trigger is received on PFI3 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI4` | The trigger is received on PFI4 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI5` | The trigger is received on PFI5 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI6` | The trigger is received on PFI6 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI7` | The trigger is received on PFI7 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.OutputTerm.TIMER_EVENT` | The trigger is received from the Timer Event. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841, and for digital edge Advance Triggers on the PXIe-5663E/5665. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | str | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Ref:Digital Edge:Source** + - C Attribute: **NIRFSA_ATTR_DIGITAL_EDGE_REF_TRIGGER_SOURCE** + +digital_edge_start_trigger_edge +------------------------------- + + .. py:attribute:: digital_edge_start_trigger_edge + + Specifies the active edge for the Start Trigger. + + This property is used only when the :py:attr:`nirfsa.Session.start_trigger_type` property is set to :py:data:`~nirfsa.NIRFSA_VAL_DIGITAL_EDGE`. + + **Default Value**: :py:data:`~nirfsa.StartTriggerDigitalEdgeEdge.RISING` + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.configure_digital_edge_start_trigger` + + **Defined and Valid Values:** + + +--------------------------------------------------------+-------------------------------------------------------+-------------------------------------+ + | Name | Description | Valid For | + +========================================================+=======================================================+=====================================+ + | :py:data:`~nirfsa.StartTriggerDigitalEdgeEdge.RISING` | The trigger asserts on the rising edge of the signal. | PXI-5661, PXIe-5663/5663E/5665/5668 | + +--------------------------------------------------------+-------------------------------------------------------+-------------------------------------+ + | :py:data:`~nirfsa.StartTriggerDigitalEdgeEdge.FALLING` | The trigger asserts on the falling edge of the signal | PXIe-5668 | + +--------------------------------------------------------+-------------------------------------------------------+-------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+-----------------------------------+ + | Characteristic | Value | + +=======================+===================================+ + | Datatype | enums.StartTriggerDigitalEdgeEdge | + +-----------------------+-----------------------------------+ + | Permissions | read-write | + +-----------------------+-----------------------------------+ + | Repeated Capabilities | None | + +-----------------------+-----------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Start:Digital Edge:Edge** + - C Attribute: **NIRFSA_ATTR_DIGITAL_EDGE_START_TRIGGER_EDGE** + +digital_edge_start_trigger_source +--------------------------------- + + .. py:attribute:: digital_edge_start_trigger_source + + Specifies the source terminal for the Start Trigger. + + This property is used only when the :py:attr:`nirfsa.Session.start_trigger_type` property is set to :py:data:`~nirfsa.NIRFSA_VAL_DIGITAL_EDGE`. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.configure_digital_edge_start_trigger` + + **Defined Values**: + + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=============================================+=================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.NIRFSA_VAL_DO_NOT_EXPORT` | The signal is not exported. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_CLK_OUT` | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_REF_OUT` | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_REF_OUT2` | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PFI0` | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PFI1` | The trigger is received on PFI 1. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG0` | The trigger is received on PXI trigger line 0. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG1` | The trigger is received on PXI trigger line 1. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG2` | The trigger is received on PXI trigger line 2. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG3` | The trigger is received on PXI trigger line 3. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG4` | The trigger is received on PXI trigger line 4. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG5` | The trigger is received on PXI trigger line 5. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG6` | The trigger is received on PXI trigger line 6. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_TRIG7` | The trigger is received on PXI trigger line 7. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_PXI_STAR` | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.OutputTerm.PXIE_DSTARB` | The trigger is received on the PXIe DStar B trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI0` | The trigger is received on PFI0 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI1` | The trigger is received on PFI1 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI2` | The trigger is received on PFI2 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI3` | The trigger is received on PFI3 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI4` | The trigger is received on PFI4 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI5` | The trigger is received on PFI5 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI6` | The trigger is received on PFI6 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DIO_PFI7` | The trigger is received on PFI7 from the front panel DIO terminal. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.OutputTerm.TIMER_EVENT` | The trigger is received from the Timer Event. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841, and for digital edge Advance Triggers on the PXIe-5663E/5665. | + +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | str | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Start:Digital Edge:Source** + - C Attribute: **NIRFSA_ATTR_DIGITAL_EDGE_START_TRIGGER_SOURCE** + +digital_gain +------------ + + .. py:attribute:: digital_gain + + Specifies the scaling factor applied to the time-domain voltage data in the digitizer. + + NI-RFSA does not compensate for the specified digital gain. + + You can use this property to account for external gain changes without changing the analog signal path. + + ---- + **Note** + The PXIe-5644/5645/5646 applies this gain when the data is scaled. The raw data does not include this scaling on these devices. + + ---- + + **Units:** dB + + **Default Value:** 0 dB + + **Supported Devices**: PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Advanced:Digital Gain (dB)** + - C Attribute: **NIRFSA_ATTR_DIGITAL_GAIN** + +digital_if_equalization_enabled +------------------------------- + + .. py:attribute:: digital_if_equalization_enabled + + Enables use of the digital equalization filter for the RF downconverter. + + **PXIe-5820/5830/5831/5832/5840/5841/5842/5860**: The only valid value for this property is True. + + ---- + **Note** + For PXIe-5665/5667 devices, digital IF equalization is supported only with a 150 MHz clock. You cannot set this property to True if the :py:attr:`nirfsa.Session.digitizer_sample_clock_timebase_source` property is set to :py:data:`~nirfsa.DigitizerSampleClockTimebaseSource.LO_REF_CLK`. + + ---- + + ---- + **Note** + For the PXIe-5665 (14 GHz)/5667 (7 GHz)/5668, the preselector is not part of the IF filter path, so NI-RFSA does not equalize the preselector distortions. + + ---- + + **Default Value**: True, if the device configuration is supported. + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841 + + **Defined Values**: + + +-------+-----------------------------------------------------------+ + | Name | Description | + +=======+===========================================================+ + | True | Enables digital IF equalization on the RF downconverter. | + +-------+-----------------------------------------------------------+ + | False | Disables digital IF equalization on the RF downconverter. | + +-------+-----------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | bool | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Digital IF Equalization Enabled** + - C Attribute: **NIRFSA_ATTR_DIGITAL_IF_EQUALIZATION_ENABLED** + +digitizer_dither_enabled +------------------------ + + .. py:attribute:: digitizer_dither_enabled + + Specifies whether dithering is enabled on the digitizer. + + Dithering adds band-limited noise in the analog signal path to help reduce the quantization effects of the A/D converter and improve spectral performance. On the PXIe-5622, this out-of-band noise is added at low frequencies up to approximately 12 MHz. On the PXIe-5624, this out-of-band noise is added at low frequencies up to approximately 50 MHz. + + **PXIe-5663/5663E/5665/5667**: When you enable dithering, the maximum signal level is reduced by up to 3 dB. This signal level reduction is accounted for in the nominal input ranges of the PXIe-5622. Therefore, you can overrange the input by up to 3 dB with dither disabled. For example, the +4 dBm input range can handle signal levels up to +7 dBm with dither disabled. For wider bandwidth acquisitions, such as 40 MHz, disable dithering to eliminate residual leakage of the dither signal into the lower frequencies of the IF passband, which starts at 12.5 MHz and ends at 62.5 MHz. This leakage can slightly raise the noise floor in the lower frequencies, thus degrading the performance in high-sensitivity applications. When taking spectral measurements, this leakage can also appear as a wide, low-amplitude signal near 12.5 MHz and 62.5 MHz. The width and amplitude of the signal depends on your resolution bandwidth and the type of time-domain window you apply to your FFT. + + **PXIe-5668**: When you enable dithering, the maximum signal level is reduced by up to 2 dB. For the PXIe-5624, the maximum input power with dither off is 8 dBm and the maximum input power with dither on is 6 dBm. When acquiring an 800 MHz bandwidth signal, the I/Q data contains the dither even if the dither signal is not in the displayed spectrum. The dither can affect actions like power level triggering. + + ---- + **Note** + For the PXIe-5668, disabling dithering can negatively affect absolute amplitude accuracy. + + ---- + + ---- + **Note** + For the PXIe-5820/5830/5831/5832/5840/5841/5842, only :py:data:`~nirfsa.DigitizerDitherEnabled.ENABLED` is supported. + + ---- + + **Default Value**: :py:data:`~nirfsa.DigitizerDitherEnabled.ENABLED` + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842 + + **Defined Values**: + + +----------------------------------------------------+-----------------------------------+ + | Name | Description | + +====================================================+===================================+ + | :py:data:`~nirfsa.DigitizerDitherEnabled.DISABLED` | Disables dither on the digitizer. | + +----------------------------------------------------+-----------------------------------+ + | :py:data:`~nirfsa.DigitizerDitherEnabled.ENABLED` | Enables dither on the digitizer. | + +----------------------------------------------------+-----------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------------------------+ + | Characteristic | Value | + +=======================+==============================+ + | Datatype | enums.DigitizerDitherEnabled | + +-----------------------+------------------------------+ + | Permissions | read-write | + +-----------------------+------------------------------+ + | Repeated Capabilities | None | + +-----------------------+------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Digitizer Dither Enabled** + - C Attribute: **NIRFSA_ATTR_DIGITIZER_DITHER_ENABLED** + +digitizer_sample_clock_rate +--------------------------- + + .. py:attribute:: digitizer_sample_clock_rate + + Returns the actual frequency, in hertz (Hz), of the digitizer Sample Clock. + + **Units**: hertz (Hz) + + **Supported Devices**: PXIe-5668 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | float | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Clocking:Digitizer Sample Clock Rate** + - C Attribute: **NIRFSA_ATTR_DIGITIZER_SAMPLE_CLOCK_RATE** + +digitizer_sample_clock_timebase_rate +------------------------------------ + + .. py:attribute:: digitizer_sample_clock_timebase_rate + + Specifies the frequency, in hertz (Hz), of the external clock used as the timebase source if you set the :py:attr:`nirfsa.Session.digitizer_sample_clock_timebase_source` property to an external source, such as :py:data:`~nirfsa.NIRFSA_VAL_CLK_IN`, :py:data:`~nirfsa.DigitizerSampleClockTimebaseSource.LO_REF_CLK`, or :py:data:`~nirfsa.DigitizerSampleClockTimebaseSource.DOWNCONVERTER_LO2_OUT` + + **PXI-5661**If this property is set to a value less than 60 MHz, signals at frequencies just above the 20 MHz passband of the downconverter may be aliased back into the passband. This aliasing occurs because the IF frequency of the downconverter is 15 MHz, and the upper end of the passband is 25 MHz. At sampling rates below 60 MHz, the Nyquist frequency is close to the end of the passband and creates aliases that are not filtered effectively by the downconverter. + + **Units**: hertz (Hz) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668 + + **Valid and Default Values**: + + +---------------------------+----------------------------+---------------+ + | Device | Valid Values | Default Value | + +===========================+============================+===============+ + | PXI-5661 | Any frequency 226552.5 MHz | 100 MHz | + +---------------------------+----------------------------+---------------+ + | PXIe-5663/5663E/5665/5667 | 150 MHz | 150 MHz | + +---------------------------+----------------------------+---------------+ + | PXIe-5668 | 2 GHz | 2 GHz | + +---------------------------+----------------------------+---------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Clocking:Digitizer Sample Clock Timebase Rate** + - C Attribute: **NIRFSA_ATTR_DIGITIZER_SAMPLE_CLOCK_TIMEBASE_RATE** + +digitizer_sample_clock_timebase_source +-------------------------------------- + + .. py:attribute:: digitizer_sample_clock_timebase_source + + Specifies the source of the Sample Clock timebase, which is the timebase used to control waveform sampling. + + **Default Value**: :py:data:`~nirfsa.DigitizerSampleClockTimebaseSource.ONBOARD_CLOCK` + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668 + + **Defined Values**: + + +-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=============================================================================+========================================================================================================================================================================+ + | :py:data:`~nirfsa.DigitizerSampleClockTimebaseSource.ONBOARD_CLOCK` | The digitizer uses its onboard clock as the Sample Clock timebase. | + +-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.DigitizerSampleClockTimebaseSource.CLK_IN` | The digitizer uses the signal present on the CLK IN connector as the Sample Clock timebase. | + +-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.DigitizerSampleClockTimebaseSource.LO_REF_CLK` | The digitizer uses the signal generated on the 100 MHz REF OUT terminal on the PXIe-5653 as the Sample Clock timebase. This value is supported only for the PXIe-5665. | + +-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.DigitizerSampleClockTimebaseSource.PXI_STAR` | The digitizer uses the signal present at the PXI star trigger line as the Sample Clock timebase. This value is not supported for the PXIe-5668. | + +-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.DigitizerSampleClockTimebaseSource.DOWNCONVERTER_LO2_OUT` | The digitizer uses the signal present on the LO2 OUT connector on the downconverter as the Sample Clock timebase. This value is supported only for the PXIe-5668. | + +-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------------------------------------+ + | Characteristic | Value | + +=======================+==========================================+ + | Datatype | enums.DigitizerSampleClockTimebaseSource | + +-----------------------+------------------------------------------+ + | Permissions | read-write | + +-----------------------+------------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+------------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Clocking:Digitizer Sample Clock Timebase Source** + - C Attribute: **NIRFSA_ATTR_DIGITIZER_SAMPLE_CLOCK_TIMEBASE_SOURCE** + +digitizer_temperature +--------------------- + + .. py:attribute:: digitizer_temperature + + Returns the current temperature, in degrees Celsius, of the digitizer module. + + **PXIe-5820/5840/5841/5842**: If you query this property during RF list mode, list steps may take longer to complete during list execution. + + **Default Value**: N/A + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5840/5841/5842 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | float | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Characteristics:Digitizer Temperature (Degrees C)** + - C Attribute: **NIRFSA_ATTR_DIGITIZER_TEMPERATURE** + +digitizer_vertical_range +------------------------ + + .. py:attribute:: digitizer_vertical_range + + Specifies the vertical range of the digitizer. + + The vertical range is defined as the absolute value of the input range for a channel. The default vertical range works for all device configurations, but you can use this property to optimize performance if you know that the signal level at the digitizer input terminal is low. + + ---- + **Note** + For most applications, NI-RFSA selects an appropriate value for this property. + + ---- + + This value is expressed in volts. For example, to acquire a sine wave that spans between 20130.5 V and +0.5 V, set this property to 1.0. + + **PXIe-5840/5841/5842/5860**: This property is read-only. + + **Default Value**: 1.0 + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667, PXIe-5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Digitizer Vertical Range** + - C Attribute: **NIRFSA_ATTR_DIGITIZER_VERTICAL_RANGE** + +done_event_terminal_name +------------------------ + + .. py:attribute:: done_event_terminal_name + + Returns the fully qualified signal name as a string. + + **Default Values**: + + **PXIe-5830/5831/5832**: /BasebandModule/ai/0/DoneEvent, where *BasebandModule* is the name of the baseband module of your device in MAX. + + **PXIe-5820/5840/5841/5842**: /ModuleName/ai/0/DoneEvent, where *ModuleName* is the name of your device in MAX. + + **PXIe-5860**: /ModuleName/ai/ChannelNumber/DoneEvent, where *ModuleName* is the name of your device in MAX and *ChannelNumber* is the channel number (0 or 1). + + **All other devices**: /DigitizerName/DoneEvent, where *DigitizerName* is the name associated with your digitizer module in MAX. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.get_terminal_name` + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Events:Done:Terminal Name** + - C Attribute: **NIRFSA_ATTR_DONE_EVENT_TERMINAL_NAME** + +downconverter_center_frequency +------------------------------ + + .. py:attribute:: downconverter_center_frequency + + Enables in-band retuning and specifies the current frequency, in hertz (Hz), of the RF downconverter. + + If you set this property, any measurements outside the instantaneous bandwidth of the device are invalid. To disable in-band retuning, reset the property or call the :py:meth:`nirfsa.Session.reset_device` method. + + After you set this property, the downconverter is locked to that frequency until the value is changed or the property is reset. Locking the downconverter to a fixed value allows frequencies within the instantaneous bandwidth of the downconverter to be measured with minimal overhead, decreasing tuning time. + + **Valid Values**: Any supported tuning frequency of the device + + **PXIe-5820**: The only valid value for this property is 0 Hz. + + **Default Value**: + + **PXIe-5694**: The default value for the PXIe-5694 is 193.6 MHz unless you set the :py:attr:`nirfsa.Session.signal_conditioning_enabled` property to :py:data:`~nirfsa.SignalConditioningEnabled.BYPASSED`, in which case the default value is 187.5 MHz. + + **All other devices**: The carrier frequency or spectrum center frequency. NI-RFSA sets this property to the default value based on the value of the :py:attr:`nirfsa.Session.acquisition_type` property. + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667/5668, PXIe-5694, PXIe-5820/5830/5831/5832/5840/5841/5842 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Advanced:Downconverter Center Frequency** + - C Attribute: **NIRFSA_ATTR_DOWNCONVERTER_CENTER_FREQUENCY** + +downconverter_frequency_offset +------------------------------ + + .. py:attribute:: downconverter_frequency_offset + + Specifies an offset from the I/Q carrier frequency for the downconverter. + + If you set this property, any measurements outside the instantaneous bandwidth of the device are invalid. After you set this property, the RF downconverter is locked to that frequency offset until the value is changed or the property is reset. + + **Valid Values:** + + **PXIe-5646:**: -100 MHz to +100 MHz + + **PXIe-5830/5831/5832/5840/5841:**: -500 MHz to +500 MHz + + **All other devices:**: -42 MHz to +42 MHz + + **Default Values:**: For spectrum acquisition types the driver automatically calculates the default to avoid residual LO power. For I/Q acquisition types the default is 0 Hz. If the center frequency is set to a non-multiple of the :py:attr:`nirfsa.Session.lo_frequency_step_size` property, the :py:attr:`nirfsa.Session.downconverter_frequency_offset` property is set to compensate for the difference. + + **Supported Devices:**: PXIe-5644/5645/5646, PXIe-5830/5831/5832/5840/5841/5842 + + **Related Topics** + + `PXIe-5830 Frequency and Bandwidth Selection `_ + + `PXIe-5831/5832 Frequency and Bandwidth Selection `_ + + `PXIe-5841 Frequency and Bandwidth Selection `_ + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Specific:Vector Signal Transceiver:Acquisition:Advanced:Downconverter Frequency Offset** + - C Attribute: **NIRFSA_ATTR_DOWNCONVERTER_FREQUENCY_OFFSET** + +downconverter_frequency_offset_mode +----------------------------------- + + .. py:attribute:: downconverter_frequency_offset_mode + + Specifies whether to allow NI-RFSA to select the downconveter frequency offset. + + You can either set an offset yourself or let NI-RFSA select one for you. + + Placing the downconverter center frequency outside the bandwidth of your input signal can help avoid issues such as LO leakage. + + To set an offset yourself, set this property to :py:data:`~nirfsa.DownconverterFrequencyOffsetMode.AUTOMATIC` or :py:data:`~nirfsa.DownconverterFrequencyOffsetMode.USER_DEFINED`, and set either the :py:attr:`nirfsa.Session.downconverter_center_frequency` or the :py:attr:`nirfsa.Session.downconverter_frequency_offset` properties. + + To allow NI-RFSA to automatically select the downconverter frequency offset, set this property to :py:data:`~nirfsa.DownconverterFrequencyOffsetMode.AUTOMATIC` or :py:data:`~nirfsa.DownconverterFrequencyOffsetMode.ENABLED` and configure the :py:attr:`nirfsa.Session.signal_bandwidth` property to describe your expected input signal. The signal bandwidth must be no greater than half the specified value of the :py:attr:`nirfsa.Session.device_instantaneous_bandwidth` property, minus a device-specific guard band. Do not set the :py:attr:`nirfsa.Session.downconverter_center_frequency` or :py:attr:`nirfsa.Session.downconverter_frequency_offset` properties. If all conditions are met, NI-RFSA places the downconverter center frequency outside the signal bandwidth. Set this property to :py:data:`~nirfsa.DownconverterFrequencyOffsetMode.ENABLED` if you want to receive an error any time NI-RFSA is unable to apply automatic offset. + + When you set an offset yourself or do not use an offset, the reference frequency for gain is near the downconverter center frequency, and :py:attr:`nirfsa.Session.downconverter_frequency_offset_mode` returns :py:data:`~nirfsa.DownconverterFrequencyOffsetMode.USER_DEFINED`. When NI-RFSA automatically sets an offset, the reference frequency for gain is the :py:attr:`nirfsa.Session.iq_carrier_frequency`, and :py:attr:`nirfsa.Session.downconverter_frequency_offset_mode` returns :py:data:`~nirfsa.DownconverterFrequencyOffsetMode.ENABLED`. Refer to the specifications document for your device for more information about gain, flatness, and reference frequencies. + + ---- + **Note** + Below 120 MHz, the PXIe-5841 does not use an LO and :py:data:`~nirfsa.DownconverterFrequencyOffsetMode.ENABLED` is unavailable. Refer to the *PXIe-5841 Automatic Frequency Offset* topic for more information about using an automatic offset with an external LO. + + ---- + + **Default Value:** :py:data:`~nirfsa.DownconverterFrequencyOffsetMode.AUTOMATIC` + + **Supported Devices**: PXIe-5830/5831/5832/5841/5842 + + **Related Topics** + + `PXIe-5830 Automatic Frequency Offset `_ + + `PXIe-5831/5832 Automatic Frequency Offset `_ + + `PXIe-5841 Automatic Frequency Offset `_ + + **Defined Values**: + + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +==================================================================+==============================================================================================================================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.DownconverterFrequencyOffsetMode.AUTOMATIC` | NI-RFSA places the downconverter center frequency outside of the signal bandwidth if the :py:attr:`nirfsa.Session.signal_bandwidth` property has been set and can be avoided. | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.DownconverterFrequencyOffsetMode.ENABLED` | NI-RFSA places the downconverter center frequency outside of the signal bandwidth if the :py:attr:`nirfsa.Session.signal_bandwidth` property has been set and can be avoided. NI-RFSA returns an error if the :py:attr:`nirfsa.Session.signal_bandwidth` property has not been set, or if the signal bandwidth is too large. | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.DownconverterFrequencyOffsetMode.USER_DEFINED` | NI-RFSA uses the offset that you specified with the :py:attr:`nirfsa.Session.downconverter_frequency_offset` or :py:attr:`nirfsa.Session.downconverter_center_frequency` properties. | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+----------------------------------------+ + | Characteristic | Value | + +=======================+========================================+ + | Datatype | enums.DownconverterFrequencyOffsetMode | + +-----------------------+----------------------------------------+ + | Permissions | read-write | + +-----------------------+----------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+----------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Advanced:Downconverter Frequency Offset Mode** + - C Attribute: **NIRFSA_ATTR_DOWNCONVERTER_FREQUENCY_OFFSET_MODE** + +downconverter_gain +------------------ + + .. py:attribute:: downconverter_gain + + Returns the net signal gain for the NI-RFSA device at the current NI-RFSA settings and temperature. + + NI-RFSA scales the acquired I/Q and spectrum data from the digitizer using the value of this property. + + For a vector signal analyzer (VSA), the system is defined as the RF downconverter and all interfaces between the RF IN connector on the RF downconverter front panel and the IF IN connector on the digitizer front panel. For a spectrum monitoring receiver, the system is defined as the RF preselector, RF downconverter, and IF conditioning modules including all interfaces between the RF IN connector on the RF preselector module front panel and the IF IN connector on the digitizer front panel. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | float | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Downconverter Gain (dB)** + - C Attribute: **NIRFSA_ATTR_DOWNCONVERTER_GAIN** + +downconverter_loop_bandwidth +---------------------------- + + .. py:attribute:: downconverter_loop_bandwidth + + Configures the loop bandwidth of the RF downconverter tuning PLLs. + + To set this property, the NI-RFSA device must be in the Configuration state. + + **PXI-5600/5661** : For signal bandwidths greater than 10 MHz, :py:data:`~nirfsa.DownconverterLoopBandwidth.WIDE` is the only value supported for this property. + + **PXIe-5601/5663/5663E** : The PXIe-5601 does not support the :py:data:`~nirfsa.DownconverterLoopBandwidth.MEDIUM` value. This property is not supported if you are using an external LO. + + **PXIe-5830/5831/5832/5840/5841/5842** : The PXIe-5840/5841/5842 supports only :py:data:`~nirfsa.DownconverterLoopBandwidth.MEDIUM` for this property. This property is not supported if you are using an external LO. + + To use this property for the PXIe-5830/5831/5832, you must use the channelName parameter of the :py:meth:`nirfsa.Session._set_attribute_vi_int32` method to specify the name of the channel you are configuring. You can configure the LO1 and LO2 channels by using lo1 or lo2 as the channel string, or set the channel string to lo1,lo2 to configure both channels. For all other devices, the the only valid value for the channel string is "" (empty string). + + **Default Values**: + + **PXI-5600** : :py:data:`~nirfsa.DownconverterLoopBandwidth.WIDE` + + **PXIe-5601** : :py:data:`~nirfsa.DownconverterLoopBandwidth.NARROW` + + **PXIe-5644/5645/5646, PXIe-5830/5831/5832/5840/5841/5842** : :py:data:`~nirfsa.DownconverterLoopBandwidth.MEDIUM` + + **Supported Devices**: PXI-5600, PXIe-5601 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E, PXIe-5830/5831/5832/5840/5841/5842 + + **Defined Values**: + + +------------------------------------------------------+-----------------------------------------------------------------------+ + | Name | Description | + +======================================================+=======================================================================+ + | :py:data:`~nirfsa.DownconverterLoopBandwidth.NARROW` | Specifies that the downconverter module uses a narrow loop bandwidth. | + +------------------------------------------------------+-----------------------------------------------------------------------+ + | :py:data:`~nirfsa.DownconverterLoopBandwidth.MEDIUM` | Specifies that the downconverter module uses a medium loop bandwidth. | + +------------------------------------------------------+-----------------------------------------------------------------------+ + | :py:data:`~nirfsa.DownconverterLoopBandwidth.WIDE` | Specifies that the downconverter module uses a wide loop bandwidth. | + +------------------------------------------------------+-----------------------------------------------------------------------+ + + + .. tip:: This property can be set/get on specific los within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container los to specify a subset. + + Example: :py:attr:`my_session.los[ ... ].downconverter_loop_bandwidth` + + To set/get on all los, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.downconverter_loop_bandwidth` + + The following table lists the characteristics of this property. + + +-----------------------+----------------------------------+ + | Characteristic | Value | + +=======================+==================================+ + | Datatype | enums.DownconverterLoopBandwidth | + +-----------------------+----------------------------------+ + | Permissions | read-write | + +-----------------------+----------------------------------+ + | Repeated Capabilities | los | + +-----------------------+----------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Advanced:Downconverter Loop Bandwidth** + - C Attribute: **NIRFSA_ATTR_DOWNCONVERTER_LOOP_BANDWIDTH** + +downconverter_preselector_enabled +--------------------------------- + + .. py:attribute:: downconverter_preselector_enabled + + Specifies whether the tunable preselector is enabled on the downconverter. + + ---- + **Note** + All devices support setting this property to :py:data:`~nirfsa.DownconverterPreselectorEnabled.DISABLED` or :py:data:`~nirfsa.DownconverterPreselectorEnabled.ENABLED_WHEN_IN_SIGNAL_PATH`. Only devices with a preselector support setting this property to :py:data:`~nirfsa.DownconverterPreselectorEnabled.ENABLED`. + + ---- + + **Default Value**: :py:data:`~nirfsa.DownconverterPreselectorEnabled.DISABLED` if the device has no preselector. :py:data:`~nirfsa.DownconverterPreselectorEnabled.ENABLED_WHEN_IN_SIGNAL_PATH` if the device has a preselector. + + **Supported Devices:** PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +--------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +================================================================================+===================================================================================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.DownconverterPreselectorEnabled.DISABLED` | Disables the preselector. | + +--------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.DownconverterPreselectorEnabled.ENABLED_WHEN_IN_SIGNAL_PATH` | The preselector is automatically enabled when it is in the signal path and is automatically disabled when it is not in the signal path. Use the :py:attr:`nirfsa.Session.preselector_present` property to determine if the downconverter has an preselector. | + +--------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.DownconverterPreselectorEnabled.ENABLED` | Enables the preselector. If the preselector is not in the signal path or if the preselector is not supported on the device, NI-RFSA returns an error. Select the :py:data:`~nirfsa.DownconverterPreselectorEnabled.ENABLED_WHEN_IN_SIGNAL_PATH` whenever possible avoid an error. | + +--------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+---------------------------------------+ + | Characteristic | Value | + +=======================+=======================================+ + | Datatype | enums.DownconverterPreselectorEnabled | + +-----------------------+---------------------------------------+ + | Permissions | read-write | + +-----------------------+---------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+---------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Advanced:Downconverter Preselector Enabled** + - C Attribute: **NIRFSA_ATTR_DOWNCONVERTER_PRESELECTOR_ENABLED** + +driver_setup +------------ + + .. py:attribute:: driver_setup + + The Driver Setup string returns the initial values for properties that are specific to NI-RFSA. + + The Driver Setup string uses the following format: + + DriverSetup= Tag:Value + + *Tag* is the name of the Driver Setup string property. *Value* is the value set to the property. If multiple properties are set, their assignments are separated with a semicolon. + + This property only returns the Driver Setup string that has already been defined. Refer to `Driver Setup Options `_ for more information about configuring the Driver Setup string. Refer to the :py:meth:`nirfsa.Session.__init__` method for additional information about using the **option string** parameter. + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Inherent IVI Attributes:User Options:Driver Setup** + - C Attribute: **NIRFSA_ATTR_DRIVER_SETUP** + +enable_fractional_resampling +---------------------------- + + .. py:attribute:: enable_fractional_resampling + + Specifies whether fractional resampling is enabled on the digitizer. + + Fractional resampling allows the digitizer to achieve very fine resolution on the I/Q rate value. Setting this property to False improves spectral performance. + + **PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842/5860**: The only valid value for this property is True. + + **PXIe-5668**: When using a 400 MHz FPGA image, the only valid value for this property is True. When using a 800 MHz FPGA image, the only valid value for this property is False. Refer to `NI-RFSA Instrument Driver FPGA Extensions `_ for more information about FPGA images. + + **Default Value**: True + + **Supported Devices**: PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +-------+---------------------------------+ + | Value | Description | + +=======+=================================+ + | True | Enables fractional resampling. | + +-------+---------------------------------+ + | False | Disables fractional resampling. | + +-------+---------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | bool | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Fractional Resample Enabled** + - C Attribute: **NIRFSA_ATTR_ENABLE_FRACTIONAL_RESAMPLING** + +end_of_record_event_terminal_name +--------------------------------- + + .. py:attribute:: end_of_record_event_terminal_name + + Returns the fully qualified signal name as a string. + + **Default Values**: + + **PXIe-5830/5831/5832**: /BasebandModule/ai/0/EndOfRecordEvent, where *BasebandModule* is the name of the baseband module of your device in MAX. + + **PXIe-5820/5840/5841/5842**: /ModuleName/ai/0/EndOfRecordEvent, where *ModuleName* is the name of your device in MAX. + + **PXIe-5860**: /ModuleName/ai/ChannelNumber/EndOfRecordEvent, where *ModuleName* is the name of your device in MAX and *ChannelNumber* is the channel number (0 or 1). + + **All other devices**: /DigitizerName/EndOfRecordEvent, where *DigitizerName* is the name associated with your digitizer module in MAX. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Events `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.get_terminal_name` + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Events:End Of Record:Terminal Name** + - C Attribute: **NIRFSA_ATTR_END_OF_RECORD_EVENT_TERMINAL_NAME** + +exported_advance_trigger_output_terminal +---------------------------------------- + + .. py:attribute:: exported_advance_trigger_output_terminal + + Specifies the destination terminal for the exported Advance Trigger. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ExportSignal` + + **Defined Values**: + + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=======================================================+=================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.ExportOutputTerminal.DO_NOT_EXPORT` | The signal is not exported. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.CLK_OUT` | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.REF_OUT` | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.REF_OUT2` | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PFI0` | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PFI1` | The trigger is received on PFI 1. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG0` | The trigger is received on PXI trigger line 0. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG1` | The trigger is received on PXI trigger line 1. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG2` | The trigger is received on PXI trigger line 2. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG3` | The trigger is received on PXI trigger line 3. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG4` | The trigger is received on PXI trigger line 4. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG5` | The trigger is received on PXI trigger line 5. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG6` | The trigger is received on PXI trigger line 6. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG7` | The trigger is received on PXI trigger line 7. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_STAR` | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXIE_DSTARC` | The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI0` | The trigger is received on PFI0 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI1` | The trigger is received on PFI1 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI2` | The trigger is received on PFI2 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI3` | The trigger is received on PFI3 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI4` | The trigger is received on PFI4 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI5` | The trigger is received on PFI5 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI6` | The trigger is received on PFI6 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI7` | The trigger is received on PFI7 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+----------------------------+ + | Characteristic | Value | + +=======================+============================+ + | Datatype | enums.ExportOutputTerminal | + +-----------------------+----------------------------+ + | Permissions | read-write | + +-----------------------+----------------------------+ + | Repeated Capabilities | None | + +-----------------------+----------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Advance:Export:Output Terminal** + - C Attribute: **NIRFSA_ATTR_EXPORTED_ADVANCE_TRIGGER_OUTPUT_TERMINAL** + +exported_digitizer_sample_clock_output_terminal +----------------------------------------------- + + .. py:attribute:: exported_digitizer_sample_clock_output_terminal + + Specifies the terminal at which to export the Digitizer Sample Clock. + + **Valid Values**: + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5668 + + **Defined Values**: + + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=================================================================+==========================================================================================================================================================+ + | :py:data:`~nirfsa.DigitizerSampleClockExportedTerminal.NONE` | The Reference Clock is not exported. This value is not valid for the PXIe-5644/5645/5646. | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.DigitizerSampleClockExportedTerminal.CLK_OUT` | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +-----------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+--------------------------------------------+ + | Characteristic | Value | + +=======================+============================================+ + | Datatype | enums.DigitizerSampleClockExportedTerminal | + +-----------------------+--------------------------------------------+ + | Permissions | read-write | + +-----------------------+--------------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+--------------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Clocking:Digitizer Sample Clock Exported Terminal** + - C Attribute: **NIRFSA_ATTR_EXPORTED_DIGITIZER_SAMPLE_CLOCK_OUTPUT_TERMINAL** + +exported_done_event_output_terminal +----------------------------------- + + .. py:attribute:: exported_done_event_output_terminal + + Specifies the destination terminal for the Done Event. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ExportSignal` + + **Defined Values**: + + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=======================================================+=================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.ExportOutputTerminal.DO_NOT_EXPORT` | The signal is not exported. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.CLK_OUT` | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.REF_OUT` | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.REF_OUT2` | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PFI0` | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PFI1` | The trigger is received on PFI 1. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG0` | The trigger is received on PXI trigger line 0. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG1` | The trigger is received on PXI trigger line 1. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG2` | The trigger is received on PXI trigger line 2. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG3` | The trigger is received on PXI trigger line 3. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG4` | The trigger is received on PXI trigger line 4. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG5` | The trigger is received on PXI trigger line 5. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG6` | The trigger is received on PXI trigger line 6. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG7` | The trigger is received on PXI trigger line 7. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_STAR` | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXIE_DSTARC` | The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI0` | The trigger is received on PFI0 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI1` | The trigger is received on PFI1 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI2` | The trigger is received on PFI2 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI3` | The trigger is received on PFI3 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI4` | The trigger is received on PFI4 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI5` | The trigger is received on PFI5 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI6` | The trigger is received on PFI6 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI7` | The trigger is received on PFI7 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+----------------------------+ + | Characteristic | Value | + +=======================+============================+ + | Datatype | enums.ExportOutputTerminal | + +-----------------------+----------------------------+ + | Permissions | read-write | + +-----------------------+----------------------------+ + | Repeated Capabilities | None | + +-----------------------+----------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Events:Done:Output Terminal** + - C Attribute: **NIRFSA_ATTR_EXPORTED_DONE_EVENT_OUTPUT_TERMINAL** + +exported_end_of_record_event_output_terminal +-------------------------------------------- + + .. py:attribute:: exported_end_of_record_event_output_terminal + + Specifies the destination terminal for the End of Record Event. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + `Events `_ + + `Signal Routing `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ExportSignal` + + **Defined Values**: + + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=======================================================+=================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.ExportOutputTerminal.DO_NOT_EXPORT` | The signal is not exported. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.CLK_OUT` | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.REF_OUT` | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.REF_OUT2` | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PFI0` | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PFI1` | The trigger is received on PFI 1. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG0` | The trigger is received on PXI trigger line 0. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG1` | The trigger is received on PXI trigger line 1. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG2` | The trigger is received on PXI trigger line 2. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG3` | The trigger is received on PXI trigger line 3. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG4` | The trigger is received on PXI trigger line 4. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG5` | The trigger is received on PXI trigger line 5. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG6` | The trigger is received on PXI trigger line 6. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG7` | The trigger is received on PXI trigger line 7. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_STAR` | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXIE_DSTARC` | The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI0` | The trigger is received on PFI0 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI1` | The trigger is received on PFI1 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI2` | The trigger is received on PFI2 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI3` | The trigger is received on PFI3 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI4` | The trigger is received on PFI4 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI5` | The trigger is received on PFI5 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI6` | The trigger is received on PFI6 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI7` | The trigger is received on PFI7 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+----------------------------+ + | Characteristic | Value | + +=======================+============================+ + | Datatype | enums.ExportOutputTerminal | + +-----------------------+----------------------------+ + | Permissions | read-write | + +-----------------------+----------------------------+ + | Repeated Capabilities | None | + +-----------------------+----------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Events:End Of Record:Output Terminal** + - C Attribute: **NIRFSA_ATTR_EXPORTED_END_OF_RECORD_EVENT_OUTPUT_TERMINAL** + +exported_ready_for_advance_event_output_terminal +------------------------------------------------ + + .. py:attribute:: exported_ready_for_advance_event_output_terminal + + Specifies the destination terminal for the Ready for Advance Event. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ExportSignal` + + **Defined Values**: + + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=======================================================+=================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.ExportOutputTerminal.DO_NOT_EXPORT` | The signal is not exported. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.CLK_OUT` | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.REF_OUT` | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.REF_OUT2` | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PFI0` | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PFI1` | The trigger is received on PFI 1. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG0` | The trigger is received on the PXI trigger line 0. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG1` | The trigger is received on the PXI trigger line 1. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG2` | The trigger is received on the PXI trigger line 2. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG3` | The trigger is received on the PXI trigger line 3. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG4` | The trigger is received on the PXI trigger line 4. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG5` | The trigger is received on the PXI trigger line 5. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG6` | The trigger is received on the PXI trigger line 6. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG7` | The trigger is received on the PXI trigger line 7. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_STAR` | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXIE_DSTARC` | The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI0` | The trigger is received on PFI0 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI1` | The trigger is received on PFI1 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI2` | The trigger is received on PFI2 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI3` | The trigger is received on PFI3 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI4` | The trigger is received on PFI4 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI5` | The trigger is received on PFI5 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI6` | The trigger is received on PFI6 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI7` | The trigger is received on PFI7 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+----------------------------+ + | Characteristic | Value | + +=======================+============================+ + | Datatype | enums.ExportOutputTerminal | + +-----------------------+----------------------------+ + | Permissions | read-write | + +-----------------------+----------------------------+ + | Repeated Capabilities | None | + +-----------------------+----------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Events:Ready For Advance:Output Terminal** + - C Attribute: **NIRFSA_ATTR_EXPORTED_READY_FOR_ADVANCE_EVENT_OUTPUT_TERMINAL** + +exported_ready_for_ref_event_output_terminal +-------------------------------------------- + + .. py:attribute:: exported_ready_for_ref_event_output_terminal + + Specifies the destination terminal for the Ready for Reference Event. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ExportSignal` + + **Defined Values**: + + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=======================================================+=================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.ExportOutputTerminal.DO_NOT_EXPORT` | The signal is not exported. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.CLK_OUT` | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.REF_OUT` | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.REF_OUT2` | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PFI0` | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PFI1` | The trigger is received on PFI 1. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG0` | The trigger is received on PXI trigger line 0. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG1` | The trigger is received on PXI trigger line 1. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG2` | The trigger is received on PXI trigger line 2. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG3` | The trigger is received on PXI trigger line 3. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG4` | The trigger is received on PXI trigger line 4. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG5` | The trigger is received on PXI trigger line 5. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG6` | The trigger is received on PXI trigger line 6. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG7` | The trigger is received on PXI trigger line 7. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_STAR` | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXIE_DSTARC` | The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI0` | The trigger is received on PFI0 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI1` | The trigger is received on PFI1 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI2` | The trigger is received on PFI2 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI3` | The trigger is received on PFI3 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI4` | The trigger is received on PFI4 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI5` | The trigger is received on PFI5 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI6` | The trigger is received on PFI6 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI7` | The trigger is received on PFI7 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+----------------------------+ + | Characteristic | Value | + +=======================+============================+ + | Datatype | enums.ExportOutputTerminal | + +-----------------------+----------------------------+ + | Permissions | read-write | + +-----------------------+----------------------------+ + | Repeated Capabilities | None | + +-----------------------+----------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Events:Ready For Ref:Output Terminal** + - C Attribute: **NIRFSA_ATTR_EXPORTED_READY_FOR_REF_EVENT_OUTPUT_TERMINAL** + +exported_ready_for_start_event_output_terminal +---------------------------------------------- + + .. py:attribute:: exported_ready_for_start_event_output_terminal + + Specifies the destination terminal for the Ready for Start Event. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ExportSignal` + + **Defined Values**: + + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=======================================================+=================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.ExportOutputTerminal.DO_NOT_EXPORT` | The signal is not exported. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.CLK_OUT` | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.REF_OUT` | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.REF_OUT2` | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PFI0` | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PFI1` | The trigger is received on PFI 1. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG0` | The trigger is received on PXI trigger line 0. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG1` | The trigger is received on PXI trigger line 1. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG2` | The trigger is received on PXI trigger line 2. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG3` | The trigger is received on PXI trigger line 3. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG4` | The trigger is received on PXI trigger line 4. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG5` | The trigger is received on PXI trigger line 5. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG6` | The trigger is received on PXI trigger line 6. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG7` | The trigger is received on PXI trigger line 7. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_STAR` | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXIE_DSTARC` | The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI0` | The trigger is received on PFI0 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI1` | The trigger is received on PFI1 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI2` | The trigger is received on PFI2 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI3` | The trigger is received on PFI3 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI4` | The trigger is received on PFI4 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI5` | The trigger is received on PFI5 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI6` | The trigger is received on PFI6 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI7` | The trigger is received on PFI7 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+----------------------------+ + | Characteristic | Value | + +=======================+============================+ + | Datatype | enums.ExportOutputTerminal | + +-----------------------+----------------------------+ + | Permissions | read-write | + +-----------------------+----------------------------+ + | Repeated Capabilities | None | + +-----------------------+----------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Events:Ready For Start:Output Terminal** + - C Attribute: **NIRFSA_ATTR_EXPORTED_READY_FOR_START_EVENT_OUTPUT_TERMINAL** + +exported_ref_clock_output_terminal +---------------------------------- + + .. py:attribute:: exported_ref_clock_output_terminal + + Specifies a comma-separated list of the terminals at which to export the Reference Clock. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5694, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ExportSignal` + + **Defined Values**: + + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +===================================================================+=================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.ReferenceClockExportedTerminal.NONE` | The Reference Clock is not exported. This value is not valid for the PXIe-5644/5645/5646. | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ReferenceClockExportedTerminal.REF_OUT` | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ReferenceClockExportedTerminal.REF_OUT2` | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ReferenceClockExportedTerminal.CLK_OUT` | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ReferenceClockExportedTerminal.IF_COND_REF_OUT` | Export the clock on the REF OUT terminal on the PXIe-5694. This value is valid only for the PXIe-5667. | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+--------------------------------------+ + | Characteristic | Value | + +=======================+======================================+ + | Datatype | enums.ReferenceClockExportedTerminal | + +-----------------------+--------------------------------------+ + | Permissions | read-write | + +-----------------------+--------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+--------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Clocking:Ref Clock Exported Terminal** + - C Attribute: **NIRFSA_ATTR_EXPORTED_REF_CLOCK_OUTPUT_TERMINAL** + +exported_ref_clock_rate +----------------------- + + .. py:attribute:: exported_ref_clock_rate + + Specifies the Reference Clock Rate, in Hz, of the signal sent to the Ref Clock Exported Terminal. + + **Default Value**: 10 MHz + + **Valid Values**: + + PXIe-5820/5830/5831/5832/5840/5841: 10 MHz + + PXIe-5842: 10 MHz, 100 MHz, 1 GHz + + PXIe-5860: 10 MHz, 100 MHz + + **Supported Devices**: PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+----------------------------------+ + | Characteristic | Value | + +=======================+==================================+ + | Datatype | enums.ReferenceClockExportedRate | + +-----------------------+----------------------------------+ + | Permissions | read-write | + +-----------------------+----------------------------------+ + | Repeated Capabilities | None | + +-----------------------+----------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Clocking:Ref Clock Exported Rate:Ref Clock Exported Rate** + - C Attribute: **NIRFSA_ATTR_EXPORTED_REF_CLOCK_RATE** + +exported_ref_trigger_output_terminal +------------------------------------ + + .. py:attribute:: exported_ref_trigger_output_terminal + + Specifies the destination terminal for the exported Reference Trigger. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ExportSignal` + + **Defined Values**: + + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=======================================================+=================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.ExportOutputTerminal.DO_NOT_EXPORT` | The signal is not exported. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.CLK_OUT` | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.REF_OUT` | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.REF_OUT2` | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PFI0` | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PFI1` | The trigger is received on PFI 1. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG0` | The trigger is received on PXI trigger line 0. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG1` | The trigger is received on PXI trigger line 1. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG2` | The trigger is received on PXI trigger line 2. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG3` | The trigger is received on PXI trigger line 3. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG4` | The trigger is received on PXI trigger line 4. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG5` | The trigger is received on PXI trigger line 5. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG6` | The trigger is received on PXI trigger line 6. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG7` | The trigger is received on PXI trigger line 7. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_STAR` | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXIE_DSTARC` | The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI0` | The trigger is received on PFI0 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI1` | The trigger is received on PFI1 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI2` | The trigger is received on PFI2 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI3` | The trigger is received on PFI3 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI4` | The trigger is received on PFI4 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI5` | The trigger is received on PFI5 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI6` | The trigger is received on PFI6 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI7` | The trigger is received on PFI7 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+----------------------------+ + | Characteristic | Value | + +=======================+============================+ + | Datatype | enums.ExportOutputTerminal | + +-----------------------+----------------------------+ + | Permissions | read-write | + +-----------------------+----------------------------+ + | Repeated Capabilities | None | + +-----------------------+----------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Ref:Export:Output Terminal** + - C Attribute: **NIRFSA_ATTR_EXPORTED_REF_TRIGGER_OUTPUT_TERMINAL** + +exported_start_trigger_output_terminal +-------------------------------------- + + .. py:attribute:: exported_start_trigger_output_terminal + + Specifies the destination terminal for the exported Start Trigger. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ExportSignal` + + **Defined Values**: + + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=======================================================+=================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.ExportOutputTerminal.DO_NOT_EXPORT` | The signal is not exported. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.CLK_OUT` | Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.REF_OUT` | Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.REF_OUT2` | Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PFI0` | The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PFI1` | The trigger is received on PFI 1. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG0` | The trigger is received on PXI trigger line 0. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG1` | The trigger is received on PXI trigger line 1. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG2` | The trigger is received on PXI trigger line 2. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG3` | The trigger is received on PXI trigger line 3. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG4` | The trigger is received on PXI trigger line 4. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG5` | The trigger is received on PXI trigger line 5. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG6` | The trigger is received on PXI trigger line 6. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_TRIG7` | The trigger is received on PXI trigger line 7. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXI_STAR` | The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.PXIE_DSTARC` | The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI0` | The trigger is received on PFI0 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI1` | The trigger is received on PFI1 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI2` | The trigger is received on PFI2 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI3` | The trigger is received on PFI3 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI4` | The trigger is received on PFI4 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI5` | The trigger is received on PFI5 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI6` | The trigger is received on PFI6 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ExportOutputTerminal.DIO_PFI7` | The trigger is received on PFI7 from the front panel DIO terminal. | + +-------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+----------------------------+ + | Characteristic | Value | + +=======================+============================+ + | Datatype | enums.ExportOutputTerminal | + +-----------------------+----------------------------+ + | Permissions | read-write | + +-----------------------+----------------------------+ + | Repeated Capabilities | None | + +-----------------------+----------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Start:Export:Output Terminal** + - C Attribute: **NIRFSA_ATTR_EXPORTED_START_TRIGGER_OUTPUT_TERMINAL** + +external_gain +------------- + + .. py:attribute:: external_gain + + Specifies the gain, in dB, of a switch (or cable) connected before the RF IN connector of an NI-RFSA system. + + When you set this property, NI-RFSA calculates appropriate attenuator settings based on the value of this property and the value of the :py:attr:`nirfsa.Session.reference_level` property. In this case, NI-RFSA interprets the reference level as the maximum expected power level of the signal at the input of the external gain device. For more information about attenuation, refer to the *Attenuation and Signal Levels* topic for your device in the *NI RF Vector Signal Analyzers Help*. + + ---- + **Note** + For the PXIe-5820, this property specifies the gain, in dB, of a switch (or cable) connected before the IQ IN connector. + + ---- + + ---- + **Note** + For the PXIe-5645, this property is ignored if you are using the I/Q ports. + + ---- + + With this property set, NI-RFSA reads the :py:attr:`nirfsa.Session.iq_power_edge_ref_trigger_level` property value as the power level at the input of the external gain device at which the NI-RFSA device should trigger. + + Negative values indicate attenuation. + + **Valid Values**: INF to +INF + + **Units**: dB + + **Default Value**: 0 + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Advanced:External Gain (dB)** + - C Attribute: **NIRFSA_ATTR_EXTERNAL_GAIN** + +fetch_offset +------------ + + .. py:attribute:: fetch_offset + + Specifies the offset relative to the position specified by the :py:attr:`nirfsa.Session.fetch_relative_to` property from which to start fetching data. + + Offset can be a positive or negative value. + + **Default Value**: 0 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | int | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Fetch:Fetch Offset** + - C Attribute: **NIRFSA_ATTR_FETCH_OFFSET** + +fetch_relative_to +----------------- + + .. py:attribute:: fetch_relative_to + + Specifies the reference location within the acquired record from which to begin fetching. + + **Default Value**: N/A + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +============================================================+=============================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.FetchRelativeTo.MOST_RECENT_SAMPLE` | Fetching occurs relative to the most recently acquired data. The value of the :py:attr:`nirfsa.Session.fetch_offset` property must be negative. | + +------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.FetchRelativeTo.FIRST_SAMPLE` | Fetching occurs at the first sample acquired by the device. If the device wraps its buffer, the first sample is no longer available. In this case, NI-RFSA returns an error if the fetch offset is in the overwritten data. | + +------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.FetchRelativeTo.REFERENCE_TRIGGER` | Fetching occurs relative to the Reference Trigger. This value behaves like :py:data:`~nirfsa.FetchRelativeTo.FIRST_SAMPLE` if no Reference Trigger is configured. | + +------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.FetchRelativeTo.FIRST_PRETRIGGER_SAMPLE` | Fetching occurs relative to the first pretrigger sample acquired. | + +------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.FetchRelativeTo.CURRENT_READ_POSITION` | Fetching occurs after the last fetched sample. | + +------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+-----------------------+ + | Characteristic | Value | + +=======================+=======================+ + | Datatype | enums.FetchRelativeTo | + +-----------------------+-----------------------+ + | Permissions | read-write | + +-----------------------+-----------------------+ + | Repeated Capabilities | None | + +-----------------------+-----------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Fetch:Fetch Relative To** + - C Attribute: **NIRFSA_ATTR_FETCH_RELATIVE_TO** + +fft_size +-------- + + .. py:attribute:: fft_size + + Returns the size of the fast Fourier transform (FFT). + + **Default Value**: N/A + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | int | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Spectrum:FFT Size** + - C Attribute: **NIRFSA_ATTR_FFT_SIZE** + +fft_width +--------- + + .. py:attribute:: fft_width + + Specifies the FFT width of the device. + + The FFT width is the effective bandwidth of the signal path during each signal acquisition. + + ---- + **Note** + The maximum FFT width when using the PXIe-5622 is constrained to 50 MHz or 25 MHz, depending on the digitizer option you purchased. The maximum FFT width when using thing PXIe-5624 is constrained to 400 MHz or 765 MHz, depending on the digitizer configuration. + + ---- + + ---- + **Note** + You can use the :py:attr:`nirfsa.Session.fft_width` property with in-band retuning. For more information about in-band retuning, refer to the :py:attr:`nirfsa.Session.downconverter_center_frequency` property. + + ---- + + NI-RFSA treats the *device instantaneous bandwidth* as the effective real-time bandwidth of the signal path. The *span* specifies the frequency range of the computed spectrum. An RF vector signal analyzer can acquire a bandwidth only within the device instantaneous bandwidth frequency. If the span you choose is greater than the device instantaneous bandwidth, NI-RFSA obtains multiple acquisitions and combines them into a single spectrum. By specifying the FFT width, you can control the specific bandwidth obtained in each signal acquisition. If you read the :py:attr:`nirfsa.Session.fft_width` property without setting it, NI-RFSA returns the value of the :py:attr:`nirfsa.Session.device_instantaneous_bandwidth` property. + + **Valid Values**: + + The lower limit for all FFT width supported devices using the PXIe-5622 IF digitizer is 7.325 kHz. The lower limit for all FFT width supported devices using the PXIe-5624 IF digitizer is 400 MHz or 800 MHz, depending on the FPGA image that is downloaded upon opening the session to the PXIe-5624 IF digitizer. + + **PXIe-5663/5663E**: The FFT width upper limit for the PXIe-5663/5663E depends on the downconverter center frequency and on the module revision of the PXIe-5601 as illustrated in the following table. Refer to the `Identifying Module Revision `_ topic for more information about determining which revision of the PXIe-5601 RF downconverter you have installed. + + **PXIe-5665/5667/5668**: The upper limit of the FFT width is the maximum device instantaneous bandwidth. + + ---- + **Note** + + ---- + + ---- + **Note** + At frequencies greater than 3.6 GHz, the PXIe-5605 provides a typical bandwidth of 47 MHz at dB with the preselector enabled. The :py:attr:`nirfsa.Session.fft_width` property can override the typical bandwidth of the PXIe-5605 up to 57 MHz using an external digitizer and up to 50 MHz or 25 MHz depending on the PXIe-5622 digitizer option you purchased. The increase in bandwidth results in faster signal acquisitions, but amplitude accuracy is decreased for spectrum acquisitions, and magnitude and phase accuracy is decreased for I/Q acquisitions. National Instruments does not guarantee device specifications if you set the :py:attr:`nirfsa.Session.fft_width` property greater than the warranted instantaneous bandwidth specification. + + ---- + + ---- + **Note** + When using the PXIe-5606, the 765 MHz IF filter is only available at center frequencies of 3.6 GHz and above. + + ---- + + **Default Value**: N/A + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668 + + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------+ + | Downconverter Center Frequency | PXIe-5601 Instantaneous Bandwidth | FFT Width Upper Limit | + +===============================================================================================================================================================================================================+===================================+====================================================================+ + | 10 MHz to <120 MHz | 10 MHz | 10 MHz (Revision E), 20 MHz< sup >* < /sup> (Revision G or later) | + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------+ + | 120 MHz to <330 MHz | 20 MHz | 20 MHz (Revision E), 30 MHz< sup > * < /sup> (Revision G or later) | + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------+ + | 330 MHz to <6.6 GHz | 50 MHz | 50 MHz | + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------+ + | * < / sup >National Instruments does not guarantee device specifications if you set the :py:attr:`nirfsa.Session.fft_width` property greater than the warranted instantaneous bandwidth specification. | | | + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+--------------------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Spectrum:FFT Width** + - C Attribute: **NIRFSA_ATTR_FFT_WIDTH** + +fft_window_shape_factor +----------------------- + + .. py:attribute:: fft_window_shape_factor + + Returns the shape factor of the window used in the fast Fourier transform (FFT). + + The window shape factor is defined as the ratio of the 60 dB to 6 dB bandwidths. + + The following table shows the shape factor for each NI-RFSA FFT window type. + + | Window Type | Shape Factor | + |:-----------------------|:-------------| + | Uniform | 1.57:1 | + | Hanning | 1.94:1 | + | Hamming | 2.13:1 | + | Exact Blackman | 2.52:1 | + | Flat Top | 2.0:1 | + | 4-term Blackman-Harris | 2.5:1 | + | 7-term Blackman-Harris | 4.1:1 | + | Low Side Lobe | 2.78:1 | + | Gaussian | 2.3:1 | + | Kaiser Bessel | 2.55:1 | + + **Default Value**: N/A + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | float | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Spectrum:FFT Window Shape Factor** + - C Attribute: **NIRFSA_ATTR_FFT_WINDOW_SHAPE_FACTOR** + +fft_window_size +--------------- + + .. py:attribute:: fft_window_size + + Returns the size of the window used in the fast Fourier transform (FFT), in terms of the number of samples in the window. + + **Default Value**: N/A + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | int | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Spectrum:FFT Window Size** + - C Attribute: **NIRFSA_ATTR_FFT_WINDOW_SIZE** + +fft_window_type +--------------- + + .. py:attribute:: fft_window_type + + Specifies the time-domain window type. + + **Default Values**: + + **PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860**: :py:data:`~nirfsa.SpectrumFftWindowType._7_TERM_BLACKMAN_HARRIS` + + **PXIe-5667**: :py:data:`~nirfsa.SpectrumFftWindowType._4_TERM_BLACKMAN_HARRIS` + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Resolution Bandwidth `_ + + **Defined Values**: + + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +==================================================================+======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.SpectrumFftWindowType.UNIFORM` | No window is applied. | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumFftWindowType.HANNING` | The Hanning window is useful for analyzing transients longer than the time duration of the window, and also for general-purpose applications. | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumFftWindowType.HAMMING` | A Hamming window is applied to the waveform using the following equation: y[i] = x[i] * (0.54 - 0.46cos(w)) where w = (2)i/n and n = the waveform size. Note: Hanning and Hamming windows are somewhat similar. However, in the time domain, the Hamming window does not get as close to zero near the edges as does the Hanning window. | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumFftWindowType.BLACKMAN_HARRIS` | A Blackman-Harris window is applied to the waveform using the following equation: y[i] = x[i] * (0.42323 - 0.49755*cos(w) + 0.07922*cos(2w)) | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumFftWindowType.EXACT_BLACKMAN` | An Exact Blackman window is applied to the waveform using the following equation: y[i] = x[i] * (a0 - a1*cos(w) + a2*cos(2w)) | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumFftWindowType.BLACKMAN` | A Blackman window is useful for analyzing transient signals, and provides similar windowing to Hanning and Hamming windows but adds one additional cosine term to reduce ripple. A Blackman window is applied to the waveform using the following equation: y[i] = x[i] * (0.42 - 0.50*cos(w) + 0.08*cos(2w)) | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumFftWindowType.FLAT_TOP` | The fifth-order Flat Top window has the best amplitude accuracy of all the window methods. The increased amplitude accuracy (0.02 dB for signals exactly between integral cycles) is at the expense of frequency selectivity. The Flat Top window is most useful in accurately measuring the amplitude of single frequency components with little nearby spectral energy in the signal. A fifth-order Flat Top window is applied to the waveform using the following equation: y[i] = x[i] * (a0 - a1*cos(w) + a2*cos(2w) - a3*cos(3w) + a4*cos(4w)) | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumFftWindowType._4_TERM_BLACKMAN_HARRIS` | A 4-term Blackman-Harris window is a general purpose window; it has side-lobe rejection in the upper 90 dB, with moderately wide side lobe. A 4-term Blackman Harris window is applied to the waveform using the following equation: y[i] = x[i] * (a0 - a1*cos(w) + a2*cos(2w) - a3*cos(3w)) | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumFftWindowType._7_TERM_BLACKMAN_HARRIS` | A 7-term Blackman-Harris window has the highest dynamic range; it is ideal for signal-to-noise ratio applications. A 7-term Blackman Harris window is applied to the waveform using the following equation: y[i] = x[i] * (a0 - a1*cos(w) + a2*cos(2w) - a3*cos(3w) + a4*cos(4w) - a5*cos(5w) + a6*cos(6w)) | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumFftWindowType.LOW_SIDE_LOBE` | The Low Side Lobe window further reduces the size of the main lobe. The following equation defines the Low Side Lobe window. where *N* is the length of window | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumFftWindowType.GAUSSIAN` | A Gaussian window is applied to the waveform using the following equation: y[i] = x[i] * exp(-0.5*(i - (N-1)/2)^2 / ((N-1)/2)^2) where N is the length of the window | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumFftWindowType.KAISER_BESSEL` | A Kaiser-Bessel window is applied to the waveform using the following equation: y[i] = x[i] * I0(β*sqrt(1 - (2i/(N-1) - 1)^2))/I0(β) where i is between 0 and N-1, N is the length of the window, β determines the shape of the window, and I0 is the zeroth order Modified Bessel method of the first kind | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+-----------------------------+ + | Characteristic | Value | + +=======================+=============================+ + | Datatype | enums.SpectrumFftWindowType | + +-----------------------+-----------------------------+ + | Permissions | read-write | + +-----------------------+-----------------------------+ + | Repeated Capabilities | None | + +-----------------------+-----------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Spectrum:FFT Window Type** + - C Attribute: **NIRFSA_ATTR_FFT_WINDOW_TYPE** + +fixed_group_delay_across_ports +------------------------------ + + .. py:attribute:: fixed_group_delay_across_ports + + Specifies a comma-separated list of ports for which to fix the group delay. + + **Valid Values**: + + PXIe-5831/5832: rf<0-1>/port, where 0-1 indicates one (0) or two (1) mmRH-5582 connections and x is the port number on the mmRH-5582 front panel. + + **Default Value**: + + PXIe-5831/5832: (empty string), which specifies that the group delay will not be fixed for any port. + + **Supported Devices**: PXIe-5831/5832 + + The following table lists the characteristics of this property. + + +-----------------------+-------------+ + | Characteristic | Value | + +=======================+=============+ + | Datatype | list of str | + +-----------------------+-------------+ + | Permissions | read-write | + +-----------------------+-------------+ + | Repeated Capabilities | None | + +-----------------------+-------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Advanced:Fixed Group Delay Across Ports** + - C Attribute: **NIRFSA_ATTR_FIXED_GROUP_DELAY_ACROSS_PORTS** + +fpga_bitfile_path +----------------- + + .. py:attribute:: fpga_bitfile_path + + Returns a string containing the path to the location of the current NI-RFSA instrument driver FPGA extensions bitfile, a .lvbitx file, that is programmed on the device. + + You can specify the bitfile location using the Driver Setup string in the **optionString** parameter of the :py:meth:`nirfsa.Session.__init__` method. + + NI-RFSA instrument driver FPGA extensions enable you to use pre-compiled FPGA bitfiles to customize the behavior of the device FPGA while maintaining the functionality of the NI-RFSA instrument driver. + + Refer to `NI-RFSA Instrument Driver FPGA Extensions `_ for more information about using NI-RFSA instrument driver FPGA extensions for NI devices. + + **Supported Devices:** PXIe-5644/5645/5646, PXIe-5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Characteristics:FPGA Bitfile Path** + - C Attribute: **NIRFSA_ATTR_FPGA_BITFILE_PATH** + +fpga_target_name +---------------- + + .. py:attribute:: fpga_target_name + + Returns a string containing the name of the FPGA target being used. + + This name can be used with the RIO open session to open a reference to the FPGA. + + This property is channel dependent if multiple targets are supported. + + **Supported Devices:** PXIe-5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Characteristics:FPGA Target Name** + - C Attribute: **NIRFSA_ATTR_FPGA_TARGET_NAME** + +fpga_temperature +---------------- + + .. py:attribute:: fpga_temperature + + Returns the current temperature, in degrees Celsius, of the FPGA. + + ---- + **Note** + If you query this property during RF list mode, list steps may take longer to complete during list execution. + + ---- + + **Units**: degrees Celcius + + **Default Value**: N/A + + **Supported Devices:** PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | float | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Characteristics:FPGA Temperature (Degrees C)** + - C Attribute: **NIRFSA_ATTR_FPGA_TEMPERATURE** + +frequency_settling +------------------ + + .. py:attribute:: frequency_settling + + Specifies the value used for local oscillator (LO) frequency settling. + + The units and interpretation for this scalar value are specified using the :py:attr:`nirfsa.Session.frequency_settling_units` property. This property is not supported if you are using an external LO. + + The valid values for this property depend on the :py:attr:`nirfsa.Session.frequency_settling_units` property. + + **Notes:** + 1. If the frequency settling units property is set to :py:data:`~nirfsa.FrequencySettlingUnits.SECONDS_AFTER_LOCK` and the downconverter loop bandwidth property is set to narrow, NI recommends a minimum settling time of 128 microseconds to ensure that the phase-locked loop (PLL) lock stabilizes. If the downconverter loop bandwidth is set to wide, NI recommends a minimum settling time of 16 microseconds. + 2. When in RF list mode, the valid values for :py:data:`~nirfsa.FrequencySettlingUnits.SECONDS_AFTER_IO` are 0 microseconds to 50 milliseconds. + 3. The valid values for this configuration depend on the module used as the LO source. Refer to the lo source property for more information. + + **Default Value**: 0.1 + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667/5668, PXIe-5830/5831/5832/5840/5841/5842 + + +----------------------------------------------------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ + | Device | :py:data:`~nirfsa.FrequencySettlingUnits.SECONDS_AFTER_LOCK` | :py:data:`~nirfsa.FrequencySettlingUnits.SECONDS_AFTER_IO` | %enum_value{frequency settling units.fsu ppm} | + +================================================================+===========================================================================================+============================================================================+===============================================+ + | PXIe-5663/5663E | 2 microseconds1 to 80 milliseconds, resolution of approximately 2 microseconds | 0 microseconds to 80 milliseconds2, resolution of 1 microsecond | 1.0, 0.1, 0.01 | + +----------------------------------------------------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ + | PXIe-5665/5667/5668 | 4 microseconds to 80 milliseconds, resolution of approximately 4 microseconds | 0 microseconds to 80 milliseconds2, resolution of 1 microsecond | 1.0, 0.1, 0.01, 0.001 | + +----------------------------------------------------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ + | PXIe-5644/5645/5646 | 1 microsecond1 to 65 milliseconds, resolution of 1 microsecond | 1 microsecond1 to 65 milliseconds, resolution of 1 microsecond | 1.0, 0.1, 0.01 | + +----------------------------------------------------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ + | PXIe-5830/5831/5832/5840/5841/5842 | 1 microsecond1 to 10 seconds, resolution of 1 microsecond | 0 microseconds to 10 seconds, resolution of 1 microsecond | 1.0 to 0.01 | + +----------------------------------------------------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ + | PXIe-5831/5832 with PXIe-5653 (using PXIe-3622 LO)3 | 1 microsecond1 to 10 seconds, resolution of 1 microsecond | 0 microseconds to 10 seconds, resolution of 1 microsecond | 1.0 to 0.01 | + +----------------------------------------------------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ + | PXIe-5831/5832 with PXIe-5653 (using PXIe-5653 LO)3 | 4 microseconds to 80 milliseconds, resolution of approximately 4 microseconds | 0 microseconds to 80 milliseconds, resolution of 1 microsecond | 1.0 to 0.01 | + +----------------------------------------------------------------+-------------------------------------------------------------------------------------------+----------------------------------------------------------------------------+-----------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Advanced:Frequency Settling** + - C Attribute: **NIRFSA_ATTR_FREQUENCY_SETTLING** + +frequency_settling_units +------------------------ + + .. py:attribute:: frequency_settling_units + + Specifies the delay duration units and interpretation for LO settling. + + Specify the actual settling value using the :py:attr:`nirfsa.Session.frequency_settling` property. This property is not supported if you are using an external LO. + + **Default Value**: :py:data:`~nirfsa.FrequencySettlingUnits.PPM` + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667/5668, PXIe-5830/5831/5832/5840/5841/5842 + + **Defined Values**: + + +--------------------------------------------------------------+-------------------------------------------------------------------+ + | Name | Description | + +==============================================================+===================================================================+ + | :py:data:`~nirfsa.FrequencySettlingUnits.PPM` | Specifies the frequency settling time in parts per million (PPM). | + +--------------------------------------------------------------+-------------------------------------------------------------------+ + | :py:data:`~nirfsa.FrequencySettlingUnits.SECONDS_AFTER_LOCK` | Specifies the frequency settling in time after lock (seconds). | + +--------------------------------------------------------------+-------------------------------------------------------------------+ + | :py:data:`~nirfsa.FrequencySettlingUnits.SECONDS_AFTER_IO` | Specifies the frequency settling time after I/O (seconds). | + +--------------------------------------------------------------+-------------------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+------------------------------+ + | Characteristic | Value | + +=======================+==============================+ + | Datatype | enums.FrequencySettlingUnits | + +-----------------------+------------------------------+ + | Permissions | read-write | + +-----------------------+------------------------------+ + | Repeated Capabilities | None | + +-----------------------+------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Advanced:Frequency Settling Units** + - C Attribute: **NIRFSA_ATTR_FREQUENCY_SETTLING_UNITS** + +group_capabilities +------------------ + + .. py:attribute:: group_capabilities + + Returns a list of class-extension groups that NI-RFSA implements. + + **Supported Devices:** PXI-5610, PXIe-5611, PXI/PXIe-5650/5651/5652, PXIe-5653/5654/5654 with PXIe-5696, PXI-5670/5671, PXIe-5672/5673/5673E, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-------------+ + | Characteristic | Value | + +=======================+=============+ + | Datatype | list of str | + +-----------------------+-------------+ + | Permissions | read only | + +-----------------------+-------------+ + | Repeated Capabilities | None | + +-----------------------+-------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Inherent IVI Attributes:Driver Capabilities:Class Group Capabilities** + - C Attribute: **NIRFSA_ATTR_GROUP_CAPABILITIES** + +host_dma_buffer_size +-------------------- + + .. py:attribute:: host_dma_buffer_size + + Specifies the size of the DMA buffer in computer memory, in bytes. + + To set this property, the NI-RFSA device must be in the Configuration state. + + A sufficiently large host DMA buffer improves performance by allowing large fetches to be transferred more efficiently. + + **Default Value:** 8 MB + + **Supported Devices**: PXI-5820/5830/5831/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | int | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Fetch:Data Transfer:Host DMA Buffer Size** + - C Attribute: **NIRFSA_ATTR_HOST_DMA_BUFFER_SIZE** + +if_attenuation +-------------- + + .. py:attribute:: if_attenuation + + Configures the device attenuation to a value that has the actual calibrated IF attenuation closest to the desired value. + + **Valid Values**: 0 to 30 + + **Default Value**: N/A + + **Supported Devices**: PXIe-5601/5603/5605 (external digitizer mode), PXIe-5663/5663E/5665/5667, PXIe-5693 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Advanced:NI 5663:IF Attenuation (dB)** + - C Attribute: **NIRFSA_ATTR_IF_ATTENUATION** + +if_filter_bandwidth +------------------- + + .. py:attribute:: if_filter_bandwidth + + Specifies the IF filter path bandwidth for your device configuration. + + ---- + **Note** + For composite devices, such as the PXIe-5665/5667/5668, the IF filter path bandwidth includes all IF filters across the component modules of a composite device. + + ---- + + NI-RFSA uses this property in conjunction with the :py:attr:`nirfsa.Session.device_instantaneous_bandwidth` property and the :py:attr:`nirfsa.Session.digital_if_equalization_enabled` property to determine the settings for your measurement. NI-RFSA selects the next highest available filter based on the value you specify. The following table lists the IF filters available for NI devices. You may specify a higher value than your device instantaneous bandwidth if your measurement requires it, but specifying a lower value returns an error. + + **Valid Values**: + + **PXIe-5603/5605**: 0 to 80 MHz + + **PXIe-5665/5667**: 0 to 50 MHz + + **PXIe-5668**: 0 to 765 MHz + + **PXIe-5694**: 0 to 50 MHz + + ---- + **Note** + To set this property to values greater than 20 MHz, you must set the :py:attr:`nirfsa.Session.signal_conditioning_enabled` property to :py:data:`~nirfsa.SignalConditioningEnabled.BYPASSED` + + ---- + + **Default Values:** For spectrum acquisition types the default is greater than or equal to the :py:attr:`nirfsa.Session.spectrum_span` property. NI-RFSA chooses the default value of the :py:attr:`nirfsa.Session.if_filter_bandwidth` property to correspond to the appropriate IF filter. For I/Q acquisition types NI-RFSA chooses the default value corresponding to the widest IF filter possible for your equipment setup. + + **Supported Devices**: PXIe-5603/5605/5606, PXIe-5665/5667/5668, PXIe-5694 + + +--------------------------+---------------------------+-------------------+ + | Device | IF Filter Bandwidth Range | IF Filter | + +==========================+===========================+===================+ + | PXIe-5603/5665 (3.6 GHz) | 2264300 kHz | 300 kHz IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5603/5665 (3.6 GHz) | >300 kHz and 22645 MHz | Through IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5603/5665 (3.6 GHz) | >5 MHz | Through IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5605/5665 (14 GHz) | 2264300 kHz | 300 kHz IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5603/5665 (14 GHz) | >300 kHz and 22645 MHz | 5 MHz IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5603/5665 (14 GHz) | >5 MHz | Through IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5668 | 2264300 kHz | 300 kHz IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5668 | >300 kHz and 22645 MHz | 5 MHz IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5668 | >5 MHz and 2264100 MHz | 100 MHz IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5668 | >100 MHz and 2264320 MHz | 320 MHz IF filter | + +--------------------------+---------------------------+-------------------+ + | PXIe-5668 | >320 MHz | 765 MHz IF filter | + +--------------------------+---------------------------+-------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:IF Filter Bandwidth** + - C Attribute: **NIRFSA_ATTR_IF_FILTER_BANDWIDTH** + +if_output_frequency +------------------- + + .. py:attribute:: if_output_frequency + + Returns the center frequency of the IF output signal that corresponds to the configured RF center frequency. + + The downconverter translates the RF input frequency to the IF output frequency by mixing it with the LO signal. The nominal values for the IF output frequency are shown in the following table. + + The coarse nature of the LO settings can cause the downconverter to be unable to tune to the exact LO frequency that would produce the nominal IF output frequency. Any coercion in the actual LO frequency results in the IF output frequency being slightly off from the nominal value. + + Additionally, if you use the :py:attr:`nirfsa.Session.downconverter_center_frequency` and :py:attr:`nirfsa.Session.lo_frequency` properties to program the downconverter, the IF output frequency could vary from the nominal value. NI-RFSA adjusts the acquired spectrum or I/Q data for the difference between nominal and actual IF output frequency. If you use an external digitizer with a RF downconverter, use this property to specify the actual IF output frequency. + + **Default Value**: N/A + + **Supported Devices**:PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5694 + + +---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Downconverter | Nominal IF Output Frequency | + +===============+============================================================================================================================================================================================================================================================================================================+ + | PXI-5600 | 15 MHz | + +---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PXIe-5601 | 53 MHz or 187.5 MHz | + +---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PXIe-5603 | 187.5 MHz or 199 MHz | + +---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PXIe-5605 | 187.5 MHz, 190 MHz, or 199 MHz | + +---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PXIe-5606 | 187.5 MHz, 190 MHz, 199 MHz, 507.5 MHz, or 730 MHz | + +---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PXIe-5694 | - signal_conditioning_enabled set to SIGNAL_CONDITIONING_ENABLED and if_conditioning_down_conversion_enabled set to disabled: 193.6 MHz
- if_conditioning_down_conversion_enabled set to enabled: 21.4 MHz
- signal_conditioning_enabled set to SIGNAL_CONDITIONING_BYPASSED: 162.5 MHz to 212.5 MHz | + +---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | float | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Advanced:IF Output Frequency** + - C Attribute: **NIRFSA_ATTR_IF_OUTPUT_FREQUENCY** + +if_output_power_level +--------------------- + + .. py:attribute:: if_output_power_level + + Specifies the level of the IF signal leaving the system, in dBm. + + Use this property to increase or decrease the nominal IF signal output level to achieve better measurement results. + + If you set the :py:attr:`nirfsa.Session.if_output_power_level` and :py:attr:`nirfsa.Session.if_output_power_level_offset` properties at the same time, NI-RFSA returns an error. + + ---- + **Note** + If you set the :py:attr:`nirfsa.Session.if_output_power_level` property to a value less than 201310 dBm, the IF output power level may be higher than the value you request. Read the value of this property to determine the configured IF output power level. + + ---- + + ---- + **Note** + The value of this property is limited by the amount of IF attenuation that the downconverter can apply, the :py:attr:`nirfsa.Session.reference_level` property, the :py:attr:`nirfsa.Session.downconverter_center_frequency` property, and the :py:attr:`nirfsa.Session.center_frequency` property or :py:attr:`nirfsa.Session.iq_carrier_frequency` property, depending on your acquisition type. + + ---- + + **Units**: dBm + + **Default Value**: + + **PXIe-5667**: -2 dBm + + **PXIe-5668**: -1 dBm + + **All other devices**: dBm + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:IF Output Power Level (dBm)** + - C Attribute: **NIRFSA_ATTR_IF_OUTPUT_POWER_LEVEL** + +if_output_power_level_offset +---------------------------- + + .. py:attribute:: if_output_power_level_offset + + Specifies the number of dB by which to adjust the default IF output power level. + + This property does not depend on absolute IF output power levels, so you can use it to adjust the IF output power level on all NI-RFSA devices without knowing the exact default value. Use this property to increase or decrease the nominal output level to achieve better measurement results. The default value for the offset is 0 dB. + + If you set the :py:attr:`nirfsa.Session.if_output_power_level` and :py:attr:`nirfsa.Session.if_output_power_level_offset` properties at the same time, NI-RFSA returns an error. + + **Units**: dB + + **Default Value**: 0 + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5663/5663E/5665/5667/5668 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:IF Output Power Level Offset (dB)** + - C Attribute: **NIRFSA_ATTR_IF_OUTPUT_POWER_LEVEL_OFFSET** + +input_isolation_enabled +----------------------- + + .. py:attribute:: input_isolation_enabled + + Specifies whether input isolation is enabled. + + Enabling this property isolates the input signal at the RF IN connector on the RF downconverter from the rest of the RF downconverter signal path. Disabling this property reintegrates the input signal into the RF downconverter signal path. + + ---- + **Note** + If you enable input isolation for your device, the device impedance is changed from the characteristic 50 impedance. A change in the device impedance may also cause a VSWR value higher than the device specifications. + + ---- + + For the PXIe-5830/5831/5832, input isolation is supported for all available ports for your hardware configuration. + + **Default Value**: :py:data:`~nirfsa.InputIsolationEnabled.DISABLED`, if the device configuration is supported. + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667/5668, PXIe-5693, PXIe-5820/5830/5831/5832/5840/5841 + + **Defined Values**: + + +---------------------------------------------------+---------------------------+ + | Name | Description | + +===================================================+===========================+ + | :py:data:`~nirfsa.InputIsolationEnabled.DISABLED` | Disables input isolation. | + +---------------------------------------------------+---------------------------+ + | :py:data:`~nirfsa.InputIsolationEnabled.ENABLED` | Enables input isolation. | + +---------------------------------------------------+---------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+-----------------------------+ + | Characteristic | Value | + +=======================+=============================+ + | Datatype | enums.InputIsolationEnabled | + +-----------------------+-----------------------------+ + | Permissions | read-write | + +-----------------------+-----------------------------+ + | Repeated Capabilities | None | + +-----------------------+-----------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Advanced:Input Isolation Enabled** + - C Attribute: **NIRFSA_ATTR_INPUT_ISOLATION_ENABLED** + +input_port +---------- + + .. py:attribute:: input_port + + Specifies the connector(s) to use to acquire the signal. + + To set this property, the NI-RFSA device must be in the Configuration state. + + **Default Values**: + + **PXIe-5820**: :py:data:`~nirfsa.InputPort.IQ_IN` + + **All other devices**: :py:data:`~nirfsa.InputPort.RF_IN` + + **Supported Devices:** PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +-------------------------------------+---------------------------------------------------------------------------------+ + | Name | Description | + +=====================================+=================================================================================+ + | :py:data:`~nirfsa.InputPort.RF_IN` | Enables the RF IN port. | + +-------------------------------------+---------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.InputPort.IQ_IN` | Enables the I/Q IN port. | + +-------------------------------------+---------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.InputPort.CAL_IN` | Enables the CAL IN port. | + +-------------------------------------+---------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.InputPort.I_ONLY` | Enables the I terminals of the I/Q IN port. It is supported only for PXIe-5645. | + +-------------------------------------+---------------------------------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+-----------------+ + | Characteristic | Value | + +=======================+=================+ + | Datatype | enums.InputPort | + +-----------------------+-----------------+ + | Permissions | read-write | + +-----------------------+-----------------+ + | Repeated Capabilities | None | + +-----------------------+-----------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Specific:Vector Signal Transceiver:Signal Path:Input Port** + - C Attribute: **NIRFSA_ATTR_INPUT_PORT** + +instrument_firmware_revision +---------------------------- + + .. py:attribute:: instrument_firmware_revision + + Returns a string that contains the firmware revision information for the NI-RFSA downconverter for the composite device you are currently using. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + ---- + **Note** + PXIe-5820/5830/5831/5832/5840/5841/5842/5860 devices will return "No revision information available." To retrieve the firmware revision, use MAX, Hardware Configuration Utility, or NI System Configuration API. + + ---- + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Inherent IVI Attributes:Instrument Identification:Firmware Revision** + - C Attribute: **NIRFSA_ATTR_INSTRUMENT_FIRMWARE_REVISION** + +instrument_manufacturer +----------------------- + + .. py:attribute:: instrument_manufacturer + + Returns a string that contains the name of the manufacturer for the NI-RFSA device you are currently using. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Inherent IVI Attributes:Instrument Identification:Manufacturer** + - C Attribute: **NIRFSA_ATTR_INSTRUMENT_MANUFACTURER** + +instrument_model +---------------- + + .. py:attribute:: instrument_model + + Returns a string that contains the model number or name of the NI-RFSA device that you are currently using. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Inherent IVI Attributes:Instrument Identification:Model** + - C Attribute: **NIRFSA_ATTR_INSTRUMENT_MODEL** + +io_resource_descriptor +---------------------- + + .. py:attribute:: io_resource_descriptor + + Indicates the resource name NI-RFSA uses to identify the physical device. + + If you initialize NI-RFSA with a logical name, this property contains the resource name that corresponds to the entry in the IVI Configuration Utility. + + If you initialize NI-RFSA with the resource name, this property contains that value. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Inherent IVI Attributes:Advanced Session Information:Resource Descriptor** + - C Attribute: **NIRFSA_ATTR_IO_RESOURCE_DESCRIPTOR** + +iq_carrier_frequency +-------------------- + + .. py:attribute:: iq_carrier_frequency + + Specifies the expected carrier frequency of the incoming signal for demodulation. + + The NI-RFSA device tunes to this frequency. NI-RFSA may coerce this value based on hardware settings and the RF downconverter specifications. + + ---- + **Note** + For the PXIe-5645, this property is ignored if you are using the I/Q ports. + + ---- + + **Units**: hertz (Hz) + + **Default Values**: + + **PXIe-5644/5645/5646, PXIe-5840/5841/5860, PXIe-5842 (500 MHz, 1 GHz, and 2 GHz bandwidth options)**: 1 GHz + + **PXIe-5842 (4 GHz bandwidth option) using the Standard personality**: 1 GHz + + **PXIe-5842 (4 GHz bandwidth option) using the 4 GHz Bandwidth personality**: 6.5 GHz + + **PXIe-5820**: 0 Hz + + **PXIe-5830/5831/5832**: 6.5 GHz + + **All other devices**: 100 MHz + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Carrier Wave `_ + + `I/Q Modulation `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ConfigureIqCarrierFrequency` + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:IQ:IQ Carrier Frequency** + - C Attribute: **NIRFSA_ATTR_IQ_CARRIER_FREQUENCY** + +iq_in_port_carrier_frequency +---------------------------- + + .. py:attribute:: iq_in_port_carrier_frequency + + Configures the frequency of the signal. + + The onboard signal processing (OSP) frequency shifts the signal at this frequency to baseband prior to acquiring it. + + ---- + **Note** + For the PXIe-5645, this property is ignored if you are using the RF ports. + + ---- + + **Valid Values**: + + **PXIe-5645**: -60 MHz to +60 MHz + + **PXIe-5820**: -500 MHz to +500 MHz + + **Default Value**: 0 + + **Supported Devices**: PXIe-5645, PXIe-5820 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Specific:Vector Signal Transceiver:IQ In Port:Carrier Frequency** + - C Attribute: **NIRFSA_ATTR_IQ_IN_PORT_CARRIER_FREQUENCY** + +iq_in_port_temperature +---------------------- + + .. py:attribute:: iq_in_port_temperature + + Returns the temperature of the I/Q IN circuitry on the device. + + **Units:** degrees C + + **Supported Devices:** PXIe-5645, PXIe-5820 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | float | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Specific:Vector Signal Transceiver:IQ In Port:Temperature (Degrees C)** + - C Attribute: **NIRFSA_ATTR_IQ_IN_PORT_TEMPERATURE** + +iq_in_port_terminal_configuration +--------------------------------- + + .. py:attribute:: iq_in_port_terminal_configuration + + Configures the terminal configuration of the I/Q port. + + To use this property, you must use the channelName parameter of the :py:meth:`nirfsa.Session._set_attribute_vi_int32` method to specify the name of the channel you are configuring. For the PXIe-5645, you can configure the I and Q channels by using I or Q as the channel string, or set the channel string to "" (empty string) to configure both channels. For the PXIe-5820, the only valid value for the channel string is "" (empty string). + + ---- + **Note** + For the PXIe-5645, this property is ignored if you are using the RF ports. + + ---- + + **PXIe-5820**: The only valid value for this property is :py:data:`~nirfsa.IqInPortTerminalConfiguration.DIFFERENTIAL`. + + **Default Value**: :py:data:`~nirfsa.IqInPortTerminalConfiguration.DIFFERENTIAL` + + **Supported Devices:** PXIe-5645, PXIe-5820 + + **Defined Values**: + + +---------------------------------------------------------------+--------------------------------------------------+ + | Name | Description | + +===============================================================+==================================================+ + | :py:data:`~nirfsa.IqInPortTerminalConfiguration.DIFFERENTIAL` | Sets the terminal configuration to differential. | + +---------------------------------------------------------------+--------------------------------------------------+ + | :py:data:`~nirfsa.IqInPortTerminalConfiguration.SINGLE_ENDED` | Sets the terminal configuration to single-ended. | + +---------------------------------------------------------------+--------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+-------------------------------------+ + | Characteristic | Value | + +=======================+=====================================+ + | Datatype | enums.IqInPortTerminalConfiguration | + +-----------------------+-------------------------------------+ + | Permissions | read-write | + +-----------------------+-------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+-------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Specific:Vector Signal Transceiver:IQ In Port:Terminal Configuration** + - C Attribute: **NIRFSA_ATTR_IQ_IN_PORT_TERMINAL_CONFIGURATION** + +iq_in_port_vertical_range +------------------------- + + .. py:attribute:: iq_in_port_vertical_range + + Specifies the voltage range for the I/Q terminals. + + To use this property, you must use the channelName parameter of the :py:meth:`nirfsa.Session._set_attribute_vi_real64` method to specify the name of the channel you are configuring. For the PXIe-5645, you can configure the I and Q channels by using I or Q as the channel string, or set the channel string to "" (empty string) to configure both channels. For the PXIe-5820, the only valid value for the channel string is "" (empty string). + + The voltage range in differential terminal configuration is configurable from 2 Vpk-pk to 0.032 Vpk-pk in 1 dB steps. In single-ended terminal configuration, valid ranges are half those for differential. Values are always coerced up to the next valid range. + + ---- + **Note** + For the PXIe-5645, this property is ignored if you are using the RF ports. + + ---- + + **Valid Values:** + + **PXIe-5645**: 0 Vpk-pk to 2 Vpk-pk for differential terminal configuration, 0 Vpk-pk to 1 Vpk-pk for single-ended terminal configuration. + + **PXIe-5820**: 0 Vpk-pk to 4 Vpk-pk for differential terminal configuration. + + **Default Value**: 2 Vpk-pk + + **Supported Devices:** PXIe-5645, PXIe-5820 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Specific:Vector Signal Transceiver:IQ In Port:Vertical Range** + - C Attribute: **NIRFSA_ATTR_IQ_IN_PORT_VERTICAL_RANGE** + +iq_power_edge_ref_trigger_level +------------------------------- + + .. py:attribute:: iq_power_edge_ref_trigger_level + + Specifies the power level, in dBm, at which the device triggers. + + The device asserts the trigger when the signal crosses the level specified by the value of this property, taking into consideration the specified slope. If you are using external gain, refer to the :py:attr:`nirfsa.Session.external_gain` property for more information about how this property affects the I/Q power edge trigger level. + + **Default Value**: 0 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ConfigureIqPowerEdgeRefTrigger` + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Ref:IQ Power Edge:Level** + - C Attribute: **NIRFSA_ATTR_IQ_POWER_EDGE_REF_TRIGGER_LEVEL** + +iq_power_edge_ref_trigger_slope +------------------------------- + + .. py:attribute:: iq_power_edge_ref_trigger_slope + + Specifies whether the device asserts the trigger when the signal power is rising or falling. + + When you set the :py:attr:`nirfsa.Session.ref_trigger_type` property to :py:data:`~nirfsa.ReferenceTriggerType.IQ_POWER_EDGE`, the device asserts the trigger when the signal power exceeds the specified level with the slope you specify. + + **Default Value**: :py:data:`~nirfsa.ReferenceTriggerIqPowerEdgeSlope.RISING` + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ConfigureIqPowerEdgeRefTrigger` + + **Defined Values**: + + +-------------------------------------------------------------+-------------------------------------------------------+ + | Name | Description | + +=============================================================+=======================================================+ + | :py:data:`~nirfsa.ReferenceTriggerIqPowerEdgeSlope.RISING` | The trigger asserts when the signal power is rising. | + +-------------------------------------------------------------+-------------------------------------------------------+ + | :py:data:`~nirfsa.ReferenceTriggerIqPowerEdgeSlope.FALLING` | The trigger asserts when the signal power is falling. | + +-------------------------------------------------------------+-------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+----------------------------------------+ + | Characteristic | Value | + +=======================+========================================+ + | Datatype | enums.ReferenceTriggerIqPowerEdgeSlope | + +-----------------------+----------------------------------------+ + | Permissions | read-write | + +-----------------------+----------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+----------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Ref:IQ Power Edge:Slope** + - C Attribute: **NIRFSA_ATTR_IQ_POWER_EDGE_REF_TRIGGER_SLOPE** + +iq_power_edge_ref_trigger_source +-------------------------------- + + .. py:attribute:: iq_power_edge_ref_trigger_source + + Specifies the channel from which the device monitors the trigger. + + NI-RFSA currently supports only 0 as the value of this property. + + **Default Value**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ConfigureIqPowerEdgeRefTrigger` + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | str | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Ref:IQ Power Edge:Source** + - C Attribute: **NIRFSA_ATTR_IQ_POWER_EDGE_REF_TRIGGER_SOURCE** + +iq_rate +------- + + .. py:attribute:: iq_rate + + Specifies the I/Q rate for the acquisition. + + The value is expressed in samples per second (S/s). + + Refer to the :py:attr:`nirfsa.Session.device_instantaneous_bandwidth` property for more information about device specific instantaneous bandwidth limits. You can also refer to the *NI PXIe-5665 Specifications* for more information about instantaneous bandwidth device specifications. + + ---- + **Note** + For the PXIe-5663/5663E/5665/5667/5668, NI-RFSA enables dithering by default. At I/Q rates above 50 MS/s, the dither noise can affect phase coherency performance and leak into the lower frequencies and the upper frequencies of the IF passband. Refer to the :py:attr:`nirfsa.Session.digitizer_dither_enabled` property for more information about dithering. + + For the PXIe-5663/5663E/5665/5667, when you set the :py:attr:`nirfsa.Session.digitizer_sample_clock_timebase_source` property to :py:data:`~nirfsa.NIRFSA_VAL_ONBOARD_CLOCK`, the downconverter instantaneous bandwidth is greater than or equal to the coerced I/Q rate times 0.8. For the PXIe-5665, the actual signal bandwidth is further limited by the combination of the chosen IF filter and anti-aliasing filter. + + ---- + + **PXI-5661**: You should not need to configure an I/Q rate higher than 25 megasamples per second (MS/s) because the PXI-5600 RF downconverter bandwidth is 20 MHz. If you configure a higher I/Q rate, you may see aliasing effects at negative frequencies because the IF frequency of the PXI-5600 is 15 MHz. + + **PXIe-5663/5663E**: Your maximum allowed instantaneous bandwidth depends on the I/Q carrier frequency you use. Refer to the `PXIe-5601 RF downconverter overview `_ for more information about instantaneous bandwidth. + + **PXIe-5665**: Your maximum allowed instantaneous bandwidth depends on the downconverter center frequency if you have enabled the preselector (YIG-tuned filter). + + **PXIe-5667**: Your maximum allowed instantaneous bandwidth depends on the selected [RF preselector filter](:py:attr:`nirfsa.Session.RF_PRESELECTOR_FILTER`.html) and whether the preselector on the [RF downconverter](:py:attr:`nirfsa.Session.PRESELECTOR_ENABLED`.html) is enabled. + + **PXIe-5668**: Your maximum allowed instantaneous bandwidth depends on the downconverter center frequency you use and whether or not you enable the highpass filter or preselector (YIG-tuned filter). + + **Units**: S/s + + **Default Values:** + + **PXIe-5842 (4 GHz bandwidth option) using the 4 GHz Bandwidth personality**: 5 GS/s only. + + **All Other Devices**: 1 MS/s + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `I/Q Modulation `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ConfigureIqRate` + + + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:IQ:IQ Rate (S/s)** + - C Attribute: **NIRFSA_ATTR_IQ_RATE** + +lo2_export_enabled +------------------ + + .. py:attribute:: lo2_export_enabled + + Specifies whether to enable the LO2 OUT terminal on the installed devices. + + Set this property to TRUE to export the 4 GHz LO signal from the device LO2 IN terminal to the LO2 OUT terminal. + + You can also export the LO2 signal by setting the :py:attr:`nirfsa.Session.lo_export_enabled` property and the :py:attr:`nirfsa.Session.digitizer_sample_clock_timebase_source` property. + + | Value | Description | + |:------|:-------------------------------| + | True | Enables the LO2 OUT terminal. | + | False | Disables the LO2 OUT terminal. | + + **Default Value:** False + + **Supported Devices:** PXIe-5603/5605/5606 (external digitizer mode), PXIe-5665/5668 + + **Defined Values**: + + +----------------------------------------------+----------------------+ + | Name | Description | + +==============================================+======================+ + | :py:data:`~nirfsa.Lo2ExportEnabled.DISABLED` | Disables LO2 export. | + +----------------------------------------------+----------------------+ + | :py:data:`~nirfsa.Lo2ExportEnabled.ENABLED` | Enables LO2 export. | + +----------------------------------------------+----------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------------------+ + | Characteristic | Value | + +=======================+========================+ + | Datatype | enums.Lo2ExportEnabled | + +-----------------------+------------------------+ + | Permissions | read-write | + +-----------------------+------------------------+ + | Repeated Capabilities | None | + +-----------------------+------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:LO2 Export Enabled** + - C Attribute: **NIRFSA_ATTR_LO2_EXPORT_ENABLED** + +load_configurations_from_file_reset_options +------------------------------------------- + + .. py:attribute:: load_configurations_from_file_reset_options + + Specifies the configurations to skip to reset while loading configurations from a file. + + **Default Value:** :py:data:`~nirfsa.NIRFSA_VAL_SKIP_NONE` + **Supported Devices:** PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +---------------------------------------------------------------------+--------------------------------------------------+ + | Name | Description | + +=====================================================================+==================================================+ + | :py:data:`~nirfsa.LoadConfigurationResetOptions.NONE` | NI-RFSA resets all configurations. | + +---------------------------------------------------------------------+--------------------------------------------------+ + | :py:data:`~nirfsa.LoadConfigurationResetOptions.DEEMBEDDING_TABLES` | NI-RFSA skips resetting the de-embedding tables. | + +---------------------------------------------------------------------+--------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+-------------------------------------+ + | Characteristic | Value | + +=======================+=====================================+ + | Datatype | enums.LoadConfigurationResetOptions | + +-----------------------+-------------------------------------+ + | Permissions | read-write | + +-----------------------+-------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+-------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Load Configurations:Reset Options** + - C Attribute: **NIRFSA_ATTR_LOAD_CONFIGURATIONS_FROM_FILE_RESET_OPTIONS** + +logical_name +------------ + + .. py:attribute:: logical_name + + Contains the logical name you specified when opening the current IVI session. + + You may pass a logical name to the :py:meth:`nirfsa.Session.Init` method or the :py:meth:`nirfsa.Session.__init__` method. The IVI Configuration Utility must contain an entry for the logical name. The logical name entry refers to a driver session section in the IVI Configuration file. The driver session section specifies a physical device and initial user options. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Inherent IVI Attributes:Advanced Session Information:Logical Name** + - C Attribute: **NIRFSA_ATTR_LOGICAL_NAME** + +lo_export_enabled +----------------- + + .. py:attribute:: lo_export_enabled + + Specifies whether to enable the LO OUT terminals on the installed devices. + + **PXIe-5601**: The only valid value for this property is True. + + **PXIe-5603/5605/5606**: If you want to daisy-chain multiple devices together using the same LO source, set this property to TRUE to export the LO input signals on the LO1 IN, LO2 IN, and LO3 IN terminals to LO1 OUT, LO2 OUT, and LO3 OUT, respectively. + + **PXIe-5694**: You can enable this property only if you set the :py:attr:`nirfsa.Session.lo_source` property to :py:data:`~nirfsa.LoSource.LO_IN`, or if you set the :py:attr:`nirfsa.Session.lo_source` property to :py:data:`~nirfsa.LoSource.ONBOARD` and the :py:attr:`nirfsa.Session.IF_CONDITIONING_DOWN_CONVERSION_ENABLED` property to :py:data:`~nirfsa.NIRFSA_VAL_ENABLED`. + + **PXIe-5830/5831**: To use this property for the PXIe-5830/5831/5832, you must use the channelName parameter of the :py:meth:`nirfsa.Session._set_attribute_vi_boolean` method to specify the name of the channel you are configuring. You can configure the LO1 and LO2 channels by using lo1 or lo2 as the channel string, or set the channel string to lo1,lo2 to configure both channels. For all other devices, the only valid value for the channel string is "" (empty string). + + ---- + **Note** + If you are sharing an LO for the PXIe-5830/5831/5832 between an NI-RFSA and NI-RFSG session, ensure both sessions use the same shared setting. + + ---- + + **Defined Values:** + + | Value | Description | + |:---------|:-------------------------------| + | True | Enables the LO OUT terminals. | + | False | Disables the LO OUT terminals. | + + **Default Values**: + + **PXIe-5601, PXIe-5663/5663E**: True + + **PXIe-5603/5605/5606, PXIe-5644/5645/5646, PXIe-5665/5667/5668, PXIe-5694, PXIe-5830/5831/5832/5840/5841/5842**: False + + **Supported Devices**: PXIe-5601/5603/5605 (external digitizer mode), PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667, PXIe-5694, PXIe-5830/5831/5832/5840/5841/5842 + + + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + .. tip:: This property can be set/get on specific los within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container los to specify a subset. + + Example: :py:attr:`my_session.los[ ... ].lo_export_enabled` + + To set/get on all los, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.lo_export_enabled` + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | bool | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | los | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:LO Export Enabled** + - C Attribute: **NIRFSA_ATTR_LO_EXPORT_ENABLED** + +lo_frequency +------------ + + .. py:attribute:: lo_frequency + + Specifies the LO signal frequency for the configured center frequency. + + If you are using the NI RF vector signal analyzer with an external LO, use this property to specify the LO frequency that the external LO source passes into the LO IN or LO1 IN connector on the RF downconverter front panel. If you are using an external LO, reading the value of this property after configuring the rest of the parameters returns the LO frequency needed by the device. + + Set this property to the actual LO frequency because NI-RFSA corrects for any difference between expected and actual LO frequencies. + + To use this property for the PXIe-5830/5831/5832, you must use the channelName parameter of the :py:meth:`nirfsa.Session._set_attribute_vi_real64` method to specify the name of the channel you are configuring. You can configure the LO1 and LO2 channels by using lo1 or lo2 as the channel string, or set the channel string to lo1,lo2 to configure both channels. For all other devices, the the only valid value for the channel string is "" (empty string). + + **Default Values**: + + **PXIe-5694**: 215 MHz + + **All other devices**: 0 + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667/5668, PXIe-5694, PXIe-5830/5831/5832/5840/5841/5842 + + **Related Topics** + + `PXIe-5830 Frequency and Bandwidth Configuration `_ + + `PXIe-5831/5832 Frequency and Bandwidth Configuration `_ + + `PXIe-5841 Frequency and Bandwidth Configuration `_ + + + + + .. tip:: This property can be set/get on specific los within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container los to specify a subset. + + Example: :py:attr:`my_session.los[ ... ].lo_frequency` + + To set/get on all los, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.lo_frequency` + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | los | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:LO Frequency** + - C Attribute: **NIRFSA_ATTR_LO_FREQUENCY** + +lo_frequency_step_size +---------------------- + + .. py:attribute:: lo_frequency_step_size + + Specifies the step size for tuning the local oscillator (LO) phase-locked loop (PLL). + + You can only tune the LO frequency by multiples of the :py:attr:`nirfsa.Session.lo_frequency_step_size` property. For the PXIe-5644/5645/5646 and PXIe-5840/5841, the LO frequency can therefore be offset from the requested center frequency by as much as half of the :py:attr:`nirfsa.Session.lo_frequency_step_size` property. This offset is corrected by digitally frequency shifting the :py:attr:`nirfsa.Session.lo_frequency` property to the value requested in either the :py:attr:`nirfsa.Session.iq_carrier_frequency` property or the :py:attr:`nirfsa.Session.center_frequency` property. + + ---- + **Note** + For the PXIe-5831 with PXIe-5653 and PXIe-5832 with PXIe-5653, this property is ignored if the PXIe-5653 is used as the LO source. + + ---- + + The valid values for this property depend on the :py:attr:`nirfsa.Session.lo_pll_fractional_mode_enabled` property. + + **PXIe-5644/5645/5646**: If the :py:attr:`nirfsa.Session.lo_pll_fractional_mode_enabled` property is set to :py:data:`~nirfsa.NIRFSA_VAL_DISABLED`, the specified value is coerced to the closest valid value. + + **PXIe-5840/5841/5842**: If the :py:attr:`nirfsa.Session.lo_pll_fractional_mode_enabled` property is set to :py:data:`~nirfsa.NIRFSA_VAL_DISABLED`, the specified value is coerced to the nearest valid value that is less than or equal to the desired step size. + + * Values up to 100 MHz are coerced to 50 MHz. + + ---- + **Note** + The default value for the PXIe-5831 depends on the frequency range of the selected port for your instrument configuration. Refer to the `Instrument Configurations `_ topic for more information about available ports for your hardware configuration. + + ---- + + **Default Values:** + + **PXIe-5644/5645/5646:** 200 kHz + + **PXIe-5830:** 2 MHz + + **PXIe-5831/5832 (RF port):** 8 MHz + + **PXIe-5831/5832 (IF port):** 2 MHz, 4 MHz + + **PXIe-5840/5841:** + + - Fractional mode: 500 kHz + - Integer mode: 10 MHz for frequencies less than or equal to 4 GHz. 20 MHz for frequencies greater than 4 GHz. + + **PXIe-5841 with PXIe-5655:** 500 kHz + + **PXIe-5842:** 1 Hz + + **Supported Devices:** PXIe-5644/5645/5646, PXIe-5830/5831/5832/5840/5841/5842 + + +----------------------------------------+-------------------------------------+------------------------------+-----------------------------------------------+--------------------------------------------+-----------------------+ + | lo_pll_fractional_mode_enabled | PXIe-5644/5645 | PXIe-5646 | PXIe-5840/5841 | PXIe-5830/5831/5832 | PXIe-5841 w/PXIe-5655 | + +========================================+=====================================+==============================+===============================================+============================================+=======================+ + | :py:data:`~nirfsa.NIRFSA_VAL_ENABLED` | 50 kHz to 24 MHz | 50 kHz to 25 MHz | 50 kHz to 100 MHz | LO1: 8 Hz to 400 MHz + LO2: 4 kHz to 400 MHz | 1 nHz to 50 MHz | + +----------------------------------------+-------------------------------------+------------------------------+-----------------------------------------------+--------------------------------------------+-----------------------+ + | :py:data:`~nirfsa.NIRFSA_VAL_DISABLED` | 4 MHz, 5 MHz, 6 MHz, 12 MHz, 24 MHz | 2 MHz, 5 MHz, 10 MHz, 25 MHz | 1 MHz, 5 MHz, 10 MHz, 25 MHz, 50 MHz, 100 MHz | LO1: -- + LO2: -- | 1 nHz to 50 MHz | + +----------------------------------------+-------------------------------------+------------------------------+-----------------------------------------------+--------------------------------------------+-----------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Specific:Vector Signal Transceiver:Signal Path:LO Frequency Step Size (Hz)** + - C Attribute: **NIRFSA_ATTR_LO_FREQUENCY_STEP_SIZE** + +lo_injection_side +----------------- + + .. py:attribute:: lo_injection_side + + Specifies the LO injection side. + + **PXIe-5601/5663/5663E**: For frequencies below 517.5 MHz or above 6.4125 GHz, the LO injection side is fixed and NI-RFSA returns an error if you specify the incorrect value. If you do not configure this property, NI-RFSA selects the default LO injection side based on the downconverter center frequency. Reset this property to return to automatic behavior. + + **PXIe-5603/5605/5665 (3.6 GHz)/5667 (3.6 GHz)**: Setting this property to :py:data:`~nirfsa.LoInjection.LOW` is not supported for this device. + + **PXIe-5605/5665 (14 GHz)/5667 (7 GHz)**: Setting this property to :py:data:`~nirfsa.LoInjection.LOW` is supported for this device for frequencies greater than 4 GHz, but this configuration is not calibrated, and device specifications are not guaranteed. + + **PXIe-5606/5668**: Setting this property to :py:data:`~nirfsa.LoInjection.LOW` is supported for certain frequencies in high band, varying by final IF frequency. This configuration is not calibrated and device specifications are not guaranteed. + + **Default Values**: + + **PXIe-5601 (external digitizer mode), PXIe-5663/5663E (frequencies < 3.0 GHz)**: :py:data:`~nirfsa.LoInjection.HIGH` + + **PXIe-5601 (external digitizer mode), PXIe-5663/5663E (frequencies 3.0 GHz)**: :py:data:`~nirfsa.LoInjection.LOW` + + **PXIe-5603/5605/5606 (external digitizer mode), PXIe-5665/5667/5668**: :py:data:`~nirfsa.LoInjection.HIGH` + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5663/5663E/5665/5667/5668 + + **Defined Values**: + + +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +=====================================+=====================================================================================================================================================================================================+ + | :py:data:`~nirfsa.LoInjection.HIGH` | Configures the LO signal that the NI-RFSA device generates at a frequency higher than the RF frequency. This LO frequency is given by the formula fLO = fRF + fIF. | + +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.LoInjection.LOW` | Configures the LO signal that the NI-RFSA device generates at a frequency lower than the RF frequency. This LO frequency is given by the formula fLO = fRF - fIF. | + +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+-------------------+ + | Characteristic | Value | + +=======================+===================+ + | Datatype | enums.LoInjection | + +-----------------------+-------------------+ + | Permissions | read-write | + +-----------------------+-------------------+ + | Repeated Capabilities | None | + +-----------------------+-------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Advanced:LO Injection Side** + - C Attribute: **NIRFSA_ATTR_LO_INJECTION_SIDE** + +lo_in_power +----------- + + .. py:attribute:: lo_in_power + + Returns the power level, in dBm, expected at the LO IN terminal when the :py:attr:`nirfsa.Session.lo_source` property is set to :py:data:`~nirfsa.LoSource.LO_IN`. + + ---- + **Note** + For the PXIe-5644/5645/5646, this property is always read-only. + + ---- + + **Supported Devices:** PXIe-5644/5645/5646, PXIe-5830/5831/5832/5840/5841/5842 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Specific:Vector Signal Transceiver:Signal Path:LO In Power (dBm)** + - C Attribute: **NIRFSA_ATTR_LO_IN_POWER** + +lo_out_export_configure_from_rfsg +--------------------------------- + + .. py:attribute:: lo_out_export_configure_from_rfsg + + Specifies whether to allow NI-RFSG to control the NI-RFSA LO out export. + + Set this property to :py:data:`~nirfsa.LoOutExportConfigureFromRfsg.ENABLED` to allow NI-RFSG to control the LO out export. Use the NIRFSG ATTR RF IN LO EXPORT ENABLED property to control the NI-RFSA LO out export from NI-RFSG. + + **Default Value:** :py:data:`~nirfsa.LoOutExportConfigureFromRfsg.DISABLED` + + **Supported Devices**: PXIe-5840/5841/5842 + + **Defined Values**: + + +----------------------------------------------------------+----------------------------------------------------------------------+ + | Name | Description | + +==========================================================+======================================================================+ + | :py:data:`~nirfsa.LoOutExportConfigureFromRfsg.DISABLED` | Do not allow NI-RFSG to control the NI-RFSA local oscillator export. | + +----------------------------------------------------------+----------------------------------------------------------------------+ + | :py:data:`~nirfsa.LoOutExportConfigureFromRfsg.ENABLED` | Allow NI-RFSG to control the NI-RFSA local oscillator export. | + +----------------------------------------------------------+----------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------------------------------+ + | Characteristic | Value | + +=======================+====================================+ + | Datatype | enums.LoOutExportConfigureFromRfsg | + +-----------------------+------------------------------------+ + | Permissions | read-write | + +-----------------------+------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:LO Out Export Configure From RFSG** + - C Attribute: **NIRFSA_ATTR_LO_OUT_EXPORT_CONFIGURE_FROM_RFSG** + +lo_out_power +------------ + + .. py:attribute:: lo_out_power + + Specifies the power level, in dBm, of the signal at the LO OUT terminal when the :py:attr:`nirfsa.Session.lo_export_enabled` property is set to True. + + To use this property for the PXIe-5830/5831/5832, you must use the channelName parameter of the :py:meth:`nirfsa.Session._set_attribute_vi_real64` method to specify the name of the channel you are configuring. You can configure the LO1 and LO2 channels by using lo1 or lo2 as the channel string, or set the channel string to lo1,lo2 to configure both channels. For all other devices, the the only valid value for the channel string is "" (empty string). + + **Units:** dBm + + **Supported Devices:** PXIe-5830/5831/5832/5840/5841/5842 + + + + + .. tip:: This property can be set/get on specific los within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container los to specify a subset. + + Example: :py:attr:`my_session.los[ ... ].lo_out_power` + + To set/get on all los, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.lo_out_power` + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | los | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Specific:Vector Signal Transceiver:Signal Path:LO Out Power (dBm)** + - C Attribute: **NIRFSA_ATTR_LO_OUT_POWER** + +lo_pll_fractional_mode_enabled +------------------------------ + + .. py:attribute:: lo_pll_fractional_mode_enabled + + Specifies whether to use fractional mode for the local oscillator (LO) phase-locked loop (PLL). + + Fractional mode gives a finer frequency step resolution, but it may result in non harmonic spurs. Refer to the device specifications for your device for more information about fractional mode and non harmonic spurs. + + ---- + **Note** + The :py:attr:`nirfsa.Session.lo_pll_fractional_mode_enabled` property is applicable only when using the internal LO. + + ---- + + ---- + **Note** + For the PXIe-5831 with PXIe-5653 and PXIe-5832 with PXIe-5653, this property is ignored if the PXIe-5653 is used as the LO source. For the PXIe-5841 with PXIe-5655, this property is ignored if the PXIe-5655 is used as the LO source. + + ---- + + To use this property for the PXIe-5830/5831/5832, you must use the channelName parameter of the :py:meth:`nirfsa.Session._set_attribute_vi_int32` method to specify the name of the channel you are configuring. You can configure the LO1 and LO2 channels by using lo1 or lo2 as the channel string, or set the channel string to lo1,lo2 to configure both channels. For all other devices, the the only valid value for the channel string is "" (empty string). + + **Default Value**: :py:data:`~nirfsa.LoPllFractionalModeEnabled.ENABLED` + + **Supported Devices:** PXIe-5644/5645/5646, PXIe-5830/5831/5832/5840/5841/5842 + + **Defined Values**: + + +--------------------------------------------------------+------------------------------------------+ + | Name | Description | + +========================================================+==========================================+ + | :py:data:`~nirfsa.LoPllFractionalModeEnabled.DISABLED` | Disables fractional mode for the LO PLL. | + +--------------------------------------------------------+------------------------------------------+ + | :py:data:`~nirfsa.LoPllFractionalModeEnabled.ENABLED` | Enables fractional mode for the LO PLL. | + +--------------------------------------------------------+------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + .. tip:: This property can be set/get on specific los within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container los to specify a subset. + + Example: :py:attr:`my_session.los[ ... ].lo_pll_fractional_mode_enabled` + + To set/get on all los, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.lo_pll_fractional_mode_enabled` + + The following table lists the characteristics of this property. + + +-----------------------+----------------------------------+ + | Characteristic | Value | + +=======================+==================================+ + | Datatype | enums.LoPllFractionalModeEnabled | + +-----------------------+----------------------------------+ + | Permissions | read-write | + +-----------------------+----------------------------------+ + | Repeated Capabilities | los | + +-----------------------+----------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Specific:Vector Signal Transceiver:Signal Path:LO PLL Fractional Mode Enabled** + - C Attribute: **NIRFSA_ATTR_LO_PLL_FRACTIONAL_MODE_ENABLED** + +lo_source +--------- + + .. py:attribute:: lo_source + + Specifies the LO signal source used to downconvert the RF input signal. + + If no signal downconversion is required, this property is ignored. If this property is set to "" (empty string), NI-RFSA uses the internal LO source. + + To use this property for the PXIe-5830/5831/5832, you must use the channelName parameter of the :py:meth:`nirfsa.Session._set_attribute_vi_string` method to specify the name of the channel you are configuring. You can configure the LO1 and LO2 channels by using lo1 or lo2 as the channel string, or set the channel string to lo1,lo2 to configure both channels. For all other devices, the only valid value for the channel string is "" (empty string). + + ---- + **Note** + For the PXIe-5841 with PXIe-5655, RF list mode is not supported when this property is set to :py:data:`~nirfsa.LoSource.LO_SOURCE_SG_SA_SHARED`. + + ---- + + + + + **Default Value**: :py:data:`~nirfsa.LoSource.ONBOARD` ("Onboard") + + **Supported Devices**: PXIe-5644/5645/5646, PXIe-5694, PXIe-5830/5831/5832/5840/5841/5842 + + **Related Topics** + `PXIe-5830 LO Sharing Using NI-RFSA and NI-RFSG `_ + `PXIe-5831/5832 LO Sharing Using NI-RFSA and NI-RFSG `_ + + **Defined Values**: + + +----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +====================================================+===================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.LoSource.NONE` | Specifies that no LO source is required to downconvert the RF input signal. | + +----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.LoSource.ONBOARD` | Specifies that the onboard synthesizer is used to generate the LO signal that downconverts the RF input signal.**PXIe-5831/5832** This configuration uses the onboard LO of the PXIe-3622, using the LO2 stage.**PXIe-5831/5832 with PXIe-5653** This configuration uses the onboard LO of the PXIe-5653 when associated with the PXIe-3622.**PXIe-5841 with PXIe-5655** This configuration uses the onboard LO of the PXIe-5655. | + +----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.LoSource.LO_IN` | Specifies that the LO source used to downconvert the RF input signal is connected to the LO IN connector on the front panel. | + +----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.LoSource.LO_SOURCE_SECONDARY` | Uses the PXIe-5831/5840 internal LO as the LO source. This value is valid on only the PXIe-5831 with PXIe-5653 (LO1 stage only) or PXIe-5832 with PCIe-5653 (LO1 stage only). | + +----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.LoSource.LO_SOURCE_SG_SA_SHARED` | Uses the same internal LO during NI-RFSA and NI-RFSG sessions. NI-RFSA selects an internal synthesizer and the synthesizer signal is switched to both the RF Out and RF In mixers. This value is valid on only the PXIe-5830/5831/5832/5841 with PXIe-5655. | + +----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + + .. tip:: This property can be set/get on specific los within your :py:class:`nirfsa.Session` instance. + Use Python index notation on the repeated capabilities container los to specify a subset. + + Example: :py:attr:`my_session.los[ ... ].lo_source` + + To set/get on all los, you can call the property directly on the :py:class:`nirfsa.Session`. + + Example: :py:attr:`my_session.lo_source` + + The following table lists the characteristics of this property. + + +-----------------------+----------------+ + | Characteristic | Value | + +=======================+================+ + | Datatype | enums.LoSource | + +-----------------------+----------------+ + | Permissions | read-write | + +-----------------------+----------------+ + | Repeated Capabilities | los | + +-----------------------+----------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:LO Source** + - C Attribute: **NIRFSA_ATTR_LO_SOURCE** + +lo_temperature +-------------- + + .. py:attribute:: lo_temperature + + Returns the current temperature, in degrees Celsius, of the LO module. + + **PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode) PXI-5661, PXIe-5663/5663E/5665/5667/5668** This property is not supported if you are using an external LO. + + **PXIe-5840/5841/5842**: If you query this property during RF list mode, list steps may take longer to complete during list execution. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode) PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5840/5841/5842 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | float | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Characteristics:LO Temperature (Degrees C)** + - C Attribute: **NIRFSA_ATTR_LO_TEMPERATURE** + +lo_vco_frequency_step_size +-------------------------- + + .. py:attribute:: lo_vco_frequency_step_size + + Specifies the step size for tuning the internal voltage-controlled oscillator (VCO) used to generate the LO signal. + + ---- + **Note** + Do not set this property with the :py:attr:`nirfsa.Session.lo_frequency_step_size` property. + + ---- + + **Valid Values**: + + LO1: 1 Hz to 50 MHz + + LO2: 1 Hz to 100 MHz + + **Default Values**: 1 MHz + + **Supported Devices**: PXIe-5830/5831/5832 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Specific:Vector Signal Transceiver:Signal Path:LO VCO Frequency Step Size (Hz)** + - C Attribute: **NIRFSA_ATTR_LO_VCO_FREQUENCY_STEP_SIZE** + +lo_yig_main_coil_drive +---------------------- + + .. py:attribute:: lo_yig_main_coil_drive + + Adjusts the dynamics of the current driving the YIG main coil. + + ---- + **Note** + Setting this property to :py:data:`~nirfsa.LoYigMainCoilDrive.FAST` allows the frequency to settle significantly faster for some frequency transitions at the expense of increased phase noise. This property is not supported if you are using an external LO. + + ---- + + **Default Value**: :py:data:`~nirfsa.LoYigMainCoilDrive.NORMAL` + + **Supported Devices:** PXIe-5603/5605/5606 (external digitizer mode), PXIe-5665/5667/5668 + + **Defined Values**: + + +----------------------------------------------+------------------------------------------------------------------+ + | Name | Description | + +==============================================+==================================================================+ + | :py:data:`~nirfsa.LoYigMainCoilDrive.NORMAL` | Adjusts the YIG main coil on the LO for an underdamped response. | + +----------------------------------------------+------------------------------------------------------------------+ + | :py:data:`~nirfsa.LoYigMainCoilDrive.FAST` | Adjusts the YIG main coil on the LO for an overdamped response. | + +----------------------------------------------+------------------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+--------------------------+ + | Characteristic | Value | + +=======================+==========================+ + | Datatype | enums.LoYigMainCoilDrive | + +-----------------------+--------------------------+ + | Permissions | read-write | + +-----------------------+--------------------------+ + | Repeated Capabilities | None | + +-----------------------+--------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Advanced:LO YIG Main Coil Drive** + - C Attribute: **NIRFSA_ATTR_LO_YIG_MAIN_COIL_DRIVE** + +max_device_instantaneous_bandwidth +---------------------------------- + + .. py:attribute:: max_device_instantaneous_bandwidth + + Returns the maximum instantaneous bandwidth of the device. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | float | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Characteristics:Max Device Instantaneous Bandwidth** + - C Attribute: **NIRFSA_ATTR_MAX_DEVICE_INSTANTANEOUS_BANDWIDTH** + +max_iq_rate +----------- + + .. py:attribute:: max_iq_rate + + Returns the maximum I/Q rate. + + **Default Value**: N/A + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | float | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Characteristics:Max IQ Rate** + - C Attribute: **NIRFSA_ATTR_MAX_IQ_RATE** + +mechanical_attenuation +---------------------- + + .. py:attribute:: mechanical_attenuation + + Specifies the level of mechanical attenuation for the RF path, in dB. + + **PXIe-5667**: This property is read-only when the :py:attr:`nirfsa.Session.LOW_FREQUENCY_BYPASS_ENABLED` property is set to :py:data:`~nirfsa.NIRFSA_VAL_DISABLED`. + + **PXIe-5668with PXIe-5698**: This property is read-only when the :py:attr:`nirfsa.Session.rf_preamp_enabled` property is set to :py:data:`~nirfsa.EnableRfPreamp.ENABLED`. + + **Units**: dB + + **Valid Values:** + + **PXIe-5601/5663/5663E**: 0, 16 + + **PXIe-5603/5665 (3.6 GHz)**: 0, 10, 20, 30 + + **PXIe-5605/5665 (14 GHz), PXIe-5606/5668**: 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75 + + **PXIe-5667 (3.6 GHz) using the PXIe-5693 RF preselector low frequency bypass path**: 0, 10, 20, 30 + + **PXIe-5667 (3.6 GHz) using the PXIe-5693 RF preselector filter path**: 0 + + **PXIe-5667 (7 GHz) using the PXIe-5693 RF preselector low frequency bypass path**: 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75 + + **PXIe-5667 (7 GHz) using the PXIe-5693 RF preselector filter path**: 0 + + **PXIe-5668 with PXIe-5698 with the** :py:attr:`nirfsa.Session.rf_preamp_enabled` property set to :py:data:`~nirfsa.EnableRfPreamp.ENABLED`: 5 + + **Default Value**: N/A + + **Supported Devices**: PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5663/5663E/5665/5667/5668 + + + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Advanced:Mechanical Attenuation (dB)** + - C Attribute: **NIRFSA_ATTR_MECHANICAL_ATTENUATION** + +memory_size +----------- + + .. py:attribute:: memory_size + + Returns the digitizer onboard memory size, in bytes. + + **Default Value**: N/A + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | int | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Characteristics:Memory Size** + - C Attribute: **NIRFSA_ATTR_MEMORY_SIZE** + +minimum_acpr +------------ + + .. py:attribute:: minimum_acpr + + Specifies the minimum adjacent channel power ratio (ACPR), in dB, relative to the main channel reference level. + + This property configures NI-RFSA to optimize downconverter gain to measure a lower-power adjacent channel, adding gain only after filtering the main channel. The gain NI-RFSA applies is always less than or equal to the ACPR value you specify. + + ---- + **Note** + For the PXIe-5665 (3.6 GHz), this property is supported only if you set the :py:attr:`nirfsa.Session.device_instantaneous_bandwidth`, :py:attr:`nirfsa.Session.spectrum_span`, or :py:attr:`nirfsa.Session.if_filter_bandwidth` property to a value less than 300 kHz. For the PXIe-5665 (14 GHz), this property is supported for :py:attr:`nirfsa.Session.device_instantaneous_bandwidth`, :py:attr:`nirfsa.Session.spectrum_span`, or :py:attr:`nirfsa.Session.if_filter_bandwidth` property values less than 300 kHz by using the 300 kHz IF filter, and it is supported for values between 300 kHz and 5 MHz by using the 5 MHz IF filter. + + ---- + + ---- + **Note** + NI-RFSA coerces this property to zero for the PXI-5600, PXIe-5601 and the PXIe-5667. For all other devices, read the coerced value of this property to determine the actual amount of gain applied. + + ---- + + ---- + **Note** + For the PXIe-5668, this property alters the :py:attr:`nirfsa.Session.if_output_power_level` property. This property will not affect the :py:attr:`nirfsa.Session.reference_level` property. + + ---- + + **Default Value**: 0 + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Advanced:Minimum Adjacent Channel Power Ratio (dB)** + - C Attribute: **NIRFSA_ATTR_MINIMUM_ACPR** + +mixer_level +----------- + + .. py:attribute:: mixer_level + + Specifies the mixer level, in dBm. + + The mixer level represents the attenuation value to apply to the input RF signal as it reaches the first mixer in the signal chain. If you do not set this property, NI-RFSA automatically selects an optimal mixer level value based on the reference level. The valid values for this property depend on your device configuration. + + If you set the :py:attr:`nirfsa.Session.mixer_level` and :py:attr:`nirfsa.Session.mixer_level_offset` properties at the same time, NI-RFSA returns an error. + + **PXIe-5601/5663/5663E**: This property is read-only. + + **PXIe-5667**: This property is read-only when the :py:attr:`nirfsa.Session.LOW_FREQUENCY_BYPASS_ENABLED` property is set to :py:data:`~nirfsa.NIRFSA_VAL_DISABLED`. + + **Units**: dBm + + **Default Values**: + + **PXI-5600/5661**: -30 + + **PXIe-5603/5605/5665/5667/5668**: -10 + + **All other devices**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668 + + + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Mixer Level (dBm)** + - C Attribute: **NIRFSA_ATTR_MIXER_LEVEL** + +mixer_level_offset +------------------ + + .. py:attribute:: mixer_level_offset + + Specifies the number of dB by which to adjust the device mixer level. + + The default value is 0, which specifies device settings that are the best compromise between distortion and noise. Specifying a positive value for this property configures the device for moderate distortion and low noise, and specifying a negative value results in low distortion and higher noise. + + You cannot set the :py:attr:`nirfsa.Session.mixer_level` and :py:attr:`nirfsa.Session.mixer_level_offset` properties at the same time. + + **PXIe-5667**: This property is read-only when the :py:attr:`nirfsa.Session.LOW_FREQUENCY_BYPASS_ENABLED` property is set to :py:data:`~nirfsa.NIRFSA_VAL_DISABLED`. + + **Units**: dB + + **Default Value**: 0 + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668 + + + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Mixer Level Offset (dB)** + - C Attribute: **NIRFSA_ATTR_MIXER_LEVEL_OFFSET** + +module_power_consumption +------------------------ + + .. py:attribute:: module_power_consumption + + Returns the module power consumption. + + ---- + **Note** + If you query this property during RF list mode, list steps may take longer to complete during list execution. + + ---- + + **Units**: watts + + **Default Value**: N/A + + **Supported Devices:**: PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | float | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Characteristics:Module Power Consumption (W)** + - C Attribute: **NIRFSA_ATTR_MODULE_POWER_CONSUMPTION** + +module_revision +--------------- + + .. py:attribute:: module_revision + + Returns the revision of the RF downconverter module. + + ---- + **Note** + For the PXIe-5644/5645/5646 and PXIe-5820/5830/5831/5840/5841, this property returns the revision of the VST module. For the PXIe-5830/5831/5832, this property returns the revision of the PXIe-3621/3622 + + ---- + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Characteristics:Module Revision** + - C Attribute: **NIRFSA_ATTR_MODULE_REVISION** + +noise_source_power_enabled +-------------------------- + + .. py:attribute:: noise_source_power_enabled + + Enables the 28 V DC source on the device front panel. + + **PXIe-5668 with PXIe-5698**: When this property is set to :py:data:`~nirfsa.NoiseSourcePowerEnabled.ENABLED`, the PXIe-5698 noise source is used instead of the PXIe-5668 noise source. + + **Units**: dB + + **Default Value**: :py:data:`~nirfsa.NoiseSourcePowerEnabled.DISABLED` + + **Supported Devices**: PXIe-5606, PXIe-5668, PXIe-5698 + + **Defined Values**: + + +-----------------------------------------------------+----------------------------------+ + | Name | Description | + +=====================================================+==================================+ + | :py:data:`~nirfsa.NoiseSourcePowerEnabled.DISABLED` | Disables the noise source power. | + +-----------------------------------------------------+----------------------------------+ + | :py:data:`~nirfsa.NoiseSourcePowerEnabled.ENABLED` | Enables the noise source power. | + +-----------------------------------------------------+----------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+-------------------------------+ + | Characteristic | Value | + +=======================+===============================+ + | Datatype | enums.NoiseSourcePowerEnabled | + +-----------------------+-------------------------------+ + | Permissions | read-write | + +-----------------------+-------------------------------+ + | Repeated Capabilities | None | + +-----------------------+-------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Specific:5606:Noise Source Power Enabled** + - C Attribute: **NIRFSA_ATTR_NOISE_SOURCE_POWER_ENABLED** + +number_of_records +----------------- + + .. py:attribute:: number_of_records + + Specifies the number of records to acquire if the :py:attr:`nirfsa.Session.number_of_records_is_finite` property is set to True. + + **Default Value**: 1 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `I/Q Modulation `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ConfigureNumberOfRecords` + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | int | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:IQ:Number Of Records** + - C Attribute: **NIRFSA_ATTR_NUMBER_OF_RECORDS** + +number_of_records_is_finite +--------------------------- + + .. py:attribute:: number_of_records_is_finite + + Specifies whether the device stops after acquiring the specified number of records or acquires records continuously. + + **Defined Values**: + + | Value | Description | + |:---------|:--------------------------------------------------------------| + | True | Acquire a finite number of records. | + | False | Acquire records continuously until you abort the acquisition. | + + **Default Value**: True + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `I/Q Modulation `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ConfigureNumberOfRecords` + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | bool | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:IQ:Number Of Records Is Finite** + - C Attribute: **NIRFSA_ATTR_NUMBER_OF_RECORDS_IS_FINITE** + +number_of_samples +----------------- + + .. py:attribute:: number_of_samples + + Specifies the number of samples to acquire. + + This property is valid only if the :py:attr:`nirfsa.Session.number_of_samples_is_finite` property is set to True. + + **Default Value**: 1,000 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `I/Q Modulation `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ConfigureNumberOfSamples` + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | int | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:IQ:Number Of Samples** + - C Attribute: **NIRFSA_ATTR_NUMBER_OF_SAMPLES** + +number_of_samples_is_finite +--------------------------- + + .. py:attribute:: number_of_samples_is_finite + + Specifies whether the device acquires a finite number of samples or acquires continuously. + + **Defined Values**: + + | Value | Description | + |:---------|:------------------------------------------------------| + | True | Acquire a finite number of samples. | + | False | Acquire continuously until you abort the acquisition. | + + **Default Value**: True + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `I/Q Modulation `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ConfigureNumberOfSamples` + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | bool | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:IQ:Number Of Samples Is Finite** + - C Attribute: **NIRFSA_ATTR_NUMBER_OF_SAMPLES_IS_FINITE** + +number_of_spectral_lines +------------------------ + + .. py:attribute:: number_of_spectral_lines + + Specifies the number of spectral lines expected with the current power spectrum configuration. + + If you do not configure this property, NI-RFSA selects an appropriate value based on the :py:attr:`nirfsa.Session.resolution_bandwidth` property. If you configure this property, NI-RFSA coerces the :py:attr:`nirfsa.Session.resolution_bandwidth` value based on the number of spectral lines requested and the value of the :py:attr:`nirfsa.Session.spectrum_span` property. + + **Default Value**: N/A + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | int | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Spectrum:Number Of Spectral Lines** + - C Attribute: **NIRFSA_ATTR_NUMBER_OF_SPECTRAL_LINES** + +osp_data_scaling_factor +----------------------- + + .. py:attribute:: osp_data_scaling_factor + + Specifies the scaling factor applied to the time-domain voltage data in the IF digitizer. + + Use this property to maximize the dynamic range of the digitizer by increasing the maximum IF power the digitizer can measure without creating OSP overflows. + + Because of the device amplitude response, some wide-band signals normally attenuated by the downconverter go through the IF digitizer without causing an ADC overflow. During IF equalization, these wide-band digitizer input signals may become amplified. These amplified input signal values overflow the available numeric range used in the signal processing algorithm. + + You can use this property when OSP calculations would generate an overflow while applying digital filters to the data. The OSP module in the digitizer multiplies the time-domain signal amplitude, in volts, by the specified property value before further onboard processing. Set this property to a value less than 1 to avoid OSP overflow for near full-scale IF signals and to use the maximum dynamic range of the digitizer. NI-RFSA compensates for the specified OSP data scaling factor to ensure that the correct scaled data, in absolute levels, is always returned regardless of the value of this property. + + **Valid Values:**: 0.25 to 1.0 + + **Default Values:** + + **PXI-5661, PXIe-5663/5663E/5665 (3.6 GHz)/5667 (3.6 GHz)/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860**: 1.0 + + **PXIe-5665 (14 GHz)/5667 (7 GHz)**: 0.8 + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Advanced:OSP Data Scaling Factor** + - C Attribute: **NIRFSA_ATTR_OSP_DATA_SCALING_FACTOR** + +overflow_error_reporting +------------------------ + + .. py:attribute:: overflow_error_reporting + + Configures error reporting for ADC and onboard signal processing overflows. + + Overflows lead to clipping of the waveform. + + **Default Value**: :py:data:`~nirfsa.OverflowErrorReporting.WARNING` + + **Supported Devices**: PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +----------------------------------------------------+--------------------------------------------------------------------------------------------------------+ + | Name | Description | + +====================================================+========================================================================================================+ + | :py:data:`~nirfsa.OverflowErrorReporting.WARNING` | Configures NI-RFSA to return a warning when an ADC or onboard signal processing (OSP) overflow occurs. | + +----------------------------------------------------+--------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.OverflowErrorReporting.DISABLED` | Configures NI-RFSA to not return an error or a warning when an ADC or OSP overflow occurs. | + +----------------------------------------------------+--------------------------------------------------------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+------------------------------+ + | Characteristic | Value | + +=======================+==============================+ + | Datatype | enums.OverflowErrorReporting | + +-----------------------+------------------------------+ + | Permissions | read-write | + +-----------------------+------------------------------+ + | Repeated Capabilities | None | + +-----------------------+------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Advanced:Overflow Error Reporting** + - C Attribute: **NIRFSA_ATTR_OVERFLOW_ERROR_REPORTING** + +phase_offset +------------ + + .. py:attribute:: phase_offset + + Specifies the offset to apply to the initial I and Q phases. + + **Valid Values**: 0 to 180 + + **Default Value**: 0 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:IQ:Phase Offset** + - C Attribute: **NIRFSA_ATTR_PHASE_OFFSET** + +power_spectrum_units +-------------------- + + .. py:attribute:: power_spectrum_units + + Specifies the units of the power spectrum. + + **Default Value**: :py:data:`~nirfsa.PowerSpectrumUnits.DBM` + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +-----------------------------------------------------+---------------------------------------------+ + | Name | Description | + +=====================================================+=============================================+ + | :py:data:`~nirfsa.PowerSpectrumUnits.DBM` | Units are dB with reference to 1 milliwatt. | + +-----------------------------------------------------+---------------------------------------------+ + | :py:data:`~nirfsa.PowerSpectrumUnits.VOLTS_SQUARED` | Units are in volts squared. | + +-----------------------------------------------------+---------------------------------------------+ + | :py:data:`~nirfsa.PowerSpectrumUnits.DBMV` | Units are dB with reference to 1 millivolt. | + +-----------------------------------------------------+---------------------------------------------+ + | :py:data:`~nirfsa.PowerSpectrumUnits.DBUV` | Units are dB with reference to 1 microvolt. | + +-----------------------------------------------------+---------------------------------------------+ + | :py:data:`~nirfsa.PowerSpectrumUnits.VOLTS` | Units are in volts. | + +-----------------------------------------------------+---------------------------------------------+ + | :py:data:`~nirfsa.PowerSpectrumUnits.WATTS` | Units are in watts. | + +-----------------------------------------------------+---------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+--------------------------+ + | Characteristic | Value | + +=======================+==========================+ + | Datatype | enums.PowerSpectrumUnits | + +-----------------------+--------------------------+ + | Permissions | read-write | + +-----------------------+--------------------------+ + | Repeated Capabilities | None | + +-----------------------+--------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Spectrum:Power Spectrum Units** + - C Attribute: **NIRFSA_ATTR_POWER_SPECTRUM_UNITS** + +preselector_present +------------------- + + .. py:attribute:: preselector_present + + Returns whether a preselector is available on the RF downconverter module. + + **Defined Values**: + + | Value | Description | + |:---------|:--------------------------------------------------| + | True | A preselector is available on the downconverter. | + | False | No preselector is available on the downconverter. | + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5840/5841/5842 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | bool | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Characteristics:Preselector Present** + - C Attribute: **NIRFSA_ATTR_PRESELECTOR_PRESENT** + +ready_for_advance_event_terminal_name +------------------------------------- + + .. py:attribute:: ready_for_advance_event_terminal_name + + Returns the fully qualified signal name as a string. + + **Default Values**: + + **PXIe-5830/5831/5832**: /BasebandModule/ai/0/ReadyForAdvanceEvent, where *BasebandModule* is the name of the baseband module of your device in MAX. + + **PXIe-5820/5840/5841/5842**: /ModuleName/ai/0/ReadyForAdvanceEvent, where *ModuleName* is the name of your device in MAX. + + **PXIe-5860**: /ModuleName/ai/ChannelNumber/ReadyForAdvanceEvent, where *ModuleName* is the name of your device in MAX and *ChannelNumber* is the channel number (0 or 1). + + **All other devices**: /DigitizerNameReadyForAdvanceEvent, where *DigitizerName* is the name associated with your digitizer module in MAX. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Events `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.get_terminal_name` + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Events:Ready For Advance:Terminal Name** + - C Attribute: **NIRFSA_ATTR_READY_FOR_ADVANCE_EVENT_TERMINAL_NAME** + +ready_for_ref_event_terminal_name +--------------------------------- + + .. py:attribute:: ready_for_ref_event_terminal_name + + Returns the fully qualified signal name as a string. + + **PXIe-5830/5831/5832**: /BasebandModule/ai/0/ReadyForReferenceEvent, where *BasebandModule* is the name of the baseband module of your device in MAX. + + **PXIe-5820/5840/5841/5842**: /ModuleName/ai/0/ReadyForReferenceEvent, where *ModuleName* is the name of your device in MAX. + + **PXIe-5860**: /ModuleName/ai/ChannelNumber/ReadyForReferenceEvent, where *ModuleName* is the name of your device in MAX and *ChannelNumber* is the channel number (0 or 1). + + **All other devices**: /DigitizerName/ReadyForReferenceEvent, where *DigitizerName* is the name associated with your digitizer module in MAX. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Events `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.get_terminal_name` + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Events:Ready For Ref:Terminal Name** + - C Attribute: **NIRFSA_ATTR_READY_FOR_REF_EVENT_TERMINAL_NAME** + +ready_for_start_event_terminal_name +----------------------------------- + + .. py:attribute:: ready_for_start_event_terminal_name + + Returns the fully qualified signal name as a string. + + **Default Values**: + + **PXIe-5830/5831/5832**: /BasebandModule/ai/0/ReadyForStartEvent, where *BasebandModule* is the name of the baseband module of your device in MAX. + + **PXIe-5820/5840/5841/5842**: /ModuleName/ai/0/ReadyForStartEvent, where *ModuleName* is the name of your device in MAX. + + **PXIe-5860**: /ModuleName/ai/ChannelNumber/ReadyForStartEvent, where *ModuleName* is the name of your device in MAX and *ChannelNumber* is the channel number (0 or 1). + + **All other devices**: /DigitizerName/ReadyForStartEvent, where *DigitizerName* is the name associated with your digitizer module in MAX. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Events `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.get_terminal_name` + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Events:Ready For Start:Terminal Name** + - C Attribute: **NIRFSA_ATTR_READY_FOR_START_EVENT_TERMINAL_NAME** + +records_done +------------ + + .. py:attribute:: records_done + + Returns the number of records the RF vector signal analyzer has acquired. + + **Default Value**: N/A + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | int | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Fetch:Records Done** + - C Attribute: **NIRFSA_ATTR_RECORDS_DONE** + +reference_level +--------------- + + .. py:attribute:: reference_level + + Specifies the reference level, in dBm. + + The reference level represents the maximum expected power of an RF input signal. + + ---- + **Note** + For the PXIe-5645, this property is ignored if you are using the I/Q ports. + + ---- + + Refer to the :py:attr:`nirfsa.Session.external_gain` property for more information about how configuring an external gain and a reference level affect attenuation. + + **Default Value**: 0 + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694, PXIe-5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Improving Your Measurements `_ + + `Programming Attenuation-Related Properties and Properties Using NI-RFSA `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ConfigureReferenceLevel` + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Reference Level (dBm)** + - C Attribute: **NIRFSA_ATTR_REFERENCE_LEVEL** + +reference_level_headroom +------------------------ + + .. py:attribute:: reference_level_headroom + + Specifies the margin NI-RFSA adds to the :py:attr:`nirfsa.Session.reference_level` property. + + The margin helps to avoid clipping and overflow warnings if the input signal exceeds the configured reference level. + + NI-RFSA configures the input gain to avoid clipping and associated overflow warnings as long as the instantaneous power of the input signal remains within the reference level plus the reference level headroom. If you know the input power of the signal precisely or have already included margin in the reference level, you may be able to improve the signal-to-noise ratio by reducing the reference level headroom. + + **Units**: dB + + **Default Value**: + + **PXIe-5830/5831/5832/5841/5842/5860**: 1 dB + + **PXIe-5840**: 0 dB + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Advanced:Reference Level Headroom (dB)** + - C Attribute: **NIRFSA_ATTR_REFERENCE_LEVEL_HEADROOM** + +ref_clock_rate +-------------- + + .. py:attribute:: ref_clock_rate + + Specifies the Reference Clock rate, in Hz, of the signal present at the REF IN or CLK IN connector. + + This property is only valid when the :py:attr:`nirfsa.Session.ref_clock_source` property is set to :py:data:`~nirfsa.NIRFSA_VAL_CLK_IN`, :py:data:`~nirfsa.NIRFSA_VAL_REF_IN`, or :py:data:`~nirfsa.ReferenceClockSource.REF_IN_2`. + + **Valid Values**: + + **PXIe-5644/5645/5646, PXIe-5601/5663/5663E, PXIe-5694, PXIe-5820/5830/5831/5832/5840/5841**: 10 MHz + + **PXIe-5603/5605/5665/5667/5668**: 5 MHz to 100 MHz, in increments of 1 MHz + + **PXIe-5841 with PXIe-5655, PXIe-5842**: 10 MHz, 100 MHz, 270 MHz, and 3.84 MHz *y*, where *y* is 4, 8, 16, 24, 25, or 32. + + **PXIe-5860**: 10 MHz, 100 MHz + + **Default Value**: 10 MHz + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.configure_ref_clock` + + + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Clocking:Ref Clock Rate** + - C Attribute: **NIRFSA_ATTR_REF_CLOCK_RATE** + +ref_clock_source +---------------- + + .. py:attribute:: ref_clock_source + + Specifies the Reference Clock source. + + ---- + **Note** + For the PXIe-5694, if your application requires an external LO source, set this property to :py:data:`~nirfsa.ReferenceClockSource.NONE`. + + ---- + + **Default Values**: + + **PXIe-5694**: :py:data:`~nirfsa.ReferenceClockSource.REF_IN` + + **All other devices**: :py:data:`~nirfsa.ReferenceClockSource.ONBOARD_CLOCK` + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5694, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.configure_ref_clock` + + **Defined Values**: + + +--------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +========================================================+===============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.ReferenceClockSource.NONE` | No Reference Clock is required for the current device configuration. This value is valid only for the PXIe-5694 or the PXIe-5668. | + +--------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ReferenceClockSource.ONBOARD_CLOCK` | **PXI-5661 **NI-RFSA locks the NI-RFSA device to the PXI-5600 RF downconverter onboard clock.**PXIe-5663/5663E **NI-RFSA locks the PXIe-5663/5663E to the PXI/PXIe-5652 LO source onboard clock. Connect the REF OUT2 connector (if it exists) on the PXI/PXIe-5652 to the CLK IN terminal on the PXIe-5622. On versions of the PXIe-5663/5663E that lack a REF OUT2 connector on the PXI/PXIe-5652, connect the REF IN/OUT connector on the PXI/PXIe-5652 to the CLK IN terminal on the PXI5622.**PXIe-5665 **NI-RFSA locks the PXIe-5665 to the PXIe-5653 LO source onboard clock. Connect the 100 MHz REF OUT terminal on the PXIe-5653 to the CLK IN terminal on the PXIe-5622.**PXIe-5667 **NI-RFSA locks the PXIe-5667 to the PXIe-5653 LO source onboard clock. Connect the 100 MHz REF OUT terminal on the PXIe-5653 to the CLK IN terminal on the PXIe-5622, and connect the 10 MHZ REF OUT terminal on the PXIe-5653 to the REF/LO IN connector on the PXIe-5694.**PXIe-5668 **Lock the PXIe-5668 to the PXIe-5653 LO SOURCE onboard clock. Connect the LO2 OUT connector on the PXIe-5606 to the CLK IN connector on the PXIe-5624.**PXIe-5830/5831 **For the PXIe-5830, connect the PXIe-5820 REF IN connector to the PXIe-3621 REF OUT connector. For the PXIe-5831/5832, connect the PXIe-5820 REF IN connector to the PXIe-3622 REF OUT connector.**PXIe-5831/5832 with PXIe-5653 **Connect the PXIe-5820 REF IN connector to the PXIe-3622 REF OUT connector. Connect the PXIe-5653 REF OUT (10 MHz) connector to the PXIe-3622 REF IN connector.**PXIe-5644/5645/5646, PXIe-5820/5840/5841 **Lock the NI-RFSA device to its onboard clock.**PXIe-5841 with PXIe-5655 **Lock to the PXIe-5655 onboard clock. Connect the REF OUT connector on the PXIe-5655 to the PXIe-5841 REF IN connector.**PXIe-5842 **Lock to the PXIe-5655 onboard clock. Cables between modules are required as shown in the User Manual for the instrument.**PXIe-5860 **Lock to the PXIe-5860 onboard clock. | + +--------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ReferenceClockSource.REF_IN` | **PXI-5661 **NI-RFSA locks the NI-RFSA device to the signal at the external FREQ REF IN connector on the PXI-5600**PXIe-5663/5663E **Connect the external signal to the PXI/PXIe-5652 REF IN/OUT connector. Connect the REF OUT2 connector (if it exists) on the PXI/PXIe-5652 to the CLK IN terminal on the PXIe-5622. On versions of the PXIe-5663/5663E that lack a REF OUT2 connector on the PXI/PXIe-5652, this configuration can only be used in external digitizer mode.**PXIe-5665 **Connect the external signal to the PXIe-5653 REF IN connector. Connect the 100 MHz REF OUT terminal on the PXIe-5653 to the CLK IN terminal on the PXIe-5622. If your external clock signal frequency is set to a frequency other than 10 MHz, set the :py:attr:`nirfsa.Session.ref_clock_rate` property according to the frequency of your external clock signal.**PXIe-5667 **Connect the external signal to the PXIe-5653 REF IN connector. Connect the 100 MHz REF OUT terminal on the PXIe-5653 to the CLK IN terminal on the PXIe-5622, and connect the 10 MHZ REF OUT terminal on the PXIe-5653 to the REF/LO IN connector on the PXIe-5694. If your external clock signal frequency is set to a frequency other than 10 MHz, set the :py:attr:`nirfsa.Session.ref_clock_rate` property according to the frequency of your external clock signal.**PXIe-5668 **Connect the external signal to the PXIe-5653 REF IN connector. Connect the LO2 OUT on the PXIe-5606 to the CLK IN connector on the PXIe-5622. If your external clock signal frequency is set to a frequency other than 10 MHz, set the **clock rate** parameter according to the frequency of your external clock signal.**PXIe-5694 **Connect the Reference Clock signal to the REF/LO IN connector on the PXIe-5694 front panel.**PXIe-5644/5645/5646, PXIe-5820/5840/5841 **Lock the NI-RFSA device to the signal at the external REF IN connector.**PXIe-5830/5831 **For the PXIe-5830, connect the PXIe-5820 REF IN connector to the PXIe-3621 REF OUT connector. For the PXIe-5831, connect the PXIe-5820 REF IN connector to the PXIe-3622 REF OUT connector. For the PXIe-5830, lock the external signal to the PXIe-3621 REF IN connector. For the PXIe-5831/5832, lock the external signal to the PXIe-3622 REF IN connector.**PXIe-5831/5832 with PXIe-5653 **Connect the PXIe-5820 REF IN connector to the PXIe-3622 REF OUT connector. Connect the PXIe-5653 REF OUT (10 MHz) connector to the PXIe-3622 REF IN connector. Lock the external signal to the PXIe-5653 REF IN connector.**PXIe-5841 with PXIe-5655 **Lock to the signal at the REF IN connector on the associated PXIe-5655. Connect the REF OUT connector on the PXIe-5655 to the PXIe-5841 REF IN connector. **PXIe-5842 **Lock to the signal at the REF IN connector on the associated PXIe-5655. Cables between modules are required as shown in the User Manual for the instrument. PXIe-5860 Lock to the signal at the REF IN connector on the PXIe-5860. | + +--------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ReferenceClockSource.PXI_CLK` | **PXI-5661 **NI-RFSA locks the NI-RFSA device to the PXI backplane clock using the PXI-5600. You must connect the PXI 10 MHz connector to the REF IN connector on the PXI-5600 front panel to use this option. **PXIe-5668 **Lock the PXIe-5653 to the PXI backplane clock. Connect the PXIe-5606 LO2 OUT to the LO2 IN connector on the PXIe-5624.**PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667, PXIe-5694, PXIe-5820/5830/5831/5831/5832 with PXIe-5653/5840/5840 with PXIe-5653/5841/5841 with PXIe-5655/5842/5860 **Lock the device to the PXI backplane clock. | + +--------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ReferenceClockSource.CLK_IN` | **PXI-5661 **This configuration does not apply to the PXI-5661.**PXIe-5663/5663E **NI-RFSA locks the PXIe-5663/5663E to an external 10 MHz signal. Connect the external signal to the CLK IN connector on the PXIe-5622, and connect the PXIe-5622 CLK OUT connector to the FREQ REF IN connector on the PXI/PXIe-5652.**PXIe-5665 **NI-RFSA locks the PXIe-5665 to an external 100 MHz signal. Connect the external signal to the CLK IN connector on the PXIe-5622, and connect the PXIe-5622 CLK OUT connector to the REF IN connector on the PXIe-5653. Set the :py:attr:`nirfsa.Session.ref_clock_rate` property to 100 MHz.**PXIe-5667 **NI-RFSA locks the PXIe-5667 to an external 100 MHz signal. Connect the external signal to the CLK IN connector on the PXIe-5622, and connect the PXIe-5622 CLK OUT connector to the REF IN connector on the PXIe-5653. Connect the 10 MHZ REF OUT terminal on the PXIe-5653 to the REF/LO IN connector on the PXIe-5694. Set the :py:attr:`nirfsa.Session.ref_clock_rate` property to 100 MHz.**PXIe-5668 **Lock the PXIe-5668 to an external 100 MHz signal. Connect the external signal to the CLK IN connector on the PXIe-5624, and connect the PXIe-5624 CLK OUT connector to the REF IN connector on the PXIe-5653. Set the **clock rate** parameter to 100 MHz.**PXIe-5644/5645/5646, PXIe-5820/5830/5831/5831/5832 with PXIe-5653/5840/5840 with PXIe-5653/5841/5841 with PXIe-5655/5842/5860 **This configuration does not apply. | + +--------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ReferenceClockSource.PXI_CLK_MASTER` | **PXIe-5831/5832 with PXIe-5653 **NI-RFSA configures the PXIe-5653 to export the Reference clock and configures the PXIe-5820 and PXIe-3622 to use PXI_Clk as the Reference Clock source. Connect the PXIe-5653 REF OUT (10 MHz) connector to the PXI chassis REF IN connector.**PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5644/5645/5646, PXIe-5820/5840/5841/5841 with PXIe-5655 /5842/5860**This configuration does not apply. | + +--------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ReferenceClockSource.REF_IN_2` | **PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5644/5645/5646, PXIe-5820/5830/5831/5831/5832 with PXIe-5653/5840/5841/5841 with PXIe-5655 **This configuration does not apply. | + +--------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+----------------------------+ + | Characteristic | Value | + +=======================+============================+ + | Datatype | enums.ReferenceClockSource | + +-----------------------+----------------------------+ + | Permissions | read-write | + +-----------------------+----------------------------+ + | Repeated Capabilities | None | + +-----------------------+----------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Clocking:Ref Clock Source** + - C Attribute: **NIRFSA_ATTR_REF_CLOCK_SOURCE** + +ref_to_ref_trigger_holdoff +-------------------------- + + .. py:attribute:: ref_to_ref_trigger_holdoff + + Specifies the minimum time, in seconds, that must elapse between Reference Triggers of two records. + + The device does not recognize the Reference Trigger of the next record before this minimum time elapses. + + **Units:**: seconds + + **Default Value**: 0 + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-------------------------------------------------------------+ + | Characteristic | Value | + +=======================+=============================================================+ + | Datatype | hightime.timedelta, datetime.timedelta, or float in seconds | + +-----------------------+-------------------------------------------------------------+ + | Permissions | read-write | + +-----------------------+-------------------------------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+-------------------------------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Ref:Advanced:Ref To Ref Trigger Holdoff (s)** + - C Attribute: **NIRFSA_ATTR_REF_TO_REF_TRIGGER_HOLDOFF** + +ref_trigger_delay +----------------- + + .. py:attribute:: ref_trigger_delay + + Specifies the trigger delay time, in seconds. + + The trigger delay time is the length of time the IF digitizer waits after it receives the trigger before it asserts the Reference Event. + + **Units:**: seconds + + **Default Value**: 0 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-------------------------------------------------------------+ + | Characteristic | Value | + +=======================+=============================================================+ + | Datatype | hightime.timedelta, datetime.timedelta, or float in seconds | + +-----------------------+-------------------------------------------------------------+ + | Permissions | read-write | + +-----------------------+-------------------------------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+-------------------------------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Ref:Advanced:Ref Trigger Delay (s)** + - C Attribute: **NIRFSA_ATTR_REF_TRIGGER_DELAY** + +ref_trigger_minimum_quiet_time +------------------------------ + + .. py:attribute:: ref_trigger_minimum_quiet_time + + Specifies a time duration, in seconds, for which the signal must be quiet before the device arms the trigger. + + The signal is quiet when it is below the trigger level if the trigger slope, specified by the :py:attr:`nirfsa.Session.iq_power_edge_ref_trigger_slope` property, is set to :py:data:`~nirfsa.ReferenceTriggerIqPowerEdgeSlope.RISING` or when it is above the trigger level if the trigger slope is set to :py:data:`~nirfsa.ReferenceTriggerIqPowerEdgeSlope.FALLING`. + + By default, this value is set to 0, which means the device does not wait for a quiet time before arming the trigger. This property is useful to trigger the acquisition on signals containing repeated bursts, but for which each burst may have large changes in signal power within itself. By configuring the minimum quiet time to the time between bursts, you can ensure that the trigger occurs at the beginning of a burst rather than at the signal power change within a burst. + + **Default Value**: 0 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-------------------------------------------------------------+ + | Characteristic | Value | + +=======================+=============================================================+ + | Datatype | hightime.timedelta, datetime.timedelta, or float in seconds | + +-----------------------+-------------------------------------------------------------+ + | Permissions | read-write | + +-----------------------+-------------------------------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+-------------------------------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Ref:Minimum Quiet Time** + - C Attribute: **NIRFSA_ATTR_REF_TRIGGER_MINIMUM_QUIET_TIME** + +ref_trigger_osp_delay_enabled +----------------------------- + + .. py:attribute:: ref_trigger_osp_delay_enabled + + Specifies whether the digitizer OSP block delays Reference Triggers, along with the data samples, moving through the OSP block or if the Reference Triggers bypass the OSP block and are processed immediately. + + Enabling this property requires the following equipment configurations: + + - All digitizers being used must be the same model and hardware revision. + - All digitizers must use the same firmware. + - All digitizers must be configured with the same I/Q rate. + - All devices must use the same signal path. + + **PXIe-5663/5663E**: Read the value of the :py:attr:`nirfsa.Session.IF_FILTER` property to determine the IF filters used by the PXIe-5663/5663E. + + **PXIe-5665/5667/5668**:Refer to the device-specific information in the :py:attr:`nirfsa.Session.device_instantaneous_bandwidth` property to determine the IF filters used by the PXIe-5665/5667/5668. If you set the :py:attr:`nirfsa.Session.fft_width` property, refer to the device-specific information for this property and the :py:attr:`nirfsa.Session.device_instantaneous_bandwidth` property to determine the IF filters used. For frequencies less than 3.6 GHz, set the :py:attr:`nirfsa.Session.rf_preamp_enabled` to the same value for all devices. + + **PXIe-5665 14 GHz**: Set the :py:attr:`nirfsa.Session.downconverter_preselector_enabled` to the same value for all devices. + + If the I/Q rate is set programmatically for I/Q acquisitions, the following properties should be identical for the best device synchronization: + + - :py:attr:`nirfsa.Session.digital_if_equalization_enabled` + - :py:attr:`nirfsa.Session.spectrum_osp_sampling_ratio` + + For spectrum acquisitions, the following properties should be identical for the best device synchronization: + + - :py:attr:`nirfsa.Session.spectrum_span` + - :py:attr:`nirfsa.Session.resolution_bandwidth_type` + - :py:attr:`nirfsa.Session.digital_if_equalization_enabled` + - :py:attr:`nirfsa.Session.spectrum_osp_sampling_ratio` + + For more information about the digitizer OSP block and Reference Triggers, refer to the following topics in the *NI High-Speed Digitizers Help*: + + - NI 5622 Onboard Signal Processing (OSP) + - NI 5142 Onboard Signal Processing (OSP) + - NI PXIe-5622 Trigger Sources + - NI PXI-5142 Trigger Sources + - NI PXIe-5622 Block Diagram + - NI PXI-5142 Trigger Sources + + **Default Value**: :py:data:`~nirfsa.ReferenceTriggerOspDelayEnabled.ENABLED` + + **Supported Devices**:PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841 + + **Defined Values**: + + +-------------------------------------------------------------+-----------------------------------------------+ + | Name | Description | + +=============================================================+===============================================+ + | :py:data:`~nirfsa.ReferenceTriggerOspDelayEnabled.DISABLED` | Disables OSP delay for the Reference Trigger. | + +-------------------------------------------------------------+-----------------------------------------------+ + | :py:data:`~nirfsa.ReferenceTriggerOspDelayEnabled.ENABLED` | Enables OSP delay for the Reference Trigger. | + +-------------------------------------------------------------+-----------------------------------------------+ + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+---------------------------------------+ + | Characteristic | Value | + +=======================+=======================================+ + | Datatype | enums.ReferenceTriggerOspDelayEnabled | + +-----------------------+---------------------------------------+ + | Permissions | read-write | + +-----------------------+---------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+---------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Ref:Advanced:OSP Delay Enabled** + - C Attribute: **NIRFSA_ATTR_REF_TRIGGER_OSP_DELAY_ENABLED** + +ref_trigger_pretrigger_samples +------------------------------ + + .. py:attribute:: ref_trigger_pretrigger_samples + + Specifies the number of pretrigger samples the samples acquired before the Reference Trigger is received to be acquired per record. + + **Default Value**: 0 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.configure_digital_edge_ref_trigger` + - :py:meth:`nirfsa.Session.configure_software_edge_ref_trigger` + - :py:meth:`nirfsa.Session.ConfigureIqPowerEdgeRefTrigger` + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | int | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Ref:Pretrigger Samples** + - C Attribute: **NIRFSA_ATTR_REF_TRIGGER_PRETRIGGER_SAMPLES** + +ref_trigger_terminal_name +------------------------- + + .. py:attribute:: ref_trigger_terminal_name + + Returns the fully qualified signal name as a string. + + **Default Values**: + + **PXIe-5830/5831/5832**: /BasebandModule/ai/0/RefTrigger, where *BasebandModule* is the name of your baseband module of your device in MAX. + + **PXIe-5820/5840/5841/5842**: /ModuleName/ai/0/RefTrigger, where *ModuleName* is the name of your device in MAX. + + **PXIe-5860**: /ModuleName/ai/ChannelNumber/RefTrigger, where *ModuleName* is the name of your device in MAX and *ChannelNumber* is the channel number (0 or 1). + + **All other devices**: /DigitizerName/RefTrigger, where *DigitizerName* is the name associated with your digitizer module in MAX. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.get_terminal_name` + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Ref:Terminal Name** + - C Attribute: **NIRFSA_ATTR_REF_TRIGGER_TERMINAL_NAME** + +ref_trigger_type +---------------- + + .. py:attribute:: ref_trigger_type + + Specifies whether you want the Reference Trigger to be a digital edge, I/Q power edge, or software trigger. + + **Default Value**: :py:data:`~nirfsa.ReferenceTriggerType.NONE` + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **Defined Values**: + + +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +========================================================+=============================================================================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.ReferenceTriggerType.NONE` | No Reference Trigger is configured. | + +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ReferenceTriggerType.DIGITAL_EDGE` | The Reference Trigger is not asserted until a digital edge is detected. The source of the digital edge is specified with the :py:attr:`nirfsa.Session.digital_edge_ref_trigger_source` property. | + +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ReferenceTriggerType.IQ_POWER_EDGE` | The Reference Trigger is asserted when the signal is changing past the level specified with the slope (rising or falling) configured with the :py:attr:`nirfsa.Session.iq_power_edge_ref_trigger_slope` property. | + +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ReferenceTriggerType.SOFTWARE_EDGE` | The Reference Trigger is not asserted until a software trigger occurs. You can assert the software trigger by calling the :py:meth:`nirfsa.Session.send_software_edge_trigger` method and selecting :py:data:`~nirfsa.NIRFSA_VAL_REF_TRIGGER` as the **trigger** parameter. | + +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.ReferenceTriggerType.IQ_ANALOG_EDGE` | The Reference Trigger is asserted when the I or Q signal is changed past the level specified with the slope configured with the :py:attr:`nirfsa.Session.IQ_ANALOG_EDGE_REF_TRIGGER_SLOPE` property. This value is valid only for PXIe-5644/5645 devices. | + +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+----------------------------+ + | Characteristic | Value | + +=======================+============================+ + | Datatype | enums.ReferenceTriggerType | + +-----------------------+----------------------------+ + | Permissions | read-write | + +-----------------------+----------------------------+ + | Repeated Capabilities | None | + +-----------------------+----------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Ref:Type** + - C Attribute: **NIRFSA_ATTR_REF_TRIGGER_TYPE** + +resolution_bandwidth +-------------------- + + .. py:attribute:: resolution_bandwidth + + Specifies the resolution along the x-axis of the spectrum. + + NI-RFSA uses the resolution bandwidth value to determine the acquisition size. If specified, the :py:attr:`nirfsa.Session.number_of_spectral_lines` property value overrides this value. + + **Units**: hertz (Hz) + + **Default Value**: 100 kHz + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.ConfigureResolutionBandwidth` + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Spectrum:Resolution Bandwidth (Hz)** + - C Attribute: **NIRFSA_ATTR_RESOLUTION_BANDWIDTH** + +resolution_bandwidth_type +------------------------- + + .. py:attribute:: resolution_bandwidth_type + + Specifies how the :py:attr:`nirfsa.Session.resolution_bandwidth` property is expressed. + + **Default Value**: :py:data:`~nirfsa.SpectrumResolutionBandwidthType.THREE_DECIBELS` + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +-------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +===============================================================================+==========================================================================================================================================================+ + | :py:data:`~nirfsa.SpectrumResolutionBandwidthType.THREE_DECIBELS` | Defines the resolution bandwidth (RBW) in terms of the 3 dB bandwidth of the window specified by the :py:attr:`nirfsa.Session.fft_window_type` property. | + +-------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumResolutionBandwidthType.SIX_DECIBELS` | Defines the RBW in terms of the 6 dB bandwidth of the window specified by the :py:attr:`nirfsa.Session.fft_window_type` property. | + +-------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumResolutionBandwidthType.BIN_WIDTH` | Defines the RBW in terms of the display resolution, which is the ratio of the sampling frequency to the number of samples that you acquire. | + +-------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumResolutionBandwidthType.EQUIVALENT_NOISE_BANDWIDTH` | Defines the RBW in terms of the equivalent noise bandwidth (ENBW) of the window specified by the :py:attr:`nirfsa.Session.fft_window_type` property. | + +-------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+---------------------------------------+ + | Characteristic | Value | + +=======================+=======================================+ + | Datatype | enums.SpectrumResolutionBandwidthType | + +-----------------------+---------------------------------------+ + | Permissions | read-write | + +-----------------------+---------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+---------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Spectrum:Resolution Bandwidth Type** + - C Attribute: **NIRFSA_ATTR_RESOLUTION_BANDWIDTH_TYPE** + +rf_attenuation_step_size +------------------------ + + .. py:attribute:: rf_attenuation_step_size + + Specifies the step size for the RF attenuation level. + + The actual RF attenuation is coerced up to the next highest multiple of this step size. You can also set this value to change the step size for the device within the supported device precision and configuration. + + **PXI-5600**: The device configuration supports only the following attenuation step size values: 10, 20, 30, 40, and 50. + + **PXIe-5601**: The attenuation is calculated based on the actual calibrated value closest to the desired value, so the step size varies as the actual gain values vary between consecutive attenuation settings. + + **PXIe-5603**: The device configuration supports attenuation changes in 1 dB steps. + + **PXIe-5605**: The available attenuation step size depends on the specified center frequency. In the high band signal path (input frequencies greater than 3.6 GHz), the only available attenuation is the step attenuator that you can change in 5 dB steps. In the low band signal path (input frequencies less than or equal to 3.6 GHz), an additional 31 dB of solid-state attenuation is available in 1 dB steps. The 5 dB default value indicates that, even when in the low band signal path, NI-RFSA changes the attenuation in 5 dB steps using only the mechanical attenuator. You can use this property to affect when the device changes the attenuation settings. To use the solid-state attenuation in the low band signal path, change the step size to a value other than a multiple of 5 (for example, a step size of 1 dB). If you use a value other than a multiple of 5 while in the high band of the PXIe-5605, NI-RFSA returns an error. + + **Units**: dB + + **Valid Values:** + + **PXI-5600/5661**: 10, 20, 30, 40, and 50 + + **PXIe-5601/5663/5663E**: 0.0 to 93.0, continuous + + **PXIe-5603/5665 (3.6 GHz)**: 1.0 to 74.0, in 1 dB steps + + **PXIe-5605/5665 (14 GHz) (low band), PXIe-5606/5668 (low band)**: 1.0 to 106.0, in 1 dB steps + + **PXIe-5605/5665 (14 GHz) (high band), PXIe-5606/5668 (high band)**: 5.0 to 75.0, in 5 dB steps + + **PXIe-5667 (3.6 GHz) using the PXIe-5693 RF preselector low frequency bypass path**: 1.0 to 74.0, in 1 dB steps + + **PXIe-5667 (3.6 GHz) using the PXIe-5693 RF preselector filter path**: 1.0 + + **PXIe-5667 (7 GHz) using the PXIe-5693 preselector low frequency bypass path**: 1.0 to 106.0 in 1 dB steps + + **PXIe-5667 (7 GHz) using the PXIe-5693 RF preselector filter path**: 1.0 + + **Default Value:** + + **PXI-5600/5661**: 10.0 + + **PXIe-5601/5663/5663E**: 0.0 + + **PXIe-5603/5665 (3.6 GHz)**: 1.0 + + **PXIe-5605/5665 (14 GHz), PXIe-5606/5668**: 5.0 + + **PXIe-5667**: 1.0 + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Advanced:RF Attenuation Step Size (dB)** + - C Attribute: **NIRFSA_ATTR_RF_ATTENUATION_STEP_SIZE** + +rf_high_pass_filtering +---------------------- + + .. py:attribute:: rf_high_pass_filtering + + Specifies the maximum corner frequency of the highpass filter in the RF signal path. + + The device uses the highest frequency highpass filter option below or equal to the value you specify and returns a coerced value. Specifying a value of 0 disables highpass filtering. + + For multispan acquisitions, the device uses the appropriate filter for each subspan during acquisition, depending on the details of your application and the value you specify. In multispan acquisition spectrum applications, this property returns the value you specified rather than a coerced value if multiple highpass filters are used during the acquisition. + + The PXIe-5606 features highpass filters at 1.35 GHz and 2.2 GHz. + + **Valid Values**: 0 to 26.5 + + **Default Value**: 0 + + **Supported Devices**: PXIe-5606, PXIe-5668 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Advanced:RF Highpass Filtering** + - C Attribute: **NIRFSA_ATTR_RF_HIGH_PASS_FILTERING** + +rf_out_lo_export_enabled +------------------------ + + .. py:attribute:: rf_out_lo_export_enabled + + Specifies whether to enable the RF OUT LO OUT terminal on the PXIe-5840/5841. + + When this property is enabled, if the :py:attr:`nirfsa.Session.lo_source` property is set to :py:data:`~nirfsa.LoSource.LO_IN` and you do not set the :py:attr:`nirfsa.Session.lo_frequency` or :py:attr:`nirfsa.Session.downconverter_center_frequency` properties, NI-RFSA rounds the LO frequency to approximately an LO step size as if the source was :py:data:`~nirfsa.LoSource.ONBOARD`. This ensures that when you configure NI-RFSA and NI-RFSG with compatible settings that result in the same LO frequency, the rounding also is compatible. + + **Default Value:**: :py:data:`~nirfsa.RfOutLoExport.UNSPECIFIED` + + **Supported Devices**: PXIe-5840/5841/5842 + + **Defined Values**: + + +----------------------------------------------+----------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +==============================================+================================================================================================================+ + | :py:data:`~nirfsa.RfOutLoExport.DISABLED` | The LO signal is not exported from the RF OUT LO OUT terminal. | + +----------------------------------------------+----------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.RfOutLoExport.ENABLED` | The LO signal is exported from the RF OUT LO OUT terminal. | + +----------------------------------------------+----------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.RfOutLoExport.UNSPECIFIED` | The LO signal may or may not be exported to the RF OUT LO OUT terminal, because NI-RFSG may be controlling it. | + +----------------------------------------------+----------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+---------------------+ + | Characteristic | Value | + +=======================+=====================+ + | Datatype | enums.RfOutLoExport | + +-----------------------+---------------------+ + | Permissions | read-write | + +-----------------------+---------------------+ + | Repeated Capabilities | None | + +-----------------------+---------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:RF Out LO Export Enabled** + - C Attribute: **NIRFSA_ATTR_RF_OUT_LO_EXPORT_ENABLED** + +rf_preamp_enabled +----------------- + + .. py:attribute:: rf_preamp_enabled + + Specifies whether the RF preamplifier is enabled in the system. + + **PXIe-5667, PXIe-5644/5645/5646, PXIe-5830/5831/5840/5841/5842**: The :py:data:`~nirfsa.EnableRfPreamp.AUTOMATIC` value enables the RF preamplifier based on the value of the :py:attr:`nirfsa.Session.reference_level` property and the center frequency. Except on the PXIe-5830/5831/5832, NI-RFSA coerces this property from :py:data:`~nirfsa.EnableRfPreamp.AUTOMATIC` to the selected value. + + ---- + **Note** + For the PXIe-5840/5841, the automatically selected value may not be optimal for all measurements. At some reference levels, :py:data:`~nirfsa.EnableRfPreamp.ENABLED` may improve the noise floor while :py:data:`~nirfsa.EnableRfPreamp.DISABLED` may improve distortion. + + ---- + + **PXIe-5667**: The :py:data:`~nirfsa.EnableRfPreamp.AUTOMATIC` value is supported only when the :py:attr:`nirfsa.Session.LOW_FREQUENCY_BYPASS_ENABLED` property is set to :py:data:`~nirfsa.EnableRfPreamp.DISABLED`. If the reference level is greater than -25 dBm, NI-RFSA disables the preamplifier. If the reference level is less than or equal to -25 dBm, NI-RFSA sets the :py:attr:`nirfsa.Session.rf_preamp_enabled` property to :py:data:`~nirfsa.EnableRfPreamp.ENABLED_WHEN_IN_SIGNAL_PATH`. + + **PXIe-5668 with PXIe-5698**: If you set this property to :py:attr:`nirfsa.Session.rf_preamp_enabled`, only the preamplifier on the PXIe-5698 is used, and the preamplifier on the PXIe-5668 remains disabled. + + **Default Value**: + + **PXIe-5644/5645/5646, PXIe-5830/5831/5832/5840/5841/5842**: :py:data:`~nirfsa.EnableRfPreamp.AUTOMATIC` + + **All other devices**: :py:data:`~nirfsa.EnableRfPreamp.DISABLED` + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5698, PXIe-5830/5831/5832/5840/5841/5842 + + **Defined Values**: + + +---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +===============================================================+==================================================================================================================================================================================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.EnableRfPreamp.DISABLED` | Disables the RF preamplifier. | + +---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.EnableRfPreamp.ENABLED_WHEN_IN_SIGNAL_PATH` | Enables the RF preamplifier when the RF preamplifier is present in the signal path and disables the preamplifier when it is not in the signal path. Only devices with an RF preamplifier on the downconverter and an RF preselector support this option. Use the :py:attr:`nirfsa.Session.rf_preamp_present` property to determine whether the downconverter has a preamplifier. | + +---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.EnableRfPreamp.ENABLED` | Enables the RF preamplifier. If the RF preamplifier is not in a signal path, NI-RFSA returns an error. Select the :py:data:`~nirfsa.EnableRfPreamp.ENABLED_WHEN_IN_SIGNAL_PATH` value whenever possible to avoid an error. | + +---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.EnableRfPreamp.AUTOMATIC` | Automatically enables the RF preamplifier based on the value of the :py:attr:`nirfsa.Session.reference_level` property. This value is valid only for the PXIe-5644/5645/5646, PXIe-5667, and PXIe-5830/5831/5832/5840/5841. | + +---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + The following table lists the characteristics of this property. + + +-----------------------+----------------------+ + | Characteristic | Value | + +=======================+======================+ + | Datatype | enums.EnableRfPreamp | + +-----------------------+----------------------+ + | Permissions | read-write | + +-----------------------+----------------------+ + | Repeated Capabilities | None | + +-----------------------+----------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Advanced:Preamp Enabled** + - C Attribute: **NIRFSA_ATTR_RF_PREAMP_ENABLED** + +rf_preamp_present +----------------- + + .. py:attribute:: rf_preamp_present + + Returns whether an RF preamplifier is available on the RF downconverter module. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842 + + **Defined Values**: + + +-------+------------------------------------------------------+ + | Name | Description | + +=======+======================================================+ + | True | The device has an enabled RF preamplifier available. | + +-------+------------------------------------------------------+ + | False | The device has no RF preamplifier available. | + +-------+------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | bool | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Characteristics:RF Preamp Present** + - C Attribute: **NIRFSA_ATTR_RF_PREAMP_PRESENT** + +selected_path +------------- + + .. py:attribute:: selected_path + + Specifies which path to configure to acquire a signal. + + **Default Value**: "" (empty string) + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | str | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Advanced:Selected Path** + - C Attribute: **NIRFSA_ATTR_SELECTED_PATH** + +selected_ports +-------------- + + .. py:attribute:: selected_ports + + Specifies the port to configure. + + ---- + **Note** + When using RF list mode, ports cannot be shared with NI-RFSA. + + ---- + + **Valid Values**: + + **PXIe-5644/5645/5646, PXIe-5820/5840/5841/5842/5860**: "" (empty string) + + **PXIe-5830**: if0, if1 + + **PXIe-5831/5832**: if0, if1, rf <0-1> port , where + + *0-1* indicates one (*0*) or two (*1*) mmRH-5582 connections and + + *x* is the port number on the mmRH-5582 front panel. + + **Default Value:** + + **PXIe-5830/5831/5832:**: if1 + + **PXIe-5644/5645/5646, PXIe-5820/5840/5841/5842/5860**: "" (empty string) + + **Supported Devices**: PXIe-5644/5645/5646, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + :py:attr:`nirfsa.Session.available_ports` + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | str | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Advanced:Selected Ports** + - C Attribute: **NIRFSA_ATTR_SELECTED_PORTS** + +serial_number +------------- + + .. py:attribute:: serial_number + + Returns the serial number of the RF downconverter module. + + ---- + **Note** + For the PXIe-5644/5645/5646 and PXIe-5820/5840/5841, this property returns the serial number of the VST module. For the PXIe-5830/5831/5832, this property returns the serial number of the PXIe-3621/3622. + + ---- + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Characteristics:Serial Number** + - C Attribute: **NIRFSA_ATTR_SERIAL_NUMBER** + +signal_bandwidth +---------------- + + .. py:attribute:: signal_bandwidth + + Specifies the bandwidth of the input signal around the :py:attr:`nirfsa.Session.iq_carrier_frequency`. + + This value must be less than or equal to (0.8 7 [I/Q rate](:py:attr:`nirfsa.Session.iq_rate`.html)). + + NI-RFSA defines *signal bandwidth* as twice the maximum I/Q signal deviation from 0 Hz. Usually, the baseband signal center frequency is 0 Hz. In such cases, the signal bandwidth is simply the baseband signal's minimum frequency subtracted from its maximum frequency, or *f* < sub>max - *f*< sub>min. + + If you do not set this property, NI-RFSA uses the maximum available signal bandwidth. Depending on your device settings, setting this property enables certain optimizations. Based on the specified signal bandwidth, NI-RFSA decides the minimum equalized bandwidth and equalizer gain. + + ---- + **Note** + You must set this property to enable the :py:attr:`nirfsa.Session.downconverter_frequency_offset_mode` property. + + ---- + + Ensure you set the signal bandwidth wide enough to encompass all significant anticipated input power. In cases where NI-RFSA optimizes the input gain based on the signal bandwidth, significant input power outside the signal bandwidth can lead to clipping and associated overflow warnings if you do not have enough margin in your [reference level.](:py:attr:`nirfsa.Session.reference_level`.html) + + **Units**: Hz + + **Default Value**: 0 Hz + + **Supported Devices:**: PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `PXIe-5830 Frequency and Bandwidth Selection `_ + + `PXIe-5831/5832 Frequency and Bandwidth Selection `_ + + `PXIe-5841 Frequency and Bandwidth Selection `_ + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:IQ:Signal Bandwidth (Hz)** + - C Attribute: **NIRFSA_ATTR_SIGNAL_BANDWIDTH** + +signal_conditioning_enabled +--------------------------- + + .. py:attribute:: signal_conditioning_enabled + + Specifies whether all signal conditioning is enabled on the PXIe-5694. + + ---- + **Note** + If you set this property to :py:data:`~nirfsa.SignalConditioningEnabled.BYPASSED`, NI-RFSA bypasses all signal conditioning, prevents any signal downconversion, and fixes the values for :py:attr:`nirfsa.Session.downconverter_gain` property, the :py:attr:`nirfsa.Session.device_instantaneous_bandwidth` property, and the :py:attr:`nirfsa.Session.if_filter_bandwidth` property. + + ---- + + **Default Value**: :py:data:`~nirfsa.SignalConditioningEnabled.ENABLED` + + **Supported Devices**: PXIe-5694 + + **Defined Values**: + + +-------------------------------------------------------+-----------------------------------+ + | Name | Description | + +=======================================================+===================================+ + | :py:data:`~nirfsa.SignalConditioningEnabled.ENABLED` | Enables signal conditioning. | + +-------------------------------------------------------+-----------------------------------+ + | :py:data:`~nirfsa.SignalConditioningEnabled.BYPASSED` | Bypasses all signal conditioning. | + +-------------------------------------------------------+-----------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+---------------------------------+ + | Characteristic | Value | + +=======================+=================================+ + | Datatype | enums.SignalConditioningEnabled | + +-----------------------+---------------------------------+ + | Permissions | read-write | + +-----------------------+---------------------------------+ + | Repeated Capabilities | None | + +-----------------------+---------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Signal Path:Advanced:NI 5694:Signal Conditioning Enabled** + - C Attribute: **NIRFSA_ATTR_SIGNAL_CONDITIONING_ENABLED** + +smooth_spectrum_enabled +----------------------- + + .. py:attribute:: smooth_spectrum_enabled + + Specifies that an optimized IF filtering selection is made at different spectrum frequency ranges during spectrum acquisition. + + The IF filter used depends on the configured RF center frequency, as shown in the following table. + + | Center Frequency | IF Filter | + |:--------------------|:----------| + | 0 Hz and <80 MHz | 300 kHz | + | 0 MHz | 50 MHz | + + ---- + **Note** + Setting this property to **Enabled** prevents you from setting :py:attr:`nirfsa.Session.if_filter_bandwidth` or :py:attr:`nirfsa.Session.device_instantaneous_bandwidth`. + + ---- + + **Default Value**: :py:data:`~nirfsa.SmoothSpectrumEnabled.DISABLED` + + **Supported Devices**: PXIe-5665/5668 + + **Defined Values**: + + +---------------------------------------------------+------------------------------+ + | Name | Description | + +===================================================+==============================+ + | :py:data:`~nirfsa.SmoothSpectrumEnabled.DISABLED` | Disables spectrum smoothing. | + +---------------------------------------------------+------------------------------+ + | :py:data:`~nirfsa.SmoothSpectrumEnabled.ENABLED` | Enables spectrum smoothing. | + +---------------------------------------------------+------------------------------+ + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+-----------------------------+ + | Characteristic | Value | + +=======================+=============================+ + | Datatype | enums.SmoothSpectrumEnabled | + +-----------------------+-----------------------------+ + | Permissions | read-write | + +-----------------------+-----------------------------+ + | Repeated Capabilities | None | + +-----------------------+-----------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Spectrum:Smooth Spectrum Enabled** + - C Attribute: **NIRFSA_ATTR_SMOOTH_SPECTRUM_ENABLED** + +spectrum_averaging_mode +----------------------- + + .. py:attribute:: spectrum_averaging_mode + + Specifies the averaging mode for the spectrum acquisition. + + **Default Value**: :py:data:`~nirfsa.SpectrumAveragingMode.NO` + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +====================================================+=======================================================================================================================================================================================================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.SpectrumAveragingMode.NO` | Configures NI-RFSA to perform no averaging on acquisitions. | + +----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumAveragingMode.RMS` | Configures NI-RFSA for root-mean-square (RMS) averaging. RMS averaging reduces signal fluctuations but not the noise floor. RMS averaging averages the energy, or power, of the signal. This averaging prevents noise floor reduction and gives averaged RMS quantities of single-channel measurements zero phase. RMS averaging for dual-channel measurements preserves important phase information. | + +----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumAveragingMode.VECTOR` | Configures NI-RFSA for vector averaging. Vector averaging reduces noise from synchronous signals. Vector averaging computes the average of complex quantities directly, which means that it allows separate averaging for real and imaginary parts. Complex averaging such as vector averaging reduces noise and usually requires a trigger to improve block-to-block phase coherence. | + +----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumAveragingMode.PEAK_HOLD` | Configures NI-RFSA for peak-hold averaging. Peak-hold averaging retains the RMS peak levels of the averaged quantities. The peak-hold averaging process performs peak-hold at each frequency bin separately to retain peak RMS levels from one FFT record to the next. | + +----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumAveragingMode.MIN_HOLD` | Configures NI-RFSA to perform no averaging on acquisitions. | + +----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumAveragingMode.SCALAR` | Configures NI-RFSA to perform no averaging on acquisitions. | + +----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.SpectrumAveragingMode.LOG` | Configures NI-RFSA to perform no averaging on acquisitions. | + +----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+-----------------------------+ + | Characteristic | Value | + +=======================+=============================+ + | Datatype | enums.SpectrumAveragingMode | + +-----------------------+-----------------------------+ + | Permissions | read-write | + +-----------------------+-----------------------------+ + | Repeated Capabilities | None | + +-----------------------+-----------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Spectrum:Averaging Mode** + - C Attribute: **NIRFSA_ATTR_SPECTRUM_AVERAGING_MODE** + +spectrum_number_of_averages +--------------------------- + + .. py:attribute:: spectrum_number_of_averages + + Specifies the number of acquisitions to average. + + The averaging process returns the final result after the number of averages is complete. + + **Default Value**: 10 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | int | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Spectrum:Number Of Averages** + - C Attribute: **NIRFSA_ATTR_SPECTRUM_NUMBER_OF_AVERAGES** + +spectrum_osp_sampling_ratio +--------------------------- + + .. py:attribute:: spectrum_osp_sampling_ratio + + Specifies the oversampling ratio used by the digitizer onboard signal processing (OSP) when you are in spectrum acquisition mode. This property allows you to acquire a larger bandwidth in hardware and reduce that bandwidth in software, decreasing the possibility of hardware data path overflows. + + **PXIe-5644/5645/5646**: The only valid value for this property is 1. + + **Default Value**: 1.0 + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Spectrum:Spectrum OSP Sampling Ratio** + - C Attribute: **NIRFSA_ATTR_SPECTRUM_OSP_SAMPLING_RATIO** + +spectrum_span +------------- + + .. py:attribute:: spectrum_span + + Specifies the frequency range of the computed spectrum in hertz (Hz). + + For example, if you specify a center frequency of 1 GHz and a span of 100 MHz, the spectrum ranges from 950 MHz to 1,050 MHz after zoom processing. This value may be coerced based on hardware settings and RF downconverter specifications. + + NI-RFSA performs multispan acquisitions by dividing the total requested span into equally sized subspans based on the device instantaneous bandwidth at the range of frequencies you specify. NI-RFSA combines these subspans to yield a multispan acquisition. You can use the :py:attr:`nirfsa.Session.fft_width` property to improve amplitude accuracy and avoid unwanted effects such as filter roll-off and spurs across the span you select. + + ---- + **Note** + If you configure the spectrum span to a value larger than the hardware instantaneous bandwidth, NI-RFSA performs multiple acquisitions and combines them into a spectrum of the size you requested. + + ---- + + ---- + **Note** + For the PXIe-5663/5663E/5665/5667/5668, NI-RFSA enables dithering by default. The dither noise can appear in your passband and affect measurements. Refer to the :py:attr:`nirfsa.Session.digitizer_dither_enabled` property for more information about dithering. + + ---- + + **PXIe-5663/5663E**: NI-RFSA does not support multispan acquisitions from frequency ranges that correspond with different instantaneous bandwidths. For example, you cannot configure a multispan acquisition that acquires one span from 110 MHz to 120 MHz and a second from 120 MHz to 130 MHz because the instantaneous bandwidth for frequencies above 120 MHz is different than instantaneous bandwidth for frequencies less than 120 MHz, which are 20 MHz and 10 MHz respectively. + + **PXIe-5665 (14 GHz)/5667 (7 GHz)**: If you enable the downconverter preselector filter, the device instantaneous bandwidth is only a typical specification. + + **Default Value**: 10 MHz + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5840/5841/5842/5860 + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.configure_spectrum_frequency` + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Spectrum:Span** + - C Attribute: **NIRFSA_ATTR_SPECTRUM_SPAN** + +start_to_ref_trigger_holdoff +---------------------------- + + .. py:attribute:: start_to_ref_trigger_holdoff + + Specifies the minimum time, in seconds, that must elapse after the Start Trigger is received before the device recognizes a Reference Trigger. + + **Units:** seconds + + **Default Value**: 0 + + **Supported Devices**: PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-------------------------------------------------------------+ + | Characteristic | Value | + +=======================+=============================================================+ + | Datatype | hightime.timedelta, datetime.timedelta, or float in seconds | + +-----------------------+-------------------------------------------------------------+ + | Permissions | read-write | + +-----------------------+-------------------------------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+-------------------------------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Ref:Advanced:Start To Ref Trigger Holdoff (s)** + - C Attribute: **NIRFSA_ATTR_START_TO_REF_TRIGGER_HOLDOFF** + +start_trigger_terminal_name +--------------------------- + + .. py:attribute:: start_trigger_terminal_name + + Returns the fully qualified signal name as a string. + + **Default Values**: + + **PXIe-5830/5831/5832**: /BasebandModule/ai/0/StartTrigger, where *BasebandModule* is the name of the baseband module of your device in MAX. + + **PXIe-5820/5840/5841/5842**: /ModuleName/ai/0/StartTrigger, where *ModuleName* is the name of your device in MAX. + + **PXIe-5860**: /ModuleName/ai/ChannelNumber/StartTrigger, where *ModuleName* is the name of your device in MAX and *ChannelNumber* is the channel number (0 or 1). + + **All other devices**: /DigitizerName/StartTrigger, where *DigitizerName* is the name associated with your digitizer module in MAX. + + **Supported Devices**: PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Events `_ + + **High-Level Methods**: + + - :py:meth:`nirfsa.Session.get_terminal_name` + + The following table lists the characteristics of this property. + + +-----------------------+-----------+ + | Characteristic | Value | + +=======================+===========+ + | Datatype | str | + +-----------------------+-----------+ + | Permissions | read only | + +-----------------------+-----------+ + | Repeated Capabilities | None | + +-----------------------+-----------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Start:Terminal Name** + - C Attribute: **NIRFSA_ATTR_START_TRIGGER_TERMINAL_NAME** + +start_trigger_type +------------------ + + .. py:attribute:: start_trigger_type + + Specifies whether you want the Start Trigger to be a digital edge or software trigger. + + ---- + **Note** + Set this property to :py:data:`~nirfsa.StartTriggerType.NONE` if you set the :py:attr:`nirfsa.Session.acquisition_type` property to :py:data:`~nirfsa.AcquisitionType.SPECTRUM` or if you set the **acquisitionType** parameter to :py:data:`~nirfsa.AcquisitionType.SPECTRUM` using the [cvi:py:meth:`nirfsa.Session.ConfigureAcquisitionType`](cvi:py:meth:`nirfsa.Session.ConfigureAcquisitionType`.html) method. + + ---- + + **Default Value**: :py:data:`~nirfsa.StartTriggerType.NONE` + + **Supported Devices**: PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Related Topics** + + `Triggers `_ + + **Defined Values**: + + +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Description | + +===================================================+========================================================================================================================================================================================================================================================================================+ + | :py:data:`~nirfsa.StartTriggerType.NONE` | No Start Trigger is configured. | + +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.StartTriggerType.DIGITAL_EDGE` | The Start Trigger is not asserted until a digital edge is detected. The source of the digital edge is specified with the :py:attr:`nirfsa.Session.digital_edge_start_trigger_source` property. | + +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :py:data:`~nirfsa.StartTriggerType.SOFTWARE_EDGE` | The Start Trigger is not asserted until a software trigger occurs. You can assert the software trigger by calling the :py:meth:`nirfsa.Session.send_software_edge_trigger` method and selecting :py:data:`~nirfsa.NIRFSA_VAL_START_TRIGGER` as the value of the **trigger** parameter. | + +---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. note:: One or more of the referenced methods are not in the Python API for this driver. + + .. note:: One or more of the referenced values are not in the Python API for this driver. Enums that only define values, or represent True/False, have been removed. + + The following table lists the characteristics of this property. + + +-----------------------+------------------------+ + | Characteristic | Value | + +=======================+========================+ + | Datatype | enums.StartTriggerType | + +-----------------------+------------------------+ + | Permissions | read-write | + +-----------------------+------------------------+ + | Repeated Capabilities | None | + +-----------------------+------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Triggers:Start:Type** + - C Attribute: **NIRFSA_ATTR_START_TRIGGER_TYPE** + +subspan_overlap +--------------- + + .. py:attribute:: subspan_overlap + + Use subspan overlap process to eliminate or reduce analyzer spurs. + + To enable this feature, specify a non-zero percentage overlap between consecutive subspans in a spectrum acquisition. + + If a value greater than 0 is specified, then for each spectral line in the resulting spectrum, the driver acquires data twice with slightly different hardware settings, so that the analyzer spurs, if any, are present at different frequencies in the two acquisitions. Typically, LO frequency is shifted between the acquisitions causing analyzer spurs that are relative to the LO frequency, to move from one frequency to another. Those spurs, which are present in only one of the acquisitions for each spectral line, get removed. + + The subspan overlap feature will not remove any spurs from the Device Under Test or modify the signal being measured; unlike the analyzer spurs, the spurs in the signal being measured stay at a constant frequency in the two acquisitions. + + ---- + **Note** + Subspan overlap process effectively is performing minimum averaging, which might reduce the measured noise floor level. NI-RFSA Spectrum Averaging can be enabled to minimize the effect of subspan overlap on the noise floor. + + ---- + + ---- + **Note** + NI-RFSA may apply further shifts to the specified value to accommodate fixed-frequency edges of components such as preselectors. + + ---- + + **Valid Values**: + + **PXIe-5665/5668**: 0 to < 100 + + **PXIe-5820/5830/5831/5832/5840/5841/5860**: 0 + + **PXIe-5842**: 0, 50 + + **Default Value**: 0 + + **Supported Devices**: PXIe-5665/5668, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + ---- + **Note** + Subspan overlap will not be supported by PXIe-5842, if RMM-5585 (54GHz Frequency Extension) is connected. + + ---- + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Acquisition:Spectrum:Subspan Overlap** + - C Attribute: **NIRFSA_ATTR_SUBSPAN_OVERLAP** + +supported_instrument_models +--------------------------- + + .. py:attribute:: supported_instrument_models + + Returns a comma-separated list of supported devices. + + **Default Value**: N/A + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXIe-5644/5645/5646, PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-------------+ + | Characteristic | Value | + +=======================+=============+ + | Datatype | list of str | + +-----------------------+-------------+ + | Permissions | read only | + +-----------------------+-------------+ + | Repeated Capabilities | None | + +-----------------------+-------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Inherent IVI Attributes:Driver Capabilities:Supported Instrument Models** + - C Attribute: **NIRFSA_ATTR_SUPPORTED_INSTRUMENT_MODELS** + +temperature_read_interval +------------------------- + + .. py:attribute:: temperature_read_interval + + Indicates the minimum time between temperature sensor readings in seconds. + + When you call the :py:meth:`nirfsa.Session.read_power_spectrum` method, the :py:meth:`nirfsa.Session.ReadIqSingleRecordComplexF64` method, or the :py:meth:`nirfsa.Session._initiate` method, NI-RFSA checks whether at least the amount of time specified by this property has elapsed before reading the hardware temperature. + + ---- + **Note** + NI-RFSA ignores this property if you call the :py:meth:`nirfsa.Session.perform_thermal_correction` method or read the :py:attr:`nirfsa.Session.downconverter_gain` property. + + ---- + + **Default Value**: 30 seconds + + **Supported Devices**: PXI-5600, PXIe-5601/5603/5605/5606 (external digitizer mode), PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5693/5694/5698, PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+-------------------------------------------------------------+ + | Characteristic | Value | + +=======================+=============================================================+ + | Datatype | hightime.timedelta, datetime.timedelta, or float in seconds | + +-----------------------+-------------------------------------------------------------+ + | Permissions | read-write | + +-----------------------+-------------------------------------------------------------+ + | Repeated Capabilities | None | + +-----------------------+-------------------------------------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Device Characteristics:Temperature Read Interval** + - C Attribute: **NIRFSA_ATTR_TEMPERATURE_READ_INTERVAL** + +thermal_correction_headroom_range +--------------------------------- + + .. py:attribute:: thermal_correction_headroom_range + + Specifies the expected thermal operating range of the instrument from the self-calibration temperature, in degrees Celsius, returned from the :py:attr:`nirfsa.Session.device_temperature` property. + + For example, if this property is set to 5.0, and the device is self-calibrated at 35 C, then you can expect to run the device from 30 C to 40 C with corrected accuracy and no overflows. Setting this property with a smaller value can result in improved dynamic range, but you must ensure thermal stability while the instrument is running. Operating the instrument outside of the specified range may cause degraded performance and ADC or DSP overflows. + + **Units:** degrees Celsius (C) + + **Default Value**: + + **PXIe-5830/5831/5832/5842/5860**: 5 + + **PXIe-5840/5841**: 10 + + **Supported Devices**: PXIe-5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Advanced:Thermal Correction Headroom Range (Degrees C)** + - C Attribute: **NIRFSA_ATTR_THERMAL_CORRECTION_HEADROOM_RANGE** + +thermal_correction_temperature_resolution +----------------------------------------- + + .. py:attribute:: thermal_correction_temperature_resolution + + Specifies the temperature change required before NI-RFSA recalculates the thermal correction settings when entering the Running state. + + **Units:** degrees Celsius (C) + + **Supported Devices**: PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Default Values**: + + **PXIe-5830/5831/5832/5842/5860**: 0.2 + + **PXIe-5840/5841**: 1.0 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Vertical:Advanced:Thermal Correction Temperature Resolution (Degrees C)** + - C Attribute: **NIRFSA_ATTR_THERMAL_CORRECTION_TEMPERATURE_RESOLUTION** + +user_source_pulse_width +----------------------- + + .. py:attribute:: user_source_pulse_width + + Specifies the pulse width for the User Source. + + Use the :py:attr:`nirfsa.Session.user_source_pulse_width_units` property to set the units for the pulse width. + + **Default Value**: 200E(-9) + + **Supported Devices**: PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + The following table lists the characteristics of this property. + + +-----------------------+------------+ + | Characteristic | Value | + +=======================+============+ + | Datatype | float | + +-----------------------+------------+ + | Permissions | read-write | + +-----------------------+------------+ + | Repeated Capabilities | None | + +-----------------------+------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Events:User Source:Pulse Width** + - C Attribute: **NIRFSA_ATTR_USER_SOURCE_PULSE_WIDTH** + +user_source_pulse_width_units +----------------------------- + + .. py:attribute:: user_source_pulse_width_units + + Specifies the pulse width units for the User Source. + + When the value is :py:data:`~nirfsa.UserSourcePulseWidthUnits.SECONDS`, it is assumed that the clock rate of the signal is the data clock. Use :py:data:`~nirfsa.UserSourcePulseWidthUnits.CLOCK_PERIODS` if the user source clock rate is anything else. + + **Default Value**: :py:data:`~nirfsa.UserSourcePulseWidthUnits.SECONDS` + + **Supported Devices**: PXIe-5820/5830/5831/5832/5840/5841/5842/5860 + + **Defined Values**: + + +------------------------------------------------------------+--------------------------+ + | Name | Description | + +============================================================+==========================+ + | :py:data:`~nirfsa.UserSourcePulseWidthUnits.SECONDS` | Units are seconds. | + +------------------------------------------------------------+--------------------------+ + | :py:data:`~nirfsa.UserSourcePulseWidthUnits.CLOCK_PERIODS` | Units are clock periods. | + +------------------------------------------------------------+--------------------------+ + + The following table lists the characteristics of this property. + + +-----------------------+---------------------------------+ + | Characteristic | Value | + +=======================+=================================+ + | Datatype | enums.UserSourcePulseWidthUnits | + +-----------------------+---------------------------------+ + | Permissions | read-write | + +-----------------------+---------------------------------+ + | Repeated Capabilities | None | + +-----------------------+---------------------------------+ + + .. tip:: + This property corresponds to the following LabVIEW Property or C Attribute: + + - LabVIEW Property: **Events:User Source:Pulse Width Units** + - C Attribute: **NIRFSA_ATTR_USER_SOURCE_PULSE_WIDTH_UNITS** + + +NI-TClk Support +=============== + + .. py:attribute:: tclk + + This is used to get and set NI-TClk attributes on the session. + + .. seealso:: See :py:class:`nitclk.SessionReference` for a complete list of attributes. + + +.. contents:: Session diff --git a/docs/nirfsa/conf.py b/docs/nirfsa/conf.py new file mode 100644 index 000000000..f51f02497 --- /dev/null +++ b/docs/nirfsa/conf.py @@ -0,0 +1,198 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# NI-RFSA Python API documentation build configuration file, created by +# sphinx-quickstart on Fri Jul 14 13:04:36 2017. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys +sys.path.insert(0, os.path.abspath('../generated')) + + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = ['sphinx.ext.autodoc', + 'sphinx.ext.doctest', + 'sphinx.ext.intersphinx', + 'sphinx.ext.todo', + 'sphinx.ext.coverage', + 'sphinx.ext.mathjax', + 'sphinx.ext.ifconfig', + 'sphinx.ext.viewcode', + 'sphinx.ext.githubpages'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = 'NI-RFSA Python API' +copyright = '2026-2026, National Instruments Corporation' +author = 'NI' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The full version, including alpha/beta/rc tags. +release = '1.0.0.dev0' +# The short X.Y version. +version = release[:3] + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = 'en' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This patterns also effect to html_static_path and html_extra_path +exclude_patterns = [] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sphinx_rtd_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +html_theme_options = { + 'navigation_depth': -1, +} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['../_static'] + +# Fix wide tables of RTD per https://github.com/rtfd/sphinx_rtd_theme/issues/117#issuecomment-41571653 +def setup(app): + app.add_css_file('theme_overrides.css') + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# This is required for the alabaster theme +# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars +html_sidebars = { + '**': [ + 'about.html', + 'navigation.html', + 'relations.html', # needs 'show_related': True theme option to display + 'searchbox.html', + 'donate.html', + ] +} + + +# -- Options for HTMLHelp output ------------------------------------------ + +# Output file base name for HTML help builder. +htmlhelp_basename = 'NIModularInstrumentsPythonAPIdoc' + + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'NIRFSAPythonAPI.tex', 'NI-RFSA Python API Documentation', + 'NI', 'manual'), +] + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'nirfsapythonapi', 'NI-RFSA Python API Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'NIRFSAPythonAPI', 'NI-RFSA Python API Documentation', + author, 'NIRFSAPythonAPI', 'One line description of project.', + 'Miscellaneous'), +] + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = { + 'python': ('https://docs.python.org/3', None), + 'nidcpower': ('https://nidcpower.readthedocs.io/en/latest/', None), + 'nidigital': ('https://nidigital.readthedocs.io/en/latest/', None), + 'nidmm': ('https://nidmm.readthedocs.io/en/latest/', None), + 'nifgen': ('https://nifgen.readthedocs.io/en/latest/', None), + 'nimodinst': ('https://nimodinst.readthedocs.io/en/latest/', None), + 'nirfsg': ('https://nirfsg.readthedocs.io/en/latest/', None), + 'niscope': ('https://niscope.readthedocs.io/en/latest/', None), + 'nise': ('https://nise.readthedocs.io/en/latest/', None), + 'niswitch': ('https://niswitch.readthedocs.io/en/latest/', None), + 'nitclk': ('https://nitclk.readthedocs.io/en/latest/', None), +} diff --git a/docs/nirfsa/enums.rst b/docs/nirfsa/enums.rst new file mode 100644 index 000000000..c505c18d3 --- /dev/null +++ b/docs/nirfsa/enums.rst @@ -0,0 +1,3510 @@ +Enums +===== + +Enums used in NI-RFSA + +.. py:currentmodule:: nirfsa + + +AcquisitionType +--------------- + +.. py:class:: AcquisitionType + + .. py:attribute:: AcquisitionType.IQ + + + + Configures NI-RFSA for I/Q acquisitions. + + + + + + .. py:attribute:: AcquisitionType.SPECTRUM + + + + Configures NI-RFSA for spectrum acquisitions. + + + + + +Action +------ + +.. py:class:: Action + + .. py:attribute:: Action.COMMIT + + + + The new calibration constants are stored in the EEPROM. + + + + + + .. py:attribute:: Action.ABORT + + + + The old calibration constants are kept, and the new ones are discarded. + + + + + +AdvanceTriggerDigitalEdgeEdge +----------------------------- + +.. py:class:: AdvanceTriggerDigitalEdgeEdge + + .. py:attribute:: AdvanceTriggerDigitalEdgeEdge.RISING + + + + The trigger asserts on the rising edge of the signal. + + + + + + .. py:attribute:: AdvanceTriggerDigitalEdgeEdge.FALLING + + + + The trigger asserts on the falling edge of the signal. + + + + + +AdvanceTriggerType +------------------ + +.. py:class:: AdvanceTriggerType + + .. py:attribute:: AdvanceTriggerType.NONE + + + + No Advance Trigger is configured. + + + + + + .. py:attribute:: AdvanceTriggerType.DIGITAL_EDGE + + + + The Advance Trigger is not asserted until a digital edge is detected. The source of the digital edge is specified with the :py:attr:`nirfsa.Session.digital_edge_advance_trigger_source` property. + + + + + + .. py:attribute:: AdvanceTriggerType.SOFTWARE_EDGE + + + + The Advance Trigger is not asserted until a software trigger occurs. You can assert the software trigger by calling the :py:meth:`nirfsa.Session.send_software_edge_trigger` method and selecting :py:data:`~nirfsa.NIRFSA_VAL_ADVANCE_TRIGGER` as the **trigger** parameter. + + + + + +AllowOutOfSpecificationUserSettings +----------------------------------- + +.. py:class:: AllowOutOfSpecificationUserSettings + + .. py:attribute:: AllowOutOfSpecificationUserSettings.DISABLED + + + + Disables out-of-specification user settings. + + + + + + .. py:attribute:: AllowOutOfSpecificationUserSettings.ENABLED + + + + Enables out-of-specification user settings. + + + + + +ArmReferenceTriggerType +----------------------- + +.. py:class:: ArmReferenceTriggerType + + .. py:attribute:: ArmReferenceTriggerType.NONE + + + + No Arm Reference Trigger is configured. + + + + + + .. py:attribute:: ArmReferenceTriggerType.DIGITAL_EDGE + + + + The Arm Reference Trigger is not asserted until a digital edge is detected. The source of the digital edge is specified with the :py:attr:`nirfsa.Session.digital_edge_arm_ref_trigger_source` property. + + + + + + .. py:attribute:: ArmReferenceTriggerType.SOFTWARE_EDGE + + + + The Arm Reference Trigger is not asserted until a software trigger occurs. You can assert the software trigger by calling the :py:meth:`nirfsa.Session.send_software_edge_trigger` method and selecting :py:data:`~nirfsa.SoftwareTriggerType.ARM_REF` as the **trigger** parameter. + + + + + +CalToneMode +----------- + +.. py:class:: CalToneMode + + .. py:attribute:: CalToneMode.DISABLED + + + + Disables the calibration tone for the associated signal path. + + + + + + .. py:attribute:: CalToneMode.CAL_TONE_LOWBAND_RF + + + + Injects the calibration tone into the low band RF signal path. + + + + + + .. py:attribute:: CalToneMode.CAL_TONE_HIGHBAND_RF + + + + Injects the calibration tone into the high band RF signal path. + + + + + + .. py:attribute:: CalToneMode.CAL_TONE_HIGHBAND_IF + + + + Injects the calibration tone into the high band IF signal path. + + + + + + .. py:attribute:: CalToneMode.CAL_TONE_LOWBAND_RF_WITHOUT_ALC + + + + Injects the calibration tone into the low band RF signal path, bypassing the ALC. + + + + + + .. py:attribute:: CalToneMode.CAL_TONE_COMB_GENERATOR + + + + Injects the calibration tone into the high band RF signal path through the Comb Generator. + + + + + +CalibrateStep +------------- + +.. py:class:: CalibrateStep + + .. py:attribute:: CalibrateStep.IF_ATTENUATION + + + + Initializes the IF Attenuation Calibration step. This step is not supported for the PXIe-5693. + + + + + + .. py:attribute:: CalibrateStep.IF_RESPONSE + + + + Initializes the IF Response Calibration step. This step is not supported for the PXIe-5603/5605 or PXIe-5693/5698. + + + + + + .. py:attribute:: CalibrateStep.IF_REF_LEVEL + + + + Initializes the Ref Level Calibration step. This step is not supported on the PXIe-5694. + + + + + + .. py:attribute:: CalibrateStep.LO_EXPORT + + + + Initializes the LO Export Calibration step. This step calibrates the output power of each LO to be within specification. This step is not supported on the PXIe-5601 or the PXIe-5693/5694/5698. + + + + + + .. py:attribute:: CalibrateStep.GAIN_REFERENCE + + + + Initializes the Gain Reference Calibration step. This step calibrates the calibration tone amplitude across supported calibration tone frequencies. This step is not supported on the PXIe-5601/5603/5605 or PXIe-5694. + + + + + +ChannelCoupling +--------------- + +.. py:class:: ChannelCoupling + + .. py:attribute:: ChannelCoupling.AC + + + + Specifies that the RF input channel is AC-coupled. For low frequencies (<10 MHz), accuracy decreases because NI-RFSA does not calibrate the configuration. + + + + + + .. py:attribute:: ChannelCoupling.DC + + + + Specifies that the RF input channel is DC-coupled. NI-RFSA enforces a minimum RF attenuation for device protection. + + + + + +ConditioningCalToneMode +----------------------- + +.. py:class:: ConditioningCalToneMode + + .. py:attribute:: ConditioningCalToneMode.DISABLED + + + + Disables the calibration tone for the associated signal path. + + + + + + .. py:attribute:: ConditioningCalToneMode.CAL_TONE_LOWBAND_RF + + + + Injects the calibration tone into the low band RF signal path. + + + + + + .. py:attribute:: ConditioningCalToneMode.CAL_TONE_HIGHBAND_RF + + + + Injects the calibration tone into the high band RF signal path. + + + + + +DeembeddingType +--------------- + +.. py:class:: DeembeddingType + + .. py:attribute:: DeembeddingType.NONE + + + + De-embedding is not applied to the measurement. + + + + + + .. py:attribute:: DeembeddingType.SCALAR + + + + De-embeds the measurement using only the gain term. + + + + + + .. py:attribute:: DeembeddingType.VECTOR + + + + De-embeds the measurement using the gain term and the reflection term. + + + + + +DeviceResponseType +------------------ + +.. py:class:: DeviceResponseType + + .. py:attribute:: DeviceResponseType.DOWNCONVERTER_IF + + + + Returns the IF response of the downconverter. + + + + + + .. py:attribute:: DeviceResponseType.DOWNCONVERTER_RF + + + + Returns the RF response of the downconverter. This value is supported only for the PXIe-5603/5605/5665/5667/5693.. + + + + + + .. py:attribute:: DeviceResponseType.DOWNCONVERTER_COMBINED + + + + Returns the combined RF and IF response of the downconverter. The combined response is in terms of IF frequency. This value is supported only for the PXIe-5603/5605/5665/5667. + + + + + + .. py:attribute:: DeviceResponseType.VSA_IF + + + + Returns the IF response of the entire NI-RFSA device. This value is supported only for the PXIe-5665/5667. + + + + + + .. py:attribute:: DeviceResponseType.VSA_COMBINED + + + + Returns the combined IF and RF response of the entire NI-RFSA device. The combined response is in terms of IF frequency. This value is supported only for the PXIe-5665/5667. + + + + + +DigitizerDitherEnabled +---------------------- + +.. py:class:: DigitizerDitherEnabled + + .. py:attribute:: DigitizerDitherEnabled.DISABLED + + + + Disables dither on the digitizer. + + + + + + .. py:attribute:: DigitizerDitherEnabled.ENABLED + + + + Enables dither on the digitizer. + + + + + +DigitizerSampleClockExportedTerminal +------------------------------------ + +.. py:class:: DigitizerSampleClockExportedTerminal + + .. py:attribute:: DigitizerSampleClockExportedTerminal.NONE + + + + The Reference Clock is not exported. This value is not valid for the PXIe-5644/5645/5646. + + + + + + .. py:attribute:: DigitizerSampleClockExportedTerminal.CLK_OUT + + + + Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. + + + + + +DigitizerSampleClockTimebaseSource +---------------------------------- + +.. py:class:: DigitizerSampleClockTimebaseSource + + .. py:attribute:: DigitizerSampleClockTimebaseSource.ONBOARD_CLOCK + + + + The digitizer uses its onboard clock as the Sample Clock timebase. + + + + + + .. py:attribute:: DigitizerSampleClockTimebaseSource.CLK_IN + + + + The digitizer uses the signal present on the CLK IN connector as the Sample Clock timebase. + + + + + + .. py:attribute:: DigitizerSampleClockTimebaseSource.LO_REF_CLK + + + + The digitizer uses the signal generated on the 100 MHz REF OUT terminal on the PXIe-5653 as the Sample Clock timebase. This value is supported only for the PXIe-5665. + + + + + + .. py:attribute:: DigitizerSampleClockTimebaseSource.PXI_STAR + + + + The digitizer uses the signal present at the PXI star trigger line as the Sample Clock timebase. This value is not supported for the PXIe-5668. + + + + + + .. py:attribute:: DigitizerSampleClockTimebaseSource.DOWNCONVERTER_LO2_OUT + + + + The digitizer uses the signal present on the LO2 OUT connector on the downconverter as the Sample Clock timebase. This value is supported only for the PXIe-5668. + + + + + +DownconverterFrequencyOffsetMode +-------------------------------- + +.. py:class:: DownconverterFrequencyOffsetMode + + .. py:attribute:: DownconverterFrequencyOffsetMode.AUTOMATIC + + + + NI-RFSA places the downconverter center frequency outside of the signal bandwidth if the :py:attr:`nirfsa.Session.signal_bandwidth` property has been set and can be avoided. + + + + + + .. py:attribute:: DownconverterFrequencyOffsetMode.ENABLED + + + + NI-RFSA places the downconverter center frequency outside of the signal bandwidth if the :py:attr:`nirfsa.Session.signal_bandwidth` property has been set and can be avoided. NI-RFSA returns an error if the :py:attr:`nirfsa.Session.signal_bandwidth` property has not been set, or if the signal bandwidth is too large. + + + + + + .. py:attribute:: DownconverterFrequencyOffsetMode.USER_DEFINED + + + + NI-RFSA uses the offset that you specified with the :py:attr:`nirfsa.Session.downconverter_frequency_offset` or :py:attr:`nirfsa.Session.downconverter_center_frequency` properties. + + + + + +DownconverterLoopBandwidth +-------------------------- + +.. py:class:: DownconverterLoopBandwidth + + .. py:attribute:: DownconverterLoopBandwidth.NARROW + + + + Specifies that the downconverter module uses a narrow loop bandwidth. + + + + + + .. py:attribute:: DownconverterLoopBandwidth.MEDIUM + + + + Specifies that the downconverter module uses a medium loop bandwidth. + + + + + + .. py:attribute:: DownconverterLoopBandwidth.WIDE + + + + Specifies that the downconverter module uses a wide loop bandwidth. + + + + + +DownconverterPreselectorEnabled +------------------------------- + +.. py:class:: DownconverterPreselectorEnabled + + .. py:attribute:: DownconverterPreselectorEnabled.DISABLED + + + + Disables the preselector. + + + + + + .. py:attribute:: DownconverterPreselectorEnabled.ENABLED_WHEN_IN_SIGNAL_PATH + + + + The preselector is automatically enabled when it is in the signal path and is automatically disabled when it is not in the signal path. Use the :py:attr:`nirfsa.Session.preselector_present` property to determine if the downconverter has an preselector. + + + + + + .. py:attribute:: DownconverterPreselectorEnabled.ENABLED + + + + Enables the preselector. If the preselector is not in the signal path or if the preselector is not supported on the device, NI-RFSA returns an error. Select the :py:data:`~nirfsa.DownconverterPreselectorEnabled.ENABLED_WHEN_IN_SIGNAL_PATH` whenever possible avoid an error. + + + + + +EnableAttrVals +-------------- + +.. py:class:: EnableAttrVals + + .. py:attribute:: EnableAttrVals.DISABLED + + + + The property is disabled. + + + + + + .. py:attribute:: EnableAttrVals.ENABLED + + + + The property is enabled. + + + + + +EnableRfPreamp +-------------- + +.. py:class:: EnableRfPreamp + + .. py:attribute:: EnableRfPreamp.DISABLED + + + + Disables the RF preamplifier. + + + + + + .. py:attribute:: EnableRfPreamp.ENABLED_WHEN_IN_SIGNAL_PATH + + + + Enables the RF preamplifier when the RF preamplifier is present in the signal path and disables the preamplifier when it is not in the signal path. Only devices with an RF preamplifier on the downconverter and an RF preselector support this option. Use the :py:attr:`nirfsa.Session.rf_preamp_present` property to determine whether the downconverter has a preamplifier. + + + + + + .. py:attribute:: EnableRfPreamp.ENABLED + + + + Enables the RF preamplifier. If the RF preamplifier is not in a signal path, NI-RFSA returns an error. Select the :py:data:`~nirfsa.EnableRfPreamp.ENABLED_WHEN_IN_SIGNAL_PATH` value whenever possible to avoid an error. + + + + + + .. py:attribute:: EnableRfPreamp.AUTOMATIC + + + + Automatically enables the RF preamplifier based on the value of the :py:attr:`nirfsa.Session.reference_level` property. This value is valid only for the PXIe-5644/5645/5646, PXIe-5667, and PXIe-5830/5831/5832/5840/5841. + + + + + +ExportOutputTerminal +-------------------- + +.. py:class:: ExportOutputTerminal + + .. py:attribute:: ExportOutputTerminal.DO_NOT_EXPORT + + + + The signal is not exported. + + + + + + .. py:attribute:: ExportOutputTerminal.CLK_OUT + + + + Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. + + + + + + .. py:attribute:: ExportOutputTerminal.REF_OUT + + + + Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. + + + + + + .. py:attribute:: ExportOutputTerminal.REF_OUT2 + + + + Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. + + + + + + .. py:attribute:: ExportOutputTerminal.PFI0 + + + + The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. + + + + + + .. py:attribute:: ExportOutputTerminal.PFI1 + + + + The trigger is received on PFI 1. + + + + + + .. py:attribute:: ExportOutputTerminal.PXI_TRIG0 + + + + The trigger is received on PXI trigger line 0. + + + + + + .. py:attribute:: ExportOutputTerminal.PXI_TRIG1 + + + + The trigger is received on PXI trigger line 1. + + + + + + .. py:attribute:: ExportOutputTerminal.PXI_TRIG2 + + + + The trigger is received on PXI trigger line 2. + + + + + + .. py:attribute:: ExportOutputTerminal.PXI_TRIG3 + + + + The trigger is received on PXI trigger line 3. + + + + + + .. py:attribute:: ExportOutputTerminal.PXI_TRIG4 + + + + The trigger is received on PXI trigger line 4. + + + + + + .. py:attribute:: ExportOutputTerminal.PXI_TRIG5 + + + + The trigger is received on PXI trigger line 5. + + + + + + .. py:attribute:: ExportOutputTerminal.PXI_TRIG6 + + + + The trigger is received on PXI trigger line 6. + + + + + + .. py:attribute:: ExportOutputTerminal.PXI_TRIG7 + + + + The trigger is received on PXI trigger line 7. + + + + + + .. py:attribute:: ExportOutputTerminal.PXI_STAR + + + + The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. + + + + + + .. py:attribute:: ExportOutputTerminal.PXIE_DSTARC + + + + The trigger is received on the PXIe DStar C trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. + + + + + + .. py:attribute:: ExportOutputTerminal.DIO_PFI0 + + + + The trigger is received on PFI0 from the front panel DIO terminal. + + + + + + .. py:attribute:: ExportOutputTerminal.DIO_PFI1 + + + + The trigger is received on PFI1 from the front panel DIO terminal. + + + + + + .. py:attribute:: ExportOutputTerminal.DIO_PFI2 + + + + The trigger is received on PFI2 from the front panel DIO terminal. + + + + + + .. py:attribute:: ExportOutputTerminal.DIO_PFI3 + + + + The trigger is received on PFI3 from the front panel DIO terminal. + + + + + + .. py:attribute:: ExportOutputTerminal.DIO_PFI4 + + + + The trigger is received on PFI4 from the front panel DIO terminal. + + + + + + .. py:attribute:: ExportOutputTerminal.DIO_PFI5 + + + + The trigger is received on PFI5 from the front panel DIO terminal. + + + + + + .. py:attribute:: ExportOutputTerminal.DIO_PFI6 + + + + The trigger is received on PFI6 from the front panel DIO terminal. + + + + + + .. py:attribute:: ExportOutputTerminal.DIO_PFI7 + + + + The trigger is received on PFI7 from the front panel DIO terminal. + + + + + +FetchRelativeTo +--------------- + +.. py:class:: FetchRelativeTo + + .. py:attribute:: FetchRelativeTo.MOST_RECENT_SAMPLE + + + + Fetching occurs relative to the most recently acquired data. The value of the :py:attr:`nirfsa.Session.fetch_offset` property must be negative. + + + + + + .. py:attribute:: FetchRelativeTo.FIRST_SAMPLE + + + + Fetching occurs at the first sample acquired by the device. If the device wraps its buffer, the first sample is no longer available. In this case, NI-RFSA returns an error if the fetch offset is in the overwritten data. + + + + + + .. py:attribute:: FetchRelativeTo.REFERENCE_TRIGGER + + + + Fetching occurs relative to the Reference Trigger. This value behaves like :py:data:`~nirfsa.FetchRelativeTo.FIRST_SAMPLE` if no Reference Trigger is configured. + + + + + + .. py:attribute:: FetchRelativeTo.FIRST_PRETRIGGER_SAMPLE + + + + Fetching occurs relative to the first pretrigger sample acquired. + + + + + + .. py:attribute:: FetchRelativeTo.CURRENT_READ_POSITION + + + + Fetching occurs after the last fetched sample. + + + + + +FrequencySettlingUnits +---------------------- + +.. py:class:: FrequencySettlingUnits + + .. py:attribute:: FrequencySettlingUnits.PPM + + + + Specifies the frequency settling time in parts per million (PPM). + + + + + + .. py:attribute:: FrequencySettlingUnits.SECONDS_AFTER_LOCK + + + + Specifies the frequency settling in time after lock (seconds). + + + + + + .. py:attribute:: FrequencySettlingUnits.SECONDS_AFTER_IO + + + + Specifies the frequency settling time after I/O (seconds). + + + + + +IFattenTableSel +--------------- + +.. py:class:: IFattenTableSel + + .. py:attribute:: IFattenTableSel.STANDARD + + + + Specifies that the standard IF attenuation table is used for the external calibration. + + + + + + .. py:attribute:: IFattenTableSel.ACPR + + + + Specifies that the adjacent channel power ratio (ACPR) IF attenuation table is used for the external calibration. You can only select this value if you set the :py:attr:`nirfsa.Session.CAL_IF_FILTER_SELECTION` property to :py:data:`~nirfsa.IFfilterSelection.EXT_CAL_IF_FILTER_PATH_1` or :py:data:`~nirfsa.IFfilterSelection.EXT_CAL_IF_FILTER_PATH_2`. + + + + + +IFfilter +-------- + +.. py:class:: IFfilter + + .. py:attribute:: IFfilter._187_5_MHZ_WIDE + + + + The device uses the 187.5 MHz wide bandwidth filter. + + + + + + .. py:attribute:: IFfilter._187_5_MHZ_NARROW + + + + The device uses the 187.5 MHz narrow bandwidth filter. + + + + + + .. py:attribute:: IFfilter._53_MHZ + + + + The device uses the 53 MHz filter. + + + + + + .. py:attribute:: IFfilter.BYPASS + + + + The device bypasses the IF filter. + + + + + +IFfilterSelection +----------------- + +.. py:class:: IFfilterSelection + + .. py:attribute:: IFfilterSelection.EXT_CAL_IF_FILTER_PATH_1 + + + + Specifies that the 5 MHz filter path is used during calibration. + + + + + + .. py:attribute:: IFfilterSelection.EXT_CAL_IF_FILTER_PATH_2 + + + + Specifies that the 300 kHz filter path is used during calibration. Not supported for the PXIe-5694. + + + + + + .. py:attribute:: IFfilterSelection.EXT_CAL_IF_FILTER_PATH_3 + + + + None of the IF filter paths are used during calibration. + + + + + + .. py:attribute:: IFfilterSelection.EXT_CAL_IF_FILTER_PATH_4 + + + + Specifies that the 20 MHz filter path is used during calibration. + + + + + + .. py:attribute:: IFfilterSelection.EXT_CAL_IF_FILTER_PATH_5 + + + + Specifies that the 1.4 MHz filter path is used during calibration. + + + + + + .. py:attribute:: IFfilterSelection.EXT_CAL_IF_FILTER_PATH_6 + + + + Specifies that the 400 kHz filter path is used during calibration. + + + + + + .. py:attribute:: IFfilterSelection.EXT_CAL_IF_FILTER_PATH_7 + + + + Specifies that the 110 kHz filter path is used during calibration. + + + + + + .. py:attribute:: IFfilterSelection.EXT_CAL_IF_FILTER_PATH_8 + + + + Specifies that the 30 kHz filter path is used during calibration. + + + + + +IfConditioningDownConversionEnabled +----------------------------------- + +.. py:class:: IfConditioningDownConversionEnabled + + .. py:attribute:: IfConditioningDownConversionEnabled.DISABLED + + + + Disables IF conditioning downconversion. + + + + + + .. py:attribute:: IfConditioningDownConversionEnabled.ENABLED + + + + Enables IF conditioning downconversion. + + + + + +InputIsolationEnabled +--------------------- + +.. py:class:: InputIsolationEnabled + + .. py:attribute:: InputIsolationEnabled.DISABLED + + + + Disables input isolation. + + + + + + .. py:attribute:: InputIsolationEnabled.ENABLED + + + + Enables input isolation. + + + + + +InputPort +--------- + +.. py:class:: InputPort + + .. py:attribute:: InputPort.RF_IN + + + + Enables the RF IN port. + + + + + + .. py:attribute:: InputPort.IQ_IN + + + + Enables the I/Q IN port. + + + + + + .. py:attribute:: InputPort.CAL_IN + + + + Enables the CAL IN port. + + + + + + .. py:attribute:: InputPort.I_ONLY + + + + Enables the I terminals of the I/Q IN port. It is supported only for PXIe-5645. + + + + + +IqInPortTerminalConfiguration +----------------------------- + +.. py:class:: IqInPortTerminalConfiguration + + .. py:attribute:: IqInPortTerminalConfiguration.DIFFERENTIAL + + + + Sets the terminal configuration to differential. + + + + + + .. py:attribute:: IqInPortTerminalConfiguration.SINGLE_ENDED + + + + Sets the terminal configuration to single-ended. + + + + + +LinearInterpolationFormat +------------------------- + +.. py:class:: LinearInterpolationFormat + + .. py:attribute:: LinearInterpolationFormat.MAGNITUDE_AND_PHASE + + + + Results in a linear interpolation of the real portion of the complex number and a separate linear interpolation of the complex portion. + + + + + + .. py:attribute:: LinearInterpolationFormat.MAGNITUDE_DB_AND_PHASE + + + + Results in a linear interpolation of the magnitude and a separate linear interpolation of the phase. + + + + + + .. py:attribute:: LinearInterpolationFormat.REAL_AND_IMAGINARY + + + + Results in a linear interpolation of the magnitude, in decibels, and a separate linear interpolation of the phase. + + + + + +Lo2ExportEnabled +---------------- + +.. py:class:: Lo2ExportEnabled + + .. py:attribute:: Lo2ExportEnabled.DISABLED + + + + Disables LO2 export. + + + + + + .. py:attribute:: Lo2ExportEnabled.ENABLED + + + + Enables LO2 export. + + + + + +LoInjection +----------- + +.. py:class:: LoInjection + + .. py:attribute:: LoInjection.HIGH + + + + Configures the LO signal that the NI-RFSA device generates at a frequency higher than the RF frequency. This LO frequency is given by the formula fLO = fRF + fIF. + + + + + + .. py:attribute:: LoInjection.LOW + + + + Configures the LO signal that the NI-RFSA device generates at a frequency lower than the RF frequency. This LO frequency is given by the formula fLO = fRF - fIF. + + + + + +LoNumber +-------- + +.. py:class:: LoNumber + + .. py:attribute:: LoNumber.LO2 + + + + Selects LO2, which is the 4 GHz signal path. + + + + + + .. py:attribute:: LoNumber.LO3 + + + + Selects LO3, which is the 800 MHz signal path. + + + + + + .. py:attribute:: LoNumber.LO1 + + + + Selects LO1, which is the 3.2 GHz to 8.3 GHz variable signal path. + + + + + +LoOutExportConfigureFromRfsg +---------------------------- + +.. py:class:: LoOutExportConfigureFromRfsg + + .. py:attribute:: LoOutExportConfigureFromRfsg.DISABLED + + + + Do not allow NI-RFSG to control the NI-RFSA local oscillator export. + + + + + + .. py:attribute:: LoOutExportConfigureFromRfsg.ENABLED + + + + Allow NI-RFSG to control the NI-RFSA local oscillator export. + + + + + +LoPathSel +--------- + +.. py:class:: LoPathSel + + .. py:attribute:: LoPathSel.EXT_CAL_LO_PATH_1 + + + + Specifies that the LO path 1 is used. + + + + + + .. py:attribute:: LoPathSel.EXT_CAL_LO_PATH_2 + + + + Specifies that the LO path 2 is used. + + + + + + .. py:attribute:: LoPathSel.EXT_CAL_LO_PATH_3 + + + + Specifies that the LO path 3 is used. + + + + + + .. py:attribute:: LoPathSel.EXT_CAL_LO_PATH_4 + + + + Specifies that the LO path 4 is used. + + + + + + .. py:attribute:: LoPathSel.EXT_CAL_LO_PATH_5 + + + + Specifies that the LO path 5 is used. + + + + + +LoPllFractionalModeEnabled +-------------------------- + +.. py:class:: LoPllFractionalModeEnabled + + .. py:attribute:: LoPllFractionalModeEnabled.DISABLED + + + + Disables fractional mode for the LO PLL. + + + + + + .. py:attribute:: LoPllFractionalModeEnabled.ENABLED + + + + Enables fractional mode for the LO PLL. + + + + + +LoSource +-------- + +.. py:class:: LoSource + + .. py:attribute:: LoSource.NONE + + + + Specifies that no LO source is required to downconvert the RF input signal. + + + + + + .. py:attribute:: LoSource.ONBOARD + + + + Specifies that the onboard synthesizer is used to generate the LO signal that downconverts the RF input signal.**PXIe-5831/5832** This configuration uses the onboard LO of the PXIe-3622, using the LO2 stage.**PXIe-5831/5832 with PXIe-5653** This configuration uses the onboard LO of the PXIe-5653 when associated with the PXIe-3622.**PXIe-5841 with PXIe-5655** This configuration uses the onboard LO of the PXIe-5655. + + + + + + .. py:attribute:: LoSource.LO_IN + + + + Specifies that the LO source used to downconvert the RF input signal is connected to the LO IN connector on the front panel. + + + + + + .. py:attribute:: LoSource.LO_SOURCE_SECONDARY + + + + Uses the PXIe-5831/5840 internal LO as the LO source. This value is valid on only the PXIe-5831 with PXIe-5653 (LO1 stage only) or PXIe-5832 with PCIe-5653 (LO1 stage only). + + + + + + .. py:attribute:: LoSource.LO_SOURCE_SG_SA_SHARED + + + + Uses the same internal LO during NI-RFSA and NI-RFSG sessions. NI-RFSA selects an internal synthesizer and the synthesizer signal is switched to both the RF Out and RF In mixers. This value is valid on only the PXIe-5830/5831/5832/5841 with PXIe-5655. + + + + + +LoYigMainCoilDrive +------------------ + +.. py:class:: LoYigMainCoilDrive + + .. py:attribute:: LoYigMainCoilDrive.NORMAL + + + + Adjusts the YIG main coil on the LO for an underdamped response. + + + + + + .. py:attribute:: LoYigMainCoilDrive.FAST + + + + Adjusts the YIG main coil on the LO for an overdamped response. + + + + + +LoadConfigurationResetOptions +----------------------------- + +.. py:class:: LoadConfigurationResetOptions + + .. py:attribute:: LoadConfigurationResetOptions.NONE + + + + NI-RFSA resets all configurations. + + + + + + .. py:attribute:: LoadConfigurationResetOptions.DEEMBEDDING_TABLES + + + + NI-RFSA skips resetting the de-embedding tables. + + + + + +NoiseSourcePowerEnabled +----------------------- + +.. py:class:: NoiseSourcePowerEnabled + + .. py:attribute:: NoiseSourcePowerEnabled.DISABLED + + + + Disables the noise source power. + + + + + + .. py:attribute:: NoiseSourcePowerEnabled.ENABLED + + + + Enables the noise source power. + + + + + +NotchFilterEnabled +------------------ + +.. py:class:: NotchFilterEnabled + + .. py:attribute:: NotchFilterEnabled.DISABLED + + + + Disables the notch filter. + + + + + + .. py:attribute:: NotchFilterEnabled.ENABLED_WHEN_IN_SIGNAL_PATH + + + + The notch filter is automatically enabled when it is in the signal path and automatically disabled when it is not in the signal path. + + + + + + .. py:attribute:: NotchFilterEnabled.ENABLED + + + + Enables the notch filter. If the notch filter is not in the signal path or if the notch filter is not supported on the device, NI-RFSA returns an error. Select :py:data:`~nirfsa.NotchFilterEnabled.ENABLED_WHEN_IN_SIGNAL_PATH` whenever possible to avoid an error. + + + + + +OutputTerm +---------- + +.. py:class:: OutputTerm + + .. py:attribute:: OutputTerm.DO_NOT_EXPORT + + + + The signal is not exported. + + + + + + .. py:attribute:: OutputTerm.CLK_OUT + + + + Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. + + + + + + .. py:attribute:: OutputTerm.REF_OUT + + + + Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. + + + + + + .. py:attribute:: OutputTerm.REF_OUT2 + + + + Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. + + + + + + .. py:attribute:: OutputTerm.PFI0 + + + + The trigger is received on PFI 0. For the PXIe-5841 with PXIe-5655, the trigger is received on the PXIe-5841 PFI 0. + + + + + + .. py:attribute:: OutputTerm.PFI1 + + + + The trigger is received on PFI 1. + + + + + + .. py:attribute:: OutputTerm.PXI_TRIG0 + + + + The trigger is received on PXI trigger line 0. + + + + + + .. py:attribute:: OutputTerm.PXI_TRIG1 + + + + The trigger is received on PXI trigger line 1. + + + + + + .. py:attribute:: OutputTerm.PXI_TRIG2 + + + + The trigger is received on PXI trigger line 2. + + + + + + .. py:attribute:: OutputTerm.PXI_TRIG3 + + + + The trigger is received on PXI trigger line 3. + + + + + + .. py:attribute:: OutputTerm.PXI_TRIG4 + + + + The trigger is received on PXI trigger line 4. + + + + + + .. py:attribute:: OutputTerm.PXI_TRIG5 + + + + The trigger is received on PXI trigger line 5. + + + + + + .. py:attribute:: OutputTerm.PXI_TRIG6 + + + + The trigger is received on PXI trigger line 6. + + + + + + .. py:attribute:: OutputTerm.PXI_TRIG7 + + + + The trigger is received on PXI trigger line 7. + + + + + + .. py:attribute:: OutputTerm.PXI_STAR + + + + The trigger is received on the PXI star trigger line. This value is not valid for the PXIe-5644/5645/5646. + + + + + + .. py:attribute:: OutputTerm.PXIE_DSTARB + + + + The trigger is received on the PXIe DStar B trigger line. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841. + + + + + + .. py:attribute:: OutputTerm.DIO_PFI0 + + + + The trigger is received on PFI0 from the front panel DIO terminal. + + + + + + .. py:attribute:: OutputTerm.DIO_PFI1 + + + + The trigger is received on PFI1 from the front panel DIO terminal. + + + + + + .. py:attribute:: OutputTerm.DIO_PFI2 + + + + The trigger is received on PFI2 from the front panel DIO terminal. + + + + + + .. py:attribute:: OutputTerm.DIO_PFI3 + + + + The trigger is received on PFI3 from the front panel DIO terminal. + + + + + + .. py:attribute:: OutputTerm.DIO_PFI4 + + + + The trigger is received on PFI4 from the front panel DIO terminal. + + + + + + .. py:attribute:: OutputTerm.DIO_PFI5 + + + + The trigger is received on PFI5 from the front panel DIO terminal. + + + + + + .. py:attribute:: OutputTerm.DIO_PFI6 + + + + The trigger is received on PFI6 from the front panel DIO terminal. + + + + + + .. py:attribute:: OutputTerm.DIO_PFI7 + + + + The trigger is received on PFI7 from the front panel DIO terminal. + + + + + + .. py:attribute:: OutputTerm.TIMER_EVENT + + + + The trigger is received from the Timer Event. This value is valid on only the PXIe-5820/5830/5831/5832/5840/5841, and for digital edge Advance Triggers on the PXIe-5663E/5665. + + + + + +OverflowErrorReporting +---------------------- + +.. py:class:: OverflowErrorReporting + + .. py:attribute:: OverflowErrorReporting.WARNING + + + + Configures NI-RFSA to return a warning when an ADC or onboard signal processing (OSP) overflow occurs. + + + + + + .. py:attribute:: OverflowErrorReporting.DISABLED + + + + Configures NI-RFSA to not return an error or a warning when an ADC or OSP overflow occurs. + + + + + +PowerSpectrumUnits +------------------ + +.. py:class:: PowerSpectrumUnits + + .. py:attribute:: PowerSpectrumUnits.DBM + + + + Units are dB with reference to 1 milliwatt. + + + + + + .. py:attribute:: PowerSpectrumUnits.VOLTS_SQUARED + + + + Units are in volts squared. + + + + + + .. py:attribute:: PowerSpectrumUnits.DBMV + + + + Units are dB with reference to 1 millivolt. + + + + + + .. py:attribute:: PowerSpectrumUnits.DBUV + + + + Units are dB with reference to 1 microvolt. + + + + + + .. py:attribute:: PowerSpectrumUnits.VOLTS + + + + Units are in volts. + + + + + + .. py:attribute:: PowerSpectrumUnits.WATTS + + + + Units are in watts. + + + + + +PxiChassisClk10Source +--------------------- + +.. py:class:: PxiChassisClk10Source + + .. py:attribute:: PxiChassisClk10Source.NONE + + + + The device does not drive the PXI 10 MHz backplane Reference Clock. + + + + + + .. py:attribute:: PxiChassisClk10Source.ONBOARD_CLOCK + + + + The device drives the PXI 10 MHz backplane Reference Clock with the PXI-5600 onboard clock. You must connect the 10 MHz OUT connector to the PXI 10 MHz I/O connector on the PXI-5600 front panel to use this option. + + + + + + .. py:attribute:: PxiChassisClk10Source.REF_IN + + + + The device drives the PXI 10 MHz backplane Reference Clock with the reference source attached to the PXI-5600 FREQ REF IN connector. You must connect the 10 MHz OUT connector to the PXI 10 MHz I/O connector on the PXI-5600 front panel to use this option. + + + + + +ReferenceClockExportedRate +-------------------------- + +.. py:class:: ReferenceClockExportedRate + + .. py:attribute:: ReferenceClockExportedRate._10MHZ + + + + Exports a 10 MHz Reference Clock. + + + + + + .. py:attribute:: ReferenceClockExportedRate._100MHZ + + + + Exports a 100 MHz Reference Clock. + + + + + + .. py:attribute:: ReferenceClockExportedRate._1GHZ + + + + Exports a 1 GHz Reference Clock. + + + + + +ReferenceClockExportedTerminal +------------------------------ + +.. py:class:: ReferenceClockExportedTerminal + + .. py:attribute:: ReferenceClockExportedTerminal.NONE + + + + The Reference Clock is not exported. This value is not valid for the PXIe-5644/5645/5646. + + + + + + .. py:attribute:: ReferenceClockExportedTerminal.REF_OUT + + + + Export the clock on the REF IN/OUT terminal on the PXI/PXIe-5652, the REF OUT terminals on the PXIe-5653, or the REF OUT terminal on the PXIe-5644/5645/5646, PXIe-5694, or PXIe-5820/5830/5831/5832/5840/5841. + + + + + + .. py:attribute:: ReferenceClockExportedTerminal.REF_OUT2 + + + + Export the clock on the REF OUT2 terminal on the PXIe-5652. This value is valid only for the PXIe-5663E. + + + + + + .. py:attribute:: ReferenceClockExportedTerminal.CLK_OUT + + + + Export the clock on the CLK OUT terminal on the IF digitizer. This value is not valid for the PXIe-5644/5645/5646 or PXIe-5820/5830/5831/5832/5840/5841. + + + + + + .. py:attribute:: ReferenceClockExportedTerminal.IF_COND_REF_OUT + + + + Export the clock on the REF OUT terminal on the PXIe-5694. This value is valid only for the PXIe-5667. + + + + + +ReferenceClockSource +-------------------- + +.. py:class:: ReferenceClockSource + + .. py:attribute:: ReferenceClockSource.NONE + + + + No Reference Clock is required for the current device configuration. This value is valid only for the PXIe-5694 or the PXIe-5668. + + + + + + .. py:attribute:: ReferenceClockSource.ONBOARD_CLOCK + + + + **PXI-5661 **NI-RFSA locks the NI-RFSA device to the PXI-5600 RF downconverter onboard clock.**PXIe-5663/5663E **NI-RFSA locks the PXIe-5663/5663E to the PXI/PXIe-5652 LO source onboard clock. Connect the REF OUT2 connector (if it exists) on the PXI/PXIe-5652 to the CLK IN terminal on the PXIe-5622. On versions of the PXIe-5663/5663E that lack a REF OUT2 connector on the PXI/PXIe-5652, connect the REF IN/OUT connector on the PXI/PXIe-5652 to the CLK IN terminal on the PXI5622.**PXIe-5665 **NI-RFSA locks the PXIe-5665 to the PXIe-5653 LO source onboard clock. Connect the 100 MHz REF OUT terminal on the PXIe-5653 to the CLK IN terminal on the PXIe-5622.**PXIe-5667 **NI-RFSA locks the PXIe-5667 to the PXIe-5653 LO source onboard clock. Connect the 100 MHz REF OUT terminal on the PXIe-5653 to the CLK IN terminal on the PXIe-5622, and connect the 10 MHZ REF OUT terminal on the PXIe-5653 to the REF/LO IN connector on the PXIe-5694.**PXIe-5668 **Lock the PXIe-5668 to the PXIe-5653 LO SOURCE onboard clock. Connect the LO2 OUT connector on the PXIe-5606 to the CLK IN connector on the PXIe-5624.**PXIe-5830/5831 **For the PXIe-5830, connect the PXIe-5820 REF IN connector to the PXIe-3621 REF OUT connector. For the PXIe-5831/5832, connect the PXIe-5820 REF IN connector to the PXIe-3622 REF OUT connector.**PXIe-5831/5832 with PXIe-5653 **Connect the PXIe-5820 REF IN connector to the PXIe-3622 REF OUT connector. Connect the PXIe-5653 REF OUT (10 MHz) connector to the PXIe-3622 REF IN connector.**PXIe-5644/5645/5646, PXIe-5820/5840/5841 **Lock the NI-RFSA device to its onboard clock.**PXIe-5841 with PXIe-5655 **Lock to the PXIe-5655 onboard clock. Connect the REF OUT connector on the PXIe-5655 to the PXIe-5841 REF IN connector.**PXIe-5842 **Lock to the PXIe-5655 onboard clock. Cables between modules are required as shown in the User Manual for the instrument.**PXIe-5860 **Lock to the PXIe-5860 onboard clock. + + + + + + .. py:attribute:: ReferenceClockSource.REF_IN + + + + **PXI-5661 **NI-RFSA locks the NI-RFSA device to the signal at the external FREQ REF IN connector on the PXI-5600**PXIe-5663/5663E **Connect the external signal to the PXI/PXIe-5652 REF IN/OUT connector. Connect the REF OUT2 connector (if it exists) on the PXI/PXIe-5652 to the CLK IN terminal on the PXIe-5622. On versions of the PXIe-5663/5663E that lack a REF OUT2 connector on the PXI/PXIe-5652, this configuration can only be used in external digitizer mode.**PXIe-5665 **Connect the external signal to the PXIe-5653 REF IN connector. Connect the 100 MHz REF OUT terminal on the PXIe-5653 to the CLK IN terminal on the PXIe-5622. If your external clock signal frequency is set to a frequency other than 10 MHz, set the :py:attr:`nirfsa.Session.ref_clock_rate` property according to the frequency of your external clock signal.**PXIe-5667 **Connect the external signal to the PXIe-5653 REF IN connector. Connect the 100 MHz REF OUT terminal on the PXIe-5653 to the CLK IN terminal on the PXIe-5622, and connect the 10 MHZ REF OUT terminal on the PXIe-5653 to the REF/LO IN connector on the PXIe-5694. If your external clock signal frequency is set to a frequency other than 10 MHz, set the :py:attr:`nirfsa.Session.ref_clock_rate` property according to the frequency of your external clock signal.**PXIe-5668 **Connect the external signal to the PXIe-5653 REF IN connector. Connect the LO2 OUT on the PXIe-5606 to the CLK IN connector on the PXIe-5622. If your external clock signal frequency is set to a frequency other than 10 MHz, set the **clock rate** parameter according to the frequency of your external clock signal.**PXIe-5694 **Connect the Reference Clock signal to the REF/LO IN connector on the PXIe-5694 front panel.**PXIe-5644/5645/5646, PXIe-5820/5840/5841 **Lock the NI-RFSA device to the signal at the external REF IN connector.**PXIe-5830/5831 **For the PXIe-5830, connect the PXIe-5820 REF IN connector to the PXIe-3621 REF OUT connector. For the PXIe-5831, connect the PXIe-5820 REF IN connector to the PXIe-3622 REF OUT connector. For the PXIe-5830, lock the external signal to the PXIe-3621 REF IN connector. For the PXIe-5831/5832, lock the external signal to the PXIe-3622 REF IN connector.**PXIe-5831/5832 with PXIe-5653 **Connect the PXIe-5820 REF IN connector to the PXIe-3622 REF OUT connector. Connect the PXIe-5653 REF OUT (10 MHz) connector to the PXIe-3622 REF IN connector. Lock the external signal to the PXIe-5653 REF IN connector.**PXIe-5841 with PXIe-5655 **Lock to the signal at the REF IN connector on the associated PXIe-5655. Connect the REF OUT connector on the PXIe-5655 to the PXIe-5841 REF IN connector. **PXIe-5842 **Lock to the signal at the REF IN connector on the associated PXIe-5655. Cables between modules are required as shown in the User Manual for the instrument. PXIe-5860 Lock to the signal at the REF IN connector on the PXIe-5860. + + + + + + .. py:attribute:: ReferenceClockSource.PXI_CLK + + + + **PXI-5661 **NI-RFSA locks the NI-RFSA device to the PXI backplane clock using the PXI-5600. You must connect the PXI 10 MHz connector to the REF IN connector on the PXI-5600 front panel to use this option. **PXIe-5668 **Lock the PXIe-5653 to the PXI backplane clock. Connect the PXIe-5606 LO2 OUT to the LO2 IN connector on the PXIe-5624.**PXIe-5644/5645/5646, PXIe-5663/5663E/5665/5667, PXIe-5694, PXIe-5820/5830/5831/5831/5832 with PXIe-5653/5840/5840 with PXIe-5653/5841/5841 with PXIe-5655/5842/5860 **Lock the device to the PXI backplane clock. + + + + + + .. py:attribute:: ReferenceClockSource.CLK_IN + + + + **PXI-5661 **This configuration does not apply to the PXI-5661.**PXIe-5663/5663E **NI-RFSA locks the PXIe-5663/5663E to an external 10 MHz signal. Connect the external signal to the CLK IN connector on the PXIe-5622, and connect the PXIe-5622 CLK OUT connector to the FREQ REF IN connector on the PXI/PXIe-5652.**PXIe-5665 **NI-RFSA locks the PXIe-5665 to an external 100 MHz signal. Connect the external signal to the CLK IN connector on the PXIe-5622, and connect the PXIe-5622 CLK OUT connector to the REF IN connector on the PXIe-5653. Set the :py:attr:`nirfsa.Session.ref_clock_rate` property to 100 MHz.**PXIe-5667 **NI-RFSA locks the PXIe-5667 to an external 100 MHz signal. Connect the external signal to the CLK IN connector on the PXIe-5622, and connect the PXIe-5622 CLK OUT connector to the REF IN connector on the PXIe-5653. Connect the 10 MHZ REF OUT terminal on the PXIe-5653 to the REF/LO IN connector on the PXIe-5694. Set the :py:attr:`nirfsa.Session.ref_clock_rate` property to 100 MHz.**PXIe-5668 **Lock the PXIe-5668 to an external 100 MHz signal. Connect the external signal to the CLK IN connector on the PXIe-5624, and connect the PXIe-5624 CLK OUT connector to the REF IN connector on the PXIe-5653. Set the **clock rate** parameter to 100 MHz.**PXIe-5644/5645/5646, PXIe-5820/5830/5831/5831/5832 with PXIe-5653/5840/5840 with PXIe-5653/5841/5841 with PXIe-5655/5842/5860 **This configuration does not apply. + + + + + + .. py:attribute:: ReferenceClockSource.PXI_CLK_MASTER + + + + **PXIe-5831/5832 with PXIe-5653 **NI-RFSA configures the PXIe-5653 to export the Reference clock and configures the PXIe-5820 and PXIe-3622 to use PXI_Clk as the Reference Clock source. Connect the PXIe-5653 REF OUT (10 MHz) connector to the PXI chassis REF IN connector.**PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5644/5645/5646, PXIe-5820/5840/5841/5841 with PXIe-5655 /5842/5860**This configuration does not apply. + + + + + + .. py:attribute:: ReferenceClockSource.REF_IN_2 + + + + **PXI-5661, PXIe-5663/5663E/5665/5667/5668, PXIe-5644/5645/5646, PXIe-5820/5830/5831/5831/5832 with PXIe-5653/5840/5841/5841 with PXIe-5655 **This configuration does not apply. + + + + + +ReferenceLevelDataType +---------------------- + +.. py:class:: ReferenceLevelDataType + + .. py:attribute:: ReferenceLevelDataType.MECHANICAL_ATTENUATOR_DISABLED + + + + The data is the configuration data when the mechanical relay is disabled. Use this option to save uncalibrated measurements for more advanced operations. + + + + + + .. py:attribute:: ReferenceLevelDataType.DEFAULT + + + + The data is the default configuration data. + + + + + +ReferenceTriggerDigitalEdgeEdge +------------------------------- + +.. py:class:: ReferenceTriggerDigitalEdgeEdge + + .. py:attribute:: ReferenceTriggerDigitalEdgeEdge.RISING + + + + The trigger asserts on the rising edge of the signal. + + + + + + .. py:attribute:: ReferenceTriggerDigitalEdgeEdge.FALLING + + + + The trigger asserts on the falling edge of the signal + + + + + +ReferenceTriggerIqPowerEdgeSlope +-------------------------------- + +.. py:class:: ReferenceTriggerIqPowerEdgeSlope + + .. py:attribute:: ReferenceTriggerIqPowerEdgeSlope.RISING + + + + The trigger asserts when the signal power is rising. + + + + + + .. py:attribute:: ReferenceTriggerIqPowerEdgeSlope.FALLING + + + + The trigger asserts when the signal power is falling. + + + + + +ReferenceTriggerOspDelayEnabled +------------------------------- + +.. py:class:: ReferenceTriggerOspDelayEnabled + + .. py:attribute:: ReferenceTriggerOspDelayEnabled.DISABLED + + + + Disables OSP delay for the Reference Trigger. + + + + + + .. py:attribute:: ReferenceTriggerOspDelayEnabled.ENABLED + + + + Enables OSP delay for the Reference Trigger. + + + + + +ReferenceTriggerType +-------------------- + +.. py:class:: ReferenceTriggerType + + .. py:attribute:: ReferenceTriggerType.NONE + + + + No Reference Trigger is configured. + + + + + + .. py:attribute:: ReferenceTriggerType.DIGITAL_EDGE + + + + The Reference Trigger is not asserted until a digital edge is detected. The source of the digital edge is specified with the :py:attr:`nirfsa.Session.digital_edge_ref_trigger_source` property. + + + + + + .. py:attribute:: ReferenceTriggerType.IQ_POWER_EDGE + + + + The Reference Trigger is asserted when the signal is changing past the level specified with the slope (rising or falling) configured with the :py:attr:`nirfsa.Session.iq_power_edge_ref_trigger_slope` property. + + + + + + .. py:attribute:: ReferenceTriggerType.SOFTWARE_EDGE + + + + The Reference Trigger is not asserted until a software trigger occurs. You can assert the software trigger by calling the :py:meth:`nirfsa.Session.send_software_edge_trigger` method and selecting :py:data:`~nirfsa.NIRFSA_VAL_REF_TRIGGER` as the **trigger** parameter. + + + + + + .. py:attribute:: ReferenceTriggerType.IQ_ANALOG_EDGE + + + + The Reference Trigger is asserted when the I or Q signal is changed past the level specified with the slope configured with the :py:attr:`nirfsa.Session.IQ_ANALOG_EDGE_REF_TRIGGER_SLOPE` property. This value is valid only for PXIe-5644/5645 devices. + + + + + +ResetWithOptionsStepsToOmit +--------------------------- + +.. py:class:: ResetWithOptionsStepsToOmit + + .. py:attribute:: ResetWithOptionsStepsToOmit.DEEMBEDDING_TABLES + + + + Omits deleting de-embedding tables. This step is valid only for the PXIe-5830/5831/5832/5840. + + + + + + .. py:attribute:: ResetWithOptionsStepsToOmit.NONE + + + + No step is omitted during reset. + + + + + + .. py:attribute:: ResetWithOptionsStepsToOmit.ROUTES + + + + Omits the routing reset step. Routing is preserved after a reset. However, routing related properties are reset to default, and routing is released if the default properties are committed after a reset. + + + + + +RfLbSigCondPathSel +------------------ + +.. py:class:: RfLbSigCondPathSel + + .. py:attribute:: RfLbSigCondPathSel.EXT_CAL_RF_LOWBAND_SIGNAL_CONDITIONING_PATH_1 + + + + yet to be defined + + + + + + .. py:attribute:: RfLbSigCondPathSel.EXT_CAL_RF_LOWBAND_SIGNAL_CONDITIONING_PATH_2 + + + + yet to be defined + + + + + +RfOutLoExport +------------- + +.. py:class:: RfOutLoExport + + .. py:attribute:: RfOutLoExport.DISABLED + + + + The LO signal is not exported from the RF OUT LO OUT terminal. + + + + + + .. py:attribute:: RfOutLoExport.ENABLED + + + + The LO signal is exported from the RF OUT LO OUT terminal. + + + + + + .. py:attribute:: RfOutLoExport.UNSPECIFIED + + + + The LO signal may or may not be exported to the RF OUT LO OUT terminal, because NI-RFSG may be controlling it. + + + + + +RfPathSelection +--------------- + +.. py:class:: RfPathSelection + + .. py:attribute:: RfPathSelection.EXT_CAL_RF_BAND_1 + + + + The data is the default configuration data. + + + + + + .. py:attribute:: RfPathSelection.EXT_CAL_RF_BAND_2 + + + + The data is the configuration data when the mechanical relay is disabled. Use this option to save uncalibrated measurements for more advanced operations. + + + + + + .. py:attribute:: RfPathSelection.EXT_CAL_RF_BAND_3 + + + + The data is the default configuration data. + + + + + + .. py:attribute:: RfPathSelection.EXT_CAL_RF_BAND_4 + + + + The data is the default configuration data. + + + + + +SelfCalSteps +------------ + +.. py:class:: SelfCalSteps + + .. py:attribute:: SelfCalSteps.DIGITIZER_SELF_CAL + + + + Omits the Image Suppression step. If you omit this step, the Residual Sideband Image performance is not adjusted. + + + + + + .. py:attribute:: SelfCalSteps.PRESELECTOR_ALIGNMENT + + + + Omits the LO Self Cal step. If you omit this step, the power level of the LO is not adjusted. + + + + + + .. py:attribute:: SelfCalSteps.OMIT_NONE + + + + No calibration steps are omitted. + + + + + + .. py:attribute:: SelfCalSteps.GAIN_REFERENCE + + + + Omits the Power Level Accuracy step. If you omit this step, the power level accuracy of the device is not adjusted. + + + + + + .. py:attribute:: SelfCalSteps.IF_FLATNESS + + + + Omits the Residual LO Power step. If you omit this step, the Residual LO Power performance is not adjusted. + + + + + + .. py:attribute:: SelfCalSteps.LO_SELF_CAL + + + + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + + + + + + .. py:attribute:: SelfCalSteps.AMPLITUDE_ACCURACY + + + + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + + + + + + .. py:attribute:: SelfCalSteps.RESIDUAL_LO_POWER + + + + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + + + + + + .. py:attribute:: SelfCalSteps.IMAGE_SUPPRESSION + + + + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + + + + + + .. py:attribute:: SelfCalSteps.SYNTHESIZER_ALIGNMENT + + + + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + + + + + + .. py:attribute:: SelfCalSteps.DC_OFFSET + + + + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + + + + + +SelfCalibrateRangeStepsToOmit +----------------------------- + +.. py:class:: SelfCalibrateRangeStepsToOmit + + .. py:attribute:: SelfCalibrateRangeStepsToOmit.DIGITIZER_SELF_CAL + + + + Omits the Image Suppression step. If you omit this step, the Residual Sideband Image performance is not adjusted. + + + + + + .. py:attribute:: SelfCalibrateRangeStepsToOmit.PRESELECTOR_ALIGNMENT + + + + Omits the LO Self Cal step. If you omit this step, the power level of the LO is not adjusted. + + + + + + .. py:attribute:: SelfCalibrateRangeStepsToOmit.OMIT_NONE + + + + No calibration steps are omitted. + + + + + + .. py:attribute:: SelfCalibrateRangeStepsToOmit.GAIN_REFERENCE + + + + Omits the Power Level Accuracy step. If you omit this step, the power level accuracy of the device is not adjusted. + + + + + + .. py:attribute:: SelfCalibrateRangeStepsToOmit.IF_FLATNESS + + + + Omits the Residual LO Power step. If you omit this step, the Residual LO Power performance is not adjusted. + + + + + + .. py:attribute:: SelfCalibrateRangeStepsToOmit.LO_SELF_CAL + + + + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + + + + + + .. py:attribute:: SelfCalibrateRangeStepsToOmit.AMPLITUDE_ACCURACY + + + + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + + + + + + .. py:attribute:: SelfCalibrateRangeStepsToOmit.RESIDUAL_LO_POWER + + + + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + + + + + + .. py:attribute:: SelfCalibrateRangeStepsToOmit.IMAGE_SUPPRESSION + + + + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + + + + + + .. py:attribute:: SelfCalibrateRangeStepsToOmit.SYNTHESIZER_ALIGNMENT + + + + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + + + + + + .. py:attribute:: SelfCalibrateRangeStepsToOmit.DC_OFFSET + + + + Omits the Voltage Controlled Oscillator (VCO) Alignment step. If you omit this step, the LO PLL is not adjusted. + + + + + +SelfCalibrationStep +------------------- + +.. py:class:: SelfCalibrationStep + + .. py:attribute:: SelfCalibrationStep.PRESELECTOR_ALIGNMENT + + + + Calls for preselector alignment. + + + + + + .. py:attribute:: SelfCalibrationStep.GAIN_REFERENCE + + + + Measures the changes in gain since the last external calibration was run. + + + + + + .. py:attribute:: SelfCalibrationStep.IF_FLATNESS + + + + Measures the IF response of the entire system for each of the supported IF filters + + + + + + .. py:attribute:: SelfCalibrationStep.DIGITIZER_SELF_CAL + + + + Calls for digitizer self-calibration, if the digitizer is associated with the RF downconverter. + + + + + + .. py:attribute:: SelfCalibrationStep.LO_SELF_CAL + + + + Calls for LO self-calibration, if the LO source module is associated with the RF downconverter. + + + + + + .. py:attribute:: SelfCalibrationStep.AMPLITUDE_ACCURACY + + + + Selects the Amplitude Accuracy self-calibration step. + + + + + + .. py:attribute:: SelfCalibrationStep.RESIDUAL_LO_POWER + + + + Selects the Residual LO Power self-calibration step. + + + + + + .. py:attribute:: SelfCalibrationStep.IMAGE_SUPPRESSION + + + + Selects the Image Suppression self-calibration step. + + + + + + .. py:attribute:: SelfCalibrationStep.SYNTHESIZER_ALIGNMENT + + + + Selects the Synthesizer Alignment self-calibration step. + + + + + + .. py:attribute:: SelfCalibrationStep.DC_OFFSET + + + + Selects the DC Offset self-calibration step. + + + + + +Signal +------ + +.. py:class:: Signal + + .. py:attribute:: Signal.START_TRIGGER + + + + NI-RFSA routes a Start Trigger. + + + + + + .. py:attribute:: Signal.REF_TRIGGER + + + + NI-RFSA routes a Reference + + + + + + .. py:attribute:: Signal.ADVANCE_TRIGGER + + + + NI-RFSA routes an Advance + + + + + + .. py:attribute:: Signal.READY_FOR_START_EVENT + + + + NI-RFSA routes a Ready for Start Event. + + + + + + .. py:attribute:: Signal.READY_FOR_REF_EVENT + + + + NI-RFSA routes a Ready for Reference Event.. + + + + + + .. py:attribute:: Signal.END_OF_RECORD_EVENT + + + + NI-RFSA routes a End of Record Event. + + + + + + .. py:attribute:: Signal.DONE_EVENT + + + + NI-RFSA routes a Done Event. + + + + + + .. py:attribute:: Signal.REF_CLOCK + + + + NI-RFSA routes a Reference Clock. + + + + + + .. py:attribute:: Signal.USER + + + + NI-RFSA routes a User Defined Signal. + + + + + +SignalConditioningEnabled +------------------------- + +.. py:class:: SignalConditioningEnabled + + .. py:attribute:: SignalConditioningEnabled.ENABLED + + + + Enables signal conditioning. + + + + + + .. py:attribute:: SignalConditioningEnabled.BYPASSED + + + + Bypasses all signal conditioning. + + + + + +SmoothSpectrumEnabled +--------------------- + +.. py:class:: SmoothSpectrumEnabled + + .. py:attribute:: SmoothSpectrumEnabled.DISABLED + + + + Disables spectrum smoothing. + + + + + + .. py:attribute:: SmoothSpectrumEnabled.ENABLED + + + + Enables spectrum smoothing. + + + + + +SoftwareTriggerType +------------------- + +.. py:class:: SoftwareTriggerType + + .. py:attribute:: SoftwareTriggerType.START + + + + NI-RFSA sends a Start software trigger. + + + + + + .. py:attribute:: SoftwareTriggerType.REF + + + + NI-RFSA sends a Reference software trigger. + + + + + + .. py:attribute:: SoftwareTriggerType.ADVANCE + + + + NI-RFSA sends an Advance software trigger. + + + + + + .. py:attribute:: SoftwareTriggerType.ARM_REF + + + + NI-RFSA sends an Arm Reference software trigger. This trigger is not valid for the PXIe-5668. + + + + + +SparameterOrientation +--------------------- + +.. py:class:: SparameterOrientation + + .. py:attribute:: SparameterOrientation.PORT1_TOWARDS_DUT + + + + Port 1 of the S2P is oriented towards the DUT port. + + + + + + .. py:attribute:: SparameterOrientation.PORT2_TOWARDS_DUT + + + + Port 2 of the S2P is oriented towards the DUT port. + + + + + +SpectrumAveragingMode +--------------------- + +.. py:class:: SpectrumAveragingMode + + .. py:attribute:: SpectrumAveragingMode.NO + + + + Configures NI-RFSA to perform no averaging on acquisitions. + + + + + + .. py:attribute:: SpectrumAveragingMode.RMS + + + + Configures NI-RFSA for root-mean-square (RMS) averaging. RMS averaging reduces signal fluctuations but not the noise floor. RMS averaging averages the energy, or power, of the signal. This averaging prevents noise floor reduction and gives averaged RMS quantities of single-channel measurements zero phase. RMS averaging for dual-channel measurements preserves important phase information. + + + + + + .. py:attribute:: SpectrumAveragingMode.VECTOR + + + + Configures NI-RFSA for vector averaging. Vector averaging reduces noise from synchronous signals. Vector averaging computes the average of complex quantities directly, which means that it allows separate averaging for real and imaginary parts. Complex averaging such as vector averaging reduces noise and usually requires a trigger to improve block-to-block phase coherence. + + + + + + .. py:attribute:: SpectrumAveragingMode.PEAK_HOLD + + + + Configures NI-RFSA for peak-hold averaging. Peak-hold averaging retains the RMS peak levels of the averaged quantities. The peak-hold averaging process performs peak-hold at each frequency bin separately to retain peak RMS levels from one FFT record to the next. + + + + + + .. py:attribute:: SpectrumAveragingMode.MIN_HOLD + + + + Configures NI-RFSA to perform no averaging on acquisitions. + + + + + + .. py:attribute:: SpectrumAveragingMode.SCALAR + + + + Configures NI-RFSA to perform no averaging on acquisitions. + + + + + + .. py:attribute:: SpectrumAveragingMode.LOG + + + + Configures NI-RFSA to perform no averaging on acquisitions. + + + + + +SpectrumFftWindowType +--------------------- + +.. py:class:: SpectrumFftWindowType + + .. py:attribute:: SpectrumFftWindowType.UNIFORM + + + + No window is applied. + + + + + + .. py:attribute:: SpectrumFftWindowType.HANNING + + + + The Hanning window is useful for analyzing transients longer than the time duration of the window, and also for general-purpose applications. + + + + + + .. py:attribute:: SpectrumFftWindowType.HAMMING + + + + A Hamming window is applied to the waveform using the following equation: y[i] = x[i] * (0.54 - 0.46cos(w)) where w = (2)i/n and n = the waveform size. Note: Hanning and Hamming windows are somewhat similar. However, in the time domain, the Hamming window does not get as close to zero near the edges as does the Hanning window. + + + + + + .. py:attribute:: SpectrumFftWindowType.BLACKMAN_HARRIS + + + + A Blackman-Harris window is applied to the waveform using the following equation: y[i] = x[i] * (0.42323 - 0.49755*cos(w) + 0.07922*cos(2w)) + + + + + + .. py:attribute:: SpectrumFftWindowType.EXACT_BLACKMAN + + + + An Exact Blackman window is applied to the waveform using the following equation: y[i] = x[i] * (a0 - a1*cos(w) + a2*cos(2w)) + + + + + + .. py:attribute:: SpectrumFftWindowType.BLACKMAN + + + + A Blackman window is useful for analyzing transient signals, and provides similar windowing to Hanning and Hamming windows but adds one additional cosine term to reduce ripple. A Blackman window is applied to the waveform using the following equation: y[i] = x[i] * (0.42 - 0.50*cos(w) + 0.08*cos(2w)) + + + + + + .. py:attribute:: SpectrumFftWindowType.FLAT_TOP + + + + The fifth-order Flat Top window has the best amplitude accuracy of all the window methods. The increased amplitude accuracy (0.02 dB for signals exactly between integral cycles) is at the expense of frequency selectivity. The Flat Top window is most useful in accurately measuring the amplitude of single frequency components with little nearby spectral energy in the signal. A fifth-order Flat Top window is applied to the waveform using the following equation: y[i] = x[i] * (a0 - a1*cos(w) + a2*cos(2w) - a3*cos(3w) + a4*cos(4w)) + + + + + + .. py:attribute:: SpectrumFftWindowType._4_TERM_BLACKMAN_HARRIS + + + + A 4-term Blackman-Harris window is a general purpose window; it has side-lobe rejection in the upper 90 dB, with moderately wide side lobe. A 4-term Blackman Harris window is applied to the waveform using the following equation: y[i] = x[i] * (a0 - a1*cos(w) + a2*cos(2w) - a3*cos(3w)) + + + + + + .. py:attribute:: SpectrumFftWindowType._7_TERM_BLACKMAN_HARRIS + + + + A 7-term Blackman-Harris window has the highest dynamic range; it is ideal for signal-to-noise ratio applications. A 7-term Blackman Harris window is applied to the waveform using the following equation: y[i] = x[i] * (a0 - a1*cos(w) + a2*cos(2w) - a3*cos(3w) + a4*cos(4w) - a5*cos(5w) + a6*cos(6w)) + + + + + + .. py:attribute:: SpectrumFftWindowType.LOW_SIDE_LOBE + + + + The Low Side Lobe window further reduces the size of the main lobe. The following equation defines the Low Side Lobe window. where *N* is the length of window + + + + + + .. py:attribute:: SpectrumFftWindowType.GAUSSIAN + + + + A Gaussian window is applied to the waveform using the following equation: y[i] = x[i] * exp(-0.5*(i - (N-1)/2)^2 / ((N-1)/2)^2) where N is the length of the window + + + + + + .. py:attribute:: SpectrumFftWindowType.KAISER_BESSEL + + + + A Kaiser-Bessel window is applied to the waveform using the following equation: y[i] = x[i] * I0(β*sqrt(1 - (2i/(N-1) - 1)^2))/I0(β) where i is between 0 and N-1, N is the length of the window, β determines the shape of the window, and I0 is the zeroth order Modified Bessel method of the first kind + + + + + +SpectrumResolutionBandwidthType +------------------------------- + +.. py:class:: SpectrumResolutionBandwidthType + + .. py:attribute:: SpectrumResolutionBandwidthType.THREE_DECIBELS + + + + Defines the resolution bandwidth (RBW) in terms of the 3 dB bandwidth of the window specified by the :py:attr:`nirfsa.Session.fft_window_type` property. + + + + + + .. py:attribute:: SpectrumResolutionBandwidthType.SIX_DECIBELS + + + + Defines the RBW in terms of the 6 dB bandwidth of the window specified by the :py:attr:`nirfsa.Session.fft_window_type` property. + + + + + + .. py:attribute:: SpectrumResolutionBandwidthType.BIN_WIDTH + + + + Defines the RBW in terms of the display resolution, which is the ratio of the sampling frequency to the number of samples that you acquire. + + + + + + .. py:attribute:: SpectrumResolutionBandwidthType.EQUIVALENT_NOISE_BANDWIDTH + + + + Defines the RBW in terms of the equivalent noise bandwidth (ENBW) of the window specified by the :py:attr:`nirfsa.Session.fft_window_type` property. + + + + + +StartTriggerDigitalEdgeEdge +--------------------------- + +.. py:class:: StartTriggerDigitalEdgeEdge + + .. py:attribute:: StartTriggerDigitalEdgeEdge.RISING + + + + The trigger asserts on the rising edge of the signal.PXI-5661, PXIe-5663/5663E/5665/5668 + + + + + + .. py:attribute:: StartTriggerDigitalEdgeEdge.FALLING + + + + The trigger asserts on the falling edge of the signal | PXIe-5668 + + + + + +StartTriggerType +---------------- + +.. py:class:: StartTriggerType + + .. py:attribute:: StartTriggerType.NONE + + + + No Start Trigger is configured. + + + + + + .. py:attribute:: StartTriggerType.DIGITAL_EDGE + + + + The Start Trigger is not asserted until a digital edge is detected. The source of the digital edge is specified with the :py:attr:`nirfsa.Session.digital_edge_start_trigger_source` property. + + + + + + .. py:attribute:: StartTriggerType.SOFTWARE_EDGE + + + + The Start Trigger is not asserted until a software trigger occurs. You can assert the software trigger by calling the :py:meth:`nirfsa.Session.send_software_edge_trigger` method and selecting :py:data:`~nirfsa.NIRFSA_VAL_START_TRIGGER` as the value of the **trigger** parameter. + + + + + +StepsToOmit +----------- + +.. py:class:: StepsToOmit + + .. py:attribute:: StepsToOmit.DEEMBEDDING_TABLES + + + + Omits deleting de-embedding tables. This step is valid only for the PXIe-5830/5831/5832/5840. + + + + + + .. py:attribute:: StepsToOmit.NONE + + + + No step is omitted during reset. + + + + + + .. py:attribute:: StepsToOmit.ROUTES + + + + Omits the routing reset step. Routing is preserved after a reset. However, routing related properties are reset to default, and routing is released if the default properties are committed after a reset. + + + + + +SyncRefTriggerDelayEnabled +-------------------------- + +.. py:class:: SyncRefTriggerDelayEnabled + + .. py:attribute:: SyncRefTriggerDelayEnabled.DISABLED + + + + Disables synchronization reference trigger delay. + + + + + + .. py:attribute:: SyncRefTriggerDelayEnabled.ENABLED + + + + Enables synchronization reference trigger delay. + + + + + +UserSourcePulseWidthUnits +------------------------- + +.. py:class:: UserSourcePulseWidthUnits + + .. py:attribute:: UserSourcePulseWidthUnits.SECONDS + + + + Units are seconds. + + + + + + .. py:attribute:: UserSourcePulseWidthUnits.CLOCK_PERIODS + + + + Units are clock periods. + + + + + + + diff --git a/docs/nirfsa/errors.rst b/docs/nirfsa/errors.rst new file mode 100644 index 000000000..e5e56dc32 --- /dev/null +++ b/docs/nirfsa/errors.rst @@ -0,0 +1,90 @@ +Exceptions and Warnings +======================= + +Error +----- + + .. py:currentmodule:: nirfsa.errors + + .. exception:: Error + + Base exception type that all NI-RFSA exceptions derive from + + +DriverError +----------- + + .. py:currentmodule:: nirfsa.errors + + .. exception:: DriverError + + An error originating from the NI-RFSA driver + + +UnsupportedConfigurationError +----------------------------- + + .. py:currentmodule:: nirfsa.errors + + .. exception:: UnsupportedConfigurationError + + An error due to using this module in an usupported platform. + +DriverNotInstalledError +----------------------- + + .. py:currentmodule:: nirfsa.errors + + .. exception:: DriverNotInstalledError + + An error due to using this module without the driver runtime installed. + +DriverTooOldError +----------------- + + .. py:currentmodule:: nirfsa.errors + + .. exception:: DriverTooOldError + + An error due to using this module with an older version of the NI-RFSA driver runtime. + +DriverTooNewError +----------------- + + .. py:currentmodule:: nirfsa.errors + + .. exception:: DriverTooNewError + + An error due to the NI-RFSA driver runtime being too new for this module. + +InvalidRepeatedCapabilityError +------------------------------ + + .. py:currentmodule:: nirfsa.errors + + .. exception:: InvalidRepeatedCapabilityError + + An error due to an invalid character in a repeated capability + + +SelfTestError +------------- + + .. py:currentmodule:: nirfsa.errors + + .. exception:: SelfTestError + + An error due to a failed self-test + + +DriverWarning +------------- + + .. py:currentmodule:: nirfsa.errors + + .. exception:: DriverWarning + + A warning originating from the NI-RFSA driver + + + diff --git a/docs/nirfsa/examples.rst b/docs/nirfsa/examples.rst new file mode 100644 index 000000000..f19315903 --- /dev/null +++ b/docs/nirfsa/examples.rst @@ -0,0 +1,23 @@ +Examples +======== + +`You can download all nirfsa examples for latest version here `_ + +nirfsa_getting_started_iq.py +---------------------------- + +.. literalinclude:: ../../src/nirfsa/examples/nirfsa_getting_started_iq.py + :language: python + :linenos: + :encoding: utf8 + :caption: `(nirfsa_getting_started_iq.py) `_ + +nirfsa_getting_started_spectrum.py +---------------------------------- + +.. literalinclude:: ../../src/nirfsa/examples/nirfsa_getting_started_spectrum.py + :language: python + :linenos: + :encoding: utf8 + :caption: `(nirfsa_getting_started_spectrum.py) `_ + diff --git a/docs/nirfsa/index.rst b/docs/nirfsa/index.rst new file mode 100644 index 000000000..031498c9c --- /dev/null +++ b/docs/nirfsa/index.rst @@ -0,0 +1,30 @@ + +NI-RFSA Python API Documentation +================================ + +.. include:: about_nirfsa.inc + +.. include:: ../_static/contributing.inc + +.. include:: ../_static/support.inc + +.. toctree:: + :maxdepth: 3 + :caption: Documentation + + nirfsa + +Additional Documentation +------------------------ + +Refer to your driver documentation for device-specific information and detailed API documentation. + + +.. include:: ../_static/license.inc + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/nirfsa/installation.inc b/docs/nirfsa/installation.inc new file mode 100644 index 000000000..2bbf3c647 --- /dev/null +++ b/docs/nirfsa/installation.inc @@ -0,0 +1,13 @@ + +.. _nirfsa_installation-section: + +Installation +------------ + +As a prerequisite to using the **nirfsa** module, you must install the NI-RFSA runtime on your system. Visit `ni.com/downloads `_ to download the driver runtime for your devices. + +The nimi-python modules (i.e. for **NI-RFSA**) can be installed with `pip `_:: + + $ python -m pip install nirfsa + + diff --git a/docs/nirfsa/nirfsa.rst b/docs/nirfsa/nirfsa.rst new file mode 100644 index 000000000..99ce0c0cf --- /dev/null +++ b/docs/nirfsa/nirfsa.rst @@ -0,0 +1,9 @@ +nirfsa module +============= + +.. include:: installation.inc + +.. include:: ../_static/nirfsa_usage.inc + +.. include:: toc.inc + diff --git a/docs/nirfsa/rep_caps.rst b/docs/nirfsa/rep_caps.rst new file mode 100644 index 000000000..70a6a514b --- /dev/null +++ b/docs/nirfsa/rep_caps.rst @@ -0,0 +1,88 @@ +.. py:module:: nirfsa + :noindex: + +.. py:currentmodule:: nirfsa.Session + +.. role:: c(code) + :language: c + +.. role:: python(code) + :language: python + +Repeated Capabilities +===================== + + Repeated capabilities attributes are used to set the `channel_string` parameter to the + underlying driver function call. This can be the actual function based on the :py:class:`Session` + method being called, or it can be the appropriate Get/Set Attribute function, such as :c:`niRFSA_SetAttributeViInt32()`. + + Repeated capabilities attributes use the indexing operator :python:`[]` to indicate the repeated capabilities. + The parameter can be a string, list, tuple, or slice (range). Each element of those can be a string or + an integer. If it is a string, you can indicate a range using the same format as the driver: :python:`'0-2'` or + :python:`'0:2'` + + Some repeated capabilities use a prefix before the number and this is optional + +ports +----- + + .. py:attribute:: nirfsa.Session.ports[] + + .. code:: python + + session.ports['0-2'].channel_enabled = True + + passes a string of :python:`'0, 1, 2'` to the set attribute function. + + +los +--- + + .. py:attribute:: nirfsa.Session.los[] + + If no prefix is added to the items in the parameter, the correct prefix will be added when + the driver function call is made. + + .. code:: python + + session.los['0-2'].channel_enabled = True + + passes a string of :python:`'LO0, LO1, LO2'` to the set attribute function. + + If an invalid repeated capability is passed to the driver, the driver will return an error. + + You can also explicitly use the prefix as part of the parameter, but it must be the correct prefix + for the specific repeated capability. + + .. code:: python + + session.los['LO0-LO2'].channel_enabled = True + + passes a string of :python:`'LO0, LO1, LO2'` to the set attribute function. + + +device_temperatures +------------------- + + .. py:attribute:: nirfsa.Session.device_temperatures[] + + .. code:: python + + session.device_temperatures['0-2'].channel_enabled = True + + passes a string of :python:`'0, 1, 2'` to the set attribute function. + + +channels +-------- + + .. py:attribute:: nirfsa.Session.channels[] + + .. code:: python + + session.channels['0-2'].channel_enabled = True + + passes a string of :python:`'0, 1, 2'` to the set attribute function. + + + diff --git a/docs/nirfsa/status.inc b/docs/nirfsa/status.inc new file mode 100644 index 000000000..6e698ad4a --- /dev/null +++ b/docs/nirfsa/status.inc @@ -0,0 +1,46 @@ + +NI-RFSA Python API Status +------------------------- + ++-------------------------------+-----------------------+ +| NI-RFSA (nirfsa) | | ++===============================+=======================+ +| Driver Version Tested Against | 2026 Q3 | ++-------------------------------+-----------------------+ +| PyPI Version | |nirfsaLatestVersion| | ++-------------------------------+-----------------------+ +| Supported Python Version | |nirfsaPythonVersion| | ++-------------------------------+-----------------------+ +| Documentation | |nirfsaDocs| | ++-------------------------------+-----------------------+ +| Open Issues | |nirfsaOpenIssues| | ++-------------------------------+-----------------------+ +| Open Pull Requests | |nirfsaOpenPRs| | ++-------------------------------+-----------------------+ + + +.. |nirfsaLatestVersion| image:: http://img.shields.io/pypi/v/nirfsa.svg + :alt: Latest NI-RFSA Version + :target: http://pypi.python.org/pypi/nirfsa + + +.. |nirfsaPythonVersion| image:: http://img.shields.io/pypi/pyversions/nirfsa.svg + :alt: NI-RFSA supported Python versions + :target: http://pypi.python.org/pypi/nirfsa + + +.. |nirfsaDocs| image:: https://readthedocs.org/projects/nirfsa/badge/?version=latest + :alt: NI-RFSA Python API Documentation Status + :target: https://nirfsa.readthedocs.io/en/latest + + +.. |nirfsaOpenIssues| image:: https://img.shields.io/github/issues/ni/nimi-python/nirfsa.svg + :alt: Open Issues + Pull Requests for NI-RFSA + :target: https://github.com/ni/nimi-python/issues?q=is%3Aopen+is%3Aissue+label%3Anirfsa + + +.. |nirfsaOpenPRs| image:: https://img.shields.io/github/issues-pr/ni/nimi-python/nirfsa.svg + :alt: Pull Requests for NI-RFSA + :target: https://github.com/ni/nimi-python/pulls?q=is%3Aopen+is%3Aissue+label%3Anirfsa + + diff --git a/docs/nirfsa/toc.inc b/docs/nirfsa/toc.inc new file mode 100644 index 000000000..baf175109 --- /dev/null +++ b/docs/nirfsa/toc.inc @@ -0,0 +1,11 @@ +API Reference +-------------- + +.. toctree:: + + class + rep_caps + enums + errors + examples + diff --git a/nirfsaunittest.xml b/nirfsaunittest.xml new file mode 100644 index 000000000..47d9c1fbc --- /dev/null +++ b/nirfsaunittest.xml @@ -0,0 +1,2197 @@ + + + + + + /home/msaini/nimi-python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 4af56f74e35c1f6d810e0fc615cd3854f87cbd34 Mon Sep 17 00:00:00 2001 From: mohit-emerson Date: Fri, 14 Aug 2026 09:37:57 +0000 Subject: [PATCH 5/7] system tests added --- generated/nirfsa/README.rst | 6 +- src/nirfsa/system_tests/samples2pfile.s2p | 7 + src/nirfsa/system_tests/test_system_nirfsa.py | 634 ++++++++++++++++++ tox-travis.ini | 6 +- tox.ini | 6 +- 5 files changed, 649 insertions(+), 10 deletions(-) create mode 100644 src/nirfsa/system_tests/samples2pfile.s2p create mode 100644 src/nirfsa/system_tests/test_system_nirfsa.py diff --git a/generated/nirfsa/README.rst b/generated/nirfsa/README.rst index 32642a54d..454d1e22b 100644 --- a/generated/nirfsa/README.rst +++ b/generated/nirfsa/README.rst @@ -122,15 +122,13 @@ The following is a basic example of using the **nirfsa** module to open a sessio import nirfsa # Configure the session - with nirfsa.Session(resource_name=resource_name, id_query=False, reset_device=False, options=options) as rfsa_session: + with nirfsa.Session(resource_name='5841', id_query=False, reset_device=False, options='Simulate=1, DriverSetup=Model:5841') as rfsa_session: rfsa_session.acquisition_type = nirfsa.AcquisitionType.IQ rfsa_session.reference_level = -10 rfsa_session.iq_carrier_frequency = 1e9 - rfsa_session.number_of_samples = 1024 - rfsa_session.iq_rate = 1e6 - iq_data_array = np.zeros(number_of_samples, dtype=np.complex128) + iq_data_array = np.zeros(1024, dtype=np.complex128) wfm_info = rfsa_session.read_iq_single_record_into(iq_data_array) # Perform measurements... diff --git a/src/nirfsa/system_tests/samples2pfile.s2p b/src/nirfsa/system_tests/samples2pfile.s2p new file mode 100644 index 000000000..c8dca4225 --- /dev/null +++ b/src/nirfsa/system_tests/samples2pfile.s2p @@ -0,0 +1,7 @@ +! 2-port S-parameter file, four frequency points +# GHz S RI R 50.0 +!freq RS11 IS11 RS21 AS21 MS12 AS12 MS22 AS22 +0.500 1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 +1.000 2.0 0.0 2.0 0.0 2.0 0.0 2.0 0.0 +2.000 3.0 0.0 3.0 0.0 3.0 0.0 3.0 0.0 +6.000 4.0 0.0 4.0 0.0 4.0 0.0 4.0 0.0 diff --git a/src/nirfsa/system_tests/test_system_nirfsa.py b/src/nirfsa/system_tests/test_system_nirfsa.py new file mode 100644 index 000000000..ed84bed4b --- /dev/null +++ b/src/nirfsa/system_tests/test_system_nirfsa.py @@ -0,0 +1,634 @@ +import hightime +import nirfsa +import numpy as np +import os +import pathlib +import pytest +import sys +import time + +sys.path.insert(0, str(pathlib.Path(__file__).parent.parent.parent / 'shared')) +sys.path.insert(0, str(pathlib.Path(__file__).parent.parent.parent / 'generated/nirfsa')) + +import system_test_utilities # noqa: E402 + +test_files_base_dir = os.path.join(os.path.dirname(__file__)) +use_simulated_session = True +real_hw_resource_name = '5841' + + +def get_test_file_path(file_name): + return os.path.join(test_files_base_dir, file_name) + + +class SystemTests: + @pytest.fixture(scope='function') + def rfsa_device_session(self, session_creation_kwargs): + if use_simulated_session: + with nirfsa.Session("5841sim", id_query=False, reset_device=False, options="Simulate=1, DriverSetup=Model:5841", **session_creation_kwargs) as sim_5841_session: + yield sim_5841_session + else: + with nirfsa.Session(real_hw_resource_name, id_query=False, reset_device=False, **session_creation_kwargs) as real_rfsa_device_session: + yield real_rfsa_device_session + + @pytest.fixture(scope='function') + def simulated_5831_device_session(self, session_creation_kwargs): + with nirfsa.Session("5831sim", id_query=False, reset_device=False, options="Simulate=1, DriverSetup=Model:5831", **session_creation_kwargs) as sim_5831_session: + yield sim_5831_session + + @pytest.fixture(scope='function') + def simulated_5668_device_session(self, session_creation_kwargs): + with nirfsa.Session("5668sim", id_query=False, reset_device=False, options="Simulate=1, DriverSetup=Model:5668R", **session_creation_kwargs) as sim_5668_session: + yield sim_5668_session + +# Attribute set and get related tests + def test_get_float_attribute(self, rfsa_device_session): + value = rfsa_device_session.reference_level + assert isinstance(value, float) + + def test_set_float_attribute(self, rfsa_device_session): + rfsa_device_session.reference_level = -1.0 + assert rfsa_device_session.reference_level == -1.0 + + def test_get_int64_attribute(self, rfsa_device_session): + value = rfsa_device_session.fetch_offset + assert isinstance(value, int) + + def test_set_int64_attribute(self, rfsa_device_session): + rfsa_device_session.fetch_offset = 5 + assert rfsa_device_session.fetch_offset == 5 + + def test_set_int32_enum_attribute(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.SPECTRUM + assert rfsa_device_session.acquisition_type == nirfsa.AcquisitionType.SPECTRUM + + def test_get_bool_attribute(self, rfsa_device_session): + value = rfsa_device_session.allow_more_records_than_memory + assert isinstance(value, bool) + + def test_set_bool_attribute(self, rfsa_device_session): + rfsa_device_session.allow_more_records_than_memory = True + assert rfsa_device_session.allow_more_records_than_memory is True + + def test_get_string_attribute(self, rfsa_device_session): + value = rfsa_device_session.serial_number + assert isinstance(value, str) + + def test_get_list_of_strings_attribute(self, rfsa_device_session): + models = rfsa_device_session.supported_instrument_models + assert isinstance(models, list) and all(isinstance(model, str) for model in models) + assert "NI PXIe-5841" in models + + def test_get_timedelta_attribute(self, rfsa_device_session): + value = rfsa_device_session.absolute_delay + assert isinstance(value, hightime.timedelta) + + def test_set_invalid_attribute_raises(self, rfsa_device_session): + with pytest.raises(AttributeError): + rfsa_device_session.non_existent_attribute = 123 + +# Multi-threading related tests + def test_multi_threading_lock_unlock(self, rfsa_device_session): + system_test_utilities.impl_test_multi_threading_lock_unlock(rfsa_device_session) + + def test_multi_threading_ivi_synchronized_wrapper_releases_lock(self, rfsa_device_session): + system_test_utilities.impl_test_multi_threading_ivi_synchronized_wrapper_releases_lock(rfsa_device_session.abort) + +# Error handling related tests + def test_error_message(self, session_creation_kwargs): + try: + with nirfsa.Session(resource_name="invalid_model", id_query=False, reset_device=False, options="Simulate=1, DriverSetup=Model:invalid_model", **session_creation_kwargs): + assert False + except nirfsa.Error as e: + assert e.code == -1074135025 # IVI_ERROR_INVALID_PARAMETER + assert "Invalid model in DriverSetup string" in e.description + + def test_get_error(self, rfsa_device_session): + try: + rfsa_device_session.instrument_model = '' + assert False + except nirfsa.Error as e: + assert e.code == -1074135027 # IVI_ERROR_IVI_ATTR_NOT_WRITABLE + assert "Attribute is read-only" in e.description + + def test_save_load_configuration(self, rfsa_device_session): + rfsa_device_session.iq_carrier_frequency = 2.4e9 + rfsa_device_session.reference_level = -5.0 + rfsa_device_session.save_configurations_to_file(get_test_file_path('tempConfiguration.json')) + assert os.path.exists(get_test_file_path('tempConfiguration.json')) + rfsa_device_session.iq_carrier_frequency = 1e9 + rfsa_device_session.reference_level = -10.0 + assert rfsa_device_session.iq_carrier_frequency == 1e9 + assert rfsa_device_session.reference_level == -10.0 + rfsa_device_session.load_configurations_from_file(get_test_file_path('tempConfiguration.json')) + assert rfsa_device_session.iq_carrier_frequency == 2.4e9 + assert rfsa_device_session.reference_level == -5.0 + os.remove(get_test_file_path('tempConfiguration.json')) + +# Utility method tests + def test_reset(self, rfsa_device_session): + default_reference_level = rfsa_device_session.reference_level + rfsa_device_session.reference_level = default_reference_level + 1.0 + assert rfsa_device_session.reference_level == default_reference_level + 1.0 + rfsa_device_session.reset() + assert rfsa_device_session.reference_level == default_reference_level + + def test_reset_with_options(self, rfsa_device_session): + frequencies = np.array([1e9, 2e9, 3e9], dtype=np.float64) + sparameter_tables = np.array([[[1 + 1j, 2 + 2j], [3 + 3j, 4 + 4j]], [[5 + 5j, 6 + 6j], [7 + 7j, 8 + 8j]], [[9 + 9j, 10 + 10j], [11 + 11j, 12 + 12j]]], dtype=np.complex128) + rfsa_device_session.create_deembedding_sparameter_table_array('', 'myTable1', frequencies, sparameter_tables, nirfsa.SparameterOrientation.PORT2_TOWARDS_DUT) + default_reference_level = rfsa_device_session.reference_level + rfsa_device_session.reference_level = default_reference_level + 1.0 + assert rfsa_device_session.reference_level == default_reference_level + 1.0 + steps_to_omit_with_deembedding_tables = nirfsa.ResetWithOptionsStepsToOmit.DEEMBEDDING_TABLES + steps_to_omit_none = nirfsa.ResetWithOptionsStepsToOmit.NONE + + # Reset all properties but omit deleting de-embedding tables. + rfsa_device_session.reset_with_options(steps_to_omit_with_deembedding_tables) + assert rfsa_device_session.reference_level == default_reference_level + + rfsa_device_session.ports[''].deembedding_selected_table = 'myTable1' + rfsa_device_session.commit() + + # Reset with no omitted steps deletes the de-embedding tables. + rfsa_device_session.reset_with_options(steps_to_omit_none) + rfsa_device_session.ports[''].deembedding_selected_table = 'myTable1' + try: + rfsa_device_session.commit() + assert False + except nirfsa.Error as e: + assert e.code == -1074097772 + assert 'de-embedding table cannot be found' in e.description + + def test_self_test(self, rfsa_device_session): + # We should not get an assert if self_test passes + rfsa_device_session.self_test() + + @pytest.mark.skipif(use_simulated_session is False, reason="Takes long time on real device") + def test_self_cal_range(self, rfsa_device_session): + steps_to_omit = nirfsa.SelfCalibrateRangeStepsToOmit.DIGITIZER_SELF_CAL | nirfsa.SelfCalibrateRangeStepsToOmit.LO_SELF_CAL + rfsa_device_session.self_calibrate_range(steps_to_omit, 1e9, 2e9, -20, 0) + + def test_clear_self_calibrate_range(self, rfsa_device_session): + rfsa_device_session.clear_self_calibrate_range() + + @pytest.mark.skipif(use_simulated_session is True, reason="Bad date returned by driver for simulated device") + def test_get_ext_cal_last_date_and_time(self, rfsa_device_session): + dt = rfsa_device_session.get_ext_cal_last_date_and_time() + assert isinstance(dt, hightime.datetime) + + def test_get_ext_cal_recommended_interval(self, rfsa_device_session): + interval = rfsa_device_session.get_ext_cal_recommended_interval() + assert isinstance(interval, hightime.timedelta) + + def test_get_terminal_name(self, rfsa_device_session): + terminal_name = rfsa_device_session.get_terminal_name(nirfsa.Signal.REF_TRIGGER, '') + assert '/ai/0/ReferenceTrigger' in terminal_name + + def test_abort(self, rfsa_device_session): + rfsa_device_session.iq_carrier_frequency = 2.4e9 + rfsa_device_session.initiate() + rfsa_device_session.check_acquisition_status() + rfsa_device_session.abort() + + @pytest.mark.skipif(use_simulated_session is True, reason="is_done is always True on simulated device") + def test_abort_with_status(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.iq_carrier_frequency = 2.4e9 + rfsa_device_session.reference_level = 0.0 + rfsa_device_session.iq_rate = 1e6 + rfsa_device_session.number_of_samples_is_finite = False + with rfsa_device_session.initiate(): + assert rfsa_device_session.check_acquisition_status() is False # is_done never True for continuous acquisition + assert rfsa_device_session.check_acquisition_status() is True # is_done True after abort + + @pytest.mark.skipif(use_simulated_session is True, reason="Bad date returned by driver for simulated device") + def test_get_self_cal_last_date_and_time(self, rfsa_device_session): + dt = rfsa_device_session.get_self_cal_last_date_and_time(nirfsa.SelfCalibrationStep.IMAGE_SUPPRESSION) + assert isinstance(dt, hightime.datetime) + + @pytest.mark.skipif(use_simulated_session is True, reason="Calibration step temperature may be unsupported or unreliable on simulated RFSA") + def test_get_self_calibration_temperature(self, rfsa_device_session): + temperature = rfsa_device_session.get_self_calibration_temperature(nirfsa.SelfCalibrationStep.IMAGE_SUPPRESSION) + assert isinstance(temperature, float) + + @pytest.mark.skipif(use_simulated_session is True, reason="Thermal correction is unsupported on simulated RFSA") + def test_perform_thermal_correction(self, rfsa_device_session): + rfsa_device_session.number_of_samples_is_finite = False + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.iq_rate = 1e6 + with rfsa_device_session.initiate(): + rfsa_device_session.perform_thermal_correction() + + def test_get_scaling_coefficients(self, rfsa_device_session): + coefficient_info = rfsa_device_session.get_scaling_coefficients() + assert isinstance(coefficient_info, list) + assert len(coefficient_info) > 0 + for info in coefficient_info: + assert hasattr(info, 'offset') + assert hasattr(info, 'gain') + + @pytest.mark.skipif(use_simulated_session is True, reason="Fetch backlog behavior differs on simulated RFSA") + def test_get_fetch_backlog(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.reference_level = 0.0 + rfsa_device_session.iq_rate = 1e6 + rfsa_device_session.number_of_samples = 2000 + rfsa_device_session.fetch_relative_to = nirfsa.FetchRelativeTo.REFERENCE_TRIGGER + with rfsa_device_session.initiate(): + time.sleep(3) + backlog = rfsa_device_session.get_fetch_backlog(0) + assert backlog == rfsa_device_session.number_of_samples + +# Repeated capability tests + def test_ports_rep_cap(self, simulated_5831_device_session): + requested_deembedding_type = nirfsa.DeembeddingType.SCALAR + simulated_5831_device_session.ports['if1'].deembedding_type = requested_deembedding_type + assert simulated_5831_device_session.ports['if1'].deembedding_type == requested_deembedding_type + + def test_los_rep_cap(self, simulated_5831_device_session): + requested_lo_source = nirfsa.LoSource.LO_SOURCE_SG_SA_SHARED + simulated_5831_device_session.los[2].lo_source = requested_lo_source + assert simulated_5831_device_session.los[2].lo_source == requested_lo_source + + def test_device_temperatures_rep_cap(self, rfsa_device_session): + temperature = rfsa_device_session.device_temperatures['0'].device_temperature + assert isinstance(temperature, float) + +# Trigger configuration tests + def test_configure_spectrum_frequency_center_span(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.SPECTRUM + requested_center_frequency = 2.4e9 + requested_span = 20e6 + rfsa_device_session.configure_spectrum_frequency(center_frequency=requested_center_frequency, span=requested_span) + center_frequency_diff = abs(rfsa_device_session.center_frequency - requested_center_frequency) + span_diff = abs(rfsa_device_session.spectrum_span - requested_span) + assert center_frequency_diff < 1 + assert span_diff < 1e5 # tolerance chosen as 100k to account for the coercions done by driver while planning the spectrum + + def test_configure_spectrum_frequency_start_stop(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.SPECTRUM + requested_start_frequency = 2.39e9 + requested_stop_frequency = 2.41e9 + rfsa_device_session.configure_spectrum_frequency(start_frequency=requested_start_frequency, stop_frequency=requested_stop_frequency) + expected_center_frequency = requested_start_frequency + (requested_stop_frequency - requested_start_frequency) / 2 + center_frequency_diff = abs(rfsa_device_session.center_frequency - expected_center_frequency) + expected_span = requested_stop_frequency - requested_start_frequency + span_diff = abs(rfsa_device_session.spectrum_span - expected_span) + assert center_frequency_diff < 1 + assert span_diff < 1e5 # tolerance chosen as 100k to account for the coercions done by driver while planning the spectrum + + def test_configure_spectrum_frequency_wrong_parameter_error(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.SPECTRUM + expected_error = "Provide either (center_frequency & span) or (start_frequency & stop_frequency)" + + with pytest.raises(ValueError) as exc_info: + rfsa_device_session.configure_spectrum_frequency(center_frequency=2.4e9) + assert str(exc_info.value) == expected_error + + with pytest.raises(ValueError) as exc_info: + rfsa_device_session.configure_spectrum_frequency(span=20e6) + assert str(exc_info.value) == expected_error + + with pytest.raises(ValueError) as exc_info: + rfsa_device_session.configure_spectrum_frequency(center_frequency=2.4e9, stop_frequency=2.41e9) + assert str(exc_info.value) == expected_error + + with pytest.raises(ValueError) as exc_info: + rfsa_device_session.configure_spectrum_frequency() + assert str(exc_info.value) == expected_error + + def test_configure_digital_edge_advance_trigger(self, rfsa_device_session): + rfsa_device_session.configure_digital_edge_advance_trigger('PXI_Trig1', nirfsa.AdvanceTriggerDigitalEdgeEdge.RISING) + assert rfsa_device_session.advance_trigger_type == nirfsa.AdvanceTriggerType.DIGITAL_EDGE + assert rfsa_device_session.digital_edge_advance_trigger_source == 'PXI_Trig1' + + def test_disable_advance_trigger(self, rfsa_device_session): + rfsa_device_session.configure_digital_edge_advance_trigger('PXI_Trig1', nirfsa.AdvanceTriggerDigitalEdgeEdge.RISING) + assert rfsa_device_session.advance_trigger_type == nirfsa.AdvanceTriggerType.DIGITAL_EDGE + rfsa_device_session.disable_advance_trigger() + assert rfsa_device_session.advance_trigger_type == nirfsa.AdvanceTriggerType.NONE + + def test_configure_digital_edge_ref_trigger(self, rfsa_device_session): + rfsa_device_session.configure_digital_edge_ref_trigger('PXI_Trig1', nirfsa.ReferenceTriggerDigitalEdgeEdge.RISING) + assert rfsa_device_session.ref_trigger_type == nirfsa.ReferenceTriggerType.DIGITAL_EDGE + assert rfsa_device_session.digital_edge_ref_trigger_source == 'PXI_Trig1' + assert rfsa_device_session.digital_edge_ref_trigger_edge == nirfsa.ReferenceTriggerDigitalEdgeEdge.RISING + + def test_disable_ref_trigger(self, rfsa_device_session): + rfsa_device_session.configure_digital_edge_ref_trigger('PXI_Trig1', nirfsa.ReferenceTriggerDigitalEdgeEdge.RISING) + assert rfsa_device_session.ref_trigger_type == nirfsa.ReferenceTriggerType.DIGITAL_EDGE + rfsa_device_session.disable_ref_trigger() + assert rfsa_device_session.ref_trigger_type == nirfsa.ReferenceTriggerType.NONE + + def test_configure_iq_power_edge_ref_trigger(self, rfsa_device_session): + rfsa_device_session.configure_iq_power_edge_ref_trigger('0', -20.0, nirfsa.ReferenceTriggerIqPowerEdgeSlope.FALLING, pretrigger_samples=32) + assert rfsa_device_session.ref_trigger_type == nirfsa.ReferenceTriggerType.IQ_POWER_EDGE + assert rfsa_device_session.iq_power_edge_ref_trigger_source == '0' + assert abs(rfsa_device_session.iq_power_edge_ref_trigger_level - (-20.0)) < 1 + assert rfsa_device_session.iq_power_edge_ref_trigger_slope == nirfsa.ReferenceTriggerIqPowerEdgeSlope.FALLING + assert rfsa_device_session.ref_trigger_pretrigger_samples == 32 + + def test_configure_digital_edge_start_trigger(self, rfsa_device_session): + rfsa_device_session.configure_digital_edge_start_trigger('PXI_Trig1', nirfsa.StartTriggerDigitalEdgeEdge.RISING) + assert rfsa_device_session.start_trigger_type == nirfsa.StartTriggerType.DIGITAL_EDGE + assert rfsa_device_session.digital_edge_start_trigger_source == 'PXI_Trig1' + assert rfsa_device_session.digital_edge_start_trigger_edge == nirfsa.StartTriggerDigitalEdgeEdge.RISING + + def test_disable_start_trigger(self, rfsa_device_session): + rfsa_device_session.configure_digital_edge_start_trigger('PXI_Trig1', nirfsa.StartTriggerDigitalEdgeEdge.RISING) + assert rfsa_device_session.start_trigger_type == nirfsa.StartTriggerType.DIGITAL_EDGE + rfsa_device_session.disable_start_trigger() + assert rfsa_device_session.start_trigger_type == nirfsa.StartTriggerType.NONE + + def test_configure_software_edge_advance_trigger(self, rfsa_device_session): + rfsa_device_session.configure_software_edge_advance_trigger() + assert rfsa_device_session.advance_trigger_type == nirfsa.AdvanceTriggerType.SOFTWARE_EDGE + + def test_configure_software_edge_ref_trigger(self, rfsa_device_session): + rfsa_device_session.configure_software_edge_ref_trigger(pretrigger_samples=32) + assert rfsa_device_session.ref_trigger_type == nirfsa.ReferenceTriggerType.SOFTWARE_EDGE + assert rfsa_device_session.ref_trigger_pretrigger_samples == 32 + + def test_configure_software_edge_start_trigger(self, rfsa_device_session): + rfsa_device_session.configure_software_edge_start_trigger() + assert rfsa_device_session.start_trigger_type == nirfsa.StartTriggerType.SOFTWARE_EDGE + + @pytest.mark.skipif(use_simulated_session is True, reason="check_acquisition_status always returns True on simulated device") + def test_send_software_edge_trigger_configured_with_ref_trigger(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.iq_rate = 1e6 + rfsa_device_session.configure_software_edge_ref_trigger() + with rfsa_device_session.initiate(): + assert rfsa_device_session.check_acquisition_status() is False + rfsa_device_session.send_software_edge_trigger(nirfsa.SoftwareTriggerType.REF, '') + time.sleep(3) + assert rfsa_device_session.check_acquisition_status() is True + + @pytest.mark.skipif(use_simulated_session is True, reason="check_acquisition_status always returns True on simulated device") + def test_send_software_edge_trigger_configured_with_start_trigger(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.iq_rate = 1e6 + rfsa_device_session.configure_software_edge_start_trigger() + with rfsa_device_session.initiate(): + assert rfsa_device_session.check_acquisition_status() is False + rfsa_device_session.send_software_edge_trigger(nirfsa.SoftwareTriggerType.START, '') + time.sleep(3) + assert rfsa_device_session.check_acquisition_status() is True + +# Fetch tests + def test_fetch_iq_single_record_with_samples_passed_as_none(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.iq_rate = 1e6 + + iq_data_array = np.zeros(64, dtype=np.complex128) + with rfsa_device_session.initiate(): + wfm_info = rfsa_device_session.fetch_iq_single_record_into(iq_data_array) + assert len(wfm_info.samples) == wfm_info.actual_samples + assert np.asarray(wfm_info.samples).dtype == np.complex128 + + def test_fetch_iq_single_record_subset(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.iq_rate = 1e6 + rfsa_device_session.number_of_samples = 1024 + + iq_data_array = np.zeros(1024, dtype=np.complex64) + with rfsa_device_session.initiate(): + wfm_info = rfsa_device_session.fetch_iq_single_record_into(iq_data_array, number_of_samples=128) + assert len(wfm_info.samples) == wfm_info.actual_samples + assert np.asarray(wfm_info.samples).dtype == np.complex64 + + def test_fetch_iq_single_record_grow_with_smaller_buffer(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.iq_rate = 1e6 + rfsa_device_session.number_of_samples = 1024 + + iq_data_array = np.zeros(64, dtype=np.complex128) + with rfsa_device_session.initiate(): + wfm_info = rfsa_device_session.fetch_iq_single_record_into(iq_data_array, number_of_samples=rfsa_device_session.number_of_samples) + assert len(wfm_info.samples) == wfm_info.actual_samples + assert np.asarray(wfm_info.samples).dtype == np.complex128 + + def test_fetch_iq_single_record_check_view_with_larger_buffer(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.number_of_samples = 1024 + + iq_data_array = np.zeros(512, dtype=np.complex128) + with rfsa_device_session.initiate(): + wfm_info = rfsa_device_session.fetch_iq_single_record_into(iq_data_array, number_of_samples=rfsa_device_session.number_of_samples) + assert len(wfm_info.samples) == wfm_info.actual_samples + assert len(iq_data_array) == rfsa_device_session.number_of_samples + assert np.asarray(wfm_info.samples).dtype == np.complex128 + + def test_fetch_iq_single_record_complex_i16(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.number_of_samples = 1024 + + iq_data_array = np.zeros(64, dtype=np.int16) + with rfsa_device_session.initiate(): + wfm_info = rfsa_device_session.fetch_iq_single_record_into( + iq_data_array, + number_of_samples=rfsa_device_session.number_of_samples, + ) + assert np.asarray(wfm_info.samples).dtype == np.int16 + assert len(wfm_info.samples) == wfm_info.actual_samples + + def test_fetch_iq_multi_record_with_records_passed_as_none(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.number_of_samples = 64 + + iq_data_arrays = np.zeros((2, 64), dtype=np.complex128) + with rfsa_device_session.initiate(): + wfm_info = rfsa_device_session.fetch_iq_multi_record_into(iq_data_arrays, number_of_samples=rfsa_device_session.number_of_samples) + + assert len(wfm_info) == rfsa_device_session.number_of_records + for i in range(len(wfm_info)): + if isinstance(wfm_info[i], nirfsa.WaveformInfo): + assert np.asarray(wfm_info[i].samples).dtype == np.complex128 + assert len(wfm_info[i].samples) == rfsa_device_session.number_of_samples + + def test_fetch_iq_multi_record_with_samples_passed_as_none(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.number_of_records = 2 + + iq_data_arrays = np.zeros((2, 64), dtype=np.complex128) + with rfsa_device_session.initiate(): + wfm_info = rfsa_device_session.fetch_iq_multi_record_into(iq_data_arrays, number_of_records=rfsa_device_session.number_of_records) + + assert len(wfm_info) == rfsa_device_session.number_of_records + for i in range(len(wfm_info)): + if isinstance(wfm_info[i], nirfsa.WaveformInfo): + assert np.asarray(wfm_info[i].samples).dtype == np.complex128 + assert len(wfm_info[i].samples) == rfsa_device_session.number_of_samples + + def test_fetch_iq_multi_record_grow_with_smaller_column_size(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.number_of_records = 2 + rfsa_device_session.number_of_samples = 1024 + + iq_data_arrays = np.zeros((2, 64), dtype=np.complex128) + with rfsa_device_session.initiate(): + wfm_info = rfsa_device_session.fetch_iq_multi_record_into(iq_data_arrays, number_of_records=rfsa_device_session.number_of_records, number_of_samples=rfsa_device_session.number_of_samples) + + assert len(wfm_info) == rfsa_device_session.number_of_records + for i in range(len(wfm_info)): + if isinstance(wfm_info[i], nirfsa.WaveformInfo): + assert np.asarray(wfm_info[i].samples).dtype == np.complex128 + assert len(wfm_info[i].samples) == rfsa_device_session.number_of_samples + + def test_fetch_iq_multi_record_with_smaller_row_size_error_case(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.number_of_records = 2 + + iq_data_arrays = np.zeros((1, 64), dtype=np.complex128) + with rfsa_device_session.initiate(): + with pytest.raises(ValueError) as exc_info: + rfsa_device_session.fetch_iq_multi_record_into(iq_data_arrays, number_of_records=rfsa_device_session.number_of_records, number_of_samples=rfsa_device_session.number_of_samples) + assert str(exc_info.value) == "iq_data_arrays must have at least 2 rows (number_of_records), but has 1" + + def test_fetch_iq_multi_record_subset(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.number_of_samples = 1024 + rfsa_device_session.number_of_records = 2 + + iq_data_arrays = np.zeros((2, 64), dtype=np.complex64) + with rfsa_device_session.initiate(): + wfm_info = rfsa_device_session.fetch_iq_multi_record_into(iq_data_arrays, number_of_records=rfsa_device_session.number_of_records, number_of_samples=rfsa_device_session.number_of_samples) + + assert len(wfm_info) == rfsa_device_session.number_of_records + for i in range(len(wfm_info)): + if isinstance(wfm_info[i], nirfsa.WaveformInfo): + assert np.asarray(wfm_info[i].samples).dtype == np.complex64 + assert len(wfm_info[i].samples) == rfsa_device_session.number_of_samples + + def test_fetch_iq_multi_record_complex_i16(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.number_of_records = 2 + rfsa_device_session.number_of_samples = 1024 + + iq_data_arrays = np.zeros((2, 64), dtype=np.int16) + with rfsa_device_session.initiate(): + wfm_info = rfsa_device_session.fetch_iq_multi_record_into( + iq_data_arrays, + starting_record=0, + number_of_records=rfsa_device_session.number_of_records, + number_of_samples=rfsa_device_session.number_of_samples, + timeout=10.0, + ) + + assert len(wfm_info) == rfsa_device_session.number_of_records + for i in range(len(wfm_info)): + if isinstance(wfm_info[i], nirfsa.WaveformInfo): + assert np.asarray(wfm_info[i].samples).dtype == np.int16 + assert len(wfm_info[i].samples) == rfsa_device_session.number_of_samples + + def test_read_iq_single_record_grow_with_smaller_buffer(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.IQ + rfsa_device_session.number_of_samples = 1024 + + iq_data_array = np.zeros(64, dtype=np.complex128) + wfm_info = rfsa_device_session.read_iq_single_record_into(iq_data_array) + assert len(wfm_info.samples) == wfm_info.actual_samples + assert np.asarray(wfm_info.samples).dtype == np.complex128 + + def test_read_power_spectrum_grow_with_smaller_buffer(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.SPECTRUM + rfsa_device_session.number_of_spectral_lines = 1024 + + power_spectrum_data_array = np.zeros(512, dtype=np.float64) + spectrum_info = rfsa_device_session.read_power_spectrum_into(power_spectrum_data_array, rfsa_device_session.number_of_spectral_lines) + assert len(spectrum_info.samples) == rfsa_device_session.number_of_spectral_lines + assert np.asarray(spectrum_info.samples).dtype == np.float64 + + def test_read_power_spectrum_check_view_with_larger_buffer(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.SPECTRUM + rfsa_device_session.number_of_spectral_lines = 512 + + power_spectrum_data_array = np.zeros(1024, dtype=np.float64) + spectrum_info = rfsa_device_session.read_power_spectrum_into(power_spectrum_data_array, rfsa_device_session.number_of_spectral_lines) + assert len(spectrum_info.samples) == rfsa_device_session.number_of_spectral_lines + assert np.asarray(spectrum_info.samples).dtype == np.float64 + assert len(power_spectrum_data_array) == 1024 + + def test_read_power_spectrum_with_data_array_size_passed_as_none(self, rfsa_device_session): + rfsa_device_session.acquisition_type = nirfsa.AcquisitionType.SPECTRUM + rfsa_device_session.number_of_spectral_lines = 1024 + + power_spectrum_data_array = np.zeros(512, dtype=np.float64) + spectrum_info = rfsa_device_session.read_power_spectrum_into(power_spectrum_data_array) + assert len(spectrum_info.samples) == rfsa_device_session.number_of_spectral_lines + assert np.asarray(spectrum_info.samples).dtype == np.float64 + +# Deembedding tests + def test_set_get_deembedding_sparameters(self, rfsa_device_session): + frequencies = np.array([1e9, 2e9, 3e9], dtype=np.float64) + sparameter_tables = np.array([[[1 + 1j, 2 + 2j], [3 + 3j, 4 + 4j]], [[5 + 5j, 6 + 6j], [7 + 7j, 8 + 8j]], [[9 + 9j, 10 + 10j], [11 + 11j, 12 + 12j]]], dtype=np.complex128) + expected_sparameter_table = np.array([[5 + 5j, 6 + 6j], [7 + 7j, 8 + 8j]], dtype=np.complex128) + rfsa_device_session.create_deembedding_sparameter_table_array('', 'myTable1', frequencies, sparameter_tables, nirfsa.SparameterOrientation.PORT2_TOWARDS_DUT) + rfsa_device_session.center_frequency = 2e9 + returned_sparameter_table = rfsa_device_session.get_deembedding_sparameters() + assert returned_sparameter_table.all() == expected_sparameter_table.all() + + def test_configure_deembedding_table_interpolation(self, rfsa_device_session): + frequencies = np.array([1e9, 2e9, 3e9], dtype=np.float64) + sparameter_tables = np.array([[[1 + 1j, 2 + 2j], [3 + 3j, 4 + 4j]], [[5 + 5j, 6 + 6j], [7 + 7j, 8 + 8j]], [[9 + 9j, 10 + 10j], [11 + 11j, 12 + 12j]]], dtype=np.complex128) + rfsa_device_session.create_deembedding_sparameter_table_array('', 'myTable1', frequencies, sparameter_tables, nirfsa.SparameterOrientation.PORT2_TOWARDS_DUT) + rfsa_device_session.configure_deembedding_table_interpolation_linear('', 'myTable1', nirfsa.LinearInterpolationFormat.MAGNITUDE_AND_PHASE) + rfsa_device_session.delete_deembedding_table('', 'myTable1') + + @pytest.mark.skipif(sys.platform == "linux", reason="Function not supported on Linux OS") + def test_create_deembedding_sparameter_table_s2p_file(self, rfsa_device_session): + rfsa_device_session.create_deembedding_sparameter_table_s2p_file('', 'myTable1', get_test_file_path('samples2pfile.s2p'), nirfsa.SparameterOrientation.PORT2_TOWARDS_DUT) + rfsa_device_session.create_deembedding_sparameter_table_s2p_file('', 'myTable2', get_test_file_path('samples2pfile.s2p'), nirfsa.SparameterOrientation.PORT1_TOWARDS_DUT) + rfsa_device_session.configure_deembedding_table_interpolation_linear('', 'myTable1', nirfsa.LinearInterpolationFormat.MAGNITUDE_AND_PHASE) + rfsa_device_session.ports[''].deembedding_selected_table = 'myTable1' + with rfsa_device_session.initiate(): + rfsa_device_session.check_acquisition_status() + rfsa_device_session.delete_deembedding_table('', 'myTable1') + rfsa_device_session.ports[''].deembedding_selected_table = 'myTable2' + with rfsa_device_session.initiate(): + rfsa_device_session.check_acquisition_status() + rfsa_device_session.delete_all_deembedding_tables() + try: + rfsa_device_session.commit() + assert False + except nirfsa.Error as e: + assert e.code == -1074097772 + assert 'de-embedding table cannot be found' in e.description + rfsa_device_session.ports[''].deembedding_selected_table = '' + with rfsa_device_session.initiate(): + rfsa_device_session.check_acquisition_status() + + def test_create_deembedding_sparameter_table_array_error_cases(self, rfsa_device_session): + frequencies = np.array([1e9, 2e9, 3e9], dtype=np.float64) + wrong_number_of_tables = np.full((2, 2, 2), 2.0 + 0.0j, dtype=np.complex128) + wrong_table_size = np.full((3, 2, 3), 2.0 + 0.0j, dtype=np.complex128) + wrong_array_dimensions = np.full((3, 2), 2.0 + 0.0j, dtype=np.complex128) + try: + rfsa_device_session.create_deembedding_sparameter_table_array('', 'myTable1', frequencies, wrong_number_of_tables, nirfsa.SparameterOrientation.PORT2_TOWARDS_DUT) + assert False + except ValueError as e: + assert str(e) == 'Frequencies count does not match the sparameter table count. Frequencies count is 3 and sparameter table count is 2.' + try: + rfsa_device_session.create_deembedding_sparameter_table_array('', 'myTable1', frequencies, wrong_table_size, nirfsa.SparameterOrientation.PORT2_TOWARDS_DUT) + assert False + except ValueError as e: + assert str(e) == 'Row and column count of sparameter table should be equal. Table row count is 2 and column count is 3.' + try: + rfsa_device_session.create_deembedding_sparameter_table_array('', 'myTable1', frequencies, wrong_array_dimensions, nirfsa.SparameterOrientation.PORT2_TOWARDS_DUT) + assert False + except ValueError as e: + assert str(e) == 'Unsupported array dimension. Is 2, expected 3' + + def test_delete_all_deembedding_tables(self, rfsa_device_session): + frequencies = np.array([1e9, 2e9, 3e9], dtype=np.float64) + sparameter_tables = np.array([[[1 + 1j, 2 + 2j], [3 + 3j, 4 + 4j]], [[5 + 5j, 6 + 6j], [7 + 7j, 8 + 8j]], [[9 + 9j, 10 + 10j], [11 + 11j, 12 + 12j]]], dtype=np.complex128) + rfsa_device_session.create_deembedding_sparameter_table_array('', 'myTable1', frequencies, sparameter_tables, nirfsa.SparameterOrientation.PORT2_TOWARDS_DUT) + rfsa_device_session.create_deembedding_sparameter_table_array('', 'myTable2', frequencies, sparameter_tables, nirfsa.SparameterOrientation.PORT2_TOWARDS_DUT) + rfsa_device_session.delete_all_deembedding_tables() + + +class TestLibrary(SystemTests): + @pytest.fixture(scope='class') + def session_creation_kwargs(self): + return {} diff --git a/tox-travis.ini b/tox-travis.ini index 5cce57189..c87f353af 100644 --- a/tox-travis.ini +++ b/tox-travis.ini @@ -110,8 +110,8 @@ commands = flake8: flake8 --config=./tox.ini src/nidmm/system_tests/ src/nidmm/examples/ flake8: flake8 --config=./tox.ini src/nifgen/system_tests/ src/nifgen/examples/ flake8: flake8 --config=./tox.ini src/nimodinst/system_tests/ src/nimodinst/examples/ - flake8: flake8 --config=./tox.ini src/nirfsg/system_tests/ src/nirfsg/examples/ flake8: flake8 --config=./tox.ini src/nirfsa/system_tests/ src/nirfsa/examples/ + flake8: flake8 --config=./tox.ini src/nirfsg/system_tests/ src/nirfsg/examples/ flake8: flake8 --config=./tox.ini src/niscope/system_tests/ src/niscope/examples/ flake8: flake8 --config=./tox.ini src/nise/system_tests/ src/nise/examples/ flake8: flake8 --config=./tox.ini src/niswitch/system_tests/ src/niswitch/examples/ @@ -123,8 +123,8 @@ commands = docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nidmm ../generated/docs/nidmm/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nifgen ../generated/docs/nifgen/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nimodinst ../generated/docs/nimodinst/html {posargs} - docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nirfsg ../generated/docs/nirfsg/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nirfsa ../generated/docs/nirfsa/html {posargs} + docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nirfsg ../generated/docs/nirfsg/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./niscope ../generated/docs/niscope/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nise ../generated/docs/nise/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./niswitch ../generated/docs/niswitch/html {posargs} @@ -137,8 +137,8 @@ commands = pkg: python -m twine check generated/nidigital/dist/* pkg: python -m twine check generated/nidmm/dist/* pkg: python -m twine check generated/nifgen/dist/* - pkg: python -m twine check generated/nirfsg/dist/* pkg: python -m twine check generated/nirfsa/dist/* + pkg: python -m twine check generated/nirfsg/dist/* pkg: python -m twine check generated/niscope/dist/* pkg: python -m twine check generated/nise/dist/* pkg: python -m twine check generated/niswitch/dist/* diff --git a/tox.ini b/tox.ini index 9942346f1..bc62eac58 100644 --- a/tox.ini +++ b/tox.ini @@ -110,8 +110,8 @@ commands = flake8: flake8 --config=./tox.ini src/nidmm/system_tests/ src/nidmm/examples/ flake8: flake8 --config=./tox.ini src/nifgen/system_tests/ src/nifgen/examples/ flake8: flake8 --config=./tox.ini src/nimodinst/system_tests/ src/nimodinst/examples/ - flake8: flake8 --config=./tox.ini src/nirfsg/system_tests/ src/nirfsg/examples/ flake8: flake8 --config=./tox.ini src/nirfsa/system_tests/ src/nirfsa/examples/ + flake8: flake8 --config=./tox.ini src/nirfsg/system_tests/ src/nirfsg/examples/ flake8: flake8 --config=./tox.ini src/niscope/system_tests/ src/niscope/examples/ flake8: flake8 --config=./tox.ini src/nise/system_tests/ src/nise/examples/ flake8: flake8 --config=./tox.ini src/niswitch/system_tests/ src/niswitch/examples/ @@ -123,8 +123,8 @@ commands = docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nidmm ../generated/docs/nidmm/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nifgen ../generated/docs/nifgen/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nimodinst ../generated/docs/nimodinst/html {posargs} - docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nirfsg ../generated/docs/nirfsg/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nirfsa ../generated/docs/nirfsa/html {posargs} + docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nirfsg ../generated/docs/nirfsg/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./niscope ../generated/docs/niscope/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./nise ../generated/docs/nise/html {posargs} docs: sphinx-build -b html -d {envtmpdir}/doctrees ./niswitch ../generated/docs/niswitch/html {posargs} @@ -137,8 +137,8 @@ commands = pkg: python -m twine check generated/nidigital/dist/* pkg: python -m twine check generated/nidmm/dist/* pkg: python -m twine check generated/nifgen/dist/* - pkg: python -m twine check generated/nirfsg/dist/* pkg: python -m twine check generated/nirfsa/dist/* + pkg: python -m twine check generated/nirfsg/dist/* pkg: python -m twine check generated/niscope/dist/* pkg: python -m twine check generated/nise/dist/* pkg: python -m twine check generated/niswitch/dist/* From 29fa878845cdb3b2b0af04d9aac92de5bcebf582 Mon Sep 17 00:00:00 2001 From: mohit-emerson Date: Fri, 14 Aug 2026 09:38:55 +0000 Subject: [PATCH 6/7] removed converage log file --- nirfsaunittest.xml | 2197 -------------------------------------------- 1 file changed, 2197 deletions(-) delete mode 100644 nirfsaunittest.xml diff --git a/nirfsaunittest.xml b/nirfsaunittest.xml deleted file mode 100644 index 47d9c1fbc..000000000 --- a/nirfsaunittest.xml +++ /dev/null @@ -1,2197 +0,0 @@ - - - - - - /home/msaini/nimi-python - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From e0c07d06a57391ab56699dec42fdfb11488bd616 Mon Sep 17 00:00:00 2001 From: mohit-emerson Date: Fri, 14 Aug 2026 10:17:45 +0000 Subject: [PATCH 7/7] added rfsa to github actions workflow --- .github/workflows/github_actions_aws_rhel_python64.yml | 1 + .github/workflows/github_actions_aws_windows_python32.yml | 1 + .github/workflows/github_actions_aws_windows_python64.yml | 1 + 3 files changed, 3 insertions(+) diff --git a/.github/workflows/github_actions_aws_rhel_python64.yml b/.github/workflows/github_actions_aws_rhel_python64.yml index 9c1170568..833cabdfb 100644 --- a/.github/workflows/github_actions_aws_rhel_python64.yml +++ b/.github/workflows/github_actions_aws_rhel_python64.yml @@ -35,6 +35,7 @@ jobs: - nidmm - nifgen - nimodinst + - nirfsa - nirfsg - niscope - niswitch diff --git a/.github/workflows/github_actions_aws_windows_python32.yml b/.github/workflows/github_actions_aws_windows_python32.yml index b52d100f0..139cd0577 100644 --- a/.github/workflows/github_actions_aws_windows_python32.yml +++ b/.github/workflows/github_actions_aws_windows_python32.yml @@ -37,6 +37,7 @@ jobs: - nifgen - nidcpower - nidmm + - nirfsa - nirfsg - niscope - nimodinst diff --git a/.github/workflows/github_actions_aws_windows_python64.yml b/.github/workflows/github_actions_aws_windows_python64.yml index ed750e981..d2ea9bb30 100644 --- a/.github/workflows/github_actions_aws_windows_python64.yml +++ b/.github/workflows/github_actions_aws_windows_python64.yml @@ -51,6 +51,7 @@ jobs: - nifgen - nidcpower - nidmm + - nirfsa - nirfsg - niscope - nimodinst