#!/usr/bin/newlisp ;; This is a test program for the lsp-dbus provided dbus API. (load "misc.lsp") (load "lsp-dbus.lsp") ; Log system bus details (println Dbus:SYSTEM-BUS) (println (setf ME (Dbus "/au/rrq"))) (println (setf ROOT (Dbus "/org/freedesktop/DBus"))) (define (unpack-messages DATA) (let ((AT 0) (OUT '()) (M nil) (D nil)) (while (and (< AT (length DATA)) (setf M (Dbus:unpack-data "yyyyuua(yv)" DATA AT))) ;;(println M) (dotimes (i (length (M 0 -1))) (setf (M 0 -1 i 0) (Dbus:MESSAGE-HEADERS (M 0 -1 i 0) 0))) (println M) (setf AT (M 1)) (setf S ((lookup 'Dbus:SIGNATURE (M 0 -1)) 0)) (println "AT=" AT " " (unpack (dup "b" 20) (AT DATA))) (if (and (< AT (length DATA)) (!= s "")) (when (setf D (Dbus:unpack-data S DATA AT)) (println D) (setf AT (D 1)) (push (list M (D 0)) OUT -1)) (push (list M nil) OUT -1)) (setf DATA (AT DATA)) (setf AT 0) ;;(println (octals-string (AT DATA))) ) OUT )) (setf M (:invoke ROOT "Hello" "org.freedesktop.DBus")) (println (unpack-messages M)) "lsp-dbus-test.lsp"