[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Network Manager
From: |
Michael Albinus |
Subject: |
Re: Network Manager |
Date: |
Fri, 14 Dec 2012 09:21:48 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) |
Ian D <address@hidden> writes:
> Emacs Developers,
Hi Ian,
> I've been working on a network manager for Emacs. It uses a
> backend, which at the moment is either NetworkManager or Wicd,
> which it accesses through D-Bus. I haven't gotten it up to the
> Emacs Lisp Coding Standards, but it is functional, if anyone is
> interested. As I am new to this mailing list, I'm not sure how I
> should send the source.
It would be helpful, if you could explain in the ;;; Commentary: section,
that one needs to add to ~/.emacs
--8<---------------cut here---------------start------------->8---
(enwc-setup)
--8<---------------cut here---------------end--------------->8---
On an Ubuntu 12.04 machine, running NetworkManager 0.9.4.0, I get after
applying "M-x enwc-scan"
--8<---------------cut here---------------start------------->8---
Debugger entered--Lisp error: (dbus-error "Method \"RequestScan\" with
signature \"a{sv}\" on interface
\"org.freedesktop.NetworkManager.Device.Wireless\" doesn't exist
")
signal(dbus-error ("Method \"RequestScan\" with signature \"a{sv}\" on
interface \"org.freedesktop.NetworkManager.Device.Wireless\" doesn't exist\n"))
(progn (signal (car err) (cdr err)))
(if (or dbus-debug (= dbus-message-type-error (nth 2 event))) (progn (signal
(car err) (cdr err))))
(condition-case err (let (result) (dbus-check-event event) (if (=
dbus-message-type-error (nth 2 event)) (progn (signal (quote dbus-error)
(nthcdr 9 event)))) (setq result (apply (nth 8 event) (nthcdr 9 event))) (if (=
dbus-message-type-method-call (nth 2 event)) (progn (condition-case err (progn
(if (eq result :ignore) (dbus-method-return-internal ... ... ...) (apply ...
... ... ... ...))) (dbus-error (if dbus-debug (progn ...))))))) (dbus-error (if
(= dbus-message-type-method-call (nth 2 event)) (progn (condition-case err
(progn (dbus-method-error-internal (nth 1 event) (nth 4 event) (nth 3 event)
(cadr err))) (dbus-error (if dbus-debug (progn ...)))))) (run-hook-with-args
(quote dbus-event-error-functions) event err) (if (or dbus-debug (=
dbus-message-type-error (nth 2 event))) (progn (signal (car err) (cdr err))))))
dbus-handle-event((dbus-event :system 3 3747 ":1.11" nil nil nil
dbus-call-method-handler "Method \"RequestScan\" with signature \"a{sv}\" on
interface \"org.freedesktop.NetworkManager.Device.Wireless\" doesn't exist\n"))
call-interactively(dbus-handle-event nil [(dbus-event :system 3 3747 ":1.11"
nil nil nil dbus-call-method-handler "Method \"RequestScan\" with signature
\"a{sv}\" on interface \"org.freedesktop.NetworkManager.Device.Wireless\"
doesn't exist\n")])
read-event(nil nil 0.1)
(let (unread-command-events) (read-event nil nil 0.1))
(let ((event (let (unread-command-events) (read-event nil nil 0.1)))) (if
(and event (not (condition-case nil (progn (dbus-check-event event)) (error
nil)))) (progn (setq unread-command-events (append unread-command-events (list
event))))))
(while (eq (gethash key dbus-return-values-table :ignore) :ignore) (let
((event (let (unread-command-events) (read-event nil nil 0.1)))) (if (and event
(not (condition-case nil (progn (dbus-check-event event)) (error nil)))) (progn
(setq unread-command-events (append unread-command-events (list event)))))))
(progn (while (eq (gethash key dbus-return-values-table :ignore) :ignore)
(let ((event (let (unread-command-events) (read-event nil nil 0.1)))) (if (and
event (not (condition-case nil (progn ...) (error nil)))) (progn (setq
unread-command-events (append unread-command-events (list event))))))))
(unwind-protect (progn (while (eq (gethash key dbus-return-values-table
:ignore) :ignore) (let ((event (let (unread-command-events) (read-event nil nil
0.1)))) (if (and event (not (condition-case nil ... ...))) (progn (setq
unread-command-events (append unread-command-events ...))))))) (cancel-timer
-with-timeout-timer-))
(let* ((-with-timeout-timer- (run-with-timer (if timeout (/ timeout 1000.0)
25) nil (function (lambda nil (throw (quote timeout) (quote timeout))))))
(with-timeout-timers (cons -with-timeout-timer- with-timeout-timers)))
(unwind-protect (progn (while (eq (gethash key dbus-return-values-table
:ignore) :ignore) (let ((event (let ... ...))) (if (and event (not ...)) (progn
(setq unread-command-events ...)))))) (cancel-timer -with-timeout-timer-)))
(catch (quote timeout) (let* ((-with-timeout-timer- (run-with-timer (if
timeout (/ timeout 1000.0) 25) nil (function (lambda nil (throw ... ...)))))
(with-timeout-timers (cons -with-timeout-timer- with-timeout-timers)))
(unwind-protect (progn (while (eq (gethash key dbus-return-values-table
:ignore) :ignore) (let ((event ...)) (if (and event ...) (progn ...)))))
(cancel-timer -with-timeout-timer-))))
(let ((-with-timeout-value- (catch (quote timeout) (let*
((-with-timeout-timer- (run-with-timer ... nil ...)) (with-timeout-timers (cons
-with-timeout-timer- with-timeout-timers))) (unwind-protect (progn (while ...
...)) (cancel-timer -with-timeout-timer-)))))) (if (eq -with-timeout-value-
(quote timeout)) (progn) -with-timeout-value-))
(let ((timeout (plist-get args :timeout)) (key (apply (quote
dbus-message-internal) dbus-message-type-method-call bus service path interface
method (quote dbus-call-method-handler) args))) (let ((-with-timeout-value-
(catch (quote timeout) (let* ((-with-timeout-timer- ...) (with-timeout-timers
...)) (unwind-protect (progn ...) (cancel-timer -with-timeout-timer-)))))) (if
(eq -with-timeout-value- (quote timeout)) (progn) -with-timeout-value-)) (prog1
(gethash key dbus-return-values-table) (remhash key dbus-return-values-table)))
dbus-call-method(:system "org.freedesktop.NetworkManager"
"/org/freedesktop/NetworkManager/Devices/0"
"org.freedesktop.NetworkManager.Device.Wireless" "RequestScan" :timeout 25000
(:array :signature "{sv}"))
enwc-nm-scan()
funcall(enwc-nm-scan)
enwc-do-scan()
(let* ((scan-ret (enwc-do-scan)) (enwc-access-points (enwc-get-nw)) (cur-id
0) networks) (message "Scanning... Done") (setq enwc-essid-width 5) (mapcar
(function (lambda (x) (let ((ret-itm (cons ... nil))) (setq cur-id (1+ cur-id))
(progn (let (... det) (while --dolist-tail-- ... ... ...))) ret-itm)))
enwc-access-points))
enwc-scan-internal-wireless()
(if enwc-using-wired (enwc-scan-internal-wired) (enwc-scan-internal-wireless))
enwc-scan-internal()
(setq enwc-last-scan (enwc-scan-internal))
enwc-scan()
call-interactively(enwc-scan record nil)
command-execute(enwc-scan record)
execute-extended-command(nil "enwc-scan")
call-interactively(execute-extended-command nil nil)
--8<---------------cut here---------------end--------------->8---
The wireless card on "/org/freedesktop/NetworkManager/Devices/0" offers
an "org.freedesktop.NetworkManager.Device.Wireless" interface, but there
is no "RequestScan" method:
--8<---------------cut here---------------start------------->8---
(dbus-introspect-get-interface :system "org.freedesktop.NetworkManager"
"/org/freedesktop/NetworkManager/Devices/0"
"org.freedesktop.NetworkManager.Device.Wireless")
=> (interface ((name . org.freedesktop.NetworkManager.Device.Wireless))
(method ((name . GetAccessPoints))
(arg ((name . access_points) (type . ao) (direction . out))))
(signal ((name . AccessPointRemoved))
(arg ((type . o))))
(signal ((name . AccessPointAdded))
(arg ((type . o))))
(signal ((name . PropertiesChanged))
(arg ((type . a{sv}))))
(property ((name . WirelessCapabilities) (type . u) (access . read)))
(property ((name . ActiveAccessPoint) (type . o) (access . read)))
(property ((name . Bitrate) (type . u) (access . read)))
(property ((name . Mode) (type . u) (access . read)))
(property ((name . PermHwAddress) (type . s) (access . read)))
(property ((name . HwAddress) (type . s) (access . read))))
--8<---------------cut here---------------end--------------->8---
> Ian D
Best regards, Michael.
Re: Network Manager, Ian D, 2012/12/14