diff options
author | Alexander Orlenko <zxteam@gmail.com> | 2010-08-23 23:15:47 +1100 |
---|---|---|
committer | Alexander Orlenko <zxteam@gmail.com> | 2010-08-23 23:15:47 +1100 |
commit | 8459764236499f94619adf28dc1ac948c65202f3 (patch) | |
tree | 6eb4c669df2152fb6c0f08867f3da1a54c16c6f8 | |
parent | 09556b563f4577bc86ea2d68de1fd518c61075d2 (diff) | |
download | bluez-tools-8459764236499f94619adf28dc1ac948c65202f3.tar.gz |
Added checking of dbus interface existence to OBEXAgent
Some bugfixes in bt-obex
-rw-r--r-- | src/bt-obex.c | 8 | ||||
-rw-r--r-- | src/lib/helpers.c | 2 | ||||
-rw-r--r-- | src/lib/obexd-api.h | 3 | ||||
-rw-r--r-- | src/lib/obexd/obexagent.c | 108 |
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; } |