Skip to content
Snippets Groups Projects
Commit edefc290 authored by Auke Klazema's avatar Auke Klazema
Browse files

SW-795: Merge branch 'SW-795' into 'master'

Resolve SW-795

Closes SW-795

See merge request !41

(cherry picked from commit 1b9ade5b)

323a88cd SW-795: Fix typo
2bf03ea8 SW-795: Change coordinates based on GPS location.
ecf85562 SW-795: Add default check hardware config file for LV614
fe8bd9bf SW-795: Adding/replacing files for LV614 license file addition
0ab9cbcd SW-795: Convert createPICfile to Python 3
726f916a SW-795: Merge branch 'SW-795' of ssh://git.astron.nl/ro/lofar into SW-795
parent 98baac7c
No related branches found
No related tags found
2 merge requests!47Merge Lofar release 4 0 back to master,!46SW-795: Merge branch 'SW-795' into 'master'
#
# configuration file for check_hardware.py
#
[configuration]
version= 00.01
station= LV614C
# checks to do if '-l=x' argument is given, all checks behind list.x are executed
# always checks will be done always
#
# S(rcumode) : signal check for rcumode (also down and flat-check in rcumode 1..4).
# O(rcumode) : oscillation check for rcumode.
# SP(rcumode) : spurious check for rcumode.
# N(rcumode)[= 300]: noise check for rcumode, optional data time in seconds
# default data time= 120 sec.
# E(rcumode)[= 60] : do all RCU5 element tests, optional data time in seconds.
# default data time= 10 sec.
# M(rcumode) : do modem
# SN(rcumode) : do summator noise
#
# RCU(mode) : do all rcu checks for given mode, no element tests done.
#
# RBC : RSP voltage/temperature check
# TBC : TBB voltage/temperature check
# SPU : SPU voltage
# TM : TBB memmory
[check]
always= RV, TV, RBC, TBC
list.0=
list.1= SPU,TM,RCU3,RCU5
list.2= SPU,TM,RCU3,M5,SN5,O5,N5,SP5,S7,E7
list.3= S3
[spu]
temperature.min= 10.0
temperature.max= 35.0
voltage.3_3.min= 3.1
voltage.3_3.max= 3.4
voltage.3_3.max-drop= 0.3
voltage.5_0.min= 4.5
voltage.5_0.max= 5.0
voltage.5_0.max-drop= 0.3
voltage.8_0.min= 7.4
voltage.8_0.max= 8.0
voltage.8_0.max-drop= 0.3
voltage.48_0.min= 43.0
voltage.48_0.max= 48.0
voltage.48_0.max-drop= 2.0
[tbb]
version.tp= 2.4
version.mp= 3.0
temperature.min= 10.0
temperature.max= 45.0
temperature.tp.min= 10.0
temperature.tp.max= 75.0
temperature.tp.max_delta= 10.0
temperature.mp.min= 10.0
temperature.mp.max= 75.0
temperature.mp.max_delta= 10.0
voltage.1_2.min= 1.1
voltage.1_2.max= 1.3
voltage.2_5.min= 2.4
voltage.2_5.max= 2.6
voltage.3_3.min= 3.1
voltage.3_3.max= 3.4
[rsp]
version.ap= 8.2
version.bp= 8.2
temperature.min= 10.0
temperature.max= 50.0
temperature.ap.min= 10.0
temperature.ap.max= 80.0
temperature.ap.max_delta= 10.0
temperature.bp.min= 10.0
temperature.bp.max= 80.0
temperature.bp.max_delta= 10.0
voltage.1_2.min= 1.1
voltage.1_2.max= 1.3
voltage.2_5.min= 2.4
voltage.2_5.max= 2.6
voltage.3_3.min= 3.1
voltage.3_3.max= 3.4
[rcumode.1-3]
short.mean-pwr.min= 55.0
short.mean-pwr.max= 61.0
flat.mean-pwr.min= 61.0
flat.mean-pwr.max= 64.5
rf.subbands= 301
rf.min-sb-pwr= 75.0
rf.negative-deviation= -3.0
rf.positive-deviation= 3.0
noise.negative-deviation= -2.5
noise.positive-deviation= 2.5
noise.max-difference= 1.5
noise.passband= 1:511
oscillation.min-peak-pwr= 6.0
oscillation.passband= 1:511
cable-reflection.min-peak-pwr= 0.8
cable-reflection.passband= 1:511
spurious.min-peak-pwr= 3.0
spurious.passband= 1:511
down.passband= 231:371
[rcumode.2-4]
short.mean-pwr.min= 55.0
short.mean-pwr.max= 61.0
flat.mean-pwr.min= 61.0
flat.mean-pwr.max= 64.5
rf.subbands= 301
rf.min-sb-pwr= 75.0
rf.negative-deviation= -3.0
rf.positive-deviation= 3.0
noise.negative-deviation= -2.5
noise.positive-deviation= 2.5
noise.max-difference= 1.5
noise.passband= 1:511
oscillation.min-peak-pwr= 6.0
oscillation.passband= 1:511
cable-reflection.min-peak-pwr= 0.8
cable-reflection.passband= 1:511
spurious.min-peak-pwr= 3.0
spurious.passband= 1:511
down.passband= 231:371
[rcumode.5.tile]
short.mean-pwr.min= 55.0
short.mean-pwr.max= 61.0
flat.mean-pwr.min= 61.0
flat.mean-pwr.max= 64.5
rf.subbands= 113
rf.min-sb-pwr= 80.0
rf.negative-deviation= -24.0
rf.positive-deviation= 12.0
noise.negative-deviation= -3.0
noise.positive-deviation= 1.5
noise.max-difference= 1.5
noise.passband= 1:511
summator-noise.min-peak-pwr= 1.2
summator-noise.passband= 45:135,200:270
cable-reflection.min-peak-pwr= 0.8
cable-reflection.passband= 1:511
oscillation.min-peak-pwr= 6.0
oscillation.passband= 1:511
cable-reflection.passband= 1:511
spurious.min-peak-pwr= 3.0
spurious.passband= 1:511
[rcumode.5.element]
rf.subbands= 113
rf.min-sb-pwr= 70.0
rf.negative-deviation= -24.0
rf.positive-deviation= 12.0
noise.negative-deviation= -3.0
noise.positive-deviation= 1.5
noise.max-difference= 1.5
noise.passband= 1:511
oscillation.min-peak-pwr= 6.0
oscillation.passband= 1:511
cable-reflection.passband= 1:511
spurious.min-peak-pwr= 3.0
spurious.passband= 1:511
[rcumode.6.tile]
short.mean-pwr.min= 55.0
short.mean-pwr.max= 61.0
flat.mean-pwr.min= 61.0
flat.mean-pwr.max= 64.5
rf.subbands= 113
rf.min-sb-pwr= 80.0
rf.negative-deviation= -24.0
rf.positive-deviation= 12.0
noise.negative-deviation= -3.0
noise.positive-deviation= 1.5
noise.max-difference= 1.5
noise.passband= 1:511
summator-noise.min-peak-pwr= 1.2
summator-noise.passband= 45:135
cable-reflection.min-peak-pwr= 0.8
cable-reflection.passband= 1:511
oscillation.min-peak-pwr= 6.0
oscillation.passband= 1:511
cable-reflection.passband= 1:511
spurious.min-peak-pwr= 3.0
spurious.passband= 1:511
[rcumode.6.element]
rf.subbands= 113
rf.min-sb-pwr= 70.0
rf.negative-deviation= -24.0
rf.positive-deviation= 12.0
noise.negative-deviation= -3.0
noise.positive-deviation= 1.5
noise.max-difference= 1.5
noise.passband= 1:511
oscillation.min-peak-pwr= 6.0
oscillation.passband= 1:511
cable-reflection.passband= 1:511
spurious.min-peak-pwr= 3.0
spurious.passband= 1:511
[rcumode.7.tile]
short.mean-pwr.min= 55.0
short.mean-pwr.max= 61.0
flat.mean-pwr.min= 61.0
flat.mean-pwr.max= 64.5
rf.subbands= 113
rf.min-sb-pwr= 80.0
rf.negative-deviation= -24.0
rf.positive-deviation= 12.0
noise.negative-deviation= -3.0
noise.positive-deviation= 1.5
noise.max-difference= 1.5
noise.passband= 1:511
summator-noise.min-peak-pwr= 1.2
summator-noise.passband= 45:135
cable-reflection.min-peak-pwr= 0.8
cable-reflection.passband= 1:511
oscillation.min-peak-pwr= 6.0
oscillation.passband= 1:511
cable-reflection.passband= 1:511
spurious.min-peak-pwr= 3.0
spurious.passband= 1:511
[rcumode.7.element]
rf.subbands= 113
rf.min-sb-pwr= 70.0
rf.negative-deviation= -24.0
rf.positive-deviation= 12.0
noise.negative-deviation= -3.0
noise.positive-deviation= 3.0
noise.max-difference= 1.5
noise.passband= 1:511
oscillation.min-peak-pwr= 6.0
oscillation.passband= 1:511
cable-reflection.passband= 1:511
spurious.min-peak-pwr= 3.0
spurious.passband= 1:511
# General settings
[paths]
global-data= /globalhome/log/stationtest
local-data= /opt/stationtest/data
local-report-dir= /localhome/stationtest/data
global-report-dir= /globalhome/log/stationtest
[files]
bad-antenna-list= /localhome/stationtest/data/bad_antenna_list.txt
...@@ -2,82 +2,91 @@ ...@@ -2,82 +2,91 @@
# #
# $Id$ # $Id$
# #
# Syntax: createPICFile ( -a | stationname [stationame ...]) # Syntax: createPICFile ( -a | station-name [statio-name ...])
# #
# Makea a file with PVSS(!) datapoints that must be monitored in SAS. # Make a a file with PVSS(!) data-points that must be monitored in SAS.
import re, sys import re, sys
from optparse import OptionParser from optparse import OptionParser
def expandRCUMarker(dataPoint, nrRSP): def expandRCUMarker(dataPoint, nrRSP):
""" """
Expands the lines that only contain markers up to @rcu@. Expands the lines that only contain markers up to @rcu@.
""" """
for rcu in range(0, nrRSP * 8): for rcu in range(0, nrRSP * 8):
rsp = rcu / 8 rsp = rcu // 8
subrack = rsp / 4 subrack = rsp // 4
cabinet = rsp / 8 cabinet = rsp // 8
print "21 "+dataPoint.replace("@cabinet@","Cabinet"+str(cabinet)) \ print("21 " + dataPoint
.replace("@subrack@","Subrack"+str(subrack)) \ .replace("@cabinet@", "Cabinet" + str(cabinet))
.replace("@RSPBoard@", "RSPBoard"+str(rsp)) \ .replace("@subrack@", "Subrack" + str(subrack))
.replace("@rcu@", "RCU"+str(rcu))+".status.state" .replace("@RSPBoard@", "RSPBoard" + str(rsp))
.replace("@rcu@", "RCU" + str(rcu)) + ".status.state")
def expandRSPBoardMarker(dataPoint, nrRSP): def expandRSPBoardMarker(dataPoint, nrRSP):
""" """
Expands the lines that only contain markers up to @rcu@. Expands the lines that only contain markers up to @rcu@.
""" """
for rsp in range(0, nrRSP): for rsp in range(0, nrRSP):
subrack = rsp / 4 subrack = rsp // 4
cabinet = rsp / 8 cabinet = rsp // 8
print "21 "+dataPoint.replace("@cabinet@","Cabinet"+str(cabinet)) \ print("21 " + dataPoint
.replace("@subrack@","Subrack"+str(subrack)) \ .replace("@cabinet@", "Cabinet" + str(cabinet))
.replace("@RSPBoard@", "RSPBoard"+str(rsp))+".status.state" .replace("@subrack@", "Subrack" + str(subrack))
.replace("@RSPBoard@", "RSPBoard" + str(rsp)) + ".status.state")
def expandTBBoardMarker(dataPoint, nrTBB): def expandTBBoardMarker(dataPoint, nrTBB):
""" """
Expands the lines that only contain markers up to @rcu@. Expands the lines that only contain markers up to @rcu@.
""" """
for tbb in range(0, nrTBB): for tbb in range(0, nrTBB):
subrack = tbb / 2 subrack = tbb // 2
cabinet = tbb / 4 cabinet = tbb // 4
print "21 "+dataPoint.replace("@cabinet@","Cabinet"+str(cabinet)) \ print("21 " + dataPoint
.replace("@subrack@","Subrack"+str(subrack)) \ .replace("@cabinet@", "Cabinet" + str(cabinet))
.replace("@TBBoard@", "TBBoard"+str(tbb))+".status.state" .replace("@subrack@", "Subrack" + str(subrack))
.replace("@TBBoard@", "TBBoard" + str(tbb)) + ".status.state")
def expandSubrackMarker(dataPoint, nrRSP): def expandSubrackMarker(dataPoint, nrRSP):
""" """
Expands the lines that only contain markers up to @rcu@. Expands the lines that only contain markers up to @rcu@.
""" """
nrSubracks = nrRSP / 4 nrSubracks = nrRSP // 4
if nrRSP % 4: nrSubracks += 1 if nrRSP % 4: nrSubracks += 1
for subrack in range(0, nrSubracks): for subrack in range(0, nrSubracks):
cabinet = subrack / 2 cabinet = subrack // 2
print "21 "+dataPoint.replace("@cabinet@","Cabinet"+str(cabinet)) \ print("21 " + dataPoint
.replace("@subrack@","Subrack"+str(subrack))+".status.state" .replace("@cabinet@", "Cabinet" + str(cabinet))
.replace("@subrack@", "Subrack" + str(subrack)) + ".status.state")
def expandCabinetMarker(dataPoint, nrRSP): def expandCabinetMarker(dataPoint, nrRSP):
""" """
Expands the lines that only contain the @cabinet@ marker with all cabinet numbers Expands the lines that only contain the @cabinet@ marker with all cabinet numbers
""" """
nrCabinets = nrRSP / 8 nrCabinets = nrRSP // 8
if nrRSP % 8: nrCabinets += 1 if nrRSP % 8: nrCabinets += 1
for cabinet in range(0, nrCabinets): for cabinet in range(0, nrCabinets):
print "21 "+dataPoint.replace("@cabinet@","Cabinet"+str(cabinet))+".status.state" print("21 " + dataPoint.replace("@cabinet@", "Cabinet" + str(cabinet)) + ".status.state")
def expandLBAMarker(dataPoint, nrLBA): def expandLBAMarker(dataPoint, nrLBA):
""" """
Expands the lines that only contain the @lbaantenna@ marker with all cabinet numbers Expands the lines that only contain the @lbaantenna@ marker with all cabinet numbers
""" """
for lba in range(0, nrLBA): for lba in range(0, nrLBA):
print "21 "+dataPoint.replace("@lbaantenna@","LBA%03d"%lba)+".status.state" print("21 " + dataPoint.replace("@lbaantenna@", "LBA%03d" % lba) + ".status.state")
def expandHBAMarker(dataPoint, nrHBA):
"""
Expands the lines that only contain the @hbaantenna@ marker with all cabinet numbers
"""
for lba in range(0, nrHBA):
print "21 "+dataPoint.replace("@hbaantenna@","HBA%02d"%lba)+".status.state"
def expandHBAMarker(dataPoint, nrHBA):
"""
Expands the lines that only contain the @hbaantenna@ marker with all cabinet numbers
"""
for lba in range(0, nrHBA):
print("21 " + dataPoint.replace("@hbaantenna@", "HBA%02d" % lba) + ".status.state")
# MAIN # MAIN
...@@ -85,7 +94,6 @@ def expandHBAMarker(dataPoint, nrHBA): ...@@ -85,7 +94,6 @@ def expandHBAMarker(dataPoint, nrHBA):
# We can start this from a SVN tree, or from the install location (/opt/lofar) # We can start this from a SVN tree, or from the install location (/opt/lofar)
# This is indicated by the "-l" command line option. # This is indicated by the "-l" command line option.
parser = OptionParser() parser = OptionParser()
parser.add_option("-l", "--local", action="store_true", dest="isLocal", default=False, parser.add_option("-l", "--local", action="store_true", dest="isLocal", default=False,
help="Run createPICFile in situ (in a svn checkout tree, not an in install tree [default!]") help="Run createPICFile in situ (in a svn checkout tree, not an in install tree [default!]")
...@@ -93,16 +101,16 @@ parser.add_option("-l", "--local", action="store_true", dest="isLocal", default= ...@@ -93,16 +101,16 @@ parser.add_option("-l", "--local", action="store_true", dest="isLocal", default=
(options, args) = parser.parse_args() (options, args) = parser.parse_args()
if (options.isLocal): if (options.isLocal):
PVSSbasefile= "../PVSS/data/PVSSDataPoints.base" PVSSbasefile = "../PVSS/data/PVSSDataPoints.base"
StationFile = "../StaticMetaData/StationInfo.dat" StationFile = "../StaticMetaData/StationInfo.dat"
ControlFile = "../StaticMetaData/ControlInfo.dat" ControlFile = "../StaticMetaData/ControlInfo.dat"
RingFile = "../PVSS/data/Rings.list" RingFile = "../PVSS/data/Rings.list"
ClusterFile = "../PVSS/data/Clusters.list" ClusterFile = "../PVSS/data/Clusters.list"
else: else:
PVSSbasefile= "/opt/lofar/pvss/dpdef/PVSSDataPoints.base" PVSSbasefile = "/opt/lofar/pvss/dpdef/PVSSDataPoints.base"
StationFile = "/opt/lofar/etc/StationInfo.dat" StationFile = "/opt/lofar/etc/StationInfo.dat"
ControlFile = "/opt/lofar/etc/ControlInfo.dat" ControlFile = "/opt/lofar/etc/ControlInfo.dat"
RingFile = "/opt/lofar/pvss/dpdef/Rings.list" RingFile = "/opt/lofar/pvss/dpdef/Rings.list"
ClusterFile = "/opt/lofar/pvss/dpdef/Clusters.list" ClusterFile = "/opt/lofar/pvss/dpdef/Clusters.list"
filledLine = re.compile("^[^#].*", re.MULTILINE) filledLine = re.compile("^[^#].*", re.MULTILINE)
...@@ -112,57 +120,57 @@ filledLine = re.compile("^[^#].*", re.MULTILINE) ...@@ -112,57 +120,57 @@ filledLine = re.compile("^[^#].*", re.MULTILINE)
ringDict = {} ringDict = {}
for line in filledLine.findall(open(RingFile).read()): for line in filledLine.findall(open(RingFile).read()):
ringDict[line[0]] = line ringDict[line[0]] = line
#print "ringDict =", ringDict # print "ringDict =", ringDict
# construct a list with all ring_station combinations # construct a list with all ring_station combinations
ringStations = [] ringStations = []
stations = [] stations = []
for line in filledLine.findall(open(StationFile).read()): for line in filledLine.findall(open(StationFile).read()):
if (line.strip() and len(line.split()) == 14 and line.strip()[0] != "#"): if (line.strip() and len(line.split()) == 14 and line.strip()[0] != "#"):
# print "line: =",line # print "line: =",line
(name, stationID, stnType, long, lat, height, nrRSP, nrTBB, nrLBA, nrHBA, nrPowec, HBAsplit, LBAcal, AartFaac ) = line.split() (name, stationID, stnType, long, lat, height, nrRSP, nrTBB, nrLBA, nrHBA, nrPowec, HBAsplit, LBAcal, AartFaac ) = line.split()
if (height != "0" and int(stationID) < 900): if (height != "0" and int(stationID) < 900):
ringStations.append(ringDict[stnType]+"_"+name) ringStations.append(ringDict[stnType]+"_"+name)
stations.append(name) stations.append(name)
#print "ringStations =", ringStations # print "ringStations =", ringStations
#print "stations =", stations # print "stations =", stations
# construct a dictionary for the clusters # construct a dictionary for the clusters
clusterDict = {} clusterDict = {}
for line in filledLine.findall(open(ClusterFile).read()): for line in filledLine.findall(open(ClusterFile).read()):
(mnemonic, prefix, count) = line.split() (mnemonic, prefix, count) = line.split()
clusterDict[mnemonic] = (prefix, count) clusterDict[mnemonic] = (prefix, count)
#print "clusterDict =", clusterDict # print "clusterDict =", clusterDict
# construct a list for the control-machines # construct a list for the control-machines
controlList = [] controlList = []
for line in filledLine.findall(open(ControlFile).read()): for line in filledLine.findall(open(ControlFile).read()):
(name, ipaddr, macaddr) = line.split() (name, ipaddr, macaddr) = line.split()
controlList.append(name) controlList.append(name)
#print "controlList =", controlList # print "controlList =", controlList
# open outputfile and write top-node of PIC # open outputfile and write top-node of PIC
print "21 LOFAR.status.state" print("21 LOFAR.status.state")
print "21 LOFAR_PIC.status.state" print("21 LOFAR_PIC.status.state")
print "21 LOFAR_PermSW.status.state" print("21 LOFAR_PermSW.status.state")
# construct the rings with stations and the clusters with their nodes # construct the rings with stations and the clusters with their nodes
# ??? ??? C P ??? ???_PIC_@???@ # ??? ??? C P ??? ???_PIC_@???@
ringStationMask="" ringStationMask=""
central=re.compile("^\w+[ \t]+[^ \t]+[ \t]+M[ \t]+[YN][ \t]+([A-Za-z_]+_(?:PIC|PermSW)_@.*)", \ central=re.compile("^\w+[ \t]+[^ \t]+[ \t]+M[ \t]+[YN][ \t]+([A-Za-z_]+_(?:PIC|PermSW)_@.*)",
re.IGNORECASE | re.MULTILINE) re.IGNORECASE | re.MULTILINE)
for line in central.findall(open(PVSSbasefile).read()): for line in central.findall(open(PVSSbasefile).read()):
#print "line =",line # print "line =",line
if line.find("@station@") >= 0: if line.find("@station@") >= 0:
ringStationMask=line.replace("LOFAR_","") ringStationMask=line.replace("LOFAR_","")
for RS in ringStations: for RS in ringStations:
print "21 "+line.replace("@ring@_@station@", RS)+".status.state" print("21 "+line.replace("@ring@_@station@", RS) + ".status.state")
# --- # ---
elif line.find("@ring@") >= 0: elif line.find("@ring@") >= 0:
# for all rings # for all rings
for ring in ringDict.keys(): for ring in ringDict.keys():
print "21 "+line.replace("@ring@", ringDict[ring])+".status.state" print("21 "+line.replace("@ring@", ringDict[ring]) + ".status.state")
# --- # ---
elif line.find("@node@") >= 0: elif line.find("@node@") >= 0:
# for all nodes in each cluster # for all nodes in each cluster
...@@ -170,44 +178,44 @@ for line in central.findall(open(PVSSbasefile).read()): ...@@ -170,44 +178,44 @@ for line in central.findall(open(PVSSbasefile).read()):
(name, count) = clusterDict[cluster] (name, count) = clusterDict[cluster]
for nodeNr in range(1, int(count)+1): for nodeNr in range(1, int(count)+1):
nodename = "%s%03d" % (name, nodeNr) nodename = "%s%03d" % (name, nodeNr)
print "21 "+line.replace("@cluster@_@node@", cluster+"_"+nodename)+".status.state" print("21 " + line.replace("@cluster@_@node@", cluster + "_" + nodename) + ".status.state")
# for all nodes # for all nodes
# for all clusters # for all clusters
# also add= the control 'cluster' at this place # also add= the control 'cluster' at this place
for node in controlList: for node in controlList:
print "21 "+line.replace("@cluster@_@node@", "Control_"+node)+".status.state" print("21 " + line.replace("@cluster@_@node@", "Control_" + node) + ".status.state")
# --- # ---
elif line.find("@cluster@") >= 0: elif line.find("@cluster@") >= 0:
# for all clusters # for all clusters
for cluster in clusterDict.keys(): for cluster in clusterDict.keys():
print "21 "+line.replace("@cluster@", cluster)+".status.state" print("21 " + line.replace("@cluster@", cluster) + ".status.state")
# and the control-section # and the control-section
print "21 "+line.replace("@cluster@", "Control")+".status.state" print("21 " + line.replace("@cluster@", "Control") + ".status.state")
# --- # ---
elif line.find("@") < 0: elif line.find("@") < 0:
print "21 "+line+".status.state" print("21 " + line + ".status.state")
# for all expandable lines # for all expandable lines
# Permanent software on MCU # Permanent software on MCU
software=re.compile("^\w+[ \t]+[^ \t]+[ \t]+M[ \t]+[YN][ \t]+([A-Za-z_]+_PermSW_[^@].*)", \ software=re.compile("^\w+[ \t]+[^ \t]+[ \t]+M[ \t]+[YN][ \t]+([A-Za-z_]+_PermSW_[^@].*)",
re.IGNORECASE | re.MULTILINE) re.IGNORECASE | re.MULTILINE)
for line in software.findall(open(PVSSbasefile).read()): for line in software.findall(open(PVSSbasefile).read()):
print "21 MCU001:%s.status.state" % line print("21 MCU001:%s.status.state" % line)
# generate the hardware on each station # generate the hardware on each station
for line in filledLine.findall(open(StationFile).read()): for line in filledLine.findall(open(StationFile).read()):
# print "line: =",line # print "line: =",line
if (line.strip() and len(line.split()) == 14 and line.strip()[0] != "#"): if (line.strip() and len(line.split()) == 14 and line.strip()[0] != "#"):
(name, stationID, stnType, long, lat, height, nrRSP, nrTBB, nrLBA, nrHBA, nrPowec, HBAsplit, LBAcal, AartFaac ) = line.split() (name, stationID, stnType, long, lat, height, nrRSP, nrTBB, nrLBA, nrHBA, nrPowec, HBAsplit, LBAcal, AartFaac ) = line.split()
if ( height == "0" or int(stationID) >= 900): if height == "0" or int(stationID) >= 900:
continue continue
# Find all expandable hardware elements on a station. The line syntax is: # Find all expandable hardware elements on a station. The line syntax is:
# ??? ??? S P ??? ???_PIC_@...@ # ??? ??? S P ??? ???_PIC_@...@
# we are only interested in the @...@ part. # we are only interested in the @...@ part.
station=re.compile("^\w+[ \t]+[^ \t]+[ \t]+S[ \t]+[YN][ \t]+[A-Za-z_]+_PIC_(@.*)", \ station=re.compile("^\w+[ \t]+[^ \t]+[ \t]+S[ \t]+[YN][ \t]+[A-Za-z_]+_PIC_(@.*)",
re.IGNORECASE | re.MULTILINE) re.IGNORECASE | re.MULTILINE)
for line in station.findall(open(PVSSbasefile).read()): for line in station.findall(open(PVSSbasefile).read()):
prefix="@station@:LOFAR_PIC_".replace("@station@", name) prefix="@station@:LOFAR_PIC_".replace("@station@", name)
if line.find("@rcu@") >= 0: if line.find("@rcu@") >= 0:
...@@ -226,11 +234,10 @@ for line in filledLine.findall(open(StationFile).read()): ...@@ -226,11 +234,10 @@ for line in filledLine.findall(open(StationFile).read()):
expandHBAMarker(prefix+line, int(nrHBA)) expandHBAMarker(prefix+line, int(nrHBA))
# for all expandable lines # for all expandable lines
# Permanent software on the stations # Permanent software on the stations
software=re.compile("^\w+[ \t]+[^ \t]+[ \t]+S[ \t]+[YN][ \t]+([A-Za-z_]+_PermSW_.*)", \ software=re.compile("^\w+[ \t]+[^ \t]+[ \t]+S[ \t]+[YN][ \t]+([A-Za-z_]+_PermSW_.*)",
re.IGNORECASE | re.MULTILINE) re.IGNORECASE | re.MULTILINE)
for line in software.findall(open(PVSSbasefile).read()): for line in software.findall(open(PVSSbasefile).read()):
if line.find("@") < 0: if line.find("@") < 0:
print "21 %s:%s.status.state" % (name, line) print("21 %s:%s.status.state" % (name, line))
#for all stations # for all stations
---------------------------------------------------
[license]
code = "LV614C 50455775608"
version = 31400002
sn = "471_3031_Astron_Station_5/1"
date = 2019.09.02;10:21:13,000
comment = "European Station LV614"
expire = 0000.00.00;00:00:00,000
redundancy = 0
ui = 1
para = 1
dde = 5
event = 1
ios = 4000
ssi = 0
api = 80
excelreport = 5
http = 0
infoserver = 1000
comcenter = 5
maintenance = 1
scheduler = 1
s7 = 1
recipe = 1
distributed = 255
ultralight = 1
mobile_app = 1
uifix = 0
parafix = 0
pararemote = 0
ctrlext = 1
update = 0
[license] [license]
#hw = 12831493085 code = "dongleHost 40215168481"
code = "dongleHost 00138422163" version = 31600002
version = 31600002 sn = "471_3031_Astron_Station_5"
sn = "471_3031_Astron_Station_5" expire = 0000.00.00;00:00:00,000
expire = 0000.00.00;00:00:00,000 redundancy = 0
redundancy = 0 ui = 1
ui = 1 para = 1
para = 1 dde = 5
dde = 5 event = 1
event = 1 ios = 4000
api = 80 ssi = 0
excelreport = 5 api = 80
http = 0 excelreport = 5
infoserver = 1000 http = 0
ios = 4000 infoserver = 1000
comcenter = 5 comcenter = 5
maintenance = 1 maintenance = 1
scheduler = 1 scheduler = 1
ssi = 0 s7 = 1
s7 = 1 recipe = 1
recipe = 1 distributed = 255
distributed = 255 ultralight = 1
ultralight = 1 mobile_app = 1
mobile_app = 1 s7plus = 8
s7plus = 8 uifix = 0
uifix = 0 parafix = 0
parafix = 0 pararemote = 0
pararemote = 0 ctrlext = 1
ctrlext = 1 update = 0
update = 0 licenseMax = 100
licenseMax = 100 licenseLeft = 99
licenseLeft = 100
[license]
code = "LV614C 33179529551"
version = 31400002
comment = "European Station LV614"
sn = "471_3031_2_Astron_Gen_II_1_38"
expire = 0000.00.00;00:00:00,000
redundancy = 0
ui = 1
para = 1
dde = 5
event = 1
api = 80
excelreport = 5
http = 0
infoserver = 1000
ios = 4000
comcenter = 5
maintenance = 1
scheduler = 1
ssi = 0
s7 = 1
recipe = 1
distributed = 255
ultralight = 1
mobile_app = 1
uifix = 0
parafix = 0
pararemote = 0
ctrlext = 1
update = 0
[license]
code = "LV614C 50455775608"
version = 31400002
sn = "471_3031_Astron_Station_5/1"
date = 2019.09.02;10:21:13,000
comment = "European Station LV614"
expire = 0000.00.00;00:00:00,000
redundancy = 0
ui = 1
para = 1
dde = 5
event = 1
ios = 4000
ssi = 0
api = 80
excelreport = 5
http = 0
infoserver = 1000
comcenter = 5
maintenance = 1
scheduler = 1
s7 = 1
recipe = 1
distributed = 255
ultralight = 1
mobile_app = 1
uifix = 0
parafix = 0
pararemote = 0
ctrlext = 1
update = 0
...@@ -59,4 +59,4 @@ PL610 4 ...@@ -59,4 +59,4 @@ PL610 4
PL611 4 PL611 4
PL612 4 PL612 4
IE613 4 IE613 4
LV616 4 LV614 4
...@@ -129,7 +129,7 @@ PL612 213 E 20.5897506 53.5939042 178.38 24 12 96 96 ...@@ -129,7 +129,7 @@ PL612 213 E 20.5897506 53.5939042 178.38 24 12 96 96
# Birr # Birr
IE613 214 E -7.9213656 53.0951167 105.99 24 12 96 96 2 No No No IE613 214 E -7.9213656 53.0951167 105.99 24 12 96 96 2 No No No
# Irbene # Irbene
LV614 215 E 21.8549189 57.5568802 13.29 24 12 96 96 2 No No No LV614 215 E 21.8558311 57.5570617 42.58 24 12 96 96 2 No No No
## Non-ILT international ## Non-ILT international
## 900 ## 900
......
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