Source code for nirfmxnr.pvt_configuration

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

import functools

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

    return aux


[docs] class PvtConfiguration(object): """Provides methods to configure the Pvt measurement.""" def __init__(self, signal_obj): """Provides methods to configure the Pvt 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 PVT 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 PVT 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.PVT_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 PVT 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 PVT 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.PVT_MEASUREMENT_ENABLED.value, int(value), ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_measurement_interval_auto(self, selector_string): r"""Gets whether the measurement interval is computed by the measurement or configured by the user through :py:attr:`~nirfmxnr.attributes.AttributeID.PVT_MEASUREMENT_INTERVAL` attribute. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. Setting this attribute to **FALSE** is supported for downlink only. The default value is **True**. Refer to measurement guidelines details in the `NR Power Vs Time <https://www.ni.com/docs/en-US/bundle/rfmx-nr/page/nr-power-vs-time.html>`_ concept help for more information. +--------------+------------------------------------------------------------------------+ | Name (Value) | Description | +==============+========================================================================+ | False (0) | Measurement Interval is defined by the Measurement Interval attribute. | +--------------+------------------------------------------------------------------------+ | True (1) | Measurement Inteval is computed by the measurement. | +--------------+------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.PvtMeasurementIntervalAuto): Specifies whether the measurement interval is computed by the measurement or configured by the user through :py:attr:`~nirfmxnr.attributes.AttributeID.PVT_MEASUREMENT_INTERVAL` attribute. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.PVT_MEASUREMENT_INTERVAL_AUTO.value ) attr_val = enums.PvtMeasurementIntervalAuto(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_interval_auto(self, selector_string, value): r"""Sets whether the measurement interval is computed by the measurement or configured by the user through :py:attr:`~nirfmxnr.attributes.AttributeID.PVT_MEASUREMENT_INTERVAL` attribute. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. Setting this attribute to **FALSE** is supported for downlink only. The default value is **True**. Refer to measurement guidelines details in the `NR Power Vs Time <https://www.ni.com/docs/en-US/bundle/rfmx-nr/page/nr-power-vs-time.html>`_ concept help for more information. +--------------+------------------------------------------------------------------------+ | Name (Value) | Description | +==============+========================================================================+ | False (0) | Measurement Interval is defined by the Measurement Interval attribute. | +--------------+------------------------------------------------------------------------+ | True (1) | Measurement Inteval is computed by the measurement. | +--------------+------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.PvtMeasurementIntervalAuto, int): Specifies whether the measurement interval is computed by the measurement or configured by the user through :py:attr:`~nirfmxnr.attributes.AttributeID.PVT_MEASUREMENT_INTERVAL` attribute. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) value = value.value if type(value) is enums.PvtMeasurementIntervalAuto else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.PVT_MEASUREMENT_INTERVAL_AUTO.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_measurement_interval(self, selector_string): r"""Gets the measurement interval when the :py:attr:`~nirfmxnr.attributes.AttributeID.PVT_MEASUREMENT_INTERVAL_AUTO` attribute is set to **False**. This value is expressed in seconds. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 10 ms. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (float): Specifies the measurement interval when the :py:attr:`~nirfmxnr.attributes.AttributeID.PVT_MEASUREMENT_INTERVAL_AUTO` attribute is set to **False**. This value is expressed in seconds. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_f64( updated_selector_string, attributes.AttributeID.PVT_MEASUREMENT_INTERVAL.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_measurement_interval(self, selector_string, value): r"""Sets the measurement interval when the :py:attr:`~nirfmxnr.attributes.AttributeID.PVT_MEASUREMENT_INTERVAL_AUTO` attribute is set to **False**. This value is expressed in seconds. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 10 ms. Args: selector_string (string): Pass an empty string. value (float): Specifies the measurement interval when the :py:attr:`~nirfmxnr.attributes.AttributeID.PVT_MEASUREMENT_INTERVAL_AUTO` attribute is set to **False**. This value is expressed in seconds. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.set_attribute_f64( updated_selector_string, attributes.AttributeID.PVT_MEASUREMENT_INTERVAL.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_measurement_method(self, selector_string): r"""Gets the PVT measurement method. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **Normal**. +-------------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +===================+==========================================================================================================================+ | Normal (0) | The measurement is performed using a single acquisition. Use this method when a high dynamic range is not required. | +-------------------+--------------------------------------------------------------------------------------------------------------------------+ | Dynamic Range (1) | The measurement is performed using two acquisitions. Use this method when a higher dynamic range is desirable over the | | | measurement speed. | +-------------------+--------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.PvtMeasurementMethod): Specifies the PVT measurement method. 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.PVT_MEASUREMENT_METHOD.value ) attr_val = enums.PvtMeasurementMethod(attr_val) except (KeyError, ValueError): raise errors.DriverTooNewError() # type: ignore finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_measurement_method(self, selector_string, value): r"""Sets the PVT measurement method. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **Normal**. +-------------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +===================+==========================================================================================================================+ | Normal (0) | The measurement is performed using a single acquisition. Use this method when a high dynamic range is not required. | +-------------------+--------------------------------------------------------------------------------------------------------------------------+ | Dynamic Range (1) | The measurement is performed using two acquisitions. Use this method when a higher dynamic range is desirable over the | | | measurement speed. | +-------------------+--------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.PvtMeasurementMethod, int): Specifies the PVT measurement method. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) value = value.value if type(value) is enums.PvtMeasurementMethod else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.PVT_MEASUREMENT_METHOD.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_averaging_enabled(self, selector_string): r"""Gets whether to enable averaging for the power versus time (PVT) measurement. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **False**. +--------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +==============+==========================================================================================================================+ | False (0) | The measurement is performed on a single acquisition. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ | True (1) | The measurement uses the value of the PVT Averaging Count attribute as the number of acquisitions over which the PVT | | | measurement is averaged. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.PvtAveragingEnabled): Specifies whether to enable averaging for the power versus time (PVT) 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.PVT_AVERAGING_ENABLED.value ) attr_val = enums.PvtAveragingEnabled(attr_val) except (KeyError, ValueError): raise errors.DriverTooNewError() # type: ignore finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_averaging_enabled(self, selector_string, value): r"""Sets whether to enable averaging for the power versus time (PVT) measurement. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **False**. +--------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +==============+==========================================================================================================================+ | False (0) | The measurement is performed on a single acquisition. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ | True (1) | The measurement uses the value of the PVT Averaging Count attribute as the number of acquisitions over which the PVT | | | measurement is averaged. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.PvtAveragingEnabled, int): Specifies whether to enable averaging for the power versus time (PVT) 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.PvtAveragingEnabled else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.PVT_AVERAGING_ENABLED.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_averaging_count(self, selector_string): r"""Gets the number of acquisitions used for averaging when you set the :py:attr:`~nirfmxnr.attributes.AttributeID.PVT_AVERAGING_ENABLED` attribute to **True**. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 10. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (int): Specifies the number of acquisitions used for averaging when you set the :py:attr:`~nirfmxnr.attributes.AttributeID.PVT_AVERAGING_ENABLED` attribute to **True**. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_i32( updated_selector_string, attributes.AttributeID.PVT_AVERAGING_COUNT.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_averaging_count(self, selector_string, value): r"""Sets the number of acquisitions used for averaging when you set the :py:attr:`~nirfmxnr.attributes.AttributeID.PVT_AVERAGING_ENABLED` attribute to **True**. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 10. Args: selector_string (string): Pass an empty string. value (int): Specifies the number of acquisitions used for averaging when you set the :py:attr:`~nirfmxnr.attributes.AttributeID.PVT_AVERAGING_ENABLED` attribute to **True**. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.PVT_AVERAGING_COUNT.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_averaging_type(self, selector_string): r"""Gets the measurement averaging type. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **RMS**. +--------------+--------------------------------------------------------+ | Name (Value) | Description | +==============+========================================================+ | RMS (0) | The power spectrum is linearly averaged. | +--------------+--------------------------------------------------------+ | Log (1) | The power spectrum is averaged in a logarithmic scale. | +--------------+--------------------------------------------------------+ Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (enums.PvtAveragingType): Specifies the measurement averaging type. 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.PVT_AVERAGING_TYPE.value ) attr_val = enums.PvtAveragingType(attr_val) except (KeyError, ValueError): raise errors.DriverTooNewError() # type: ignore finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_averaging_type(self, selector_string, value): r"""Sets the measurement averaging type. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is **RMS**. +--------------+--------------------------------------------------------+ | Name (Value) | Description | +==============+========================================================+ | RMS (0) | The power spectrum is linearly averaged. | +--------------+--------------------------------------------------------+ | Log (1) | The power spectrum is averaged in a logarithmic scale. | +--------------+--------------------------------------------------------+ Args: selector_string (string): Pass an empty string. value (enums.PvtAveragingType, int): Specifies the measurement averaging type. 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.PvtAveragingType else value error_code = self._interpreter.set_attribute_i32( updated_selector_string, attributes.AttributeID.PVT_AVERAGING_TYPE.value, value ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_off_power_exclusion_before(self, selector_string): r"""Gets the time excluded from the OFF region before the burst and at the beginning for uplink and downlink, respectively. The value is expressed in seconds. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 0. Refer to measurement guidelines details in the `NR Power Vs Time <https://www.ni.com/docs/en-US/bundle/rfmx-nr/page/nr-power-vs-time.html>`_ concept help for more information. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (float): Specifies the time excluded from the OFF region before the burst and at the beginning for uplink and downlink, respectively. The value is expressed in seconds. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_f64( updated_selector_string, attributes.AttributeID.PVT_OFF_POWER_EXCLUSION_BEFORE.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_off_power_exclusion_before(self, selector_string, value): r"""Sets the time excluded from the OFF region before the burst and at the beginning for uplink and downlink, respectively. The value is expressed in seconds. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 0. Refer to measurement guidelines details in the `NR Power Vs Time <https://www.ni.com/docs/en-US/bundle/rfmx-nr/page/nr-power-vs-time.html>`_ concept help for more information. Args: selector_string (string): Pass an empty string. value (float): Specifies the time excluded from the OFF region before the burst and at the beginning for uplink and downlink, respectively. The value is expressed in seconds. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.set_attribute_f64( updated_selector_string, attributes.AttributeID.PVT_OFF_POWER_EXCLUSION_BEFORE.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_off_power_exclusion_after(self, selector_string): r"""Gets the time excluded from the OFF region after the burst and at the end for uplink and downlink, respectively. The value is expressed in seconds. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 0. Refer to measurement guidelines details in the `NR Power Vs Time <https://www.ni.com/docs/en-US/bundle/rfmx-nr/page/nr-power-vs-time.html>`_ concept help for more information. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (float): Specifies the time excluded from the OFF region after the burst and at the end for uplink and downlink, respectively. The value is expressed in seconds. error_code (int): Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) attr_val, error_code = self._interpreter.get_attribute_f64( updated_selector_string, attributes.AttributeID.PVT_OFF_POWER_EXCLUSION_AFTER.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_off_power_exclusion_after(self, selector_string, value): r"""Sets the time excluded from the OFF region after the burst and at the end for uplink and downlink, respectively. The value is expressed in seconds. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 0. Refer to measurement guidelines details in the `NR Power Vs Time <https://www.ni.com/docs/en-US/bundle/rfmx-nr/page/nr-power-vs-time.html>`_ concept help for more information. Args: selector_string (string): Pass an empty string. value (float): Specifies the time excluded from the OFF region after the burst and at the end for uplink and downlink, respectively. The value is expressed in seconds. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.set_attribute_f64( updated_selector_string, attributes.AttributeID.PVT_OFF_POWER_EXCLUSION_AFTER.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 power versus time (PVT) measurement. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is FALSE. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (bool): Specifies whether to enable the traces to be stored and retrieved after performing the power versus time (PVT) 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.PVT_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 power versus time (PVT) measurement. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is FALSE. Args: selector_string (string): Pass an empty string. value (bool): Specifies whether to enable the traces to be stored and retrieved after performing the power versus time (PVT) 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.PVT_ALL_TRACES_ENABLED.value, int(value), ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def get_number_of_analysis_threads(self, selector_string): r"""Gets the maximum number of threads used for parallelism inside the PVT measurement. The number of threads can range from 1 to the number of physical cores. The number of threads you set may not be used in calculations. The actual number of threads used depends on the problem size, system resources, data availability, and other considerations. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 1. Args: selector_string (string): Pass an empty string. Returns: Tuple (attr_val, error_code): attr_val (int): Specifies the maximum number of threads used for parallelism inside the PVT 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.PVT_NUMBER_OF_ANALYSIS_THREADS.value ) finally: self._session_function_lock.exit_read_lock() return attr_val, error_code
[docs] @_raise_if_disposed def set_number_of_analysis_threads(self, selector_string, value): r"""Sets the maximum number of threads used for parallelism inside the PVT measurement. The number of threads can range from 1 to the number of physical cores. The number of threads you set may not be used in calculations. The actual number of threads used depends on the problem size, system resources, data availability, and other considerations. You do not need to use a selector string to configure or read this attribute for the default signal instance. Refer to the `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ topic for information about the string syntax for named signals. The default value is 1. Args: selector_string (string): Pass an empty string. value (int): Specifies the maximum number of threads used for parallelism inside the PVT 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.PVT_NUMBER_OF_ANALYSIS_THREADS.value, value, ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def configure_averaging( self, selector_string, averaging_enabled, averaging_count, averaging_type ): r"""Configures averaging for the PVT measurement. Args: selector_string (string): Pass an empty string. The signal name that is passed when creating the signal configuration is used. averaging_enabled (enums.PvtAveragingEnabled, int): This parameter specifies whether to enable averaging for the measurement. The default value is **False**. +--------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +==============+==========================================================================================================================+ | False (0) | The measurement is performed on a single acquisition. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ | True (1) | The measurement is averaged over multiple acquisitions. The number of acquisitions is obtained by the **Averaging | | | Count** parameter. | +--------------+--------------------------------------------------------------------------------------------------------------------------+ averaging_count (int): This parameter specifies the number of acquisitions used for averaging when you set the **Averaging Enabled** parameter to **True**. The default value is 10. averaging_type (enums.PvtAveragingType, int): This parameter specifies the averaging type for averaging multiple spectrum acquisitions. The averaged spectrum is used for the measurement. The default value is **RMS**. +--------------+-------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +==============+=============================================================================================================+ | RMS (0) | The power spectrum is linearly averaged. RMS averaging reduces signal fluctuations but not the noise floor. | +--------------+-------------------------------------------------------------------------------------------------------------+ | Log (1) | The power spectrum is averaged in a logarithmic scale. | +--------------+-------------------------------------------------------------------------------------------------------------+ Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() _helper.validate_not_none(selector_string, "selector_string") averaging_enabled = ( averaging_enabled.value if type(averaging_enabled) is enums.PvtAveragingEnabled else averaging_enabled ) averaging_type = ( averaging_type.value if type(averaging_type) is enums.PvtAveragingType else averaging_type ) updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.pvt_configure_averaging( updated_selector_string, averaging_enabled, averaging_count, averaging_type ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def configure_measurement_method(self, selector_string, measurement_method): r"""Configures the measurement method for PVT measurement. Args: selector_string (string): Pass an empty string. The signal name that is passed when creating the signal configuration is used. measurement_method (enums.PvtMeasurementMethod, int): This parameter specifies the method for performing the PVT measurement. The default value is ** Normal**. +-------------------+--------------------------------------------------------------------------------------------------------------------------+ | Name (Value) | Description | +===================+==========================================================================================================================+ | Normal (0) | The measurement is performed using a single acquisition. Use this method when a high dynamic range is not required. | +-------------------+--------------------------------------------------------------------------------------------------------------------------+ | Dynamic Range (1) | The measurement is performed using two acquisitions. Use this method when a higher dynamic range is desirable over the | | | measurement speed. **Supported Devices**: PXIe-5644R/5645R/5646R, PXIe-5840/5841/5842/5860. | +-------------------+--------------------------------------------------------------------------------------------------------------------------+ Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() _helper.validate_not_none(selector_string, "selector_string") measurement_method = ( measurement_method.value if type(measurement_method) is enums.PvtMeasurementMethod else measurement_method ) updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.pvt_configure_measurement_method( updated_selector_string, measurement_method ) finally: self._session_function_lock.exit_read_lock() return error_code
[docs] @_raise_if_disposed def configure_off_power_exclusion_periods( self, selector_string, off_power_exclusion_before, off_power_exclusion_after ): r"""Configures the time excluded from the off region before and after the burst. Args: selector_string (string): Pass an empty string. The signal name that is passed when creating the signal configuration is used. off_power_exclusion_before (float): This parameter specifies the time excluded from the Off region before the burst. This value is expressed in seconds. The default value is 0. off_power_exclusion_after (float): This parameter specifies the time excluded from the Off region after the burst. This value is expressed in seconds. The default value is 0. Returns: int: Returns the status code of this method. The status code either indicates success or describes a warning condition. """ try: self._session_function_lock.enter_read_lock() _helper.validate_not_none(selector_string, "selector_string") updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) error_code = self._interpreter.pvt_configure_off_power_exclusion_periods( updated_selector_string, off_power_exclusion_before, off_power_exclusion_after ) finally: self._session_function_lock.exit_read_lock() return error_code