Example Application: Straw
Straw collects data reliably from a mote to PC over multi-hop network. When command is submitted to JAVA code in PC, it interacts with TinyOS code in a mote, and collects data without loss.
http://www.eecs.berkeley.edu/~binetude/ggb/Straw.html
Straw example requires node 0 to be TOSBase and rest of the nodes to run DataCollector application.
#include "gen/cTOSBase_TinyOSModule.h" #include "gen/cTOSBase_Main.h" #include "gen/cStrawDataCollector_TinyOSModule.h" #include "gen/cStrawDataCollector_Main.h" if (getIndex() == 0) { cTOSBase_Main *m = new cTOSBase_Main(this,main,"Main",getIndex()); m->StdControl_init(); m->StdControl_start(); } else { cStrawDataCollector_Main *m = new cStrawDataCollector_Main(this,main,"Main",getIndex()); m->StdControl_init(); m->StdControl_start(); }
|
NesCT is going to build all the classes in gen directory.
Replace "cp" with "copy" and slash (/) with backslash (\) for
windows operating system at the following instructions.
[root@sinan tictoc]# cd components/
[root@sinan components]# cp TosBase.nc ../Application.nc
[root@sinan tictoc]# ./nesct.exe Application.nc
[root@sinan tictoc]# cd components/
[root@sinan components]# cp StrawDataCollector.nc
../Application.nc
[root@sinan components]# cd ..
[root@sinan tictoc]# ./nesct.exe Application.nc
done.
Type makemake.bat/makemake.sh to create new Makefile for Win32/Linux.Type "make" to build the binary.
[root@sinan tictoc]# make
g++ -c -g -fpermissive -fPIC -DWITH_NETBUILDER -w
-DTOSNODES=1000 -DLINUX -DPLATFORM_OMNETPP -I./include
-I/root/projects/tinyos-1.x/tos/interfaces -I./include_tos
-I/opt/omnetpp-3.2/include simstart.cc
g++ tictoc1_n.o debug.o simstart.o tinyos.o tinyosmain.o
tossim.o txc1.o -g -L/opt/omnetpp-3.2/lib -lenvir -lcmdenv
-lsim_std -lnedxml -lxml2 -ldl -lstdc++ -lpthread -o tictoc
echo>.tstamp
Edit omnetpp.ini file and change wait-for-sf to true. After enabling this option, the simulation will wait 10 seconds before starting to allow sf to connect.
Start SerialForwarder by running ./bin/sf_sim . For windows,
you may need to enter the contents of the file yourself in a
console windows (cygwin). The exceptions will be lost once we
start the simulator.
[root@sinan tictoc]# ./bin/sf_sim
Listening to tossim-serial
SF enabled, 0 clients, 0 packets read, 0 packets written
getenv JNI library not found. Env.getenv will not work
(please consult installation directions in
tinyos-1.x/tools/java/net/tinyos/util/Env.INSTALL)
Platform avrmote
Opening tossim-serial source
Connecting to Tossim event port at localhost:10585
Listening for client connections on port 9001
SF enabled, 0 clients, 0 packets read, 0 packets written
java.net.ConnectException: Connection refused
Let's enable USR1 and USR2 options for demonstration purposes.
Use "export" keyword for linux and "set" keyword for windows
to change environment variable. You should see an output
similar to this in TK window.
The simulation screen should like this.
[root@sinan bin]# export DBG=usr1,usr2,usr3
[root@sinan bin]# ./tictoc
Start another console window, enter java directory and run Straw listener.
[root@sinan tictoc]#export MOTEID=0
[root@sinan tictoc]#cd java
[root@sinan tictoc]#java net/tinyos/straw/DataCenter**** Straw
****
SRSRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRRRRRSNode 2 does not respond
SNode 2 does not respond
SNode 2 does not respond
S
Known problems from Straw:
With Mint route, after sending large number of packets at high speed, some link blacks out. But link revives after some time. SMT divides one big transfer into two smaller transfers. And it waits 3 min between transfers for routing layer to recover.
I tried both WMEWMA routing and regular routing. Both of them halts at the same point.