environment variable or option are specified, ncc uses its compiled-in
TinyOS directory.
.TP
+\fB-tosscheduler=\fIcomponent,unique-string,interface-name,interface-definition,run-event,post-command\fR
+By default, nesC compiles uses of \fBtask void\fR \fItaskname\fR\fB() ...\fR to \fBvoid\fR
+\fItaskname\fR\fB()\fR,
+and \fBpost\fR \fItaskname\fR\fB()\fR to \fBTOS_post\fR\fB(\fR\fItaskname\fR\fB)\fR.
+.IP
+With this option, each task gets its own \fIinterface-definition\fR interface,
+the task implementation is transformed into a \fIrun-event event\fR and posts becomes a
+call to the \fIpost-command\fR command. This per-task interface is automatically
+connected to the parameterised \fIinterface-name\fR interface of scheduler
+\fIcomponent\fR component. The parameter id for the connection is chosen with
+\fBunique\fR("\fIunique-string\fR").
+.IP
+If this option is not set explicity, its parameters are assigned by default as follows:
+.IP
+-tosscheduler=\fITinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask\fR
+.TP
\fB-tossim\fR
Compile for the TOSSIM environment rather than a native platform. Every
directory in the search path will be duplicated, with the first copy having
$TOSDIR = $ENV{"TOSDIR"} if defined($ENV{"TOSDIR"});
$nescc = "@nescc_prefix@/bin/nescc";
$tossim = 0;
+$is_tos_1 = 0;
+$with_scheduler_flag = 1;
# Support platform directory renaming for 2.x
if (-d "$TOSDIR/platform") {
$platform = "platform";
+ $is_tos_1 = 1;
}
else {
$platform = "platforms";
$TOSDIR = $1;
$strip = 1;
}
+ elsif (/^-tosscheduler=(.*)/) {
+ $scheduler = $1;
+ $strip = 1;
+ }
elsif (/^-nostdinc$/) {
$nostdinc = 1;
}
}
}
+if (!defined $scheduler && !$is_tos_1) {
+ $scheduler = "TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask";
+}
+
if ($print_target) {
print $target, "\n";
exit 0;
unshift @new_args, "-DPLATFORM_\U$target";
push @new_args, @opts;
+if(!$is_tos_1) {
+ unshift @new_args, "-fnesc-scheduler=$scheduler";
+}
# old nesdoc: set the default topdir based on TOSDIR
my ($tosparent) = ($TOSDIR =~ m!^(.*)/.*?$!);
-mmcu=atmega128
-fnesc-target=avr
-fnesc-no-debug
- -fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask
);
+push @opts, "-fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask" if !$with_scheduler_flag;
push @opts, "-mingw-gcc" if $cygwin;
-gcc=msp430-gcc
-fnesc-target=msp430
-fnesc-no-debug
- -fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask
) );
-push @opts, "-mingw-gcc" if $cygwin;
\ No newline at end of file
+push @opts, "-fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask" if !$with_scheduler_flag;
+push @opts, "-mingw-gcc" if $cygwin;
-nostartfiles
-fnesc-target=env
-fnesc-no-debug
- -fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask
);
+push @opts, "-fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask" if !$with_scheduler_flag;
push @opts, "-mingw-gcc" if $cygwin;
$ENV{NESC_MACHINE} = "pointer=4,4 float=4,4 double=8,4 long_double=8,4 short=2,2 int=4,4 long=4,4 long_long=8,4 int1248_align=1,2,4,4 wchar_size_size=4,4 char_wchar_signed=false,true";
-mmcu=atmega1281
-fnesc-target=avr
-fnesc-no-debug
- -fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask
);
+push @opts, "-fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask" if !$with_scheduler_flag;
push @opts, "-mingw-gcc" if $cygwin;
-mmcu=atmega128
-fnesc-target=avr
-fnesc-no-debug
- -fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask
);
+push @opts, "-fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask" if !$with_scheduler_flag;
push @opts, "-mingw-gcc" if $cygwin;
-mmcu=atmega128
-fnesc-target=avr
-fnesc-no-debug
- -fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask
);
+push @opts, "-fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask" if !$with_scheduler_flag;
push @opts, "-mingw-gcc" if $cygwin;
-mmcu=atmega128
-fnesc-target=avr
-fnesc-no-debug
- -fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask
);
+push @opts, "-fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask" if !$with_scheduler_flag;
push @opts, "-mingw-gcc" if $cygwin;
-gcc=gcc
-fnesc-target=pc
-fnesc-no-debug
- -fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask
);
+
+push @opts, "-fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask" if !$with_scheduler_flag;
-mmcu=msp430x149
-fnesc-target=msp430
-fnesc-no-debug
- -fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask
);
+push @opts, "-fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask" if !$with_scheduler_flag;
push @opts, "-mingw-gcc" if $cygwin;
-mmcu=msp430x1611
-fnesc-target=msp430
-fnesc-no-debug
- -fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask
-
);
+push @opts, "-fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask" if !$with_scheduler_flag;
push @opts, "-mingw-gcc" if $cygwin;
-gcc=msp430-gcc
-mmcu=msp430x1611
-fnesc-target=msp430
- -fnesc-no-debug
- -fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask);
+ -fnesc-no-debug);
+push @opts, "-fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask" if !$with_scheduler_flag;
push @opts, "-mingw-gcc" if $cygwin;
#@commonplatforms = ("msp430");