((section 2 "Outdated egg!" (p "This is an egg for CHICKEN 4, the unsupported old release.  You're almost certainly looking for " (int-link "/eggref/5/ola" "the CHICKEN 5 version of this egg") ", if it exists.") (p "If it does not exist, there may be equivalent functionality provided by another egg; have a look at the " (link "https://wiki.call-cc.org/chicken-projects/egg-index-5.html" "egg index") ". Otherwise, please consider porting this egg to the current version of CHICKEN.")) (section 2 "ola" (toc)) (section 2 "Description" (p "Basic bindings for libola, Open Lighting Architecture.  Classes covered so far are DmxBuffer and StreamingClient.") (p "For bug reports, feature requests, and development versions, visit the " (link "https://github.com/retroj/ola-egg/" "github project page") ".")) (section 2 "Authors" (ul (li "John J Foerch"))) (section 2 "Requirements" (section 3 "Chicken Eggs" (ul (li (int-link "r7rs")) (li (int-link "srfi-99")) (li (int-link "foreigners")) (li (int-link "list-utils")) (li (int-link "matchable")))) (section 3 "C Headers" (ul (li "ola (libola-dev)")))) (section 2 "API" (section 3 "Version" (def (sig (procedure "(ola-version) => (major minor revision)" (id ola-version))) (p "Return ola's version as a list.")) (def (sig (procedure "(ola-version-string) => string" (id ola-version-string))) (p "Return ola's version as a string."))) (section 3 "Logging" (def (sig (procedure "(init-logging [level] [output]) => bool" (id init-logging))) (p "Level may be one of the following symbols:") (ul (li "log-level/none") (li "log-level/fatal") (li "log-level/warn") (li "log-level/info") (li "log-level/debug") (li "log-level/max")) (p "Output may be one of the following symbols:") (ul (li "log-output/stderr") (li "log-output/syslog") (li "log-output/null")))) (section 3 "DmxBuffer" (def (sig (procedure "(dmxbuffer) => dmxbuffer" (id dmxbuffer))) (p "Construct a new empty dmxbuffer.")) (def (sig (procedure "(dmxbuffer other-dmxbuffer) => dmxbuffer" (id dmxbuffer))) (p "Construct a new dmxbuffer with the same contents as other-dmxbuffer.")) (def (sig (procedure "(dmxbuffer bytevector) => dmxbuffer" (id dmxbuffer))) (p "Constructs a new dmxbuffer with the same contents as bytevector.")) (def (sig (procedure "(dmxbuffer? dmxbuffer) => bool" (id dmxbuffer?))) (p "Dmxbuffer predicate.")) (def (sig (procedure "(dmxbuffer=? dmxbuffer-a dmxbuffer-b) => bool" (id dmxbuffer=?))) (p "Test whether dmxbuffer-a and dmxbuffer-b have equal contents.")) (def (sig (procedure "(dmxbuffer-size dmxbuffer) => size" (id dmxbuffer-size))) (p "Size of dmxbuffer.")) (def (sig (procedure "(dmxbuffer-get dmxbuffer) => bytevector" (id dmxbuffer-get))) (p "Return contents of dmxbuffer as a bytevector.")) (def (sig (procedure "(dmxbuffer-get-channel dmxbuffer channel) => value" (id dmxbuffer-get-channel))) (p "Return the value of the given channel in dmxbuffer.")) (def (sig (procedure "(dmxbuffer-get-range dmxbuffer offset length) => bytevector" (id dmxbuffer-get-range))) (p "Return a bytevector of the requested range in dmxbuffer.")) (def (sig (procedure "(dmxbuffer-set! dmxbuffer bytevector offset size) => bool" (id dmxbuffer-set!))) (p "Set the contents of dmxbuffer to contents of bytevector at given offset and size.")) (def (sig (procedure "(dmxbuffer-set! dmxbuffer bytevector) => bool" (id dmxbuffer-set!))) (p "Set the contents of dmxbuffer to contents of bytevector.")) (def (sig (procedure "(dmxbuffer-set! dmxbuffer dmxbuffer-other) => bool" (id dmxbuffer-set!))) (p "Set the contents of dmxbuffer to contents of dmxbuffer-other.")) (def (sig (procedure "(dmxbuffer-set-channel! dmxbuffer channel value) => undefined" (id dmxbuffer-set-channel!))) (p "Set dmxbuffer channel to value.")) (def (sig (procedure "(dmxbuffer-set-from-string! dmxbuffer str) => bool" (id dmxbuffer-set-from-string!))) (p "Complement of dmxbuffer->string.  Sets the contents of dmxbuffer according to the specially formatted string str.  The format of the string is integers separated by commas, where 0's may be omitted, e.g. \"1,2,,255\"")) (def (sig (procedure "(dmxbuffer-set-range! dmxbuffer dst-offset bytevector) => bool" (id dmxbuffer-set-range!))) (p "Set contents of dmxbuffer from dst-offset to contents of bytevector.")) (def (sig (procedure "(dmxbuffer-set-range! dmxbuffer dst-offset bytevector src-offset src-length) => bool" (id dmxbuffer-set-range!))) (p "Set contents of dmxbuffer from dst-offset to contents of bytevector, from src-offset, src-length bytes.")) (def (sig (procedure "(dmxbuffer-set-range-to-value! dmxbuffer offset value length) => bool" (id dmxbuffer-set-range-to-value!))) (p "Set contents of dmxbuffer from offset for length to value.")) (def (sig (procedure "(dmxbuffer-htp-merge! dmxbuffer other-dmxbuffer) => bool" (id dmxbuffer-htp-merge!))) (p "Perform an HTP merge (high value merge) with other-dmxbuffer into dmxbuffer.")) (def (sig (procedure "(dmxbuffer-blackout! dmxbuffer) => bool" (id dmxbuffer-blackout!))) (p "Set all channels to 0 in dmxbuffer.")) (def (sig (procedure "(dmxbuffer-reset! dmxbuffer) => undefined" (id dmxbuffer-reset!))) (p "Reset dmxbuffer size to 0.")) (def (sig (procedure "(dmxbuffer->string dmxbuffer) => string" (id dmxbuffer->string))) (p "Complement of 'dmxbuffer-set-from-string!'.  Returns a human-readable string representing the contents of dmxbuffer - comma separated decimal values."))) (section 3 "StreamingClient" (def (sig (procedure "(streamingclient [auto-start: bool] [server-port: port]) => streamingclient" (id streamingclient))) (p "Constructs a client and attempts to establish a connection to the ola daemon.  Auto-start is whether to start olad if it is not already running, default true.  Server-port is the port to use, default 9010.  Signals an '(exn ola)' condition if it fails to connect to the ola daemon.")) (def (sig (procedure "(streamingclient-stop streamingclient) => undefined" (id streamingclient-stop))) (p "Stops a streamingclient.")) (def (sig (procedure "(streamingclient-send-dmx streamingclient universe dmxbuffer) => bool" (id streamingclient-send-dmx))) (p "Sends contents of dmxbuffer to the given universe on streamingclient.")))) (section 2 "Examples" (highlight scheme "(use ola r7rs)\n(let ((client (streamingclient auto-start: #f)))\n  (streamingclient-send-dmx client 0 (dmxbuffer (string->utf8 \"AeIoUaEiO\"))))")) (section 2 "License" (p "LGPL-3")) (section 2 "Version History" (ul (li "0.1 (2016-03-12) initial release") (li "0.2 (2016-03-13) meta and documentation") (li "0.3 (2016-03-13) streamingclient-setup removed, ola-version added") (li "0.4 (2016-09-05) use bytevectors instead of blobs"))))