diff options
author | Thomas White <taw@physics.org> | 2020-08-20 17:27:10 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2020-08-20 17:27:10 +0200 |
commit | 495e117dfd75dc2d0eb6ef85b13a90a604d526e0 (patch) | |
tree | 45f455ea04ac6e9f7e35fe01128aa2e901836d40 /guile | |
parent | 5a67759a775f23fb2b5a22fd31a81f4c9d3ad9ee (diff) |
Macros for fixture attributes
Diffstat (limited to 'guile')
-rw-r--r-- | guile/starlet/base.scm | 37 | ||||
-rw-r--r-- | guile/starlet/fixture-library/generic.scm | 11 |
2 files changed, 34 insertions, 14 deletions
diff --git a/guile/starlet/base.scm b/guile/starlet/base.scm index 41a2eb1..eba21c9 100644 --- a/guile/starlet/base.scm +++ b/guile/starlet/base.scm @@ -11,11 +11,12 @@ start-ola-output patch-fixture! set-attr! home-attr! home-all! blackout scanout-freq make-empty-state register-state! - percent->dmxval msb lsb chan + percent->dmxval msb lsb hirestime expand-state set-in-state! state-for-each merge-states-htp value->number get-attr-name get-state-hash-table scanout-fixture - get-fixture-universe get-fixture-addr)) + get-fixture-universe get-fixture-addr + attr-continuous attr-boolean attr-list)) (define-class <fixture-attribute> (<object>) (name @@ -178,9 +179,6 @@ (define (lsb val) (round-dmx (logand (round val) #b11111111))) -(define (chan channel start-addr) - (- (+ channel start-addr) 1)) - (define (state-for-each func state) (hash-for-each (lambda (key value) @@ -354,3 +352,32 @@ (set! start-time (hirestime)) (scanout-loop 0)) (scanout-loop (+ count 1))))))) + + +(define-syntax attr-continuous + (syntax-rules () + ((_ attr-name attr-range attr-home-value) + (make <fixture-attribute> + #:name attr-name + #:range attr-range + #:type 'continuous + #:home-value attr-home-value)))) + + +(define-syntax attr-boolean + (syntax-rules () + ((_ attr-name attr-home-value) + (make <fixture-attribute> + #:name attr-name + #:type 'boolean + #:home-value attr-home-value)))) + + +(define-syntax attr-list + (syntax-rules () + ((_ attr-name attr-allowed-values attr-home-value) + (make <fixture-attribute> + #:name attr-name + #:range attr-allowed-values + #:type 'list + #:home-value attr-home-value)))) diff --git a/guile/starlet/fixture-library/generic.scm b/guile/starlet/fixture-library/generic.scm index b92569d..f90bf3a 100644 --- a/guile/starlet/fixture-library/generic.scm +++ b/guile/starlet/fixture-library/generic.scm @@ -4,16 +4,9 @@ #:export (<generic-dimmer>)) (define-class <generic-dimmer> (<fixture>) - (attributes - #:init-form - (list - - (make <fixture-attribute> - #:name 'intensity - #:range '(0 100) - #:type 'continuous - #:home-value 0)))) + #:init-form (list + (attr-continuous 'intensity '(0 100) 0)))) (define-method (scanout-fixture (fixture <generic-dimmer>) |