Example Application: Surge MintRoute

  1. Node Configuration
  2. Code Generation
  3. Updating Makefile
  4. Build
  5. Run

 

  1. Node Configuration

#include "gen/cSurgeWMEWMA_TinyOSModule.h"
#include "gen/cSurgeWMEWMA_Main.h"

   cSurgeWMEWMA_Main *m = new cSurgeWMEWMA_Main(this,main,"Main",getIndex());
   m->StdControl_init();
   m->StdControl_start();
 
  1. Code Generation

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 SurgeWMEWMA.nc ../Application.nc
[root@sinan components]# cd ..
[root@sinan tictoc]# ./nesct.exe Application.nc

done.

  1. Updating Makefile

  Type makemake.bat/makemake.sh to create new Makefile for Win32/Linux.
  1. Build

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

  1. Run

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

To complicate things, let's use another topology file in ned directory.

[root@sinan tictoc]# cd ned
[root@sinan ned]# cp surge.ned ../bin/tictoc1.ned

Start Surge java tool.
[root@sinan tictoc]# java net.tinyos.surge.MainClass 125

This time I'll set only route debug environment variable. 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.

Run tictoc. The simulation screen should like this.
 

              

[root@sinan tictoc]# export DBG=usr3,route
[root@sinan tictoc]# ./tictoc
Running simulation...
[0] 0:0:0.97656250:MultiHopWMEWMA timer task.
[0] 0:0:0.97656250: addr prnt cost misd rcvd lstS hop rEst sEst Desc
[0] 0:0:0.97656250:MultiHopWMEWMA: Parent = 126
[1] 0:0:0.97656250:MultiHopWMEWMA timer task.
[1] 0:0:0.97656250: addr prnt cost misd rcvd lstS hop rEst sEst Desc
[2] 0:0:0.97656250:MultiHopWMEWMA timer task.
[2] 0:0:0.97656250: addr prnt cost misd rcvd lstS hop rEst sEst Desc
[0] 0:0:1.00781250:MultiHopWMEWMA Sending route update msg.
[0] 0:0:1.00781250:Current cost: 0.
[0] 0:0:1.00781250:Added total of 0 entries to route msg.
[1] 0:0:1.00781250:MultiHopWMEWMA Sending route update msg.
[1] 0:0:1.00781250:Current cost: 255.
[1] 0:0:1.00781250:Added total of 0 entries to route msg.
[2] 0:0:1.00781250:MultiHopWMEWMA Sending route update msg.
[2] 0:0:1.00781250:Current cost: 255.
[2] 0:0:1.00781250:Added total of 0 entries to route msg.
[0] 0:0:2.00000000:MultiHopWMEWMA: Sequence Number: 0
[0] 0:0:2.00000000:this message is going from UART
[0] 0:0:4.00000000:MultiHopWMEWMA: Sequence Number: 0
[0] 0:0:4.00000000:this message is going from UART
[0] 0:0:6.00000000:MultiHopWMEWMA: Sequence Number: 0
[0] 0:0:6.00000000:this message is going from UART
[0] 0:0:8.00000000:MultiHopWMEWMA timer task.
[0] 0:0:8.00000000: addr prnt cost misd rcvd lstS hop rEst sEst Desc
[0] 0:0:8.00000000: 1 255 255 0 4 3 255 0 0 0
[0] 0:0:8.00000000: 2 255 255 0 4 3 255 0 0 0
[0] 0:0:8.00000000:MultiHopWMEWMA: Parent = 126
[1] 0:0:8.00000000:MultiHopWMEWMA timer task.
[1] 0:0:8.00000000: addr prnt cost misd rcvd lstS hop rEst sEst Desc
[1] 0:0:8.00000000: 0 126 0 0 1 0 0 0 0 0
[1] 0:0:8.00000000: 2 255 255 0 4 3 255 0 0 0
[2] 0:0:8.00000000:MultiHopWMEWMA timer task.
[2] 0:0:8.00000000: addr prnt cost misd rcvd lstS hop rEst sEst Desc
[2] 0:0:8.00000000: 0 126 0 0 1 0 0 0 0 0
[2] 0:0:8.00000000: 1 255 255 0 4 3 255 0 0 0
[0] 0:0:8.00000000:MultiHopWMEWMA: Sequence Number: 0


If you notice, the event take too much of time in the TK window, one way of speeding up the simulation is to build the simulation for command environment. Go back to tictoc directory. Edit your makefile and change the definition of USER_IFLIBS from TK to CMD. Use # for making a line comment. Then make again. Copy and run tictoc again.

[root@sinan tictoc]# make
[root@sinan tictoc]# cp tictoc bin
[root@sinan tictoc]# cd bin
[root@sinan bin]# ./tictoc

Wait for a while. Route discovery in Surge takes a while. Results will not come before 2 simulation minutes.

 


 




                               

 


This project has been supported by Featherlight project at University of Twente, the Netherlands and European Embedded WiseNt project at Yeditepe University.