Source code for nirfmxcdma2k.cda_configuration

"""Provides methods to configure the Cda 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 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 whether the measurement is performed from the frame, slot, or symbol boundary. 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 **Slot**. +---------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +===============+==========================================================================================================================+ | Frame (0) | The frame boundary is detected, and the measurement is performed over the number of slots specified by the CDA Meas | | | Length attribute starting at the CDA measurement offset slots from the frame boundary. | +---------------+--------------------------------------------------------------------------------------------------------------------------+ | Slot (1) | The slot boundary is detected, and the measurement is performed over the number of slots specified by the CDA Meas | | | Length attribute starting at the CDA measurement offset slots from the slot boundary. | +---------------+--------------------------------------------------------------------------------------------------------------------------+ | Arbitrary (2) | The symbol boundary is detected, and the measurement is performed over the number of slots specified by the CDA Meas | | | Length attribute starting at the CDA measurement offset slots from the symbol boundary. | +---------------+--------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.CdaSynchronizationMode): Specifies whether the measurement is performed from the frame, slot, or symbol boundary. 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 whether the measurement is performed from the frame, slot, or symbol boundary. 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 **Slot**. +---------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +===============+==========================================================================================================================+ | Frame (0) | The frame boundary is detected, and the measurement is performed over the number of slots specified by the CDA Meas | | | Length attribute starting at the CDA measurement offset slots from the frame boundary. | +---------------+--------------------------------------------------------------------------------------------------------------------------+ | Slot (1) | The slot boundary is detected, and the measurement is performed over the number of slots specified by the CDA Meas | | | Length attribute starting at the CDA measurement offset slots from the slot boundary. | +---------------+--------------------------------------------------------------------------------------------------------------------------+ | Arbitrary (2) | The symbol boundary is detected, and the measurement is performed over the number of slots specified by the CDA Meas | | | Length attribute starting at the CDA measurement offset slots from the symbol boundary. | +---------------+--------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.CdaSynchronizationMode, int): Specifies whether the measurement is performed from the frame, slot, or symbol boundary. 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. The synchronization boundary is specified by the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.CDA_SYNCHRONIZATION_MODE` attribute. This value is expressed in slots. 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. The valid values are 1 to 15, inclusive. The sum of the CDA measurement offset and the CDA measurement length must be less than or equal to 16. 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. The synchronization boundary is specified by the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.CDA_SYNCHRONIZATION_MODE` attribute. This value is expressed in slots. 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. The synchronization boundary is specified by the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.CDA_SYNCHRONIZATION_MODE` attribute. This value is expressed in slots. 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. The valid values are 1 to 15, inclusive. The sum of the CDA measurement offset and the CDA measurement length must be less than or equal to 16. Args: selector_string (string): Pass an empty string. value (int): Specifies the measurement offset to skip from the synchronization boundary. The synchronization boundary is specified by the :py:attr:`~nirfmxcdma2k.attributes.AttributeID.CDA_SYNCHRONIZATION_MODE` attribute. This value is expressed in slots. 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_measurement_length(self, selector_string): r"""Gets the duration of code domain measurement. This value is expressed in slots. 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. The valid values are 1 to 16, inclusive. The sum of the CDA measurement offset and the CDA measurement length must be less than or equal to 16. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (int): Specifies the duration of code domain measurement. This value is expressed in slots. 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_LENGTH.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_measurement_length(self, selector_string, value): r"""Sets the duration of code domain measurement. This value is expressed in slots. 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. The valid values are 1 to 16, inclusive. The sum of the CDA measurement offset and the CDA measurement length must be less than or equal to 16. Args: selector_string (string): Pass an empty string. value (int): Specifies the duration of code domain measurement. This value is expressed in slots. 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_LENGTH.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 used to calculate the code domain power traces. 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 64. The valid values are 2, 4, 8, 16, 32, and 64. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (int): Specifies the base spreading factor used to calculate the code domain power traces. 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 used to calculate the code domain power traces. 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 64. The valid values are 2, 4, 8, 16, 32, and 64. Args: selector_string (string): Pass an empty string. value (int): Specifies the base spreading factor used to calculate the code domain power traces. 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_walsh_code_length(self, selector_string): r"""Gets the Walsh code length of a channel subject to channel specific 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 64. The valid values are 2, 4, 8, 16, 32, and 64. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (int): Specifies the Walsh code length of a channel subject to channel specific 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_MEASUREMENT_CHANNEL_WALSH_CODE_LENGTH.value, ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_measurement_channel_walsh_code_length(self, selector_string, value): r"""Sets the Walsh code length of a channel subject to channel specific 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 64. The valid values are 2, 4, 8, 16, 32, and 64. Args: selector_string (string): Pass an empty string. value (int): Specifies the Walsh code length of a channel subject to channel specific 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_MEASUREMENT_CHANNEL_WALSH_CODE_LENGTH.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_measurement_channel_walsh_code_number(self, selector_string): r"""Gets the Walsh code number of a channel subject to channel specific 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 0. The valid values are 0 to 63, inclusive. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (int): Specifies the Walsh code number of a channel subject to channel specific 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_MEASUREMENT_CHANNEL_WALSH_CODE_NUMBER.value, ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_measurement_channel_walsh_code_number(self, selector_string, value): r"""Sets the Walsh code number of a channel subject to channel specific 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 0. The valid values are 0 to 63, inclusive. Args: selector_string (string): Pass an empty string. value (int): Specifies the Walsh code number of a channel subject to channel specific 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_MEASUREMENT_CHANNEL_WALSH_CODE_NUMBER.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_measurement_channel_branch(self, selector_string): r"""Gets the branch of a channel subject to channel specific 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 **I**. +--------------+----------------------------------+ | Name (Value) | Description | +==============+==================================+ | I (0) | Specifies the in-phase branch. | +--------------+----------------------------------+ | Q (1) | Specifies the quadrature branch. | +--------------+----------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.CdaMeasurementChannelBranch): Specifies the branch of a channel subject to channel specific 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_MEASUREMENT_CHANNEL_BRANCH.value ) attr_val = enums.CdaMeasurementChannelBranch(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_channel_branch(self, selector_string, value): r"""Sets the branch of a channel subject to channel specific 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 **I**. +--------------+----------------------------------+ | Name (Value) | Description | +==============+==================================+ | I (0) | Specifies the in-phase branch. | +--------------+----------------------------------+ | Q (1) | Specifies the quadrature branch. | +--------------+----------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.CdaMeasurementChannelBranch, int): Specifies the branch of a channel subject to channel specific 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 ) value = value.value if type(value) is enums.CdaMeasurementChannelBranch else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.CDA_MEASUREMENT_CHANNEL_BRANCH.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 measured code domain power 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 CDA measurement results are reported in dB. | +--------------+--------------------------------------------------+ | dBm (1) | The CDA measurement results are reported in 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 measured code domain power 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 measured code domain power 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 CDA measurement results are reported in dB. | +--------------+--------------------------------------------------+ | dBm (1) | The CDA measurement results are reported in dBm. | +--------------+--------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.CdaPowerUnit, int): Specifies the measurement unit of the measured code domain power 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_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 measured spectrum is normal. | +--------------+------------------------------------+ | True (1) | The measured 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 measured spectrum is normal. | +--------------+------------------------------------+ | True (1) | The measured 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 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) | I/Q offset is not removed before the CDA measurement. | +--------------+-------------------------------------------------------+ | True (1) | 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 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 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) | I/Q offset is not removed before the CDA measurement. | +--------------+-------------------------------------------------------+ | True (1) | 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 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) | I/Q gain imbalance is not removed before the CDA measurement. | +--------------+---------------------------------------------------------------+ | True (1) | 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) | I/Q gain imbalance is not removed before the CDA measurement. | +--------------+---------------------------------------------------------------+ | True (1) | 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) | I/Q quadrature error is not removed before the CDA measurement. | +--------------+-----------------------------------------------------------------+ | True (1) | 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) | I/Q quadrature error is not removed before the CDA measurement. | +--------------+-----------------------------------------------------------------+ | True (1) | 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_receive_filter_enabled(self, selector_string): r"""Gets whether to enable the received filter for the code domain analysis (CDA) measurement. Use this attribute to disable the filter, if the received signal is already filtered. 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 receive filtering for the CDA measurement. | +--------------+-----------------------------------------------------+ | True (1) | Enables receive filtering for the CDA measurement. | +--------------+-----------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.CdaReceiveFilterEnabled): Specifies whether to enable the received filter for the code domain analysis (CDA) measurement. Use this attribute to disable the filter, if the received signal is already filtered. 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_RECEIVE_FILTER_ENABLED.value ) attr_val = enums.CdaReceiveFilterEnabled(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_receive_filter_enabled(self, selector_string, value): r"""Sets whether to enable the received filter for the code domain analysis (CDA) measurement. Use this attribute to disable the filter, if the received signal is already filtered. 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 receive filtering for the CDA measurement. | +--------------+-----------------------------------------------------+ | True (1) | Enables receive filtering for the CDA measurement. | +--------------+-----------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.CdaReceiveFilterEnabled, int): Specifies whether to enable the received filter for the code domain analysis (CDA) measurement. Use this attribute to disable the filter, if the received signal is already filtered. 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.CdaReceiveFilterEnabled else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.CDA_RECEIVE_FILTER_ENABLED.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). 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). 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). 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). 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 configure_synchronization_mode_and_interval( self, selector_string, synchronization_mode, measurement_offset, measurement_length ): r"""Configures the **Synchronization Mode**, **Measurement Offset**, and **Measurement Length** parameters for the code domain analysis (CDA) measurement. 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 whether the measurement is performed from the frame, slot, or symbol boundary. The default value is **Slot**. +---------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (value) | Description | +===============+==========================================================================================================================+ | Frame (0) | The frame boundary is detected, and the measurement is performed over the number of slots specified by the Measurement | | | Length parameter starting at the Measurement Offset slots from the frame boundary. | +---------------+--------------------------------------------------------------------------------------------------------------------------+ | Slot (1) | The slot boundary is detected, and the measurement is performed over the number of slots specified by the Measurement | | | Length parameter starting at the Measurement Offset slots from the slot boundary. | +---------------+--------------------------------------------------------------------------------------------------------------------------+ | Arbitrary (2) | The symbol boundary is detected, and the measurement is performed over the number of slots specified by the Measurement | | | Length parameter starting at the Measurement Offset slots from the symbol boundary. | +---------------+--------------------------------------------------------------------------------------------------------------------------+ measurement_offset (int): This parameter specifies the measurement offset to skip from the synchronization boundary. The synchronization boundary is specified by the **Synchronization Mode** parameter. This value is expressed in slots. measurement_length (int): This parameter specifies the duration of code domain measurement. This value is expressed in slots. The default value is 0. The valid values are 1 to 16, inclusive. 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_interval( updated_selector_string, synchronization_mode, measurement_offset, measurement_length, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def configure_measurement_channel( self, selector_string, walsh_code_length, walsh_code_number, branch ): r"""Configures the spreading factor, spreading code, modulation type, and branch of the channel to be measured. Args: selector_string (string): Pass an empty string. The signal name that is passed when creating the signal configuration is used. walsh_code_length (int): This parameter specifies the Walsh code length of a channel subject to channel specific analysis. The default value is 64. The valid values are 2, 4, 8, 16, 32, and 64. walsh_code_number (int): This parameter specifies the Walsh code number of a channel subject to channel specific analysis. branch (enums.CdaMeasurementChannelBranch, int): This parameter specifies the Walsh branch of a channel subject to channel specific analysis. The default value is **I**. +--------------+----------------------------------+ | Name (value) | Description | +==============+==================================+ | I (0) | Specifies the in-phase branch. | +--------------+----------------------------------+ | Q (1) | Specifies the quadrature branch. | +--------------+----------------------------------+ 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") branch = branch.value if type(branch) is enums.CdaMeasurementChannelBranch else branch 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, walsh_code_length, walsh_code_number, branch ) 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 **Power Unit** parameter for the code domain power results, except for the **Total Power** parameter. 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. This value is expressed in dB/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