From bedcfd78831b553597a1e545d80f7018f5c722cf Mon Sep 17 00:00:00 2001
From: Menno Norden <norden@astron.nl>
Date: Fri, 13 Jan 2012 09:34:40 +0000
Subject: [PATCH] task #1723: new version V11

---
 LCU/StationTest/stationtest.py | 52 ++++++++++++++++++++++++++--------
 1 file changed, 40 insertions(+), 12 deletions(-)

diff --git a/LCU/StationTest/stationtest.py b/LCU/StationTest/stationtest.py
index afea1b905c5..8324376612f 100755
--- a/LCU/StationTest/stationtest.py
+++ b/LCU/StationTest/stationtest.py
@@ -3,7 +3,7 @@
 #
 # Run the tests to test a LOFAR station
 # H. Meulman
-# Version 0.10                22-nov-2011	SVN*****
+# Version 0.11                22-nov-2011	SVN*****
 
 # 24 sep: local log directory aangepast
 # 27 sept: 	- Toevoeging delay voor tbbdriver polling
@@ -23,8 +23,10 @@
 # 18 mrt 2011: Als alle LBA's niet werken, wordt error gelogd. (average < 4000000)
 # 30 mrt 2011: TBBversion_int.gold aangepast voor internationale stations.
 # 7 sep 2011: Bug removed. On the remote stations LBA mode 1 will now also be tested.
-# added CS028 and CS031
-# 22 nov 2011 TBB versie aanpassen naar 2.39
+# oct 2011: added CS028 and CS031
+# 22 nov 2011: TBB versie aanpassen naar 2.39
+# 22 nov 2011: Changed filename to not overwrite testdata subrack test
+# 12 jan 2012: Reject LBA antennas when signal differs more than 10dB
 
 # todo:
 # - Als meer dan 10 elementen geen rf signaal hebben, keur dan hele tile af
@@ -32,6 +34,7 @@
 # - =='LOCKED' in 160 en 200 MHz clock test over een aantal keren!
 # Loggen absolute waarden van alle antennes (LBH LBL eb HBA)
 # BIST toevoegen RSP boards
+# Cabinet temperatuur monitoren
 
 
 
@@ -1247,6 +1250,7 @@ def LBAtest():
 	f_log = file('/opt/stationtest/test/hbatest/LBA_elements.log', 'w')
 	f_log.write(' ************ \n \n LOG File for LBA element test \n \n *************** \n')
 	f_logfac = file('/opt/stationtest/test/hbatest/LBA_factors.log', 'w')
+	f_loglin = file('/opt/stationtest/test/hbatest/LBA_lin.log', 'w')
 	f_logdown = file('/opt/stationtest/test/hbatest/LBA_down.log', 'w')	# log number that indicates if LBA antenna is falen over (down)
 # initialize data arrays
 	ref_data=range(0, num_rcu)
@@ -1292,13 +1296,17 @@ def LBAtest():
 	
         	# start processing the element measurements
 		averagesum=0
+		Rejected_antennas=0
 		for file_cnt in range(len(files)) :
 			f, frames_to_process, rcu_nr  = open_file(files, file_cnt)
         	       	if frames_to_process > 0 : 
 				sst_data = read_frame(f)
         	       		sst_subband = sst_data[subband_nr]
 				meet_data[rcu_nr] = sst_subband
-				averagesum=averagesum+sst_subband
+				if ((sst_subband>15000000) and (sst_subband<1500000000)): # average LCU is 150.000.000. Reject antennes met grotere afwijking dan 10dB
+					averagesum=averagesum+sst_subband
+				else:
+					Rejected_antennas=Rejected_antennas+1
 				if debug:
 		                	if rcu_nr==0:
         	               			print ' waarde sst_subband 0 is ' + str(sst_subband)
@@ -1306,17 +1314,25 @@ def LBAtest():
         	        			print ' waarde sst_subband 2 is ' + str(sst_subband)
 					if rcu_nr==50:
 						print ' waarde sst_subband 50 is ' + str(sst_subband)
+
 			f.close
-		average_lba=averagesum/num_rcu
+		average_lba=averagesum/(num_rcu-Rejected_antennas)
 #		if debug: 
 		print 'average = ' + str(average_lba)
+		print 'Number of rejected antennas = ' + str(Rejected_antennas)
+		f_loglin.write('Number of rejected antennas for mode 1 = ' + str(Rejected_antennas) + '\n')  
 		if average_lba < 4000000:
 			print ('LBA levels to low in mode 1!!!')
 #			if Severity<SeverityOfThisTest: Severity=SeverityOfThisTest
 #			if Priority<PriorityOfThisTest: Priority=PriorityOfThisTest
 			st_log.write('LBAmd1>: Sv=%s Pr=%s, LBA levels to low!!!\n' % (SeverityLevel[SeverityOfThisTest], PriorityLevel[PriorityOfThisTest]))
 			return
-		
+
+		for rcuind in range(num_rcu) :			# Log lineair value of data
+			print 'RCU: ' + str(rcuind) + ' factor: ' + str(meet_data[rcuind])
+		        f_loglin.write(str(rcuind) + ' ' + str(meet_data[rcuind]) + '\n')  
+
+	
 		f_log.write('\nrcumode 1: \n')
 		if average_lba <> 0:
 			for rcuind in range(num_rcu) :
@@ -1406,24 +1422,31 @@ def LBAtest():
 
         # start processing the element measurements
 	averagesum=0
+	Rejected_antennas=0
 	for file_cnt in range(len(files)) :
 		f, frames_to_process, rcu_nr  = open_file(files, file_cnt)
                	if frames_to_process > 0 : 
 			sst_data = read_frame(f)
                		sst_subband = sst_data[subband_nr]
 			meet_data[rcu_nr] = sst_subband
-			averagesum=averagesum+sst_subband
+			if ((sst_subband>15000000) and (sst_subband<1500000000)): # average LCU is 150.000.000. Reject antennes met grotere afwijking dan 10dB
+				averagesum=averagesum+sst_subband
+			else:
+				Rejected_antennas=Rejected_antennas+1
+			#averagesum=averagesum+sst_subband
 			if debug:
 	                	if rcu_nr==0:
                        			print ' waarde sst_subband 0 is ' + str(sst_subband)
-                		if rcu_nr==2:
-                			print ' waarde sst_subband 2 is ' + str(sst_subband)
-				if rcu_nr==50:
-					print ' waarde sst_subband 50 is ' + str(sst_subband)
+                		if rcu_nr==166:
+                			print ' waarde sst_subband 166 is ' + str(sst_subband)
+				if rcu_nr==167:
+					print ' waarde sst_subband 167 is ' + str(sst_subband)
 		f.close
-	average_lba=averagesum/num_rcu
+	average_lba=averagesum/(num_rcu-Rejected_antennas)
 #	if debug: 
 	print 'average = ' + str(average_lba)
+	print 'Number of rejected antennas = ' + str(Rejected_antennas)
+	f_loglin.write('Number of rejected antennas for mode 3 = ' + str(Rejected_antennas) + '\n')  
 	if average_lba < 4000000:
 		print ('LBA levels to low in mode 3!!!')
 #		if Severity<SeverityOfThisTest: Severity=SeverityOfThisTest
@@ -1431,6 +1454,10 @@ def LBAtest():
 		st_log.write('LBAmd3>: Sv=%s Pr=%s, LBA levels to low!!!\n' % (SeverityLevel[SeverityOfThisTest], PriorityLevel[PriorityOfThisTest]))
 		return
 			
+	for rcuind in range(num_rcu) :			# Log lineair value of data
+		print 'RCU: ' + str(rcuind) + ' factor: ' + str(meet_data[rcuind])
+	        f_loglin.write(str(rcuind) + ' ' + str(meet_data[rcuind]) + '\n')  
+	
 	f_log.write('\nrcumode 3: \n')
 	if average_lba <> 0:
 		for rcuind in range(num_rcu) :
@@ -1485,6 +1512,7 @@ def LBAtest():
 	
         f_log.close
 	f_logfac.close
+	f_loglin.close
 	rm_files(dir_name,'*')
 #	os.popen("killall beamctl")
 	if debug:
-- 
GitLab