import ServerClass import GSMClass import LogFileClass from time import sleep #create the log file class logger = LogFileClass.Logging('handlerOfSystem.log') #use this variable as the error counter errorCount = 0 #start logging all events logger.logEvent('') #counter how many time we were in the while loop whileCounter =0 while 1: whileCounter += 1 #increment the counter for 1 logger.logEvent('--------------------------------------------------------------------') #create the two objects, one for serial port other for socket cellPhone = GSMClass.serialPort('/dev/ttyUSB0', 19200, 20) handler = ServerClass.ServerHandler(50008) #define the handler port logger.logEvent('Created the cellPhone and handler object') #initialize the cellPhone initCell = cellPhone.portInit() logger.logEvent('Cellphone initialization was: ' + str(initCell)) if initCell==1: tried = handler.openSocket() if tried == 1: logger.logEvent('Received connection from: ' + str(handler.connectedTo())) else: logger.logEvent('Could not opet socket: ' + str(handler.error)) #if the controller has connected if handler.connected == 1: #init the variables recMessage = '' sendMessage = '' recMessage = handler.receiveData(0) logger.logEvent('Received: ' + str(recMessage)) print recMessage if recMessage == 'HELLO HANDLER': sendMessage = handler.sendData('HELLO CONTROLLER') logger.logEvent('Sent was successful: ' + str(sendMessage)) if sendMessage == 1: recMessage = handler.receiveData(0) logger.logEvent('Received: ' + str(recMessage)) else: #we have a problem logger.logEvent('Message sent error: ' + str(sendMessage)) pass print recMessage if recMessage[0:6] == 'CALLER': numToCall = recMessage[7:] triedReady = handler.sendData('CALLER|READY') triedToCall = cellPhone.callNumber([numToCall]) logger.logEvent('Tried to call: ' + str(numToCall) + '; Cell phone responded: ' + str(triedToCall)) sleep(1) response = cellPhone.currentCall() testCounter = 0 while(response != 1 and testCounter!=10): sleep(1) testCounter += 1 response = cellPhone.currentCall() #reufe add here an timer for 5 seconds if other side doesn't respond if response == 1: if cellPhone.getSignalQuality() == 1: signalQuality = cellPhone.signalStrength print signalQuality if response == 1: handler.sendData('CALLOK') print 'CALL OK' else: handler.sendData('CALLNO') print 'CALL NOT OK' triedHangUp = cellPhone.hangUp() logger.logEvent('Tried to hang up call: ' + str(triedHangUp)) #do here rest for caller elif recMessage[0:6] == 'RECEIV': handler.sendData('RECEIV|READY') triedToRec = cellPhone.receiveCall() logger.logEvent('Received call was successful: ' + str(triedToRec)) print recMessage if triedToRec == 1: #I received the call successfully sleep(1) triedSignal = cellPhone.getSignalQuality() if triedSignal == 1: signalQuality = handler.signalStrength logger.logEvent('Signal quality in dBm: ' + str(signalQuality)) print signalQuality, 'dBm' triedHangUp = cellPhone.hangUp() logger.logEvent('Receiver call tried to hang up: ' + str(triedHangUp)) sendMessage = handler.sendData('CALLOK') print 'CALL OK' else: sendMessage = handler.sendData('CALLNO') print 'CALL NOT OK' #do here rest receiver else: #we have a serious problem here handler.sendData('SHIT') recMessage = handler.receiveData(0) print recMessage if recMessage == 'TERMINATE': close = handler.closeConnection() logger.logEvent('Closed connection: ' + str(close)) del cellPhone del handler