aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2011-05-10 09:48:59 +0200
committerAleksander Morgado <aleksander@lanedo.com>2011-06-06 17:20:17 +0200
commit3fb53d33489bb8efaf4d69ac1d8f6a23fc0c7b4b (patch)
tree83ee1e4c8259b6f9dc7702c122108c1e0c2e95e2
parentdf0d9b480c0db825126c7ebbb36bdd958bf59761 (diff)
manager: new ScanDevices() d-bus method to request a new device scan loop
-rw-r--r--introspection/org.freedesktop.ModemManager.xml8
-rw-r--r--src/mm-manager.c14
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 {