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
Branches
Tags
No related merge requests found
...@@ -75,6 +75,8 @@ class DG_PY_FOFBTool(Device): ...@@ -75,6 +75,8 @@ class DG_PY_FOFBTool(Device):
- Type:'DevVarLongArray' - Type:'DevVarLongArray'
k2_y k2_y
- Type:'DevVarLongArray' - Type:'DevVarLongArray'
loglevel
- Type:'DevString'
""" """
# PROTECTED REGION ID(DG_PY_FOFBTool.class_variable) ENABLED START # # PROTECTED REGION ID(DG_PY_FOFBTool.class_variable) ENABLED START #
...@@ -168,6 +170,11 @@ class DG_PY_FOFBTool(Device): ...@@ -168,6 +170,11 @@ class DG_PY_FOFBTool(Device):
mandatory=True mandatory=True
) )
loglevel = device_property(
dtype='DevString',
mandatory=True
)
# ---------- # ----------
# Attributes # Attributes
# ---------- # ----------
...@@ -181,6 +188,11 @@ class DG_PY_FOFBTool(Device): ...@@ -181,6 +188,11 @@ class DG_PY_FOFBTool(Device):
dtype='DevString', dtype='DevString',
) )
logs = attribute(
dtype=('DevString',),
max_dim_x=1024,
)
# --------------- # ---------------
# General methods # General methods
# --------------- # ---------------
...@@ -199,13 +211,18 @@ class DG_PY_FOFBTool(Device): ...@@ -199,13 +211,18 @@ class DG_PY_FOFBTool(Device):
logger.warning("Not logging to file, could not open location {}".format(self.logfilepath)) logger.warning("Not logging to file, could not open location {}".format(self.logfilepath))
else: else:
fh.setLevel(logging.DEBUG) 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.addHandler(fh)
logger.setLevel(logging.DEBUG)
self.filehandler = fh
logger.setLevel(getattr(logging, self.loglevel.upper()))
if not hasattr(self, "_include_lbp"): if not hasattr(self, "_include_lbp"):
self._include_lbp= False self._include_lbp= False
self.set_state(tango.DevState.ON)
#----- PROTECTED REGION END -----# // DG_PY_FOFBTool.init_device #----- PROTECTED REGION END -----# // DG_PY_FOFBTool.init_device
...@@ -224,6 +241,9 @@ class DG_PY_FOFBTool(Device): ...@@ -224,6 +241,9 @@ class DG_PY_FOFBTool(Device):
""" """
#----- PROTECTED REGION ID(DG_PY_FOFBTool.delete_device) ENABLED START -----# #----- 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 #----- PROTECTED REGION END -----# // DG_PY_FOFBTool.delete_device
# ------------------ # ------------------
# Attributes methods # Attributes methods
...@@ -247,6 +267,14 @@ class DG_PY_FOFBTool(Device): ...@@ -247,6 +267,14 @@ class DG_PY_FOFBTool(Device):
return FofbTool.__version__ return FofbTool.__version__
# PROTECTED REGION END # // DG_PY_FOFBTool.FofbToolVersion_read # 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 # Commands
# -------- # --------
...@@ -320,6 +348,7 @@ class DG_PY_FOFBTool(Device): ...@@ -320,6 +348,7 @@ class DG_PY_FOFBTool(Device):
""" """
self.info_stream("Stopping all") self.info_stream("Stopping all")
self.d_status["nodes"]="FofbNode: stopping"
self.debug_stream("Stopping combpm and comlbp") self.debug_stream("Stopping combpm and comlbp")
for cn in self.tangopath_cellnode: for cn in self.tangopath_cellnode:
...@@ -331,6 +360,7 @@ class DG_PY_FOFBTool(Device): ...@@ -331,6 +360,7 @@ class DG_PY_FOFBTool(Device):
FofbTool.Operation.stop_ccn(cn) FofbTool.Operation.stop_ccn(cn)
FofbTool.Operation.reset_ccn(cn) FofbTool.Operation.reset_ccn(cn)
self.d_status["nodes"]="FofbNode: stopped"
# PROTECTED REGION END # // DG_PY_FOFBTool.stop # PROTECTED REGION END # // DG_PY_FOFBTool.stop
...@@ -344,6 +374,7 @@ class DG_PY_FOFBTool(Device): ...@@ -344,6 +374,7 @@ class DG_PY_FOFBTool(Device):
:return:None :return:None
""" """
self.info_stream("Starting all") self.info_stream("Starting all")
self.d_status["nodes"]="FofbNode: starting"
if self._include_lbp: if self._include_lbp:
self.debug_stream("Starting comlbp") self.debug_stream("Starting comlbp")
...@@ -361,6 +392,8 @@ class DG_PY_FOFBTool(Device): ...@@ -361,6 +392,8 @@ class DG_PY_FOFBTool(Device):
FofbTool.Operation.start_ccn(cn) FofbTool.Operation.start_ccn(cn)
FofbTool.Operation.start_ccn(self.tangopath_centralnode) FofbTool.Operation.start_ccn(self.tangopath_centralnode)
self.d_status["nodes"]="FofbNode: started"
# PROTECTED REGION END # // DG_PY_FOFBTool.start # PROTECTED REGION END # // DG_PY_FOFBTool.start
@command( @command(
...@@ -373,16 +406,16 @@ class DG_PY_FOFBTool(Device): ...@@ -373,16 +406,16 @@ class DG_PY_FOFBTool(Device):
:return:None :return:None
""" """
db = tango.Database() db = tango.Database()
self.d_status["synchronize"]="Synchronize: starting"
self.debug_stream("Building list form FREE PROPERTIES") 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] 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] tlocal = [n.split(':')[2] for n in db.get_property("FOFB", 'TimingBoardList')['TimingBoardList'] if "LOCAL" in n]
lbpevrx = db.get_property("FOFB", 'LBPEVRX')['LBPEVRX'] lbpevrx = db.get_property("FOFB", 'LBPEVRX')['LBPEVRX']
P = multiprocessing.Process(target=FofbTool.Operation.sync_bpm, FofbTool.Operation.sync_bpm(bpmidlist, lbpevrx, tlocal, self.tangopath_centraltiming)
args=(bpmidlist, lbpevrx, tlocal, self.tangopath_centraltiming)) self.d_status["synchronize"]="Synchronize: done"
P.start()
# PROTECTED REGION END # // DG_PY_FOFBTool.sync # PROTECTED REGION END # // DG_PY_FOFBTool.sync
@command( @command(
......
...@@ -61,6 +61,10 @@ ...@@ -61,6 +61,10 @@
<type xsi:type="pogoDsl:IntVectorType"/> <type xsi:type="pogoDsl:IntVectorType"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
</deviceProperties> </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"> <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"> <argin description="none">
<type xsi:type="pogoDsl:VoidType"/> <type xsi:type="pogoDsl:VoidType"/>
...@@ -140,6 +144,14 @@ ...@@ -140,6 +144,14 @@
<status abstract="false" inherited="false" concrete="true" concreteHere="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=""/> <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes> </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)"/> <preferences docHome="../doc/doc_html" makefileHome="$(TANGO_HOME)"/>
</classes> </classes>
</pogoDsl:PogoSystem> </pogoDsl:PogoSystem>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment