##// END OF EJS Templates
First beam is loaded by default after sending the beam file to the control modules.
First beam is loaded by default after sending the beam file to the control modules.

File last commit:

r165:166
r231:232
Show More
server.py
280 lines | 9.0 KiB | text/x-python | PythonLexer
import os
import library
import time
class ABSServer:
def __init__(self,ipSource="localhost", ipDestino="192.168.1.117", portDestino=7000, ipDestino2="192.168.1.255", portDestino2=5500, ftpPortDestino=None):
self.ipSource = ipSource
self.ipDestino = ipDestino
self.portDestino = portDestino
self.ipDestino2 = ipDestino2
self.portDestino2 = portDestino2
self.ftpPortDestino = ftpPortDestino
self.experiment_name = "default"
self.tx_buffer = "default"
self.createObjects()
def createObjects(self):
asServer = True
self.commServerObj = library.UDPComm(self.ipSource, self.ipDestino, self.portDestino, asServer)
self.commClientObj = library.UDPComm(self.ipSource, self.ipDestino2, self.portDestino2)
#self.ftpCommObj = library.FTPComm(self.ipSource, self.ipDestino, self.ftpPortDestino)
def waitRequest(self):
ipSource, ipDestino, cmd, self.datarx = self.commServerObj.waitData()
datarpta = "OK"
if cmd == "SNDF":
self.sendFile2Modules()
pass
if cmd == "CHGB":
self.changeBeam()
if cmd == "ANST":
self.getStatus(mode=3)
datarpta = self.tx_buffer
self.commServerObj.sendData(cmd=cmd, data=datarpta)
def checkModule(self, address):
cmd = "ping -c 1 -w 1 192.168.1."+ str(address) + " >> /dev/null"
status = os.system(cmd)
if status == 256:
return False
return True
def __writeReport(self, enaModules):
status_array = ["Status of modules\n"]
status_array.append("----------------\n")
for address in range(1,65):
if address in enaModules:
# status_array.append("192.168.1." + str(base + i + 1) + " [1 1]\n")
status_array.append("192.168.1." + str(address) + " [1 1]\n")
else:
status_array.append("192.168.1." + str(address) + " [0 0]\n")
f = open("module_status.txt","w")
f.writelines(status_array)
f.close()
def checkAntenna(self):
"""
Direccion de los modulos de las antenas:
Norte : 01-16
Este : 17-32
Oeste: : 33-48
Sur : 49-64
"""
enaModules = []
for address in range(1,65):
if self.checkModule(address):
enaModules.append(address)
self.__writeReport(enaModules)
return enaModules
def sendFile2Modules(self):
#Needed for the loop
rx_frame_list = self.datarx.split('\n',2)
self.experiment_name = rx_frame_list[0]
experiment_number = rx_frame_list[1]
str_control_modules = rx_frame_list[2]
lst_control_modules = str_control_modules.split("------\n")
enaModules = self.checkAntenna()
for address in range(1,65):
if address not in enaModules:
continue
self.__writeModuleFile(self.experiment_name, lst_control_modules[address-1])
cmd = "tftp -m binary 192.168.1."+ str(address) +" 69 -c put " + self.experiment_name
print cmd
os.system(cmd)
self.__loadFile()
def __writeModuleFile(self, filename, str):
fobj = open(filename,"w")
fobj.write(filename + "\n")
fobj.write("------\n")
fobj.write(str)
fobj.write("------\n")
fobj.close()
def __readModuleFile(self, filename):
fobj1 = open(filename,"r")
file_list_1 = fobj1.readlines()
fobj1.close()
content_str = ''.join(file_list_1[2:-1])
return content_str
def __loadFile(self):
#Working with the UDP socket
self.commClientObj.sendData("none", "CARGA:" + self.experiment_name + ":")
self.commClientObj.sendData("none", "CAMBIA:0:")
def changeBeam(self):
#rpta = self.commClientObj.sendTxRxCommand(cmd='CAMBIA', data="0")
self.commClientObj.sendData("none", "CAMBIA:" + self.datarx + ":")
def getStatus(self,mode):
if mode == 1:
self.__getStsMode1()
elif mode == 2:
self.__getStsMode2()
else:
self.__getStsMode3()
def __getStsMode1(self):
#rpta = self.commClientObj.sendTxRxCommand(cmd='CHEQUEO', data="0")
self.commClientObj.sendData("CHEQUEO:" + self.datarx + ":")
seconds = int (self.datarx)
# Give 5 seconds to the control modules
time.sleep(seconds)
# Checking the module connection
module_list = self.connection_status(10)
#Generating the complete report
module = 1
number_of_modules = 16
filename1 = "Verificacion"
filename2 = "report.txt"
fobj2 = open(filename2,"w")
fobj2.write("Verification_file\n")
fobj2.write("-----------------\n")
fobj2.close()
while module <= number_of_modules:
if module_list[module -1] == "1":
#Preparing and doing the tftp command
cmd = "tftp -m binary 192.168.1."+ str(base + module) +" 69 -c get " + filename1
print cmd
os.system(cmd)
# Getting data from the control module file
fobj1 = open(filename1,"r")
file_list_1 = fobj1.readlines()
fobj1.close()
content = file_list_1[2:-1]
#
fobj2 = open(filename2,"a")
if base == 10:
fobj2.write("S" + str(module) + "\n")
else:
fobj2.write("N" + str(module) + "\n")
fobj2.writelines(content)
fobj2.write("------\n")
fobj2.close()
module = module + 1
def __getStsMode2(self):
#rpta = self.commClientObj.sendTxRxCommand(cmd='CHEQUEO', data="0")
self.commClientObj.sendData("CHEQUEO:" + self.datarx + ":")
seconds = int (self.datarx)
# Give 5 seconds to the control modules
time.sleep(seconds)
# Checking the module connection
enaModules = self.checkAntenna()
#Generating the complete report
filename1 = "Verificacion"
line1 = "Verification_file\n"
line2 = "-----------------\n"
report_list = [line1, line2]
for address in range(1,65):
if address not in enaModules:
continue
#Preparing and doing the tftp command
cmd = "tftp -m binary 192.168.1."+ str(address) +" 69 -c get " + filename1
print cmd
os.system(cmd)
#Sub_header
report_list.append("ABS_" + str(address) + "\n")
# Content
fobj1 = open(filename1,"r")
file_list_1 = fobj1.readlines()
fobj1.close()
content = ''.join(file_list_1[2:-1])
report_list.append(content)
#Ending
report_list.append("------\n")
#print "\nFinalizado"
self.tx_buffer = ''.join(report_list)
def __AddingHeader(self,content_list, title):
line1 = title + "\n"
line2 = "-----------------\n"
header_list = [line1, line2]
verification_list = header_list + content_list
# Arming the frame
self.tx_buffer = ''.join(verification_list)
def __getModuleFile(self, filename):
enaModules = self.checkAntenna()
content_list = []
for address in range(1,65):
if address not in enaModules:
continue
#Preparing and doing the tftp command
cmd = "tftp -m binary 192.168.1."+ str(address) +" 69 -c get " + filename
print cmd
os.system(cmd)
#Sub_header
content_list.append("ABS_" + str(address) + "\n")
# From module file to list
content_str = self.__readModuleFile(filename)
content_list.append(content_str)
content_list.append("------\n")
self.__AddingHeader(content_list, title = "Verification_file")
def __getStsMode3(self):
self.commClientObj.sendData("none", "CHEQUEO:" + self.datarx + ":")
seconds = int (self.datarx)
# Give 5 seconds to the control modules
time.sleep(seconds)
self.__getModuleFile(filename = "Verificacion")
if __name__ == '__main__':
absObj = ABSServer()
while 1:
absObj.waitRequest()