To list the object path of all available emulators.
---
 src/emulator.c |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/src/emulator.c b/src/emulator.c
index f9f7108..e6ffb78 100644
--- a/src/emulator.c
+++ b/src/emulator.c
@@ -257,6 +257,25 @@ static gboolean emulator_dbus_register(struct 
ofono_emulator *oe,
        return TRUE;
 }
 
+static int emulators_path_list(struct ofono_emulator *oe, char ***objlist)
+{
+       GSList *emulator_list = oe->emulator_list;
+       GSList *l;
+       struct emulator *e;
+       int i;
+
+       *objlist = g_new0(char *, g_slist_length(emulator_list) + 1);
+       if (*objlist == NULL)
+               return -1;
+
+       for (i = 0, l = emulator_list; l; l = l->next, i++) {
+               e = l->data;
+               (*objlist)[i] = g_strdup(emulator_build_path(oe, e));
+       }
+
+       return 0;
+}
+
 static DBusMessage *manager_create(DBusConnection *conn, DBusMessage *msg,
                                        void *data)
 {
@@ -299,7 +318,40 @@ static DBusMessage *manager_create(DBusConnection *conn, 
DBusMessage *msg,
        return reply;
 }
 
+
+static DBusMessage *manager_get_properties(DBusConnection *conn,
+                                               DBusMessage *msg, void *data)
+{
+       struct ofono_emulator *oe = data;
+       DBusMessage *reply;
+       DBusMessageIter iter;
+       DBusMessageIter dict;
+       char **objpath_list;
+
+       reply = dbus_message_new_method_return(msg);
+       if (!reply)
+               return NULL;
+
+       dbus_message_iter_init_append(reply, &iter);
+
+       dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
+                                       OFONO_PROPERTIES_ARRAY_SIGNATURE,
+                                       &dict);
+
+       emulators_path_list(oe, &objpath_list);
+
+       ofono_dbus_dict_append_array(&dict, "Emulators", DBUS_TYPE_OBJECT_PATH,
+                                       &objpath_list);
+
+       g_strfreev(objpath_list);
+
+       dbus_message_iter_close_container(&iter, &dict);
+
+       return reply;
+}
+
 static GDBusMethodTable emulator_manager_methods[] = {
+       { "GetProperties",      "",     "a{sv}", manager_get_properties },
        { "Create",             "sh",   "",     manager_create },
        { }
 };
-- 
1.6.3.3

_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to