summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Orlenko <zxteam@gmail.com>2010-08-23 23:15:47 +1100
committerAlexander Orlenko <zxteam@gmail.com>2010-08-23 23:15:47 +1100
commit8459764236499f94619adf28dc1ac948c65202f3 (patch)
tree6eb4c669df2152fb6c0f08867f3da1a54c16c6f8
parent09556b563f4577bc86ea2d68de1fd518c61075d2 (diff)
downloadbluez-tools-8459764236499f94619adf28dc1ac948c65202f3.tar.gz
Added checking of dbus interface existence to OBEXAgent
Some bugfixes in bt-obex
-rw-r--r--src/bt-obex.c8
-rw-r--r--src/lib/helpers.c2
-rw-r--r--src/lib/obexd-api.h3
-rw-r--r--src/lib/obexd/obexagent.c108
4 files changed, 80 insertions, 41 deletions
diff --git a/src/bt-obex.c b/src/bt-obex.c
index 937287e..f33abb9 100644
--- a/src/bt-obex.c
+++ b/src/bt-obex.c
@@ -196,7 +196,7 @@ int main(int argc, char *argv[])
}
/* Check, that obexd daemon is running */
- if (!intf_supported(OBEXD_DBUS_NAME, OBEXMANAGER_DBUS_PATH, OBEXMANAGER_DBUS_INTERFACE)) {
+ if (!intf_supported(OBEXS_DBUS_NAME, OBEXMANAGER_DBUS_PATH, OBEXMANAGER_DBUS_INTERFACE)) {
g_printerr("%s: OBEXD service does not found\n", g_get_prgname());
g_printerr("Did you forget to run obexd?\n");
exit(EXIT_FAILURE);
@@ -433,9 +433,9 @@ int main(int argc, char *argv[])
g_print(
"%s\t%llu\t%s\n",
g_value_get_string(g_hash_table_lookup(el, "Type")),
- G_VALUE_HOLDS_UINT64(g_hash_table_lookup(el, "Size")) ?
- g_value_get_uint64(g_hash_table_lookup(el, "Size")) :
- 0,
+ G_VALUE_HOLDS_UINT64(g_hash_table_lookup(el, "Size")) ?
+ g_value_get_uint64(g_hash_table_lookup(el, "Size")) :
+ 0,
g_value_get_string(g_hash_table_lookup(el, "Name"))
);
}
diff --git a/src/lib/helpers.c b/src/lib/helpers.c
index e4da3d1..380d879 100644
--- a/src/lib/helpers.c
+++ b/src/lib/helpers.c
@@ -242,7 +242,7 @@ gboolean intf_supported(const gchar *dbus_service_name, const gchar *dbus_object
if (g_strcmp0(dbus_service_name, BLUEZ_DBUS_NAME) == 0) {
conn = system_conn;
#ifdef OBEX_SUPPORT
- } else if (g_strcmp0(dbus_service_name, OBEXD_DBUS_NAME) == 0) {
+ } else if (g_strcmp0(dbus_service_name, OBEXS_DBUS_NAME) == 0 || g_strcmp0(dbus_service_name, OBEXC_DBUS_NAME) == 0) {
conn = session_conn;
#endif
} else {
diff --git a/src/lib/obexd-api.h b/src/lib/obexd-api.h
index 2eea818..09695f6 100644
--- a/src/lib/obexd-api.h
+++ b/src/lib/obexd-api.h
@@ -33,7 +33,8 @@
#include <dbus/dbus-glib.h>
#ifdef OBEX_SUPPORT
-#define OBEXD_DBUS_NAME "org.openobex"
+#define OBEXS_DBUS_NAME "org.openobex"
+#define OBEXC_DBUS_NAME "org.openobex.client"
/* OBEXD DBus API */
#include "obexd/obexagent.h"
diff --git a/src/lib/obexd/obexagent.c b/src/lib/obexd/obexagent.c
index 156f738..a684154 100644
--- a/src/lib/obexd/obexagent.c
+++ b/src/lib/obexd/obexagent.c
@@ -203,8 +203,15 @@ gboolean obexagent_cancel(OBEXAgent *self, GError **error)
}
/* Client API */
+static gboolean update_progress = FALSE;
+
gboolean obexagent_release(OBEXAgent *self, GError **error)
{
+ if (update_progress) {
+ g_print("\n");
+ update_progress = FALSE;
+ }
+
g_print("OBEXAgent released\n");
g_signal_emit(self, signals[OBEXAGENT_RELEASED], 0);
@@ -215,22 +222,31 @@ gboolean obexagent_release(OBEXAgent *self, GError **error)
gboolean obexagent_request(OBEXAgent *self, const gchar *transfer, gchar **ret, GError **error)
{
*ret = NULL;
- OBEXClientTransfer *transfer_t = g_object_new(OBEXCLIENT_TRANSFER_TYPE, "DBusObjectPath", transfer, NULL);
- g_print("[Transfer Request]\n");
- g_print(" Name: %s\n", obexclient_transfer_get_name(transfer_t));
- g_print(" Size: %llu bytes\n", obexclient_transfer_get_size(transfer_t));
- g_print(" Filename: %s\n", obexclient_transfer_get_filename(transfer_t));
- g_object_unref(transfer_t);
- gchar yn[4] = {0,};
- g_print("Accept (yes/no)? ");
- errno = 0;
- if (scanf("%3s", yn) == EOF && errno) {
- g_warning("%s\n", strerror(errno));
- }
- if (g_strcmp0(yn, "y") == 0 || g_strcmp0(yn, "yes") == 0) {
- return TRUE;
+ if (intf_supported(OBEXC_DBUS_NAME, transfer, OBEXCLIENT_TRANSFER_DBUS_INTERFACE)) {
+ OBEXClientTransfer *transfer_t = g_object_new(OBEXCLIENT_TRANSFER_TYPE, "DBusObjectPath", transfer, NULL);
+ g_print("[Transfer Request]\n");
+ g_print(" Name: %s\n", obexclient_transfer_get_name(transfer_t));
+ g_print(" Size: %llu bytes\n", obexclient_transfer_get_size(transfer_t));
+ g_print(" Filename: %s\n", obexclient_transfer_get_filename(transfer_t));
+ g_object_unref(transfer_t);
+
+ gchar yn[4] = {0,};
+ g_print("Accept (yes/no)? ");
+ errno = 0;
+ if (scanf("%3s", yn) == EOF && errno) {
+ g_warning("%s\n", strerror(errno));
+ }
+ if (g_strcmp0(yn, "y") == 0 || g_strcmp0(yn, "yes") == 0) {
+ return TRUE;
+ } else {
+ // TODO: Fix error code
+ if (error)
+ *error = g_error_new(g_quark_from_static_string("org.openobex.Error.Rejected"), 0, "File transfer rejected");
+ return FALSE;
+ }
} else {
+ g_print("Error: Unknown transfer request\n");
// TODO: Fix error code
if (error)
*error = g_error_new(g_quark_from_static_string("org.openobex.Error.Rejected"), 0, "File transfer rejected");
@@ -242,43 +258,65 @@ gboolean obexagent_request(OBEXAgent *self, const gchar *transfer, gchar **ret,
gboolean obexagent_progress(OBEXAgent *self, const gchar *transfer, guint64 transferred, GError **error)
{
- OBEXClientTransfer *transfer_t = g_object_new(OBEXCLIENT_TRANSFER_TYPE, "DBusObjectPath", transfer, NULL);
- guint64 total = obexclient_transfer_get_size(transfer_t);
+ if (intf_supported(OBEXC_DBUS_NAME, transfer, OBEXCLIENT_TRANSFER_DBUS_INTERFACE)) {
+ OBEXClientTransfer *transfer_t = g_object_new(OBEXCLIENT_TRANSFER_TYPE, "DBusObjectPath", transfer, NULL);
+ guint64 total = obexclient_transfer_get_size(transfer_t);
- guint pp = (transferred / (gfloat) total)*100;
+ guint pp = (transferred / (gfloat) total)*100;
- static gboolean update_progress = FALSE;
- if (!update_progress) {
- g_print("[Transfer#%s] Progress: %3u%%", obexclient_transfer_get_filename(transfer_t), pp);
- update_progress = TRUE;
- } else {
- g_print("\b\b\b\b%3u%%", pp);
- }
+ if (!update_progress) {
+ g_print("[Transfer#%s] Progress: %3u%%", obexclient_transfer_get_name(transfer_t), pp);
+ update_progress = TRUE;
+ } else {
+ g_print("\b\b\b\b%3u%%", pp);
+ }
- if (pp == 100) {
- g_print("\n");
- update_progress = FALSE;
- }
+ if (pp == 100) {
+ g_print("\n");
+ update_progress = FALSE;
+ }
- g_object_unref(transfer_t);
+ g_object_unref(transfer_t);
+ }
return TRUE;
}
gboolean obexagent_complete(OBEXAgent *self, const gchar *transfer, GError **error)
{
- OBEXClientTransfer *transfer_t = g_object_new(OBEXCLIENT_TRANSFER_TYPE, "DBusObjectPath", transfer, NULL);
- g_print("[Transfer#%s] Completed\n", obexclient_transfer_get_filename(transfer_t));
- g_object_unref(transfer_t);
+ if (update_progress) {
+ g_print("\n");
+ update_progress = FALSE;
+ }
+
+ if (intf_supported(OBEXC_DBUS_NAME, transfer, OBEXCLIENT_TRANSFER_DBUS_INTERFACE)) {
+ OBEXClientTransfer *transfer_t = g_object_new(OBEXCLIENT_TRANSFER_TYPE, "DBusObjectPath", transfer, NULL);
+ g_print("[Transfer#%s] Completed\n", obexclient_transfer_get_name(transfer_t));
+ g_object_unref(transfer_t);
+ }
return TRUE;
}
gboolean obexagent_error(OBEXAgent *self, const gchar *transfer, const gchar *message, GError **error)
{
- OBEXClientTransfer *transfer_t = g_object_new(OBEXCLIENT_TRANSFER_TYPE, "DBusObjectPath", transfer, NULL);
- g_print("[Transfer#%s] Error: %s\n", obexclient_transfer_get_filename(transfer_t), message);
- g_object_unref(transfer_t);
+ if (update_progress) {
+ g_print("\n");
+ update_progress = FALSE;
+ }
+
+ g_print("[Transfer] Error: %s\n", message);
+
+ /*
+ * Transfer interface does not exists
+ * Code commented
+ *
+ if (intf_supported(OBEXC_DBUS_NAME, transfer, OBEXCLIENT_TRANSFER_DBUS_INTERFACE)) {
+ OBEXClientTransfer *transfer_t = g_object_new(OBEXCLIENT_TRANSFER_TYPE, "DBusObjectPath", transfer, NULL);
+ g_print("[Transfer#%s] Error: %s\n", obexclient_transfer_get_name(transfer_t), message);
+ g_object_unref(transfer_t);
+ }
+ */
return TRUE;
}