Source code for nirfmxtdscdma.cda_configuration

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

import functools

import nirfmxtdscdma.attributes as attributes
import nirfmxtdscdma.enums as enums
import nirfmxtdscdma.errors as errors
import nirfmxtdscdma.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 Tdscdma signal configuration")
        return f(*xs, **kws)

    return aux


[docs] class CdaConfiguration(object): """Provides methods to configure the Cda measurement.""" def __init__(self, signal_obj): """Provides methods to configure the Cda 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 code domain analysis (CDA) 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 code domain analysis (CDA) 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.CDA_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 code domain analysis (CDA) 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 code domain analysis (CDA) 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.CDA_MEASUREMENT_ENABLED.value, int(value), ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_synchronization_mode(self, selector_string): r"""Gets the synchronization mode for the code domain analysis (CDA) measurement. Currently, only the **Slot** mode is supported. 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. +--------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +==============+==========================================================================================================================+ | Slot (0) | The measurement uses slot synchronization mode. The slot boundary in the acquired signal is detected, and the | | | measurement is performed over one slot, starting from the boundary specified by the CDA Meas Offset attribute. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.CdaSynchronizationMode): Specifies the synchronization mode for the code domain analysis (CDA) measurement. Currently, only the **Slot** mode is supported. 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.CDA_SYNCHRONIZATION_MODE.value ) attr_val = enums.CdaSynchronizationMode(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_synchronization_mode(self, selector_string, value): r"""Sets the synchronization mode for the code domain analysis (CDA) measurement. Currently, only the **Slot** mode is supported. 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. +--------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +==============+==========================================================================================================================+ | Slot (0) | The measurement uses slot synchronization mode. The slot boundary in the acquired signal is detected, and the | | | measurement is performed over one slot, starting from the boundary specified by the CDA Meas Offset attribute. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.CdaSynchronizationMode, int): Specifies the synchronization mode for the code domain analysis (CDA) measurement. Currently, only the **Slot** mode is supported. 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.CdaSynchronizationMode else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.CDA_SYNCHRONIZATION_MODE.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_measurement_offset(self, selector_string): r"""Gets the measurement offset to skip from the synchronization boundary. This value is expressed in slots. The synchronization boundary is specified by the :py:attr:`~nirfmxtdscdma.attributes.AttributeID.CDA_SYNCHRONIZATION_MODE` attribute. 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. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (int): Specifies the measurement offset to skip from the synchronization boundary. This value is expressed in slots. The synchronization boundary is specified by the :py:attr:`~nirfmxtdscdma.attributes.AttributeID.CDA_SYNCHRONIZATION_MODE` attribute. 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.CDA_MEASUREMENT_OFFSET.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_measurement_offset(self, selector_string, value): r"""Sets the measurement offset to skip from the synchronization boundary. This value is expressed in slots. The synchronization boundary is specified by the :py:attr:`~nirfmxtdscdma.attributes.AttributeID.CDA_SYNCHRONIZATION_MODE` attribute. 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. Args: selector_string (string): Pass an empty string. value (int): Specifies the measurement offset to skip from the synchronization boundary. This value is expressed in slots. The synchronization boundary is specified by the :py:attr:`~nirfmxtdscdma.attributes.AttributeID.CDA_SYNCHRONIZATION_MODE` attribute. 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.CDA_MEASUREMENT_OFFSET.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_base_spreading_factor(self, selector_string): r"""Gets the base spreading factor for code domain analysis. 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 16. The valid values are 1, 2, 4, 8, and 16. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (int): Specifies the base spreading factor for code domain analysis. 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.CDA_BASE_SPREADING_FACTOR.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_base_spreading_factor(self, selector_string, value): r"""Sets the base spreading factor for code domain analysis. 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 16. The valid values are 1, 2, 4, 8, and 16. Args: selector_string (string): Pass an empty string. value (int): Specifies the base spreading factor for code domain analysis. 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.CDA_BASE_SPREADING_FACTOR.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_measurement_channel_spreading_factor(self, selector_string): r"""Gets the spreading factor of the channel on which to perform the code domain analysis (CDA) 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 16. The valid values are 1, 2, 4, 8, and 16. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (int): Specifies the spreading factor of the channel on which to perform the code domain analysis (CDA) 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.CDA_MEASUREMENT_CHANNEL_SPREADING_FACTOR.value, ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_measurement_channel_spreading_factor(self, selector_string, value): r"""Sets the spreading factor of the channel on which to perform the code domain analysis (CDA) 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 16. The valid values are 1, 2, 4, 8, and 16. Args: selector_string (string): Pass an empty string. value (int): Specifies the spreading factor of the channel on which to perform the code domain analysis (CDA) 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.CDA_MEASUREMENT_CHANNEL_SPREADING_FACTOR.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_measurement_channel_channelization_code(self, selector_string): r"""Gets the channelization code of the code domain analysis (CDA) measurement channel. 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 channelization code of the code domain analysis (CDA) measurement channel. 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.CDA_MEASUREMENT_CHANNEL_CHANNELIZATION_CODE.value, ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_measurement_channel_channelization_code(self, selector_string, value): r"""Sets the channelization code of the code domain analysis (CDA) measurement channel. 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 channelization code of the code domain analysis (CDA) measurement channel. 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.CDA_MEASUREMENT_CHANNEL_CHANNELIZATION_CODE.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_spectrum_inverted(self, selector_string): r"""Gets whether the spectrum of the signal is inverted. 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 spectrum is not inverted. | +--------------+-------------------------------+ | True (1) | The spectrum is inverted. | +--------------+-------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.CdaSpectrumInverted): Specifies whether the spectrum of the signal is inverted. 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.CDA_SPECTRUM_INVERTED.value ) attr_val = enums.CdaSpectrumInverted(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_spectrum_inverted(self, selector_string, value): r"""Sets whether the spectrum of the signal is inverted. 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 spectrum is not inverted. | +--------------+-------------------------------+ | True (1) | The spectrum is inverted. | +--------------+-------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.CdaSpectrumInverted, int): Specifies whether the spectrum of the signal is inverted. 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.CdaSpectrumInverted else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.CDA_SPECTRUM_INVERTED.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_iq_offset_removal_enabled(self, selector_string): r"""Gets whether to remove the I/Q offset before the code domain analysis (CDA) 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 I/Q offset is not removed before the CDA measurement. | +--------------+-----------------------------------------------------------+ | True (1) | The I/Q offset is removed before the CDA measurement. | +--------------+-----------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.CdaIQOffsetRemovalEnabled): Specifies whether to remove the I/Q offset before the code domain analysis (CDA) 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.CDA_IQ_OFFSET_REMOVAL_ENABLED.value ) attr_val = enums.CdaIQOffsetRemovalEnabled(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_iq_offset_removal_enabled(self, selector_string, value): r"""Sets whether to remove the I/Q offset before the code domain analysis (CDA) 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 I/Q offset is not removed before the CDA measurement. | +--------------+-----------------------------------------------------------+ | True (1) | The I/Q offset is removed before the CDA measurement. | +--------------+-----------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.CdaIQOffsetRemovalEnabled, int): Specifies whether to remove the I/Q offset before the code domain analysis (CDA) 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.CdaIQOffsetRemovalEnabled else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.CDA_IQ_OFFSET_REMOVAL_ENABLED.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_iq_gain_imbalance_removal_enabled(self, selector_string): r"""Gets whether to remove the I/Q gain imbalance before the code domain analysis (CDA) 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 I/Q gain imbalance is not removed before the CDA measurement. | +--------------+-------------------------------------------------------------------+ | True (1) | The I/Q gain imbalance is removed before the CDA measurement. | +--------------+-------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.CdaIQGainImbalanceRemovalEnabled): Specifies whether to remove the I/Q gain imbalance before the code domain analysis (CDA) 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.CDA_IQ_GAIN_IMBALANCE_REMOVAL_ENABLED.value, ) attr_val = enums.CdaIQGainImbalanceRemovalEnabled(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_iq_gain_imbalance_removal_enabled(self, selector_string, value): r"""Sets whether to remove the I/Q gain imbalance before the code domain analysis (CDA) 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 I/Q gain imbalance is not removed before the CDA measurement. | +--------------+-------------------------------------------------------------------+ | True (1) | The I/Q gain imbalance is removed before the CDA measurement. | +--------------+-------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.CdaIQGainImbalanceRemovalEnabled, int): Specifies whether to remove the I/Q gain imbalance before the code domain analysis (CDA) 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.CdaIQGainImbalanceRemovalEnabled else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.CDA_IQ_GAIN_IMBALANCE_REMOVAL_ENABLED.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_iq_quadrature_error_removal_enabled(self, selector_string): r"""Gets whether to remove the I/Q quadrature error before the code domain analysis (CDA) 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 I/Q quadrature error is not removed before the CDA measurement. | +--------------+---------------------------------------------------------------------+ | True (1) | The I/Q quadrature error is removed before the CDA measurement. | +--------------+---------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.CdaIQQuadratureErrorRemovalEnabled): Specifies whether to remove the I/Q quadrature error before the code domain analysis (CDA) 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.CDA_IQ_QUADRATURE_ERROR_REMOVAL_ENABLED.value, ) attr_val = enums.CdaIQQuadratureErrorRemovalEnabled(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_iq_quadrature_error_removal_enabled(self, selector_string, value): r"""Sets whether to remove the I/Q quadrature error before the code domain analysis (CDA) 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 I/Q quadrature error is not removed before the CDA measurement. | +--------------+---------------------------------------------------------------------+ | True (1) | The I/Q quadrature error is removed before the CDA measurement. | +--------------+---------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.CdaIQQuadratureErrorRemovalEnabled, int): Specifies whether to remove the I/Q quadrature error before the code domain analysis (CDA) 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.CdaIQQuadratureErrorRemovalEnabled else value ) error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.CDA_IQ_QUADRATURE_ERROR_REMOVAL_ENABLED.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_power_unit(self, selector_string): r"""Gets the measurement unit of the code domain power (CDP) results. 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 **dB**. +--------------+----------------------------------------------+ | Name (Value) | Description | +==============+==============================================+ | dB (0) | The measurement unit for CDP results is dB. | +--------------+----------------------------------------------+ | dBm (1) | The measurement unit for CDP results is dBm. | +--------------+----------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.CdaPowerUnit): Specifies the measurement unit of the code domain power (CDP) results. 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.CDA_POWER_UNIT.value ) attr_val = enums.CdaPowerUnit(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_power_unit(self, selector_string, value): r"""Sets the measurement unit of the code domain power (CDP) results. 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 **dB**. +--------------+----------------------------------------------+ | Name (Value) | Description | +==============+==============================================+ | dB (0) | The measurement unit for CDP results is dB. | +--------------+----------------------------------------------+ | dBm (1) | The measurement unit for CDP results is dBm. | +--------------+----------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.CdaPowerUnit, int): Specifies the measurement unit of the code domain power (CDP) results. 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.CdaPowerUnit else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.CDA_POWER_UNIT.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_rrc_filter_enabled(self, selector_string): r"""Gets whether to enable the RRC 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 **True**. +--------------+---------------------------------------------+ | Name (Value) | Description | +==============+=============================================+ | False (0) | Disables the RRC filter in the measurement. | +--------------+---------------------------------------------+ | True (1) | Enables the RRC filter in the measurement. | +--------------+---------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.CdaRrcFilterEnabled): Specifies whether to enable the RRC 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.CDA_RRC_FILTER_ENABLED.value ) attr_val = enums.CdaRrcFilterEnabled(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_rrc_filter_enabled(self, selector_string, value): r"""Sets whether to enable the RRC 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 **True**. +--------------+---------------------------------------------+ | Name (Value) | Description | +==============+=============================================+ | False (0) | Disables the RRC filter in the measurement. | +--------------+---------------------------------------------+ | True (1) | Enables the RRC filter in the measurement. | +--------------+---------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.CdaRrcFilterEnabled, int): Specifies whether to enable the RRC 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.CdaRrcFilterEnabled else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.CDA_RRC_FILTER_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 code domain analysis (CDA) 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 CDA measurement uses the value of the CDA Averaging Count attribute as the number of acquisitions over which the | | | CDA measurement is averaged. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.CdaAveragingEnabled): Specifies whether to enable averaging for the code domain analysis (CDA) 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.CDA_AVERAGING_ENABLED.value ) attr_val = enums.CdaAveragingEnabled(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 code domain analysis (CDA) 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 CDA measurement uses the value of the CDA Averaging Count attribute as the number of acquisitions over which the | | | CDA measurement is averaged. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.CdaAveragingEnabled, int): Specifies whether to enable averaging for the code domain analysis (CDA) 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.CdaAveragingEnabled else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.CDA_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:`~nirfmxtdscdma.attributes.AttributeID.CDA_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:`~nirfmxtdscdma.attributes.AttributeID.CDA_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.CDA_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:`~nirfmxtdscdma.attributes.AttributeID.CDA_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:`~nirfmxtdscdma.attributes.AttributeID.CDA_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.CDA_AVERAGING_COUNT.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 code domain analysis (CDA) 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 code domain analysis (CDA) 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.CDA_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 code domain analysis (CDA) 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 code domain analysis (CDA) 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.CDA_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 code domain analysis (CDA) 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 code domain analysis (CDA) 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.CDA_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 code domain analysis (CDA) 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 code domain analysis (CDA) 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.CDA_NUMBER_OF_ANALYSIS_THREADS.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def configure_synchronization_mode_and_offset( self, selector_string, synchronization_mode, measurement_offset ): r"""Configures the synchronization mode and the measurement offset for the code domain analysis (CDA) measurement. You can select a specific time slot for the measurement using this method. Args: selector_string (string): Pass an empty string. The signal name that is passed when creating the signal configuration is used. synchronization_mode (enums.CdaSynchronizationMode, int): This parameter specifies the synchronization mode for the CDA measurement. Currently, only the **Slot** mode is supported. +--------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (value) | Description | +==============+==========================================================================================================================+ | Slot (0) | The measurement uses slot synchronization mode. The slot boundary in the acquired signal is detected, and the | | | measurement is performed over one slot, starting from the boundary specified by the | | | :py:attr:`~nirfmxtdscdma.attributes.AttributeID.MODACC_MEASUREMENT_OFFSET` attribute. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ measurement_offset (int): This parameter specifies the measurement offset to skip from the synchronization boundary. This value is expressed in slots. The synchronization boundary is specified by the **Synchronization Mode** parameter. The default value is 0. 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") synchronization_mode = ( synchronization_mode.value if type(synchronization_mode) is enums.CdaSynchronizationMode else synchronization_mode ) updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.cda_configure_synchronization_mode_and_offset( updated_selector_string, synchronization_mode, measurement_offset ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def configure_measurement_channel(self, selector_string, spreading_factor, channelization_code): r"""Configures the physical channel to be analyzed using the **Spreading Factor** parameter and the **Channelization Code** parameter. Args: selector_string (string): Pass an empty string. The signal name that is passed when creating the signal configuration is used. spreading_factor (int): This parameter specifies the base spreading factor for code domain power (CDP) analysis. The default value is 16. channelization_code (int): This parameter specifies the channelization code of the code domain analysis (CDA) measurement channel. The default value is 1. The valid values are 1 to 16. 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.cda_configure_measurement_channel( updated_selector_string, spreading_factor, channelization_code ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def configure_power_unit(self, selector_string, power_unit): r"""Configures the unit of measurement for the measurement results. Args: selector_string (string): Pass an empty string. The signal name that is passed when creating the signal configuration is used. power_unit (enums.CdaPowerUnit, int): This parameter specifies the measurement unit of the measured code domain power results. The default value is **dB**. +--------------+------------------------------------------------------------+ | Name (value) | Description | +==============+============================================================+ | dB (0) | The measurement unit for code domain power results is dB. | +--------------+------------------------------------------------------------+ | dBm (1) | The measurement unit for code domain power results is dBm. | +--------------+------------------------------------------------------------+ 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") power_unit = power_unit.value if type(power_unit) is enums.CdaPowerUnit else power_unit updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.cda_configure_power_unit( updated_selector_string, power_unit ) 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): r"""Configures averaging for the CDA 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.CdaAveragingEnabled, int): This parameter specifies whether to enable averaging for the CDA measurement. The default value is **False**. +--------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (value) | Description | +==============+==========================================================================================================================+ | False (0) | The measurement is performed on a single acquisition. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ | True (1) | The CDA measurement uses the value of the Averaging Count parameter as the number of acquisitions over which the CDA | | | 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. 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.CdaAveragingEnabled else averaging_enabled ) updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.cda_configure_averaging( updated_selector_string, averaging_enabled, averaging_count ) finally: self._session_function_lock.exit_read_lock() return error_code