summaryrefslogtreecommitdiffstats
path: root/notFinishedCode/gsmHandler.py
blob: 31b39ee9d10eb71a2a8db6c16696c4c6037b2b64 (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
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

	#create the two objects, one for serial port other for socket
	cellPhone = GSMClass.serialPort('/dev/ttyUSB0', 19200, 10)
        handler = ServerClass.ServerHandler(50009) #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))

			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
				pass
	


			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()
				while(response != 1):
					response = cellPhone.currentCall()
				#reufe add here an timer for 5 seconds if other side doesn't respond
				
				if response == 1:
					cellPhone.getSignalQuality()
					signalQuality = cellPhone.signalStrength
				
				if response == 1:
					handler.sendData('CALLOK')
				else:
					handler.sendData('CALLNO')

				triedHangUp = cellPhone.hangUp()
				#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))
				
				if triedToRec == 1:
					#I received the call successfully
					triedSignal = cellPhone.getSignalQuality()
					if triedSignal == 1:
						signalQuality = handler.signalStrength
						logger.logEvent('Signal quality in dBm: ' + str(signalQuality))
					
					triedHangUp = cellPhone.hangUp()
					logger.logEvent('Receiver call tried to hang up: ' + str(triedHangUp))

					sendMessage = handler.sendData('CALLOK')
				else:
					sendMessage = handler.sendData('CALLNO')


				#do here rest receiver
			else:
				#we have a serious problem here
				handler.sendData('SHIT')
				

			recMessage = handler.receiveData(0)

			if recMessage == 'TERMINATE':
				close = handler.closeConnection()
				logger.logEvent('Closed connection: ' + str(close))

		del cellPhone
		del handler