]> git.entuzijast.net Git - imunes.git/commitdiff
Add square function generator. The generator alternates output between
authormarko <marko>
Tue, 24 Jun 2008 06:44:48 +0000 (06:44 +0000)
committermarko <marko>
Tue, 24 Jun 2008 06:44:48 +0000 (06:44 +0000)
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:

eventsched.tcl

index badd5df2d3c860ba37c1a1c4365f3f9d818e1d80..5d413506f853b93f8907c091072c3e86c5cceb18 100644 (file)
@@ -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
        }
     }