"""Provides methods to fetch and read the SlotPower measurement results."""
import functools
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 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 SlotPower and SlotPower delta values for all slots in the configured measurement interval. The slot power
delta is the difference in power between adjacent slots.
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 the array of SlotPower for all slots in the configured measurement interval. This value is
expressed in dBm.
slot_power_delta (float):
This parameter returns the array of SlotPower delta values for all slots in the configured measurement interval. The
slot power delta is the difference in power between adjacent slots. 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