Changeset 25516 in project


Ignore:
Timestamp:
11/17/11 08:18:49 (10 years ago)
Author:
Ivan Raikov
Message:

signal-diagram: created auxiliary procedure events to identify the names of discrete event variables in a signal diagram

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/4/signal-diagram/trunk/signal-diagram.scm

    r25511 r25516  
    4242         symbolic-constants enum-freevars
    4343
    44          construct dataflow codegen/Octave codegen/scheme codegen/ML
     44         construct dataflow events codegen/Octave codegen/scheme codegen/ML
    4545         )
    4646
     
    11801180
    11811181
     1182(define (events f)
     1183  (let recur ((f f) (ax '()))
     1184    (let ((sig (sfarrow-sig f)))
     1185      (case (car sig)
     1186        ((RTRANSITION)
     1187         (let ((ef (fourth sig)) (eg (fifth sig)))
     1188           (let* ((ax1 (cons ef ax))
     1189                  (ax2 (if (symbol? eg)  (cons eg ax1) ax1)))
     1190             (fold recur ax2 (cdr (sfarrow-children f)))
     1191             )))
     1192        ((TRANSIENT)
     1193         (let ((e (fourth sig)))
     1194           (let* ((ax1 (cons e ax)))
     1195             (fold recur ax1 (cdr (sfarrow-children f)))
     1196             )))
     1197        (else ax)
     1198        ))
     1199    ))
     1200
     1201
    11821202(define (codegen/Octave name f #!key (initial #f) (pre #t) (solver #f))
    11831203
     
    11931213           (fcodegen ((sfarrow-codegen f) input fenv dfe ))
    11941214           (relations-expr (relations-codegen f input))
    1195            (events   (let recur ((f f) (ax '()))
    1196                        (let ((sig (sfarrow-sig f)))
    1197                          (case (car sig)
    1198                            ((RTRANSITION)
    1199                             (let ((ef (fourth sig)) (eg (fifth sig)))
    1200                               (let* ((ax1 (cons ef ax))
    1201                                      (ax2 (if (symbol? eg)  (cons eg ax1) ax1)))
    1202                                 (fold recur ax2 (cdr (sfarrow-children f)))
    1203                                 )))
    1204                            ((TRANSIENT)
    1205                             (let ((e (fourth sig)))
    1206                               (let* ((ax1 (cons e ax)))
    1207                                 (fold recur ax1 (cdr (sfarrow-children f)))
    1208                                 )))
    1209                            (else ax)
    1210                            ))
    1211                        ))
    12121215           (globals   (filter-map
    12131216                       (lambda (x)
     
    12351238        "endfunction" nl))
    12361239
    1237       (if (pair? events)
    1238         (let ((event-vector (map (lambda (x) (value->Octave (V:Op '- (list (V:Sel x (V:Var 'input)) (V:C 1.))))) events)))
    1239           (print-fragments
    1240            (list
    1241             "function " (name/Octave "retval") " = " (name/Octave (string-append (->string name) "_event")) " (input)" nl
    1242             "retval = [" (intersperse event-vector ",") "];" nl
    1243             "endfunction" nl))))
    1244          
    12451240     
    12461241      (if initial
Note: See TracChangeset for help on using the changeset viewer.