Skip to content

Commit decff0b

Browse files
committed
Allow user to specify channel and panid when starting web demo server
Signed-off-by: Ang, Chee Hong <[email protected]>
1 parent 7f87784 commit decff0b

File tree

2 files changed

+50
-32
lines changed

2 files changed

+50
-32
lines changed

examples/sparrow/wsdemoserver.py

+38-22
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
DEBUG = 0
4040

41-
import subprocess, thread, string, tlvlib, socket, binascii
41+
import sys, subprocess, thread, string, tlvlib, socket, binascii
4242
from SimpleWebSocketServer import WebSocket, SimpleWebSocketServer
4343
import json, deviceserver, struct, wspserial, wsptlvs, wspnodes
4444
import httpd
@@ -155,22 +155,6 @@ def setup_state():
155155
global nbr_address
156156
global device_manager
157157

158-
device_manager = deviceserver.DeviceServer()
159-
try:
160-
if not device_manager.setup():
161-
print "No border router found. Please make sure a border router is running!"
162-
sys.exit(1)
163-
return
164-
except socket.timeout:
165-
print "No border router found. Please make sure a border router is running!"
166-
sys.exit(1)
167-
return
168-
except Exception as e:
169-
print e
170-
print "Failed to connect to border router."
171-
sys.exit(1)
172-
return
173-
174158
nbr_address = device_manager.router_address
175159
if nbr_address == None:
176160
print "Did not find the address of the border router"
@@ -285,8 +269,40 @@ def test_listener(device_event):
285269
for ws in websockets:
286270
ws.sendMessage(data)
287271

288-
print "Starting demo server"
289-
setup_state()
290-
server = SimpleWebSocketServer('', 8001, DemoSocket)
291-
plugins = plugins + [wspserial.SerialCommands(), wsptlvs.TLVCommands(), wspnodes.NodeCommands()]
292-
server.serveforever()
272+
def usage():
273+
print "Usage:",sys.argv[0],"[-c channel] [-P panid]"
274+
exit(0)
275+
276+
if __name__ == "__main__":
277+
arg = 1
278+
279+
device_manager = deviceserver.DeviceServer()
280+
try:
281+
if not device_manager.setup():
282+
print "No border router found. Please make sure a border router is running!"
283+
exit(1)
284+
except socket.timeout:
285+
print "No border router found. Please make sure a border router is running!"
286+
exit(1)
287+
except Exception as e:
288+
print e
289+
print "Failed to connect to border router."
290+
exit(1)
291+
while len(sys.argv) > arg + 1:
292+
if sys.argv[arg] == "-c":
293+
device_manager.radio_channel = tlvlib.decodevalue(sys.argv[arg + 1])
294+
elif sys.argv[arg] == "-P":
295+
device_manager.radio_panid = tlvlib.decodevalue(sys.argv[arg + 1])
296+
else:
297+
break
298+
arg += 2
299+
300+
if len(sys.argv) > arg:
301+
if sys.argv[arg] == "-h":
302+
usage()
303+
device_manager.set_channel_panid()
304+
print "Starting demo server"
305+
setup_state()
306+
server = SimpleWebSocketServer('', 8001, DemoSocket)
307+
plugins = plugins + [wspserial.SerialCommands(), wsptlvs.TLVCommands(), wspnodes.NodeCommands()]
308+
server.serveforever()

tools/sparrow/deviceserver.py

+12-10
Original file line numberDiff line numberDiff line change
@@ -587,16 +587,6 @@ def setup(self):
587587
print "Error - could not bind to the address", self.udp_address
588588
return False
589589

590-
# set radio channel
591-
t1 = tlvlib.create_set_tlv32(self.radio_instance,
592-
tlvlib.VARIABLE_RADIO_CHANNEL,
593-
self.radio_channel)
594-
# set radio PAN ID
595-
t2 = tlvlib.create_set_tlv32(self.radio_instance,
596-
tlvlib.VARIABLE_RADIO_PAN_ID,
597-
self.radio_panid)
598-
tlvlib.send_tlv([t1,t2], self.router_host)
599-
600590
# set-up beacon to ...
601591
IPv6Str = binascii.hexlify(socket.inet_pton(socket.AF_INET6, self.udp_address))
602592
BEACON = "fe02010a020090da01%08x"%self.location + "18020090da03" + IPv6Str + "%4x"%self.udp_port + "000000"
@@ -612,6 +602,17 @@ def setup(self):
612602
# tlvlib.print_tlv(t[0])
613603
return True
614604

605+
def set_channel_panid(self):
606+
# set radio channel
607+
t1 = tlvlib.create_set_tlv32(self.radio_instance,
608+
tlvlib.VARIABLE_RADIO_CHANNEL,
609+
self.radio_channel)
610+
# set radio PAN ID
611+
t2 = tlvlib.create_set_tlv32(self.radio_instance,
612+
tlvlib.VARIABLE_RADIO_PAN_ID,
613+
self.radio_panid)
614+
tlvlib.send_tlv([t1,t2], self.router_host)
615+
615616
def serve_forever(self):
616617
# Initialize if not already initialized
617618
if not self.router_instance:
@@ -755,5 +756,6 @@ def usage():
755756
print "Failed to connect to border router."
756757
sys.exit(1)
757758

759+
server.set_channel_panid()
758760
server.serve_forever()
759761
print "*** Error - device server stopped"

0 commit comments

Comments
 (0)