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