Greetings,

I am working on an extension to TOSSIM. The idea is to bind Sensor
components to external data sources (i.e. synthetic data generators or
DB tables containing real historical data). With such an extension,
data management algorithms for WSN can be evaluated in a more thorough
way.  As the development proceeds, I came up with the following
concerns on how to make the extension less invasive to existing TOSSIM
code.

1. Extending "sim.extra" v.s. Adding a new "sim-custom.extra":

My extension needs to link a separate object file into the Tossim app.
So far as I know, this can be done in three ways, i) hack
"$TOSROOT/support/sim.extra", ii) put custom make rules in app's local
Makefile, iii) add a new "sim-custom.extra" to "$TOSROOT/support/".
Unfortunately all three methods have some drawbacks.

For the 1st method, existing code of TinyOS distribution needs to be
modified, which is invasive. And it potentially increases maintanence
cost (i.e. need to modify all "$TOSROOT/support/sim*.extra, including
"sim.extra", "sim-fast.extra" and "sim-sf.extra" and those from
upcoming extensions).

For the 2nd, the app's local Makefile becomes complicated, and
contains details that app. developers generally need not to know.
Worse still, these complicated details are duplicated among all
relevant app's Makefile.

For the 3rd, each app. can only be compiled with one particular TOSSIM
extension. For example, if "sim-custom.extra" is modified from
"sim.extra", then the resulting app. has to be built with "make micaz
sim-custom", and it thus cannot utilize TOSSIM Live features (which
need to be built with "make micaz sim-sf").

Could anyone suggest which of the above methods is *recommended*?


2. Custom initialization at the start of TOSSIM applications:

My extension needs to initialize a *singleton* connection to external
data source at the start of simulation. I understand this can be done
by hacking "$TOSROOT/tos/lib/tossim/sim_tossim.c" (i.e. adding the
custom init() function into sim_init()). But again, this is invasive
to existing code.

Of couse, the initialization task can be pushed to app's simulation
scripts. But I am seeking to avoid this design, because it adds
potential burden / trap to app. developers.

Could anyone suggest a better way / place invoking this initialization?

--
Many Thanks,
LIU Yu

_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to