All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bartosz Szatkowski <bulislaw@linux.com>
To: linux-bluetooth@vger.kernel.org
Cc: Bartosz Szatkowski <bulislaw@linux.com>
Subject: [PATCH obexd 2/4] Add support for SetFolder in MAP client
Date: Tue, 22 Nov 2011 15:46:36 +0100	[thread overview]
Message-ID: <1321973198-23091-2-git-send-email-bulislaw@linux.com> (raw)
In-Reply-To: <1321973198-23091-1-git-send-email-bulislaw@linux.com>

---
 client/map.c       |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 doc/client-api.txt |    5 +++-
 2 files changed, 58 insertions(+), 1 deletions(-)

diff --git a/client/map.c b/client/map.c
index 3c211da..54ab9c0 100644
--- a/client/map.c
+++ b/client/map.c
@@ -39,6 +39,9 @@
 	"\xBB\x58\x2B\x40\x42\x0C\x11\xDB\xB0\xDE\x08\x00\x20\x0C\x9A\x66"
 #define OBEX_MAS_UUID_LEN 16
 
+#define ERROR_INF MAP_INTERFACE ".Error"
+#define ERROR_FAILED_PATH "org.openobex.Error.Failed"
+
 #define MAP_INTERFACE  "org.openobex.MessagesAccess"
 #define MAS_UUID "00001132-0000-1000-8000-00805f9b34fb"
 
@@ -49,7 +52,58 @@ struct map_data {
 
 static DBusConnection *conn = NULL;
 
+static void simple_cb(GObex *obex, GError *err, GObexPacket *rsp,
+							gpointer user_data)
+{
+	DBusMessage *reply;
+	struct map_data *map = user_data;
+
+	if (err != NULL) {
+		reply = g_dbus_create_error(map->msg,
+						ERROR_FAILED_PATH,
+						"%s", err->message);
+
+		g_error_free(err);
+	} else {
+		reply = dbus_message_new_method_return(map->msg);
+	}
+
+	g_dbus_send_message(conn, reply);
+	dbus_message_unref(map->msg);
+}
+
+static DBusMessage *map_setpath(DBusConnection *connection,
+					DBusMessage *message, void *user_data)
+{
+	struct map_data *map = user_data;
+	const char *folder;
+	GObex *obex;
+	GError *err = NULL;
+
+	if (dbus_message_get_args(message, NULL, DBUS_TYPE_STRING, &folder,
+						DBUS_TYPE_INVALID) == FALSE)
+		return g_dbus_create_error(message,
+					ERROR_INF ".InvalidArguments", NULL);
+
+	obex = obc_session_get_obex(map->session);
+
+	g_obex_setpath(obex, folder, simple_cb, map, &err);
+	if (err != NULL) {
+		DBusMessage *reply;
+		reply =  g_dbus_create_error(message,
+						ERROR_FAILED_PATH,
+						"%s", err->message);
+		g_error_free(err);
+		return reply;
+	}
+
+	map->msg = dbus_message_ref(message);
+
+	return NULL;
+}
+
 static GDBusMethodTable map_methods[] = {
+	{ "SetFolder",	"s",	"",	map_setpath, G_DBUS_METHOD_FLAG_ASYNC },
 	{ }
 };
 
diff --git a/doc/client-api.txt b/doc/client-api.txt
index 7d419e3..38a3e35 100644
--- a/doc/client-api.txt
+++ b/doc/client-api.txt
@@ -258,7 +258,10 @@ Service		org.openobex.client
 Interface	org.openobex.MessagesAccess
 Object path	[variable prefix]/{session0,session1,...}
 
-Methods
+Methods		void SetFolder(string name)
+
+			Set working directory for current session, *name* may
+			be the directory name or '..[/dir]'.
 
 Transfer hierarchy
 ==================
-- 
1.7.4.1


  reply	other threads:[~2011-11-22 14:46 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-22 14:46 [PATCH obexd 1/4] Add basic support for MAP client in obex-client Bartosz Szatkowski
2011-11-22 14:46 ` Bartosz Szatkowski [this message]
2011-11-22 14:46 ` [PATCH obexd 3/4] Add response handling for MAP client Bartosz Szatkowski
2011-11-22 14:46 ` [PATCH obexd 4/4] Add simple helper " Bartosz Szatkowski
2011-11-25 11:08 ` [PATCH obexd 1/4] Add basic support for MAP client in obex-client Johan Hedberg
2011-11-25 12:40   ` Bartosz Szatkowski
2011-11-25 15:58     ` Marcel Holtmann
2011-11-25 16:54       ` Bartosz Szatkowski
2011-12-02 11:23 ` Johan Hedberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1321973198-23091-2-git-send-email-bulislaw@linux.com \
    --to=bulislaw@linux.com \
    --cc=linux-bluetooth@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.