From: marko Date: Tue, 24 Jun 2008 06:44:48 +0000 (+0000) Subject: Add square function generator. The generator alternates output between X-Git-Url: https://git.entuzijast.net/?a=commitdiff_plain;h=84454d32e1e514fdc443fc85462fd13d7a3b78e2;p=imunes.git Add square function generator. The generator alternates output between two predefined values each N seconds. Example: events { 40 duplicate square 0 10 20 } alternates output between 0 and 10 each 20 secons, starting at 40-th second of the experiment execution. General note: none of the event scheduling mechanisms can be controlled via the GUI, but only through manual editing of the config file. Another change while here: do not invoke execSetLinkParams() on events which are changing only link annotations (width, color). Bug found by: Submitted by: Reviewed by: Approved by: Obtained from: --- diff --git a/eventsched.tcl b/eventsched.tcl index badd5df..5d41350 100644 --- a/eventsched.tcl +++ b/eventsched.tcl @@ -23,7 +23,7 @@ # SUCH DAMAGE. # -# $Id: eventsched.tcl,v 1.5 2008/06/24 05:03:38 marko Exp $ +# $Id: eventsched.tcl,v 1.6 2008/06/24 06:44:48 marko Exp $ proc evsched {} { @@ -38,6 +38,8 @@ proc evsched {} { if { $oper_mode == "exec" } { if { $sched_init_done == 0 } { sched_init + after 1000 evsched + return } } else { set sched_init_done 0 @@ -95,21 +97,40 @@ proc evsched {} { set need_sort 1 } } + } elseif { [lindex $params 0] == "square" } { + set lo [lindex $params 1] + set hi [lindex $params 2] + set next [expr $deadline + [lindex $params 3]] + set value $hi + if { $next > $deadline } { + set nextev \ + [lsearch $eventqueue "* $class $object $target *"] + if { $nextev == -1 || \ + [lindex [lindex $eventqueue $nextev] 0] > $next } { + lappend eventqueue \ + "$next [lrange $event 1 4] $hi $lo [lindex $params 3]" + set need_sort 1 + } + } } else { set value [lindex $params 0] } switch -exact -- $target { bandwidth { setLinkBandwidth $object $value + execSetLinkParams $eid $object } delay { setLinkDelay $object $value + execSetLinkParams $eid $object } ber { setLinkBER $object $value + execSetLinkParams $eid $object } duplicate { setLinkDup $object $value + execSetLinkParams $eid $object } width { setLinkWidth $object $value @@ -122,7 +143,6 @@ proc evsched {} { } } } - execSetLinkParams $eid $object set changed 1 } }