diff --git a/RCUSCC/RCUSCC/RCUSCC.py b/RCUSCC/RCUSCC/RCUSCC.py index 1b770b832e282a83cf1500cc3bd8ab78af4c0b14..93b25c3ca4c49e17337f01d62e070d0bf8f2f55d 100644 --- a/RCUSCC/RCUSCC/RCUSCC.py +++ b/RCUSCC/RCUSCC/RCUSCC.py @@ -32,6 +32,22 @@ from threading import Thread from functools import wraps import socket +def only_when_on(func): + """ + Wrapper to return None when the device isn't in ON state. + + If in ON state, calls & returns the wrapped function. + """ + + @wraps(func) + def when_on_wrapper(self, *args, **kwargs): + if self.get_state() != DevState.ON: + return None + + return func(self, *args, **kwargs) + + return when_on_wrapper + def fault_on_opcua_error(func): """ Wrapper to catch exceptions generated by the OPC-UA connection. @@ -435,6 +451,7 @@ class RCUSCC(Device): # Attributes methods # ------------------ + @only_when_on @fault_on_opcua_error def read_Attenuator_R(self): # PROTECTED REGION ID(RCUSCC.Attenuator_R_read) ENABLED START # @@ -443,6 +460,7 @@ class RCUSCC(Device): return self._Attenuator_R # PROTECTED REGION END # // RCUSCC.Attenuator_R_read + @only_when_on @fault_on_opcua_error def read_Attenuator_RW(self): # PROTECTED REGION ID(RCUSCC.Attenuator_RW_read) ENABLED START # @@ -451,6 +469,7 @@ class RCUSCC(Device): return self._Attenuator_RW # PROTECTED REGION END # // RCUSCC.Attenuator_RW_read + @only_when_on @fault_on_opcua_error def write_Attenuator_RW(self, value): # PROTECTED REGION ID(RCUSCC.Attenuator_RW_write) ENABLED START # @@ -461,6 +480,7 @@ class RCUSCC(Device): self._Attenuator_RW = value # PROTECTED REGION END # // RCUSCC.Attenuator_RW_write + @only_when_on @fault_on_opcua_error def read_Band_R(self): # PROTECTED REGION ID(RCUSCC.Band_R_read) ENABLED START # @@ -469,6 +489,7 @@ class RCUSCC(Device): return self._Band_R # PROTECTED REGION END # // RCUSCC.Band_R_read + @only_when_on @fault_on_opcua_error def read_Band_RW(self): # PROTECTED REGION ID(RCUSCC.Band_RW_read) ENABLED START # @@ -477,6 +498,7 @@ class RCUSCC(Device): return self._Band_RW # PROTECTED REGION END # // RCUSCC.Band_RW_read + @only_when_on @fault_on_opcua_error def write_Band_RW(self, value): # PROTECTED REGION ID(RCUSCC.Band_RW_write) ENABLED START # @@ -487,6 +509,7 @@ class RCUSCC(Device): self._Band_RW = value # PROTECTED REGION END # // RCUSCC.Band_RW_write + @only_when_on @fault_on_opcua_error def read_Dither_Frequency_R(self): # PROTECTED REGION ID(RCUSCC.Dither_Frequency_R_read) ENABLED START # @@ -495,6 +518,7 @@ class RCUSCC(Device): return self._Dither_Frequency_R # PROTECTED REGION END # // RCUSCC.Dither_Frequency_R_read + @only_when_on @fault_on_opcua_error def read_Dither_Frequency_RW(self): # PROTECTED REGION ID(RCUSCC.Dither_Frequency_RW_read) ENABLED START # @@ -503,6 +527,7 @@ class RCUSCC(Device): return self._Dither_Frequency_RW # PROTECTED REGION END # // RCUSCC.Dither_Frequency_RW_read + @only_when_on @fault_on_opcua_error def write_Dither_Frequency_RW(self, value): # PROTECTED REGION ID(RCUSCC.Dither_Frequency_RW_write) ENABLED START # @@ -512,6 +537,7 @@ class RCUSCC(Device): self._Dither_Frequency_RW = value # PROTECTED REGION END # // RCUSCC.Dither_Frequency_RW_write + @only_when_on @fault_on_opcua_error def read_LED_R(self): # PROTECTED REGION ID(RCUSCC.LED_R_read) ENABLED START # @@ -520,6 +546,7 @@ class RCUSCC(Device): return self._LED_R # PROTECTED REGION END # // RCUSCC.LED_R_read + @only_when_on @fault_on_opcua_error def read_LED_RW(self): # PROTECTED REGION ID(RCUSCC.LED_RW_read) ENABLED START # @@ -528,6 +555,7 @@ class RCUSCC(Device): return self._LED_RW # PROTECTED REGION END # // RCUSCC.LED_RW_read + @only_when_on @fault_on_opcua_error def write_LED_RW(self, value): # PROTECTED REGION ID(RCUSCC.LED_RW_write) ENABLED START # @@ -536,6 +564,7 @@ class RCUSCC(Device): self._LED_RW = value # PROTECTED REGION END # // RCUSCC.LED_RW_write + @only_when_on @fault_on_opcua_error def read_Pwr_dig_R(self): # PROTECTED REGION ID(RCUSCC.Pwr_dig_R_read) ENABLED START # @@ -544,6 +573,7 @@ class RCUSCC(Device): return self._Pwr_dig_R # PROTECTED REGION END # // RCUSCC.Pwr_dig_R_read + @only_when_on @fault_on_opcua_error def read_Temperature_R(self): # PROTECTED REGION ID(RCUSCC.Temperature_R_read) ENABLED START # @@ -552,6 +582,7 @@ class RCUSCC(Device): return self._Temperature_R # PROTECTED REGION END # // RCUSCC.Temperature_R_read + @only_when_on @fault_on_opcua_error def read_CLK_PLL_locked_R(self): # PROTECTED REGION ID(RCUSCC.CLK_PLL_locked_R_read) ENABLED START #