aboutsummaryrefslogtreecommitdiff
path: root/guile
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2020-08-20 17:27:10 +0200
committerThomas White <taw@physics.org>2020-08-20 17:27:10 +0200
commit495e117dfd75dc2d0eb6ef85b13a90a604d526e0 (patch)
tree45f455ea04ac6e9f7e35fe01128aa2e901836d40 /guile
parent5a67759a775f23fb2b5a22fd31a81f4c9d3ad9ee (diff)
Macros for fixture attributes
Diffstat (limited to 'guile')
-rw-r--r--guile/starlet/base.scm37
-rw-r--r--guile/starlet/fixture-library/generic.scm11
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>)