diff --git a/connman.scm b/connman.scm index fdfa046..b85cdfc 100644 --- a/connman.scm +++ b/connman.scm @@ -136,8 +136,16 @@ manager-properties-set-offline-mode! manager-properties-set-session-mode! - make-manager-context + ;; Technologies manager-technologies + manager-technology-path + manager-technology-name + manager-technology-type + manager-technology-powered? + manager-technology-connected? + manager-technology-thetering? + + make-manager-context manager-services ) diff --git a/manager.scm b/manager.scm index 8933d51..2ba646e 100644 --- a/manager.scm +++ b/manager.scm @@ -46,9 +46,30 @@ (make-variant session-mode?))) +;;; +;;; Manager technologies +;;; +(define-record manager-technology + path + name + type + powered? + connected? + thetering?) + (define (manager-technologies context) - (and-let* ((techs (dbus-call context "GetTechnologies"))) - (car techs))) + (and-let* ((techs (dbus-call context "GetTechnologies")) + (techs (vector->list (car techs)))) + (map (lambda (item) + (let ((path (object-path->string (struct-ref item 0))) + (properties (vector->list (struct-ref item 1)))) + (make-manager-technology path + (dbus-value "Name" properties) + (dbus-value "Type" properties) + (dbus-value "Powered" properties) + (dbus-value "Connected" properties) + (dbus-value "Thetering" properties)))) + techs))) (define (manager-services context)