Commit 9a1b95cc authored by Gianluca Marotta's avatar Gianluca Marotta
Browse files

CT-207 First changes in OffCommand

parent a7e12ecb
Loading
Loading
Loading
Loading
Loading
+47 −4
Original line number Diff line number Diff line
@@ -349,15 +349,25 @@ class CspSubarray(SKASubarray):

    class OffCommand(SKASubarray.OffCommand):
        def do(self):
            self.results = None

            self.logger.info("Call Off Command")
            device = self.target
            for fqdn in device._sc_subarray_fqdn:

                try:
                    # check if the sub-element subarray is already in the
                    # requested state
                    if device._sc_subarray_state[fqdn] == tango.DevState.OFF:
                        continue
                    (result_code, message) = device._sc_subarray_proxies[fqdn].Off()

                    if device._sc_subarray_obs_state[fqdn] is not ObsState.EMPTY:
                        device._command_thread['offsequenze'] = threading.Thread(target=self.off_sequence,
                                                               name="Thread-OffSequence",
                                                               args=(fqdn,self.results))

                    (result_code, message) = self.results

                    if result_code == ResultCode.FAILED:
                        self.logger.error("Off command failed on device {}".format(fqdn))
                        if fqdn != device.CbfSubarray:
@@ -365,13 +375,46 @@ class CspSubarray(SKASubarray):
                            continue
                        else:
                            return (ResultCode.FAILED, message)
                except tango.DevFailed as tango_err:
                    message = str(tango_err.args[0].desc)
                    return (ResultCode.FAILED, message)

                    message = "Off command completed OK"
                    self.logger.info(message)
                    return (ResultCode.OK, message)

                except tango.DevFailed as tango_err:
                    message = str(tango_err.args[0].desc)
                    return (ResultCode.FAILED, message)

        def off_sequence(self, fqdn):
            device = self.target
            starting_time = time.time()
            timeout = device._sc_subarray_cmd_duration_expected[fqdn]['off']
            while (time.time() - starting_time) < timeout and device._sc_subarray_obs_state[fqdn] is not ObsState.EMPTY:
                try:
                    device._sc_subarray_proxies[fqdn].Abort()
                    while device._sc_subarray_obs_state is not ObsState.ABORTED:
                        if device._sc_subarray_obs_state==ObsState.FAULT:
                            break
                        pass
                except ska.base.commands.CommandError:
                    pass
                try:
                    device._sc_subarray_obs_state[fqdn].Restart()
                except ska.base.commands.CommandError:
                    pass

                time.sleep(0.1)

            #IF SUCCESS
            if device._sc_subarray_obs_state[fqdn] is not ObsState.EMPTY:
                self.results = device._sc_subarray_proxies[fqdn].Off()
                # comando succeded.

            #IF TIMEOUT
            if (time.time() - starting_time) > timeout:



    
    class AssignResourcesCommand(SKASubarray.AssignResourcesCommand):

        @transaction_id