Skip to content
Snippets Groups Projects
Commit c82f8378 authored by BRONES Romain's avatar BRONES Romain
Browse files

Another way to thread

* Define the target function in the command
* Instanciate the thread there and run
* Also add test on state to avoid multiple launches of commands
parent b1c62c00
No related branches found
No related tags found
No related merge requests found
......@@ -22,7 +22,6 @@ from tango import AttrQuality, DispLevel, DevState
from tango import AttrWriteType, PipeWriteType
# Additional import
#----- PROTECTED REGION ID(DG_PY_FOFBTool.additionnal_import) ENABLED START -----#
import FOFBToolWorker
import FofbTool
import FofbTool.Operation
import FofbTool.Configuration
......@@ -372,10 +371,41 @@ class DG_PY_FOFBTool(Device):
:return:None
"""
if self.dev_state() == tango.DevState.RUNNING:
self.error_stream("Device is running, skiping command")
return
def target():
self.info_stream("Starting all")
T=FOFBToolWorker.Work_Start(self)
self.d_status["nodes"]="FofbNode: starting"
if self._include_lbp:
self.debug_stream("Starting comlbp")
for cn in self.tangopath_cellnode:
FofbTool.Operation.start_comlbp(cn)
else:
self.debug_stream("Skipping comlbp")
self.debug_stream("Starting combpm")
for cn in self.tangopath_cellnode:
FofbTool.Operation.start_combpm(cn)
self.debug_stream("Starting ccn")
for cn in self.tangopath_cellnode:
FofbTool.Operation.start_ccn(cn)
FofbTool.Operation.start_ccn(self.tangopath_centralnode)
self.d_status["nodes"]="FofbNode: started"
self.set_state(tango.DevState.ON)
T = threading.Thread(target=target,)
self.set_state(tango.DevState.RUNNING)
T.start()
# PROTECTED REGION END # // DG_PY_FOFBTool.start
@command(
......@@ -414,9 +444,31 @@ class DG_PY_FOFBTool(Device):
:return:None
"""
if self.dev_state() == tango.DevState.RUNNING:
self.error_stream("Device is running, skiping command")
return
cn=self.tangopath_cellnode[argin]
def target(cn):
self.debug_stream("Launch align FA on {}".format(cn))
T = FOFBToolWorker.Work_AlignFA(self, self.tangopath_cellnode[argin])
seqoffset = FofbTool.Operation.align_ccn(cn, 0)
if (seqoffset is None) or seqoffset in (-1,0,1):
self.error_stream("Could not align all ccn")
self.d_status["align"]="FA Align: failed"
return
for cn in self.tangopath_cellnode:
FofbTool.Configuration.cellnode_configure_comlbp(cn, seqoffset)
self.d_status["align"]="FA Align: OK"
self.set_state(tango.DevState.ON)
T = threading.Thread(target=target, args=(cn, ))
self.set_state(tango.DevState.RUNNING)
T.start()
# PROTECTED REGION END # // DG_PY_FOFBTool.align_fa
......
import threading
import FofbTool.Configuration
import FofbTool.Operation
class Work_AlignFA(threading.Thread):
def __init__(self, parent, cellnodepath):
threading.Thread.__init__(self)
self.parent=parent
self.cellnodepath = cellnodepath
def run(self):
# Run align ccn on cellnode
self.parent.d_status["align"]="FA Align: Running"
seqoffset = FofbTool.Operation.align_ccn(self.cellnodepath, 0)
if (seqoffset is None) or seqoffset in (-1,0,1):
self.parent.error_stream("Could not align all ccn")
self.parent.d_status["align"]="FA Align: failed"
return
for cn in self.parent.tangopath_cellnode:
FofbTool.Configuration.cellnode_configure_comlbp(cn, seqoffset)
self.parent.d_status["align"]="FA Align: Done"
class Work_Start(threading.Thread):
def __init__(self, parent):
threading.Thread.__init__(self)
self.parent=parent
def run(self):
self.parent.d_status["nodes"]="FofbNode: starting"
if self.parent._include_lbp:
self.parent.debug_stream("Starting comlbp")
for cn in self.parent.tangopath_cellnode:
FofbTool.Operation.start_comlbp(cn)
else:
self.parent.debug_stream("Skipping comlbp")
self.parent.debug_stream("Starting combpm")
for cn in self.parent.tangopath_cellnode:
FofbTool.Operation.start_combpm(cn)
self.parent.debug_stream("Starting ccn")
for cn in self.parent.tangopath_cellnode:
FofbTool.Operation.start_ccn(cn)
FofbTool.Operation.start_ccn(self.tangopath_centralnode)
self.parent.d_status["nodes"]="FofbNode: started"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment