[PATCH 04/16] emulator: Add ofono_emulator get_properties method

Zhenhua Zhang zhenhua.zhang at intel.com
Thu May 13 03:02:27 PDT 2010


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



More information about the ofono mailing list