summaryrefslogtreecommitdiffstats
path: root/Under-Testing/Server-Code-New/SIPHandler.py
diff options
context:
space:
mode:
authorTriatmoko2011-11-17 04:24:51 +0100
committerTriatmoko2011-11-17 04:24:51 +0100
commit25128f34cdfae5318d1a38441bf09781ef91a2ba (patch)
tree004e2ee7c744b10acf024e945008d472dc8f03d0 /Under-Testing/Server-Code-New/SIPHandler.py
parentdelete unused files (diff)
downloadgsm-selftest-25128f34cdfae5318d1a38441bf09781ef91a2ba.tar.gz
gsm-selftest-25128f34cdfae5318d1a38441bf09781ef91a2ba.tar.xz
gsm-selftest-25128f34cdfae5318d1a38441bf09781ef91a2ba.zip
update loging files for every handler and fic device configuration function
Diffstat (limited to 'Under-Testing/Server-Code-New/SIPHandler.py')
-rw-r--r--Under-Testing/Server-Code-New/SIPHandler.py110
1 files changed, 51 insertions, 59 deletions
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'