Index: trunk/absroot/source/abspy/abscontrol/client.py =================================================================== diff --git a/trunk/absroot/source/abspy/abscontrol/client.py b/trunk/absroot/source/abspy/abscontrol/client.py --- a/trunk/absroot/source/abspy/abscontrol/client.py (revision 54) +++ b/trunk/absroot/source/abspy/abscontrol/client.py (revision 55) @@ -39,10 +39,17 @@ self.commObj.sendData(cmd="CHGB", data=newBeam) self.commObj.waitData() + def __writeFile(self, filename, data): + + fobj = open(filename,"w") + fobj.writelines(data) + fobj.close() + def getStatus(self, data): self.commObj.sendData(cmd="ANST", data = data) - self.commObj.waitData2() + ipSource, ipDestino, cmd, data = self.commObj.waitData() + self.__writeFile("report.txt", data) ########## Index: trunk/absroot/source/abspy/abscontrol/library.py =================================================================== diff --git a/trunk/absroot/source/abspy/abscontrol/library.py b/trunk/absroot/source/abspy/abscontrol/library.py --- a/trunk/absroot/source/abspy/abscontrol/library.py (revision 54) +++ b/trunk/absroot/source/abspy/abscontrol/library.py (revision 55) @@ -12,6 +12,7 @@ self.portDestino = portDestino self.addr = (ipDestino,portDestino) self.answer = ipDestino #test + self.mode = "none" self.openSocket(asServer) @@ -23,8 +24,10 @@ if asServer: self.configAsServer() + self.mode = "server" else: self.configAsClient() + self.mode = "client" def configAsClient(self): #Configurar broadcast @@ -40,42 +43,25 @@ print "\nWaiting some data" trama_rx, self.answer = self.socket_c.recvfrom(nbytes) print "\nThis socket has received some data" + print self.answer ipSource, ipDestino, cmd, data = self.__getTrama(trama_rx) - - return ipSource, ipDestino, cmd, data - - def waitData2(self, nbytes = 16384): - - print "\nWaiting some data" - trama_rx, self.answer = self.socket_c.recvfrom(nbytes) - print "\nThis socket has received some data" - ipSource, ipDestino, cmd, data = self.__getTrama(trama_rx) - filename = "report.txt" - fobj = open(filename,"w") - fobj.writelines(data) - fobj.close() return ipSource, ipDestino, cmd, data def sendData(self, cmd, data): - trama_tx = self.__HEADER + ":" + str(self.ipSource) + ":" + str(self.ipDestino) + ":" + str(cmd) + ":" + str(data) + ":" + if self.portDestino == 7000: + trama_tx = self.__HEADER + ":" + str(self.ipSource) + ":" + str(self.ipDestino) + ":" + str(cmd) + ":" + str(data) + ":" + else: + trama_tx = data + + if self.mode == "client": + destiny = self.addr + else: + destiny = self.answer # Send messages - if(self.socket_c.sendto(trama_tx, self.addr)): + if(self.socket_c.sendto(trama_tx, destiny)): print "Sending message:[" + trama_tx + "]" - - def sendData2(self, cmd, data): - - trama_tx = self.__HEADER + ":" + str(self.ipSource) + ":" + str(self.ipDestino) + ":" + str(cmd) + ":" + str(data) + ":" - # Send messages - if(self.socket_c.sendto(trama_tx, self.answer)): - print "Sending message:[" + trama_tx + "]" - - def sendData2ControlModules(self, trama_tx): - - # Send messages - if(self.socket_c.sendto(trama_tx, self.addr)): - print "Sending message:[" + trama_tx + "]" def __getTrama(self, trama): Index: trunk/absroot/source/abspy/abscontrol/server.py =================================================================== diff --git a/trunk/absroot/source/abspy/abscontrol/server.py b/trunk/absroot/source/abspy/abscontrol/server.py --- a/trunk/absroot/source/abspy/abscontrol/server.py (revision 54) +++ b/trunk/absroot/source/abspy/abscontrol/server.py (revision 55) @@ -25,52 +25,6 @@ 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 sendFile(self, base): - - #Needed for the loop - rx_frame_list = self.datarx.split('\n',2) - - 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") - #Setting variables of the loop - i =3 - module = 1 - number_of_modules = 16 - number_of_beams = int (experiment_number) - module_list = self.connection_status(10) - #Loop for creating and sending the control module files - while module <= number_of_modules: - #Generating the control modules files - fobj = open(experiment_name,"w") - fobj.write(experiment_name + "\n") - fobj.write("------\n") -# tmp_list = rx_frame_list[i:i + number_of_beams + 1] - fobj.write(lst_control_modules[module-1]) - fobj.write("------\n") - fobj.close() - if module_list[module -1] == "1": - #Preparing and doing the tftp command - cmd = "tftp -m binary 192.168.1."+ str(base + module) +" 69 -c put " + experiment_name - print cmd - os.system(cmd) - #Updating variables of the loop - i = i + number_of_beams + 2 - module += 1 - #Working with the UDP socket -# self.commClientObj.sendData2ControlModules("CARGA:" + experiment_name + ":") -# self.commClientObj.sendData2ControlModules("CAMBIA:0:") - #Another tftp way -# self.ftpCommObj.sendFile(filename) -# rpta = self.commClientObj.sendTxRxCommand(cmd# filename2 = "report.txt" - #fobj2 = open(filename2,"w") - #fobj2.write("Verification_file\n") - #fobj2.write("-----------------\n") - #fobj2.close()='CARGA', data=filename) - self.experiment_name = experiment_name def waitRequest(self): @@ -86,11 +40,20 @@ self.changeBeam() if cmd == "ANST": - self.getStatus(10, mode=2) + self.getStatus(mode=3) datarpta = self.tx_buffer - self.commServerObj.sendData2(cmd=cmd, data=datarpta) - + 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): @@ -107,16 +70,6 @@ f = open("module_status.txt","w") f.writelines(status_array) f.close() - - 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 checkAntenna(self): @@ -138,12 +91,34 @@ self.__writeReport(enaModules) return enaModules - - def __loadFile(self): - - #Working with the UDP socket - self.commClientObj.sendData2ControlModules("CARGA:" + self.experiment_name + ":") - self.commClientObj.sendData2ControlModules("CAMBIA:0:") + + def sendFile2Modules(self): + + #Needed for the loop + rx_frame_list = self.datarx.split('\n',2) + + 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(experiment_name, lst_control_modules[address-1]) + + cmd = "tftp -m binary 192.168.1."+ str(address) +" 69 -c put " + experiment_name + print cmd + os.system(cmd) + + self.experiment_name = experiment_name + + self.__loadFile() def __writeModuleFile(self, filename, str): @@ -153,43 +128,40 @@ fobj.write(str) fobj.write("------\n") fobj.close() - - def sendFile2Modules(self): - - #Needed for the loop - rx_frame_list = self.datarx.split('\n',2) - - 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(experiment_name, lst_control_modules[address-1]) - - cmd = "tftp -m binary 192.168.1."+ str(address) +" 69 -c put " + experiment_name - print cmd - os.system(cmd) - - self.experiment_name = experiment_name - - self.__loadFile() + + 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.sendData2ControlModules("CAMBIA:" + self.datarx + ":") + self.commClientObj.sendData("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.sendData2ControlModules("CHEQUEO:" + self.datarx + ":") + self.commClientObj.sendData("CHEQUEO:" + self.datarx + ":") seconds = int (self.datarx) # Give 5 seconds to the control modules time.sleep(seconds) @@ -229,15 +201,13 @@ def __getStsMode2(self): #rpta = self.commClientObj.sendTxRxCommand(cmd='CHEQUEO', data="0") - self.commClientObj.sendData2ControlModules("CHEQUEO:" + self.datarx + ":") + 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 - module = 1 - number_of_modules = 16 filename1 = "Verificacion" line1 = "Verification_file\n" line2 = "-----------------\n" @@ -262,54 +232,46 @@ #Ending report_list.append("------\n") #print "\nFinalizado" - self.tx_buffer = ''.join(report_list) - + 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): - #rpta = self.commClientObj.sendTxRxCommand(cmd='CHEQUEO', data="0") - self.commClientObj.sendData2ControlModules("CHEQUEO:" + self.datarx + ":") + 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" - line1 = "Verification_file\n" - line2 = "-----------------\n" - report_list = [line1, line2] - 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) - #Sub_header - if base == 10: - report_list.append("S" + str(module) + "\n") - else: - report_list.append("N" + str(module) + "\n") - # Content - fobj1 = open(filename1,"r") - file_list_1 = fobj1.readlines() - fobj1.close() - content = ''.join(file_list_1[2:-1]) -# content = "010101\n" - report_list.append(content) - #Ending - report_list.append("------\n") - module = module + 1 - #print "\nFinalizado" - self.tx_buffer = ''.join(report_list) - - def getStatus(self, base, mode): - - if mode == 1: - self.__getStsMode1() - else: - self.__getStsMode2() + + self.__getModuleFile(filename = "Verificacion") if __name__ == '__main__':