timetags, nested bundles, higher-level API and various tweaks #2

Closed
jamieforth wants to merge 24 commits from master into master
Showing only changes of commit 9fe4513df5 - Show all commits

View file

@ -133,14 +133,19 @@
;;
;;; ;; ;; ; ; ; ; ; ;
(defun decode-bundle (data)
"decodes an osc bundle into a list of decoded-messages, which has
an osc-timetagas its first element"
(defun decode-bundle (data &optional bundle-length)
"Decodes an osc bundle into a list of decoded-messages, which has an
osc-timetagas its first element. An optional buffer-length argument
can be supplied (i.e. the length value returned by socket-receive),
otherwise the entire buffer is decoded - in which case, if you are
reusing buffers, you are responsible for ensuring that the buffer does
not contain stale data."
(unless bundle-length
(setf bundle-length (length data)))
(let ((contents '()))
(if (equalp 35 (elt data 0)) ; a bundle begins with '#'
(let ((timetag (subseq data 8 16))
(i 16)
(bundle-length (length data)))
(i 16))
(loop while (< i bundle-length)
do (let ((mark (+ i 4))
(size (decode-int32