"""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