Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • send packets to motes via the coap library
  • wait on incoming packets
  • keep track of all motes that are in its ring (in this case with a simple queue) and send instructions in a rotation
  • handle error handling - motes dropping off unexpectedly, packet loss, receiving unexpected packets

Code - firmware

The firmware code is the main addition (openwsn-fw), which runs on the motes.

Here is the firmware pull request: https://github.com/openwsn-berkeley/openwsn-fw/pull/128/List of files changed:

File ChangedDescription
bsp/boards/python/openwsnmodule_obj.h

...

add rrt_vars_t struct to python OpenMote struct
inc/opendefs.h

...

add ringmaster port constant on which to listen to and send ring master packets
openapps/SConscript

...

add rrt as part of the default apps to be built with SCons
openapps/openapps.

...

add rrt_init(), the initialization function for rrt resource
openapps/rrt/rrt.c

...

add rrt resource to openapps, with the code for handling all mote actions.  A GET action sends confirmation to the ringmaster, a POST action accepts payloads and determines what to do next (forward, perform action, or nothing), and a DELETE (which unregisters a mote).  rrt.c also defines a function sendCoAPMsg, which sends a char to either an address or a hardcoded ringmaster address
openapps/rrt/rrt.h

...

define function signatures to be used outside of rrt.c, as well as the rrt_vars_t struct
openapps/rrt/rrt.py

...

simple python program for testing python coap library functionality - no purpose other than coap library experimentation
openstack/04-TRAN/opencoap.h

...

hardcoded ringmaster address added here 
openstack/04-TRAN/openudp.c

...

add switch blocks for the ringmaster port in

...

openudp_receive and

...

openudp_sendDone
openstack/SConscript

...

add proper path for rrt folder
projects/python/SConscript.env

...

add proper constants to get the proper objectification

 

 

...


Code - ringmaster.py

Here is the repo: https://github.com/openwsn-berkeley/ringmaster

To run the client, simply execute 

python ringmaster.py

This will open up communication with OpenWSN motes on default port 15000.

This script maintains a stack (array) of registered motes that have sent a discovery packet to it.  It maintains a pointer which rotates through the stack.