Source code for nirfmxcdma2k.acp_configuration

"""Provides methods to configure the Acp measurement."""

import functools

import nirfmxcdma2k.attributes as attributes
import nirfmxcdma2k.enums as enums
import nirfmxcdma2k.errors as errors
import nirfmxcdma2k.internal._helper as _helper


def _raise_if_disposed(f):
    """From https://stackoverflow.com/questions/5929107/decorators-with-parameters."""

    @functools.wraps(f)
    def aux(*xs, **kws):
        meas_obj = xs[0]  # parameter 0 is 'self' which is the measurement object
        if meas_obj._signal_obj.is_disposed:
            raise Exception("Cannot access a disposed Cdma2k signal configuration")
        return f(*xs, **kws)

    return aux


[docs] class AcpConfiguration(object): """Provides methods to configure the Acp measurement.""" def __init__(self, signal_obj): """Provides methods to configure the Acp measurement.""" self._signal_obj = signal_obj self._session_function_lock = signal_obj._session_function_lock self._interpreter = signal_obj._interpreter
[docs] @_raise_if_disposed def get_measurement_enabled(self, selector_string): r"""Gets whether to enable the ACP measurement. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is FALSE. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (bool): Specifies whether to enable the ACP measurement. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_MEASUREMENT_ENABLED.value ) attr_val = bool(attr_val) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_measurement_enabled(self, selector_string, value): r"""Sets whether to enable the ACP measurement. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is FALSE. Args: selector_string (string): Pass an empty string. value (bool): Specifies whether to enable the ACP measurement. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_MEASUREMENT_ENABLED.value, int(value), ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_carrier_integration_bandwidth(self, selector_string): r"""Gets the ACP carrier integration bandwidth. This value is expressed in Hz. You do not need to use a selector string to read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (float): Returns the ACP carrier integration bandwidth. This value is expressed in Hz. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_f64( updated_selector_string, attributes.AttributeID.ACP_CARRIER_INTEGRATION_BANDWIDTH.value, ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def get_number_of_offsets(self, selector_string): r"""Gets the number of offset channels. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 2. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (int): Specifies the number of offset channels. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_NUMBER_OF_OFFSETS.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_number_of_offsets(self, selector_string, value): r"""Sets the number of offset channels. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 2. Args: selector_string (string): Pass an empty string. value (int): Specifies the number of offset channels. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_NUMBER_OF_OFFSETS.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_offset_frequency(self, selector_string): r"""Gets the frequency of an ACP offset channel relative to the carrier frequency. This value is expressed in Hz. Use "offset< <format type="monospace-italic">n</format> >" as the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ to read this result. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (float): Returns the frequency of an ACP offset channel relative to the carrier frequency. This value is expressed in Hz. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_f64( updated_selector_string, attributes.AttributeID.ACP_OFFSET_FREQUENCY.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def get_offset_integration_bandwidth(self, selector_string): r"""Gets the integration bandwidth of an ACP offset channel. This value is expressed in Hz. Use "offset< <format type="monospace-italic">n</format> >" as the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ to read this result. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (float): Returns the integration bandwidth of an ACP offset channel. This value is expressed in Hz. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_f64( updated_selector_string, attributes.AttributeID.ACP_OFFSET_INTEGRATION_BANDWIDTH.value, ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def get_rbw_filter_auto_bandwidth(self, selector_string): r"""Gets whether the measurement computes the RBW. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **True**. +--------------+-------------------------------------------------------------------------+ | Name (Value) | Description | +==============+=========================================================================+ | False (0) | The measurement uses the RBW that you specify in the ACP RBW attribute. | +--------------+-------------------------------------------------------------------------+ | True (1) | The measurement computes the RBW. | +--------------+-------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.AcpRbwAutoBandwidth): Specifies whether the measurement computes the RBW. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_RBW_FILTER_AUTO_BANDWIDTH.value ) attr_val = enums.AcpRbwAutoBandwidth(attr_val) except (KeyError, ValueError): raise errors.DriverTooNewError() # type: ignore finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_rbw_filter_auto_bandwidth(self, selector_string, value): r"""Sets whether the measurement computes the RBW. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **True**. +--------------+-------------------------------------------------------------------------+ | Name (Value) | Description | +==============+=========================================================================+ | False (0) | The measurement uses the RBW that you specify in the ACP RBW attribute. | +--------------+-------------------------------------------------------------------------+ | True (1) | The measurement computes the RBW. | +--------------+-------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.AcpRbwAutoBandwidth, int): Specifies whether the measurement computes the RBW. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) value = value.value if type(value) is enums.AcpRbwAutoBandwidth else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_RBW_FILTER_AUTO_BANDWIDTH.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_rbw_filter_bandwidth(self, selector_string): r"""Gets the bandwidth of the RBW filter used to sweep the acquired signal when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_RBW_FILTER_AUTO_BANDWIDTH` attribute to **False**. This value is expressed in Hz. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 10 kHz. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (float): Specifies the bandwidth of the RBW filter used to sweep the acquired signal when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_RBW_FILTER_AUTO_BANDWIDTH` attribute to **False**. This value is expressed in Hz. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_f64( updated_selector_string, attributes.AttributeID.ACP_RBW_FILTER_BANDWIDTH.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_rbw_filter_bandwidth(self, selector_string, value): r"""Sets the bandwidth of the RBW filter used to sweep the acquired signal when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_RBW_FILTER_AUTO_BANDWIDTH` attribute to **False**. This value is expressed in Hz. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 10 kHz. Args: selector_string (string): Pass an empty string. value (float): Specifies the bandwidth of the RBW filter used to sweep the acquired signal when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_RBW_FILTER_AUTO_BANDWIDTH` attribute to **False**. This value is expressed in Hz. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.set_attribute_f64( updated_selector_string, attributes.AttributeID.ACP_RBW_FILTER_BANDWIDTH.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_rbw_filter_type(self, selector_string): r"""Gets the shape of the digital RBW filter. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **Gaussian**. +---------------+------------------------------------------------------+ | Name (Value) | Description | +===============+======================================================+ | FFT Based (0) | An RBW filter with an FFT-based response is applied. | +---------------+------------------------------------------------------+ | Gaussian (1) | An RBW filter with a Gaussian response is applied. | +---------------+------------------------------------------------------+ | Flat (2) | An RBW filter with a flat response is applied. | +---------------+------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.AcpRbwFilterType): Specifies the shape of the digital RBW filter. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_RBW_FILTER_TYPE.value ) attr_val = enums.AcpRbwFilterType(attr_val) except (KeyError, ValueError): raise errors.DriverTooNewError() # type: ignore finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_rbw_filter_type(self, selector_string, value): r"""Sets the shape of the digital RBW filter. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **Gaussian**. +---------------+------------------------------------------------------+ | Name (Value) | Description | +===============+======================================================+ | FFT Based (0) | An RBW filter with an FFT-based response is applied. | +---------------+------------------------------------------------------+ | Gaussian (1) | An RBW filter with a Gaussian response is applied. | +---------------+------------------------------------------------------+ | Flat (2) | An RBW filter with a flat response is applied. | +---------------+------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.AcpRbwFilterType, int): Specifies the shape of the digital RBW filter. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) value = value.value if type(value) is enums.AcpRbwFilterType else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_RBW_FILTER_TYPE.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_sweep_time_auto(self, selector_string): r"""Gets whether the measurement computes the sweep time. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **True**. +--------------+---------------------------------------------------------------------------------------+ | Name (Value) | Description | +==============+=======================================================================================+ | False (0) | The measurement uses the sweep time that you specify in the ACP Sweep Time attribute. | +--------------+---------------------------------------------------------------------------------------+ | True (1) | The measurement uses the default sweep time of 0.001667 seconds. | +--------------+---------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.AcpSweepTimeAuto): Specifies whether the measurement computes the sweep time. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_SWEEP_TIME_AUTO.value ) attr_val = enums.AcpSweepTimeAuto(attr_val) except (KeyError, ValueError): raise errors.DriverTooNewError() # type: ignore finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_sweep_time_auto(self, selector_string, value): r"""Sets whether the measurement computes the sweep time. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **True**. +--------------+---------------------------------------------------------------------------------------+ | Name (Value) | Description | +==============+=======================================================================================+ | False (0) | The measurement uses the sweep time that you specify in the ACP Sweep Time attribute. | +--------------+---------------------------------------------------------------------------------------+ | True (1) | The measurement uses the default sweep time of 0.001667 seconds. | +--------------+---------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.AcpSweepTimeAuto, int): Specifies whether the measurement computes the sweep time. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) value = value.value if type(value) is enums.AcpSweepTimeAuto else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_SWEEP_TIME_AUTO.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_sweep_time_interval(self, selector_string): r"""Gets the sweep time when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_SWEEP_TIME_AUTO` attribute to **False**. This value is expressed in seconds. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 0.0016667 seconds. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (float): Specifies the sweep time when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_SWEEP_TIME_AUTO` attribute to **False**. This value is expressed in seconds. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_f64( updated_selector_string, attributes.AttributeID.ACP_SWEEP_TIME_INTERVAL.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_sweep_time_interval(self, selector_string, value): r"""Sets the sweep time when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_SWEEP_TIME_AUTO` attribute to **False**. This value is expressed in seconds. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 0.0016667 seconds. Args: selector_string (string): Pass an empty string. value (float): Specifies the sweep time when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_SWEEP_TIME_AUTO` attribute to **False**. This value is expressed in seconds. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.set_attribute_f64( updated_selector_string, attributes.AttributeID.ACP_SWEEP_TIME_INTERVAL.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_measurement_method(self, selector_string): r"""Gets the method for performing the ACP measurement. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **Normal**. +--------------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +====================+==========================================================================================================================+ | Normal (0) | The ACP measurement acquires the spectrum using the same signal analyzer setting across frequency bands. Use this | | | method when measurement speed is desirable over higher dynamic range. | +--------------------+--------------------------------------------------------------------------------------------------------------------------+ | Dynamic Range (1) | The ACP measurement acquires the spectrum using the hardware-specific optimizations for different frequency bands. Use | | | this method to get the best dynamic range. **Supported Devices**: PXIe-5665/5668R. | +--------------------+--------------------------------------------------------------------------------------------------------------------------+ | Sequential FFT (2) | The ACP measurement acquires I/Q the samples specified by the ACP Sweep Time. These samples are divided into smaller | | | chunks. The size of each chunk is defined by the ACP Sequential FFT Size attribute, and FFT is computed for each these | | | chunks. The resultant FFTs are averaged to get the spectrum used to compute the ACP. If the total acquired samples is | | | not an integer multiple of the FFT size, the remaining samples at the end of the acquisition are not used. Use this | | | method to optimize the ACP Measurement speed. The accuracy of results may be reduced when using this measurement | | | method. | +--------------------+--------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.AcpMeasurementMethod): Specifies the method for performing the ACP measurement. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_MEASUREMENT_METHOD.value ) attr_val = enums.AcpMeasurementMethod(attr_val) except (KeyError, ValueError): raise errors.DriverTooNewError() # type: ignore finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_measurement_method(self, selector_string, value): r"""Sets the method for performing the ACP measurement. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **Normal**. +--------------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +====================+==========================================================================================================================+ | Normal (0) | The ACP measurement acquires the spectrum using the same signal analyzer setting across frequency bands. Use this | | | method when measurement speed is desirable over higher dynamic range. | +--------------------+--------------------------------------------------------------------------------------------------------------------------+ | Dynamic Range (1) | The ACP measurement acquires the spectrum using the hardware-specific optimizations for different frequency bands. Use | | | this method to get the best dynamic range. **Supported Devices**: PXIe-5665/5668R. | +--------------------+--------------------------------------------------------------------------------------------------------------------------+ | Sequential FFT (2) | The ACP measurement acquires I/Q the samples specified by the ACP Sweep Time. These samples are divided into smaller | | | chunks. The size of each chunk is defined by the ACP Sequential FFT Size attribute, and FFT is computed for each these | | | chunks. The resultant FFTs are averaged to get the spectrum used to compute the ACP. If the total acquired samples is | | | not an integer multiple of the FFT size, the remaining samples at the end of the acquisition are not used. Use this | | | method to optimize the ACP Measurement speed. The accuracy of results may be reduced when using this measurement | | | method. | +--------------------+--------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.AcpMeasurementMethod, int): Specifies the method for performing the ACP measurement. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) value = value.value if type(value) is enums.AcpMeasurementMethod else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_MEASUREMENT_METHOD.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_noise_compensation_enabled(self, selector_string): r"""Gets whether to enable compensation of the channel powers for the inherent noise floor of the signal analyzer. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **False**. +--------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +==============+==========================================================================================================================+ | False (0) | Disables compensation of the channel powers for the noise floor of the signal analyzer. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ | True (1) | Enables compensation of the channel powers for the noise floor of the signal analyzer. The noise floor of the signal | | | analyzer is measured for the RF path used by the ACP measurement and cached for future use. If signal analyzer or | | | measurement parameters change, noise floors are measured again. | | | | | | **Supported Devices:** PXIe-5663/5665/5668R, PXIe-5830/5831/5832/5842/5860 | +--------------+--------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.AcpNoiseCompensationEnabled): Specifies whether to enable compensation of the channel powers for the inherent noise floor of the signal analyzer. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_NOISE_COMPENSATION_ENABLED.value ) attr_val = enums.AcpNoiseCompensationEnabled(attr_val) except (KeyError, ValueError): raise errors.DriverTooNewError() # type: ignore finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_noise_compensation_enabled(self, selector_string, value): r"""Sets whether to enable compensation of the channel powers for the inherent noise floor of the signal analyzer. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **False**. +--------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +==============+==========================================================================================================================+ | False (0) | Disables compensation of the channel powers for the noise floor of the signal analyzer. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ | True (1) | Enables compensation of the channel powers for the noise floor of the signal analyzer. The noise floor of the signal | | | analyzer is measured for the RF path used by the ACP measurement and cached for future use. If signal analyzer or | | | measurement parameters change, noise floors are measured again. | | | | | | **Supported Devices:** PXIe-5663/5665/5668R, PXIe-5830/5831/5832/5842/5860 | +--------------+--------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.AcpNoiseCompensationEnabled, int): Specifies whether to enable compensation of the channel powers for the inherent noise floor of the signal analyzer. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) value = value.value if type(value) is enums.AcpNoiseCompensationEnabled else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_NOISE_COMPENSATION_ENABLED.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_averaging_enabled(self, selector_string): r"""Gets whether to enable averaging for the ACP measurement. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **False**. +--------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +==============+==========================================================================================================================+ | False (0) | The measurement is performed on a single acquisition. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ | True (1) | The ACP measurement uses the value of the ACP Averaging Count attribute as the number of acquisitions over which the | | | ACP measurement is averaged. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.AcpAveragingEnabled): Specifies whether to enable averaging for the ACP measurement. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_AVERAGING_ENABLED.value ) attr_val = enums.AcpAveragingEnabled(attr_val) except (KeyError, ValueError): raise errors.DriverTooNewError() # type: ignore finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_averaging_enabled(self, selector_string, value): r"""Sets whether to enable averaging for the ACP measurement. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **False**. +--------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +==============+==========================================================================================================================+ | False (0) | The measurement is performed on a single acquisition. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ | True (1) | The ACP measurement uses the value of the ACP Averaging Count attribute as the number of acquisitions over which the | | | ACP measurement is averaged. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.AcpAveragingEnabled, int): Specifies whether to enable averaging for the ACP measurement. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) value = value.value if type(value) is enums.AcpAveragingEnabled else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_AVERAGING_ENABLED.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_averaging_count(self, selector_string): r"""Gets the number of acquisitions used for averaging when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_AVERAGING_ENABLED` attribute to **True**. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 10. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (int): Specifies the number of acquisitions used for averaging when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_AVERAGING_ENABLED` attribute to **True**. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_AVERAGING_COUNT.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_averaging_count(self, selector_string, value): r"""Sets the number of acquisitions used for averaging when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_AVERAGING_ENABLED` attribute to **True**. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 10. Args: selector_string (string): Pass an empty string. value (int): Specifies the number of acquisitions used for averaging when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_AVERAGING_ENABLED` attribute to **True**. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_AVERAGING_COUNT.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_averaging_type(self, selector_string): r"""Gets the averaging type for averaging multiple spectrum acquisitions. The averaged spectrum is used for ACP measurement. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **RMS**. +--------------+-------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +==============+=============================================================================================================+ | RMS (0) | The power spectrum is linearly averaged. RMS averaging reduces signal fluctuations but not the noise floor. | +--------------+-------------------------------------------------------------------------------------------------------------+ | Log (1) | The power spectrum is averaged in a logarithmic scale. | +--------------+-------------------------------------------------------------------------------------------------------------+ | Scalar (2) | The square root of the power spectrum is averaged. | +--------------+-------------------------------------------------------------------------------------------------------------+ | Max (3) | The peak power in the spectrum at each frequency bin is retained from one acquisition to the next. | +--------------+-------------------------------------------------------------------------------------------------------------+ | Min (4) | The lowest power in the spectrum at each frequency bin is retained from one acquisition to the next. | +--------------+-------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.AcpAveragingType): Specifies the averaging type for averaging multiple spectrum acquisitions. The averaged spectrum is used for ACP measurement. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_AVERAGING_TYPE.value ) attr_val = enums.AcpAveragingType(attr_val) except (KeyError, ValueError): raise errors.DriverTooNewError() # type: ignore finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_averaging_type(self, selector_string, value): r"""Sets the averaging type for averaging multiple spectrum acquisitions. The averaged spectrum is used for ACP measurement. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **RMS**. +--------------+-------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +==============+=============================================================================================================+ | RMS (0) | The power spectrum is linearly averaged. RMS averaging reduces signal fluctuations but not the noise floor. | +--------------+-------------------------------------------------------------------------------------------------------------+ | Log (1) | The power spectrum is averaged in a logarithmic scale. | +--------------+-------------------------------------------------------------------------------------------------------------+ | Scalar (2) | The square root of the power spectrum is averaged. | +--------------+-------------------------------------------------------------------------------------------------------------+ | Max (3) | The peak power in the spectrum at each frequency bin is retained from one acquisition to the next. | +--------------+-------------------------------------------------------------------------------------------------------------+ | Min (4) | The lowest power in the spectrum at each frequency bin is retained from one acquisition to the next. | +--------------+-------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.AcpAveragingType, int): Specifies the averaging type for averaging multiple spectrum acquisitions. The averaged spectrum is used for ACP measurement. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) value = value.value if type(value) is enums.AcpAveragingType else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_AVERAGING_TYPE.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_fft_overlap_mode(self, selector_string): r"""Gets how the FFT overlap is applied to the acquired samples. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default Value is **Disabled**. +---------------+-------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +===============+=========================================================================================================================+ | Disabled (0) | Indicates that no overlapping is applied to the acquired samples. | +---------------+-------------------------------------------------------------------------------------------------------------------------+ | Automatic (1) | Indicates that RFmx chooses optimal values of the ACP FFT Overlap (%) attribute based on the measurement configuration. | +---------------+-------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.AcpFftOverlapMode): Specifies how the FFT overlap is applied to the acquired samples. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_FFT_OVERLAP_MODE.value ) attr_val = enums.AcpFftOverlapMode(attr_val) except (KeyError, ValueError): raise errors.DriverTooNewError() # type: ignore finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_fft_overlap_mode(self, selector_string, value): r"""Sets how the FFT overlap is applied to the acquired samples. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default Value is **Disabled**. +---------------+-------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +===============+=========================================================================================================================+ | Disabled (0) | Indicates that no overlapping is applied to the acquired samples. | +---------------+-------------------------------------------------------------------------------------------------------------------------+ | Automatic (1) | Indicates that RFmx chooses optimal values of the ACP FFT Overlap (%) attribute based on the measurement configuration. | +---------------+-------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.AcpFftOverlapMode, int): Specifies how the FFT overlap is applied to the acquired samples. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) value = value.value if type(value) is enums.AcpFftOverlapMode else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_FFT_OVERLAP_MODE.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_fft_overlap(self, selector_string): r"""Gets the number of samples to overlap between consecutive chunks while performing FFT. This value is expressed as a percentage of :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_SEQUENTIAL_FFT_SIZE` attribute when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Sequential FFT**. You do not need to use a selector string to read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (float): Returns the number of samples to overlap between consecutive chunks while performing FFT. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_f64( updated_selector_string, attributes.AttributeID.ACP_FFT_OVERLAP.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def get_advanced_if_output_power_offset_auto(self, selector_string): r"""Gets whether the measurement computes an IF output power level offset for the offset channels to improve the dynamic range of the ACP measurement. This attribute is used only if you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Dynamic Range**. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **True**. +--------------+-------------------------------------------------------------------------------------------+ | Name (Value) | Description | +==============+===========================================================================================+ | False (0) | The measurement does not compute an IF output power level offset for the offset channels. | +--------------+-------------------------------------------------------------------------------------------+ | True (1) | The measurement computes an IF output power level offset for the offset channels. | +--------------+-------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.AcpIFOutputPowerOffsetAuto): Specifies whether the measurement computes an IF output power level offset for the offset channels to improve the dynamic range of the ACP measurement. This attribute is used only if you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Dynamic Range**. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_IF_OUTPUT_POWER_OFFSET_AUTO.value, ) attr_val = enums.AcpIFOutputPowerOffsetAuto(attr_val) except (KeyError, ValueError): raise errors.DriverTooNewError() # type: ignore finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_advanced_if_output_power_offset_auto(self, selector_string, value): r"""Sets whether the measurement computes an IF output power level offset for the offset channels to improve the dynamic range of the ACP measurement. This attribute is used only if you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Dynamic Range**. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **True**. +--------------+-------------------------------------------------------------------------------------------+ | Name (Value) | Description | +==============+===========================================================================================+ | False (0) | The measurement does not compute an IF output power level offset for the offset channels. | +--------------+-------------------------------------------------------------------------------------------+ | True (1) | The measurement computes an IF output power level offset for the offset channels. | +--------------+-------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.AcpIFOutputPowerOffsetAuto, int): Specifies whether the measurement computes an IF output power level offset for the offset channels to improve the dynamic range of the ACP measurement. This attribute is used only if you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Dynamic Range**. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) value = value.value if type(value) is enums.AcpIFOutputPowerOffsetAuto else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_IF_OUTPUT_POWER_OFFSET_AUTO.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_advanced_near_if_output_power_offset(self, selector_string): r"""Gets the offset by which to adjust the IF output power level for offset channels that are near the carrier channel to improve the dynamic range. This value is expressed in dB. This attribute is used only if you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Dynamic Range** and set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_IF_OUTPUT_POWER_OFFSET_AUTO` attribute to **False**. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 10 dB. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (float): Specifies the offset by which to adjust the IF output power level for offset channels that are near the carrier channel to improve the dynamic range. This value is expressed in dB. This attribute is used only if you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Dynamic Range** and set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_IF_OUTPUT_POWER_OFFSET_AUTO` attribute to **False**. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_f64( updated_selector_string, attributes.AttributeID.ACP_NEAR_IF_OUTPUT_POWER_OFFSET.value, ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_advanced_near_if_output_power_offset(self, selector_string, value): r"""Sets the offset by which to adjust the IF output power level for offset channels that are near the carrier channel to improve the dynamic range. This value is expressed in dB. This attribute is used only if you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Dynamic Range** and set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_IF_OUTPUT_POWER_OFFSET_AUTO` attribute to **False**. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 10 dB. Args: selector_string (string): Pass an empty string. value (float): Specifies the offset by which to adjust the IF output power level for offset channels that are near the carrier channel to improve the dynamic range. This value is expressed in dB. This attribute is used only if you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Dynamic Range** and set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_IF_OUTPUT_POWER_OFFSET_AUTO` attribute to **False**. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.set_attribute_f64( updated_selector_string, attributes.AttributeID.ACP_NEAR_IF_OUTPUT_POWER_OFFSET.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_advanced_far_if_output_power_offset(self, selector_string): r"""Gets the offset by which to adjust the IF output power level for offset channels that are far from the carrier channel to improve the dynamic range. This value is expressed in dB. This attribute is used only if you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Dynamic Range** and set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_IF_OUTPUT_POWER_OFFSET_AUTO` attribute to **False**. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 20 dB. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (float): Specifies the offset by which to adjust the IF output power level for offset channels that are far from the carrier channel to improve the dynamic range. This value is expressed in dB. This attribute is used only if you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Dynamic Range** and set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_IF_OUTPUT_POWER_OFFSET_AUTO` attribute to **False**. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_f64( updated_selector_string, attributes.AttributeID.ACP_FAR_IF_OUTPUT_POWER_OFFSET.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_advanced_far_if_output_power_offset(self, selector_string, value): r"""Sets the offset by which to adjust the IF output power level for offset channels that are far from the carrier channel to improve the dynamic range. This value is expressed in dB. This attribute is used only if you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Dynamic Range** and set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_IF_OUTPUT_POWER_OFFSET_AUTO` attribute to **False**. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 20 dB. Args: selector_string (string): Pass an empty string. value (float): Specifies the offset by which to adjust the IF output power level for offset channels that are far from the carrier channel to improve the dynamic range. This value is expressed in dB. This attribute is used only if you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Dynamic Range** and set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_IF_OUTPUT_POWER_OFFSET_AUTO` attribute to **False**. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.set_attribute_f64( updated_selector_string, attributes.AttributeID.ACP_FAR_IF_OUTPUT_POWER_OFFSET.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_sequential_fft_size(self, selector_string): r"""Gets the FFT size, when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Sequential FFT**. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 512. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (int): Specifies the FFT size, when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Sequential FFT**. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_SEQUENTIAL_FFT_SIZE.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_sequential_fft_size(self, selector_string, value): r"""Sets the FFT size, when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Sequential FFT**. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 512. Args: selector_string (string): Pass an empty string. value (int): Specifies the FFT size, when you set the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.ACP_MEASUREMENT_METHOD` attribute to **Sequential FFT**. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_SEQUENTIAL_FFT_SIZE.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_all_traces_enabled(self, selector_string): r"""Gets whether to enable the traces to be stored and retrieved after performing the ACP measurement. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is FALSE. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (bool): Specifies whether to enable the traces to be stored and retrieved after performing the ACP measurement. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_ALL_TRACES_ENABLED.value ) attr_val = bool(attr_val) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_all_traces_enabled(self, selector_string, value): r"""Sets whether to enable the traces to be stored and retrieved after performing the ACP measurement. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is FALSE. Args: selector_string (string): Pass an empty string. value (bool): Specifies whether to enable the traces to be stored and retrieved after performing the ACP measurement. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_ALL_TRACES_ENABLED.value, int(value), ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_number_of_analysis_threads(self, selector_string): r"""Gets the maximum number of threads used for parallelism for the ACP measurement. The number of threads can range from 1 to the number of physical cores. The number of threads you set may not be used in calculations. The actual number of threads used depends on the problem size, system resources, data availability, and other considerations. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 1. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (int): Specifies the maximum number of threads used for parallelism for the ACP measurement. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_NUMBER_OF_ANALYSIS_THREADS.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_number_of_analysis_threads(self, selector_string, value): r"""Sets the maximum number of threads used for parallelism for the ACP measurement. The number of threads can range from 1 to the number of physical cores. The number of threads you set may not be used in calculations. The actual number of threads used depends on the problem size, system resources, data availability, and other considerations. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 1. Args: selector_string (string): Pass an empty string. value (int): Specifies the maximum number of threads used for parallelism for the ACP measurement. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.ACP_NUMBER_OF_ANALYSIS_THREADS.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def configure_averaging( self, selector_string, averaging_enabled, averaging_count, averaging_type ): r"""Configures averaging for the ACP measurement. Args: selector_string (string): Pass an empty string. The signal name that is passed when creating the signal configuration is used. averaging_enabled (enums.AcpAveragingEnabled, int): This parameter specifies whether to enable averaging for the measurement. The default value is **False**. +--------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (value) | Description | +==============+==========================================================================================================================+ | False (0) | The measurement is performed on a single acquisition. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ | True (1) | The ACP measurement uses the Averaging Count parameter to calculate the number of acquisitions over which the ACP | | | measurement is averaged. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ averaging_count (int): This parameter specifies the number of acquisitions used for averaging when you set the **Averaging Enabled** parameter to **True**. The default value is 10. averaging_type (enums.AcpAveragingType, int): This parameter specifies the averaging type for averaging multiple spectrum acquisitions. RFmx uses the averaged spectrum for the measurement. The default value is **RMS**. +--------------+-------------------------------------------------------------------------------------------------------------+ | Name (value) | Description | +==============+=============================================================================================================+ | RMS (0) | The power spectrum is linearly averaged. RMS averaging reduces signal fluctuations but not the noise floor. | +--------------+-------------------------------------------------------------------------------------------------------------+ | Log (1) | The power spectrum is averaged in a logarithmic scale. | +--------------+-------------------------------------------------------------------------------------------------------------+ | Scalar (2) | The square root of the power spectrum is averaged. | +--------------+-------------------------------------------------------------------------------------------------------------+ | Max (3) | The peak power in the spectrum at each frequency bin is retained from one acquisition to the next. | +--------------+-------------------------------------------------------------------------------------------------------------+ | Min (4) | The least power in the spectrum at each frequency bin is retained from one acquisition to the next. | +--------------+-------------------------------------------------------------------------------------------------------------+ Refer to the *Averaging* section of the *Spectrum* topic for more information about averaging types. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() _helper.validate_not_none(selector_string, "selector_string") averaging_enabled = ( averaging_enabled.value if type(averaging_enabled) is enums.AcpAveragingEnabled else averaging_enabled ) averaging_type = ( averaging_type.value if type(averaging_type) is enums.AcpAveragingType else averaging_type ) updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.acp_configure_averaging( updated_selector_string, averaging_enabled, averaging_count, averaging_type ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def configure_measurement_method(self, selector_string, measurement_method): r"""Configures the method for performing the ACP measurement. Args: selector_string (string): Pass an empty string. The signal name that is passed when creating the signal configuration is used. measurement_method (enums.AcpMeasurementMethod, int): This parameter specifies the method for performing the ACP measurement. The default value is **Normal**. +--------------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +====================+==========================================================================================================================+ | Normal (0) | The ACP measurement acquires the spectrum using the same signal analyzer setting across frequency bands. Use this | | | method when measurement speed is desirable over higher dynamic range. | +--------------------+--------------------------------------------------------------------------------------------------------------------------+ | Dynamic Range (1) | The ACP measurement acquires the spectrum using the hardware-specific optimizations for different frequency bands. Use | | | this method to get the best dynamic range. **Supported Devices**: PXIe-5665/5668R. | +--------------------+--------------------------------------------------------------------------------------------------------------------------+ | Sequential FFT (2) | The ACP measurement acquires I/Q the samples specified by the ACP Sweep Time. These samples are divided into smaller | | | chunks. The size of each chunk is defined by the ACP Sequential FFT Size attribute, and FFT is computed for each these | | | chunks. The resultant FFTs are averaged to get the spectrum used to compute the the ACP. If the total acquired samples | | | is not an integer multiple of the FFT size, the remaining samples at the end of the acquisition are not used. Use this | | | method to optimize the ACP Measurement speed. The accuracy of results may be reduced when using this measurement | | | method. | +--------------------+--------------------------------------------------------------------------------------------------------------------------+ Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() _helper.validate_not_none(selector_string, "selector_string") measurement_method = ( measurement_method.value if type(measurement_method) is enums.AcpMeasurementMethod else measurement_method ) updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.acp_configure_measurement_method( updated_selector_string, measurement_method ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def configure_noise_compensation_enabled(self, selector_string, noise_compensation_enabled): r"""Configures channel power compensation for the inherent noise floor of the signal analyzer. Args: selector_string (string): Pass an empty string. The signal name that is passed when creating the signal configuration is used. noise_compensation_enabled (enums.AcpNoiseCompensationEnabled, int): This parameter specifies whether to enable compensation of the channel powers for the inherent noise floor of the signal analyzer. The default value is **False**. +--------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (value) | Description | +==============+==========================================================================================================================+ | False (0) | Disables compensation of the channel powers for the noise floor of the signal analyzer. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ | True (1) | Enables compensation of the channel powers for the noise floor of the signal analyzer. The noise floor of the signal | | | analyzer is measured for the RF path used by the ACP measurement and cached for future use. If the signal analyzer or | | | measurement parameters change, noise floors are measured again. Supported Devices: PXIe-5663/5665/5668R, | | | PXIe-5830/5831/5832/5842/5860 | +--------------+--------------------------------------------------------------------------------------------------------------------------+ Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() _helper.validate_not_none(selector_string, "selector_string") noise_compensation_enabled = ( noise_compensation_enabled.value if type(noise_compensation_enabled) is enums.AcpNoiseCompensationEnabled else noise_compensation_enabled ) updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.acp_configure_noise_compensation_enabled( updated_selector_string, noise_compensation_enabled ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def configure_number_of_offsets(self, selector_string, number_of_offsets): r"""Configures the number of offsets for the ACP measurement. Args: selector_string (string): Pass an empty string. The signal name that is passed when creating the signal configuration is used. number_of_offsets (int): This parameter specifies the number of offset channels. The default value is 2. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() _helper.validate_not_none(selector_string, "selector_string") updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.acp_configure_number_of_offsets( updated_selector_string, number_of_offsets ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def configure_rbw_filter(self, selector_string, rbw_auto, rbw, rbw_filter_type): r"""Configures the RBW filter. Args: selector_string (string): Pass an empty string. The signal name that is passed when creating the signal configuration is used. rbw_auto (enums.AcpRbwAutoBandwidth, int): This parameter specifies whether the measurement computes the RBW. Refer to the *RBW and Sweep Time* section in the *ACP* topic for more information about RBW and sweep time. +--------------+---------------------------------------------------------------------+ | Name (value) | Description | +==============+=====================================================================+ | False (0) | The measurement uses the RBW that you specify in the RBW parameter. | +--------------+---------------------------------------------------------------------+ | True (1) | The measurement computes the RBW. | +--------------+---------------------------------------------------------------------+ The default value is **True**. rbw (float): This parameter specifies the bandwidth of the RBW filter used to sweep the acquired signal if you set the **RBW Auto** parameter to **False**. This value is expressed in Hz. The default value is 10 kHz. rbw_filter_type (enums.AcpRbwFilterType, int): This parameter specifies the shape of the digital RBW filter. The default value is **Gaussian**. +---------------+----------------------------------------------------+ | Name (value) | Description | +===============+====================================================+ | FFT Based (0) | No RBW filtering is performed. | +---------------+----------------------------------------------------+ | Gaussian (1) | An RBW filter with a Gaussian response is applied. | +---------------+----------------------------------------------------+ | Flat (2) | An RBW filter with a flat response is applied. | +---------------+----------------------------------------------------+ Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() _helper.validate_not_none(selector_string, "selector_string") rbw_auto = rbw_auto.value if type(rbw_auto) is enums.AcpRbwAutoBandwidth else rbw_auto rbw_filter_type = ( rbw_filter_type.value if type(rbw_filter_type) is enums.AcpRbwFilterType else rbw_filter_type ) updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.acp_configure_rbw_filter( updated_selector_string, rbw_auto, rbw, rbw_filter_type ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def configure_sweep_time(self, selector_string, sweep_time_auto, sweep_time_interval): r"""Configures the sweep time. Args: selector_string (string): Pass an empty string. The signal name that is passed when creating the signal configuration is used. sweep_time_auto (enums.AcpSweepTimeAuto, int): This parameter specifies whether the measurement computes the sweep time. +--------------+-----------------------------------------------------------------------------------------------+ | Name (value) | Description | +==============+===============================================================================================+ | False (0) | The measurement uses the sweep time that you specify using the Sweep Time Interval parameter. | +--------------+-----------------------------------------------------------------------------------------------+ | True (1) | The measurement uses the default sweep time of 0.001667 seconds. | +--------------+-----------------------------------------------------------------------------------------------+ sweep_time_interval (float): This parameter specifies the sweep time if you set the **Sweep Time Auto** parameter to **False**. This value is expressed in seconds. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() _helper.validate_not_none(selector_string, "selector_string") sweep_time_auto = ( sweep_time_auto.value if type(sweep_time_auto) is enums.AcpSweepTimeAuto else sweep_time_auto ) updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.acp_configure_sweep_time( updated_selector_string, sweep_time_auto, sweep_time_interval ) finally: self._session_function_lock.exit_read_lock() return error_code