Author: mcermak Date: Mon Aug 20 16:44:41 2007 New Revision: 3
Modified: nxtlisp/remote-commands.lisp Log: sensor function bugfixing and minor update
Modified: nxtlisp/remote-commands.lisp ============================================================================== --- nxtlisp/remote-commands.lisp (original) +++ nxtlisp/remote-commands.lisp Mon Aug 20 16:44:41 2007 @@ -201,6 +201,8 @@
;; TODO: should the type/mode handling be this way? rethink +;; document and add asserts to type and mode arguments +;; if type is temperature (defun sensor (port &optional (type :raw type-supplied-p) (mode :raw mode-supplied-p) (stream *standard-nxt-io*)) "Retrieves values from the sensor plugged in <port> port." @@ -209,10 +211,14 @@ ;; in last call to set-sensor-state (sensor-type (if type-supplied-p type - (extract-type port))) + (if (eql (extract-type port) nil) + :raw + (extract-type port)))) (sensor-mode (if mode-supplied-p mode - (extract-mode port)))) + (if (eql (extract-mode port) nil) + :raw + (extract-type port))))) ;; let's decode the packet according to type/mode (if (not (aref raw-packet 1)) (warn "sensor: Packet marked as not valid.")) @@ -225,6 +231,9 @@ :light-inactive) (extract-number (aref raw-packet 7) (aref raw-packet 8) :uword)) + (:temperature (extract-number (aref raw-packet 9) ; the same as :celsius/:fahrenheit + (aref raw-packet 10) + :sword)) (t (case sensor-mode ((or :boolean :transition-cnt :period-counter :celsius :fahrenheit) (extract-number (aref raw-packet 9)