summaryrefslogtreecommitdiffstats
path: root/notFinishedCode/gsmHandler.py
blob: f5bb11a4298ad8a0dfd5c6affb75b2f9cd5cfe7a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
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