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

Add some status and log

parent e623e9b8
No related branches found
No related tags found
No related merge requests found
......@@ -75,6 +75,8 @@ class DG_PY_FOFBTool(Device):
- Type:'DevVarLongArray'
k2_y
- Type:'DevVarLongArray'
loglevel
- Type:'DevString'
"""
# PROTECTED REGION ID(DG_PY_FOFBTool.class_variable) ENABLED START #
......@@ -168,6 +170,11 @@ class DG_PY_FOFBTool(Device):
mandatory=True
)
loglevel = device_property(
dtype='DevString',
mandatory=True
)
# ----------
# Attributes
# ----------
......@@ -181,6 +188,11 @@ class DG_PY_FOFBTool(Device):
dtype='DevString',
)
logs = attribute(
dtype=('DevString',),
max_dim_x=1024,
)
# ---------------
# General methods
# ---------------
......@@ -199,13 +211,18 @@ class DG_PY_FOFBTool(Device):
logger.warning("Not logging to file, could not open location {}".format(self.logfilepath))
else:
fh.setLevel(logging.DEBUG)
fh.setFormatter(logging.Formatter("{levelname:8}: {message}", style='{'))
fh.setFormatter(logging.Formatter("{asctime} {levelname:8}: {message}", style='{'))
logger.addHandler(fh)
logger.setLevel(logging.DEBUG)
self.filehandler = fh
logger.setLevel(getattr(logging, self.loglevel.upper()))
if not hasattr(self, "_include_lbp"):
self._include_lbp= False
self.set_state(tango.DevState.ON)
#----- PROTECTED REGION END -----# // DG_PY_FOFBTool.init_device
......@@ -223,7 +240,10 @@ class DG_PY_FOFBTool(Device):
destructor and by the device Init command.
"""
#----- PROTECTED REGION ID(DG_PY_FOFBTool.delete_device) ENABLED START -----#
logger = logging.getLogger("FofbTool")
logger.removeHandler(self.filehandler)
#----- PROTECTED REGION END -----# // DG_PY_FOFBTool.delete_device
# ------------------
# Attributes methods
......@@ -247,6 +267,14 @@ class DG_PY_FOFBTool(Device):
return FofbTool.__version__
# PROTECTED REGION END # // DG_PY_FOFBTool.FofbToolVersion_read
def read_logs(self):
# PROTECTED REGION ID(DG_PY_FOFBTool.logs_read) ENABLED START #
"""Return the logs attribute."""
with open(self.logfilepath, 'r') as fp:
lines = fp.readlines()
return [l.replace('\n','') for l in lines[:-100:-1]]
# PROTECTED REGION END # // DG_PY_FOFBTool.logs_read
# --------
# Commands
# --------
......@@ -320,6 +348,7 @@ class DG_PY_FOFBTool(Device):
"""
self.info_stream("Stopping all")
self.d_status["nodes"]="FofbNode: stopping"
self.debug_stream("Stopping combpm and comlbp")
for cn in self.tangopath_cellnode:
......@@ -331,6 +360,7 @@ class DG_PY_FOFBTool(Device):
FofbTool.Operation.stop_ccn(cn)
FofbTool.Operation.reset_ccn(cn)
self.d_status["nodes"]="FofbNode: stopped"
# PROTECTED REGION END # // DG_PY_FOFBTool.stop
......@@ -344,6 +374,7 @@ class DG_PY_FOFBTool(Device):
:return:None
"""
self.info_stream("Starting all")
self.d_status["nodes"]="FofbNode: starting"
if self._include_lbp:
self.debug_stream("Starting comlbp")
......@@ -361,6 +392,8 @@ class DG_PY_FOFBTool(Device):
FofbTool.Operation.start_ccn(cn)
FofbTool.Operation.start_ccn(self.tangopath_centralnode)
self.d_status["nodes"]="FofbNode: started"
# PROTECTED REGION END # // DG_PY_FOFBTool.start
@command(
......@@ -373,16 +406,16 @@ class DG_PY_FOFBTool(Device):
:return:None
"""
db = tango.Database()
self.d_status["synchronize"]="Synchronize: starting"
self.debug_stream("Building list form FREE PROPERTIES")
bpmidlist = [(int(n.split(':')[0]), n.split(':')[2]) for n in db.get_property("FOFB", "bpmlist")['bpmlist'] if 'LIBERA' in n]
tlocal = [n.split(':')[2] for n in db.get_property("FOFB", 'TimingBoardList')['TimingBoardList'] if "LOCAL" in n]
lbpevrx = db.get_property("FOFB", 'LBPEVRX')['LBPEVRX']
P = multiprocessing.Process(target=FofbTool.Operation.sync_bpm,
args=(bpmidlist, lbpevrx, tlocal, self.tangopath_centraltiming))
FofbTool.Operation.sync_bpm(bpmidlist, lbpevrx, tlocal, self.tangopath_centraltiming)
self.d_status["synchronize"]="Synchronize: done"
P.start()
# PROTECTED REGION END # // DG_PY_FOFBTool.sync
@command(
......
......@@ -61,6 +61,10 @@
<type xsi:type="pogoDsl:IntVectorType"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
</deviceProperties>
<deviceProperties name="loglevel" mandatory="true" description="">
<type xsi:type="pogoDsl:StringType"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
</deviceProperties>
<commands name="State" description="This command gets the device state (stored in its device_state data member) and returns it to the caller." execMethod="dev_state" displayLevel="OPERATOR" polledPeriod="0">
<argin description="none">
<type xsi:type="pogoDsl:VoidType"/>
......@@ -140,6 +144,14 @@
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<attributes name="logs" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="1024" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:StringType"/>
<changeEvent fire="false" libCheckCriteria="false"/>
<archiveEvent fire="false" libCheckCriteria="false"/>
<dataReadyEvent fire="false" libCheckCriteria="true"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<preferences docHome="../doc/doc_html" makefileHome="$(TANGO_HOME)"/>
</classes>
</pogoDsl:PogoSystem>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment