diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2011-05-10 09:48:59 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2011-06-06 17:20:17 +0200 |
commit | 3fb53d33489bb8efaf4d69ac1d8f6a23fc0c7b4b (patch) | |
tree | 83ee1e4c8259b6f9dc7702c122108c1e0c2e95e2 | |
parent | df0d9b480c0db825126c7ebbb36bdd958bf59761 (diff) |
manager: new ScanDevices() d-bus method to request a new device scan loop
-rw-r--r-- | introspection/org.freedesktop.ModemManager.xml | 8 | ||||
-rw-r--r-- | src/mm-manager.c | 14 |
2 files changed, 22 insertions, 0 deletions
diff --git a/introspection/org.freedesktop.ModemManager.xml b/introspection/org.freedesktop.ModemManager.xml index 677d2af0..2a604622 100644 --- a/introspection/org.freedesktop.ModemManager.xml +++ b/introspection/org.freedesktop.ModemManager.xml @@ -2,6 +2,7 @@ <node name="/" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"> <interface name="org.freedesktop.ModemManager"> + <method name="EnumerateDevices"> <tp:docstring> Get the list of modem devices. @@ -14,6 +15,13 @@ </arg> </method> + <method name="ScanDevices"> + <tp:docstring> + Start a new scan for connected modem devices. + </tp:docstring> + <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_manager_scan_devices"/> + </method> + <signal name="DeviceAdded"> <tp:docstring> A device was added to the system. diff --git a/src/mm-manager.c b/src/mm-manager.c index 90a65db5..affa56bc 100644 --- a/src/mm-manager.c +++ b/src/mm-manager.c @@ -30,6 +30,8 @@ static gboolean impl_manager_enumerate_devices (MMManager *manager, GPtrArray **devices, GError **err); +static gboolean impl_manager_scan_devices (MMManager *manager); + #include "mm-manager-glue.h" G_DEFINE_TYPE (MMManager, mm_manager, G_TYPE_OBJECT) @@ -951,6 +953,14 @@ handle_uevent (GUdevClient *client, device_removed (self, device); } +static gboolean +impl_manager_scan_devices (MMManager *manager) +{ + /* Relaunch manager start, which does device scanning */ + mm_manager_start (manager); + return TRUE; +} + void mm_manager_start (MMManager *manager) { @@ -960,6 +970,8 @@ mm_manager_start (MMManager *manager) g_return_if_fail (manager != NULL); g_return_if_fail (MM_IS_MANAGER (manager)); + mm_dbg ("Starting device scan..."); + priv = MM_MANAGER_GET_PRIVATE (manager); devices = g_udev_client_query_by_subsystem (priv->udev, "tty"); @@ -975,6 +987,8 @@ mm_manager_start (MMManager *manager) g_object_unref (G_OBJECT (iter->data)); } g_list_free (devices); + + mm_dbg ("Finished device scan..."); } typedef struct { |