New function: get-control.
authorVitaly Mayatskikh <v.mayatskih@gmail.com>
Mon, 7 Sep 2009 11:37:59 +0000 (7 13:37 +0200)
committerVitaly Mayatskikh <v.mayatskih@gmail.com>
Mon, 7 Sep 2009 11:37:59 +0000 (7 13:37 +0200)
This is the opposite of set-control.

package.lisp
v4l2.lisp

index 94baa81..6478142 100644 (file)
@@ -47,6 +47,7 @@
    #:get-frame
    #:put-frame
    #:set-control
+   #:get-control
 
    ;; structs
    #:capability
index 6e0fcd1..767d38d 100644 (file)
--- a/v4l2.lisp
+++ b/v4l2.lisp
          (setf id ctrl-id
                value (+ minimum (round (* level (- maximum minimum))))))
         (ioctl fd vidioc-s-ctrl control)))))
+
+(defun get-control (fd ctrl-id)
+  "Get control level (in range of 0.0-1.0)."
+  (with-foreign-object (query 'queryctrl)
+    (with-foreign-slots ((id minimum maximum) query queryctrl)
+      (setf id ctrl-id)
+      (ioctl fd vidioc-queryctrl query)
+      (with-foreign-object (control 'control)
+       (with-foreign-slots ((id value) control control)
+         (setf id ctrl-id)
+         (ioctl fd vidioc-g-ctrl control)
+         (/ (- value minimum) (- maximum minimum)))))))