Source code for nirfmxtdscdma.slotpower_results

"""Provides methods to fetch and read the SlotPower measurement results."""

import functools

import nirfmxtdscdma.errors as errors
import nirfmxtdscdma.internal._helper as _helper


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

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

    return aux


[docs] class SlotPowerResults(object): """Provides methods to fetch and read the SlotPower measurement results.""" def __init__(self, signal_obj): """Provides methods to fetch and read the SlotPower measurement results.""" self._signal_obj = signal_obj self._session_function_lock = signal_obj._session_function_lock self._interpreter = signal_obj._interpreter
[docs] @_raise_if_disposed def fetch_powers(self, selector_string, timeout): r"""Fetches the **Slot Power** and **Slot Power Delta** values. The SlotPower measurement assumes that there is only one active traffic time slot per subframe, and that the position of this active time slot is the same in each subframe. Additionally, it assumes that there are no pilots present in the received signal. Args: selector_string (string): This parameter specifies a `Selector String <https://www.ni.com/docs/en-US/bundle/rfmx/page/selector-strings-net.html>`_ comprising of result name. **Examples:** "" "signal::sig1" "result::r1" "signal::sig1/result::r1" You can use the :py:meth:`build_result_string` method to build the selector string. timeout (float): This parameter specifies the timeout for fetching the specified measurement. This value is expressed in seconds. Set this value to an appropriate time, longer than expected for fetching the measurement. A value of -1 specifies that the method waits until the measurement is complete. The default value is 10. Returns: Tuple (slot_power, slot_power_delta, error_code): slot_power (float): This parameter returns an array of mean powers of the active traffic time slots being measured. This value is expressed in dBm. The power of each traffic slot is measured by first excluding the gap period of 12.5 microseconds at the end of the time slot, and then excluding the transient duration of 25 microseconds at the start and the end of the remaining portion of the slot. slot_power_delta (float): This parameter returns an array of the power differences between active traffic slots in adjacent subframes. This value is expressed in dB. 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() _helper.validate_not_none(selector_string, "selector_string") updated_selector_string = _helper.validate_and_update_selector_string( selector_string, self._signal_obj ) slot_power, slot_power_delta, error_code = self._interpreter.slotpower_fetch_powers( updated_selector_string, timeout ) finally: self._session_function_lock.exit_read_lock() return slot_power, slot_power_delta, error_code