-
Notifications
You must be signed in to change notification settings - Fork 0
/
CenterModuleBasic.py
98 lines (71 loc) · 2.05 KB
/
CenterModuleBasic.py
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
import serial
import time
import OSC
from xbee import XBee,ZigBee
#OSC
send_addr = 'localhost', 5555
c = OSC.OSCClient()
c.connect(send_addr)
oscmsg = OSC.OSCMessage()
serial_port = serial.Serial('/dev/ttyAMA0', 57600)
xbee = XBee(serial_port)
# OSC send enable : 1
oscSendEnable = 0
dest_addrs = ['\x0a\x0a', '\x1b\x1b', '\x2c\x2c']
nodeAlive = [1, 1, 1]# 1 is alive, 0 is unknown, -1 is dead
updateTime = 5
timeInterval = 0
isNetworkStart = 1 #0 default
netCheckMode = 0
curMilliTime = lambda: int(round(time.time() * 1000))
def dataProcess(data) :
if netCheckMode == 1:
print data
global isNetworkStart
isNetworkStart = 1
global timeInterval
timeInterval = 0
fwRSSI = [0, 0, 0]
rssi = [0, 0, 0]
idStr = ["3->1", "1->2", "2->3"]
distID = ord(data['rf_data'][0])
fwRSSI[distID-1] = ord(data['rf_data'][1])
rssi[distID-1] = ord(data['rssi'][0])
#node alive checker
if fwRSSI[distID-1] == 120: #'x'
nodeAlive[distID-1] = 1
print("Node %d is alive!" % distID)
else :
nodeAlive[distID-1] = 0
#send OSC to PureData (data, rssi)
oscmsg.setAddress("/dist_" + idStr[distID-1])
oscmsg.append(fwRSSI[distID-1])
oscmsg.append(rssi[distID-1])
if oscSendEnable :
c.send(oscmsg)
oscmsg.clearData()
if distID == 1:
print("DistanceID: %s / forwarded RSSI: %d" %(idStr[distID-1], fwRSSI[distID-1]))
print("RSSI between CENTER and MODULE %d : %d" %(distID, rssi[distID-1]))
xbee = XBee(serial_port, callback=dataProcess)
def checkNode() :
for i in dest_addrs:
xbee.tx(dest_addr=i, data='N')
while True:
try:
timeInterval = timeInterval + 1
time.sleep(0.1)
# print timeInterval
if isNetworkStart :
if timeInterval > updateTime :
print "Networking broken."
checkNode()
netCheckMode = 1
#Fix it
# isNetworkStart = 0
except KeyboardInterrupt:
break
#close
xbee.halt()
serial_port.close()
c.close()