From 25128f34cdfae5318d1a38441bf09781ef91a2ba Mon Sep 17 00:00:00 2001 From: Triatmoko Date: Thu, 17 Nov 2011 04:24:51 +0100 Subject: update loging files for every handler and fic device configuration function --- Under-Testing/Server-Code-New/ControllerClass.py | 1 + Under-Testing/Server-Code-New/DbClass.py | 9 +- Under-Testing/Server-Code-New/GSMHandler.py | 30 +++---- Under-Testing/Server-Code-New/SIPHandler.py | 110 +++++++++++------------ Under-Testing/Server-Code-New/gsmselftest.py | 3 + Under-Testing/Server-Code-New/startSoftware.py | 12 ++- 6 files changed, 85 insertions(+), 80 deletions(-) (limited to 'Under-Testing') diff --git a/Under-Testing/Server-Code-New/ControllerClass.py b/Under-Testing/Server-Code-New/ControllerClass.py index 38867ee..321bc2d 100644 --- a/Under-Testing/Server-Code-New/ControllerClass.py +++ b/Under-Testing/Server-Code-New/ControllerClass.py @@ -125,6 +125,7 @@ class controller: with open('handler.txt', 'w') as F: writer = csv.writer(F) writer.writerow([AccountInfo]) + F.close() except ValueError: print "can't write to file" diff --git a/Under-Testing/Server-Code-New/DbClass.py b/Under-Testing/Server-Code-New/DbClass.py index e3b2b5c..d937eb1 100644 --- a/Under-Testing/Server-Code-New/DbClass.py +++ b/Under-Testing/Server-Code-New/DbClass.py @@ -19,7 +19,7 @@ class DBMySQLConnection: def connectDB(self): try: - #try the connection + #try to connect self.datBaseConn=MySQLdb.connect(self.host,self.usern, self.passw,self.db) self.datBaseConn.paramstyle = 'format' self.cur = self.datBaseConn.cursor() #make the cursor, used for sending queries @@ -171,6 +171,13 @@ class DBMySQLConnection: def updateGSMDevice(self, deviceName, newPortName, newNumber): if self.connectionCreated == 1: try: + try: + #delete old device portName which assign to this port, to prevent double port address in the table. + stmt = "UPDATE DeviceAddressTable SET portName = 'missing' WHERE portName = '"+newPortName+"'" + self.cur.execute(stmt) + except ValueError: + print "Error execute query" + stmt = "UPDATE DeviceAddressTable SET portName = '"+ newPortName + "', number = '"+ newNumber+ "' WHERE deviceName = '" + deviceName+ "'" self.cur.execute(stmt) return 1 diff --git a/Under-Testing/Server-Code-New/GSMHandler.py b/Under-Testing/Server-Code-New/GSMHandler.py index e964635..7cfcfb1 100644 --- a/Under-Testing/Server-Code-New/GSMHandler.py +++ b/Under-Testing/Server-Code-New/GSMHandler.py @@ -20,10 +20,9 @@ def openFile(): global portListen global portAddress - #String format: - # textFile = 'Account:username:password:server:handler:PortName:portCaller - - reader = csv.reader(open('handler.txt'), delimiter=':') + #String format: 'Account:username:password:server:handler:PortName:portCaller + File = open('handler.txt') + reader = csv.reader(File, delimiter=':') for row in reader: if str(row[0]) == 'Account': #username = str(row[1]) @@ -32,8 +31,7 @@ def openFile(): handler = str(row[4]) portAddress = str(row[5]) portListen = int(row[6]) - - #print 'this:', row + File.close() baudRate = 19200 @@ -82,13 +80,13 @@ def initSystem(): anyConnection = handlerSocket.openSocket() try : - logger.logEvent('we are here') + logger.logEvent('Trying connect to the device') gsmDevice = GSMClass.serialPort(portAddress, baudRate, 15) initDevice = gsmDevice.portInit(5) logger.logEvent('init device ' + str(initDevice)) except ValueError: - logger.logEvent('Error MAN') + logger.logEvent('Failure when trying connect to device') ######################################################## @@ -245,12 +243,10 @@ def receiveStart(): callSuccess = 'CALL OK' else: callSuccess = 'CALL NOT OK' - - - - sendMessage = handlerSocket.sendData(callSuccess) if deviceError==0: - tryHangUp = gsmDevice.hangUp() + tryHangUp = gsmDevice.hangUp() + sendMessage = handlerSocket.sendData(callSuccess) + return sendMessage ############################ @@ -304,10 +300,12 @@ def callStart(numberToCall): else: callSuccess = 'CALL NOT OK' - handResponse = handlerSocket.sendData(callSuccess) - if deviceError==0: - tryHangUp = gsmDevice.hangUp() + try: + tryHangUp = gsmDevice.hangUp() + except ValueError: + print 'Error when try hangup the call' + handResponse = handlerSocket.sendData(callSuccess) return handResponse ######################### diff --git a/Under-Testing/Server-Code-New/SIPHandler.py b/Under-Testing/Server-Code-New/SIPHandler.py index b2343f4..6758f88 100644 --- a/Under-Testing/Server-Code-New/SIPHandler.py +++ b/Under-Testing/Server-Code-New/SIPHandler.py @@ -14,6 +14,9 @@ def log_cb(level, str, len): # Receive events from incoming Call class Account(pj.AccountCallback): + def __init__(self, account=None): + pj.AccountCallback.__init__(self, account) + def on_incoming_call(self, call): global current_call @@ -22,11 +25,12 @@ class Account(pj.AccountCallback): call_cb = Calling(current_call) current_call.set_callback(call_cb) - logger.logEvent(current_call) + server.sendData('Incoming Call') + logger.logEvent('Current Call :'+current_call) call.answer(200) logger.logEvent("Answer call") - server.sendData('CALL OK') + sleep(2) #print 'Answer Call' try : logger.logEvent("Try to Hangup the call") @@ -38,8 +42,11 @@ class Account(pj.AccountCallback): if current_call <> None: logger.logEvent("Hangup call") #print 'Hangup Call' - call.hangup() - + try: + call.hangup() + except ValueError: + message = 'cant hangup the call' + #server.sendData('CALL OK') logger.logEvent('CALL OK') #creating object for calling @@ -53,20 +60,23 @@ class Calling(pj.CallCallback): if self.call.info().state <> pj.CallState.DISCONNECTED: if self.call.info().state_text == "CONNECTING": - #print 'Call Connecting' logger.logEvent("Call Connecting") - logger.logEvent('200') + try: + logger.logEvent('Try to hangup the call') + self.call.hangup() + logger.logEvent('Hangup OK') + except ValueError: + logger.logEvent('hangup failed, waiting destination hangup the call') + server.sendData('CALL OK') if self.call.info().last_reason == "Busy Here": - #print 'Number busy or offline' logger.logEvent('Number busy or Offline') server.sendData('CALL NOT OK') logger.logEvent('CALL NOT OK') if self.call.info().state == pj.CallState.DISCONNECTED: logger.logEvent('Call Disconnected') - #print 'Call Discont' current_call = None #function to make a call @@ -77,18 +87,17 @@ def make_call(uri): return acc.make_call(uri, cb) except pj.Error, e: - #print "408 " + str(e) - logger.logEvent('408') + logger.logEvent('Error when trying to call, 408') + server.sendData('CALL NOT OK') return None def openFile(): global sipServer, username, password, ip, portadd global port - #String format: - # textFile = 'Account:username:password:server:handler:PortName:portCaller - - reader = csv.reader(open('handler.txt'), delimiter=':') + #file format: 'Account:username:password:server:handler:PortName:portCommunication + File = open('handler.txt') + reader = csv.reader(File, delimiter=':') for row in reader: if str(row[0]) == 'Account': username = str(row[1]) @@ -97,15 +106,13 @@ def openFile(): #handler = str(row[4]) #portadd = str(row[5]) port = int(row[6]) + File.close() #send greeting message to the controller def greeting(): - global server - global status - #port = sys.argv[2] + global server server = None - status = None # create socket communication object server = ServerClass.ServerHandler(port) @@ -113,15 +120,15 @@ def greeting(): conn = server.openSocket() if server.connected == 1: - #connection to the controller esatablish + #connection to the controller establish + logger.logEvent('Connection Establish') if server.receiveData(25) == 'HELLO HANDLER': - #print 'GREETING' server.sendData('HELLO CONTROLLER') - status = 'OK' + return 1 else: - status = 'NOT OK' logger.logEvent('Cant connect to Controller') - sys.exit(1) + del server + return 0 def initLogFile(sipServer): @@ -152,7 +159,6 @@ def initState(): if message == 'RECEIVER': state = 'RECEIVER' - elif message[0:6] == 'CALLER': state = 'CALLER' no = message[7:] @@ -162,31 +168,12 @@ def initState(): num = no[7:] else: num = no - print 'INIT STATE', state - -def initHandler(): - global sipServer - global username - global password - - - accConf = sys.argv[1] # need to read from text file - - username = accConf[0:accConf.find(':')] - - line = accConf[accConf.find(':')+1:] - password = line[0:line.find(':')] - - newLine = line[line.find(':')+1:] - sipServer = newLine[0:newLine.find(':')] - lib = pj.Lib() stop = False -#print 'INIT SYSTEM' +print 'INIT SYSTEM' -#initHandler() openFile() setproctitle.setproctitle('SIP Handler') initLogFile(sipServer) @@ -203,9 +190,9 @@ while stop <> True: lib.start() lib.set_null_snd_dev() - greeting() - - + if greeting() != 1: + lib.destroy() + break try: initState() acc_cfg = pj.AccountConfig(str(sipServer),str(username),str(password)) @@ -228,7 +215,7 @@ while stop <> True: print data logger.logEvent(data) - #shutting down message + #get shutting down message if data == 'TERMINATE CONNECTION': print data logger.logEvent('Terminate') @@ -251,7 +238,6 @@ while stop <> True: logger.logEvent(data) logger.logEvent('Make a call to: ' + num) number = "sip:"+num+"@"+sipServer - #print number make_call(number) else: logger.logEvent('No number to call') @@ -267,21 +253,27 @@ while stop <> True: else: logger.logEvent('Unknow Message') server.sendData('Unknow Message') - server.closeConnection() - sys.exit(0.5) + break else: logger.logEvent("488 Not Acceptable Here") - lib.destroy() + server.sendData('DEVICE NOT READY') + break - except ValueError: - #print "401 Unauthorized " + str(e) + except ValueError: logger.logEvent("401 Unauthorized ") + break logger.logEvent("Goodbye") -acc.delete() -lib.destroy() -server.closeConnection() -lib = None -acc = None + +# trying to clean everything before shutting down +try: + acc.delete() + lib.destroy() + lib = None + acc = None + server.closeConnection() + del server +except ValueError: + message = 'trying failure' diff --git a/Under-Testing/Server-Code-New/gsmselftest.py b/Under-Testing/Server-Code-New/gsmselftest.py index 21037a5..ffd24c9 100644 --- a/Under-Testing/Server-Code-New/gsmselftest.py +++ b/Under-Testing/Server-Code-New/gsmselftest.py @@ -11,6 +11,9 @@ import WebsiteCommClass import signal import random from time import sleep +import setproctitle + +setproctitle.setproctitle('Controller Software') class bcolors: HEADER = '\033[95m' diff --git a/Under-Testing/Server-Code-New/startSoftware.py b/Under-Testing/Server-Code-New/startSoftware.py index 2d54560..b2beb58 100644 --- a/Under-Testing/Server-Code-New/startSoftware.py +++ b/Under-Testing/Server-Code-New/startSoftware.py @@ -1,7 +1,9 @@ #! /usr/bin/env python import ServerClass -import subprocess +import subprocess +import setproctitle +setproctitle.setproctitle('Start Software') while 1: # try connect to website server = ServerClass.ServerHandler(34600) @@ -9,9 +11,11 @@ while 1: test = server.receiveData(2) if test == 'START APP': print 'start' - #subprocess.Popen(args=['gnome-terminal','--command= python gsmselftest.py']) - script = 'gsmselftest.py' - subprocess.Popen(['python',script], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + try: + script = 'gsmselftest.py' + subprocess.Popen(['python',script], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + except ValueError: + print " - can't start controller software -" server.closeConnection() del server -- cgit v1.2.3-55-g7522