upgrade obexd to 0.47
[profile/ivi/obexd.git] / src / manager.c
index 90ccbe2..1d48224 100644 (file)
 #include "btio.h"
 #include "service.h"
 
-#define OPENOBEX_MANAGER_PATH "/"
-#define OPENOBEX_MANAGER_INTERFACE OPENOBEX_SERVICE ".Manager"
-#define ERROR_INTERFACE OPENOBEX_SERVICE ".Error"
-#define TRANSFER_INTERFACE OPENOBEX_SERVICE ".Transfer"
-#define SESSION_INTERFACE OPENOBEX_SERVICE ".Session"
+#define OBEX_MANAGER_PATH "/"
+#define OBEX_MANAGER_INTERFACE OBEXD_SERVICE ".Manager"
+#define ERROR_INTERFACE OBEXD_SERVICE ".Error"
+#define TRANSFER_INTERFACE OBEXD_SERVICE ".Transfer"
+#define SESSION_INTERFACE OBEXD_SERVICE ".Session"
+#define AGENT_INTERFACE OBEXD_SERVICE ".Agent"
 
 #define TIMEOUT 60*1000 /* Timeout for user response (miliseconds) */
 
@@ -131,11 +132,6 @@ static void dbus_message_iter_append_variant(DBusMessageIter *iter,
        case DBUS_TYPE_UINT32:
                sig = DBUS_TYPE_UINT32_AS_STRING;
                break;
-#ifdef TIZEN_PATCH
-       case DBUS_TYPE_UINT64:
-               sig = DBUS_TYPE_UINT64_AS_STRING;
-               break;
-#endif
        case DBUS_TYPE_BOOLEAN:
                sig = DBUS_TYPE_BOOLEAN_AS_STRING;
                break;
@@ -248,53 +244,6 @@ static DBusMessage *unregister_agent(DBusConnection *conn,
        return dbus_message_new_method_return(msg);
 }
 
-#ifdef TIZEN_PATCH
-static DBusMessage *set_root(DBusConnection *conn, DBusMessage *msg,
-                                       const char *root, void *data)
-{
-       DBG("new_root: %s", root);
-
-       /* Change the option root path (using in filesystem) */
-       obex_option_set_root_folder(root);
-
-       return dbus_message_new_method_return(msg);
-}
-
-static DBusMessage *set_property(DBusConnection *conn,
-                               DBusMessage *msg, void *data)
-{
-       DBusMessageIter iter;
-       DBusMessageIter sub;
-       const char *property;
-
-       if (!dbus_message_iter_init(msg, &iter))
-               return invalid_args(msg);
-
-       if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
-               return invalid_args(msg);
-
-       dbus_message_iter_get_basic(&iter, &property);
-       dbus_message_iter_next(&iter);
-
-       if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT)
-               return invalid_args(msg);
-       dbus_message_iter_recurse(&iter, &sub);
-
-       if (g_str_equal("Root", property)) {
-               const char *root;
-
-               if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRING)
-                       return invalid_args(msg);
-               dbus_message_iter_get_basic(&sub, &root);
-
-               return set_root(conn, msg, root, data);
-       }
-
-       return invalid_args(msg);
-}
-#endif
-
-
 static char *target2str(const uint8_t *t)
 {
        if (!t)
@@ -362,100 +311,38 @@ static DBusMessage *transfer_cancel(DBusConnection *connection,
        return dbus_message_new_method_return(msg);
 }
 
-#ifdef TIZEN_PATCH
-static char *get_obex_operation(struct obex_session *os)
-{
-       char *operation = NULL;
-
-       switch (os->cmd) {
-       case G_OBEX_OP_PUT:
-               if (os->size != OBJECT_SIZE_DELETE)
-                       operation = g_strdup("PUT");
-               break;
-       case G_OBEX_OP_GET:
-               operation = g_strdup("GET");
-               break;
-       default:
-               break;
-       }
-
-       return operation;
-}
-
-static DBusMessage *transfer_get_properties(DBusConnection *connection,
-                                       DBusMessage *message, void *user_data)
-{
-       struct obex_session *os = user_data;
-       DBusMessage *reply;
-       DBusMessageIter iter, dict;
-       char *operation;
-
-       if (!os)
-               return invalid_args(message);
-
-       reply = dbus_message_new_method_return(message);
-       if (!reply)
-               return NULL;
-
-       dbus_message_iter_init_append(reply, &iter);
-
-       dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
-                       DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
-                       DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING
-                       DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict);
-
-       if (os->name)
-               dbus_message_iter_append_dict_entry(&dict, "Filename",
-                                               DBUS_TYPE_STRING, &os->name);
-
-       dbus_message_iter_append_dict_entry(&dict, "Size",
-                                       DBUS_TYPE_UINT64, &os->size);
-
-       operation = get_obex_operation(os);
-       if (operation) {
-               dbus_message_iter_append_dict_entry(&dict, "Operation",
-                                               DBUS_TYPE_STRING, &operation);
-               g_free(operation);
-       }
-
-       dbus_message_iter_close_container(&iter, &dict);
-
-       return reply;
-}
-#endif
-
-static GDBusMethodTable manager_methods[] = {
-       { "RegisterAgent",      "o",    "",     register_agent          },
-       { "UnregisterAgent",    "o",    "",     unregister_agent        },
-#ifdef TIZEN_PATCH
-       { "SetProperty",        "sv",   "",     set_property            },
-#endif
+static const GDBusMethodTable manager_methods[] = {
+       { GDBUS_METHOD("RegisterAgent",
+                       GDBUS_ARGS({ "agent", "o" }), NULL, register_agent) },
+       { GDBUS_METHOD("UnregisterAgent",
+                       GDBUS_ARGS({ "agent", "o" }), NULL, unregister_agent) },
        { }
 };
 
-static GDBusSignalTable manager_signals[] = {
-       { "TransferStarted",    "o"     },
-       { "TransferCompleted",  "ob"    },
-       { "SessionCreated",     "o"     },
-       { "SessionRemoved",     "o"     },
+static const GDBusSignalTable manager_signals[] = {
+       { GDBUS_SIGNAL("TransferStarted", GDBUS_ARGS({ "transfer", "o"})) },
+       { GDBUS_SIGNAL("TransferCompleted", GDBUS_ARGS({ "transfer", "o" },
+                                                       { "success", "b" })) },
+       { GDBUS_SIGNAL("SessionCreated", GDBUS_ARGS({ "session", "o" })) },
+       { GDBUS_SIGNAL("SessionRemoved", GDBUS_ARGS({ "session", "o" })) },
        { }
 };
 
-static GDBusMethodTable transfer_methods[] = {
-       { "Cancel",     "",     "",     transfer_cancel },
-#ifdef TIZEN_PATCH
-       { "GetProperties",      "",     "{sv}", transfer_get_properties },
-#endif
+static const GDBusMethodTable transfer_methods[] = {
+       { GDBUS_METHOD("Cancel", NULL, NULL, transfer_cancel) },
        { }
 };
 
-static GDBusSignalTable transfer_signals[] = {
-       { "Progress",   "ii"    },
+static const GDBusSignalTable transfer_signals[] = {
+       { GDBUS_SIGNAL("Progress", GDBUS_ARGS({ "total", "i" },
+                                               { "transferred", "i" })) },
        { }
 };
 
-static GDBusMethodTable session_methods[] = {
-       { "GetProperties",      "",     "{sv}", get_properties  },
+static const GDBusMethodTable session_methods[] = {
+       { GDBUS_METHOD("GetProperties",
+                               NULL, GDBUS_ARGS({ "properties", "a{sv}" }),
+                               get_properties) },
        { }
 };
 
@@ -466,8 +353,8 @@ gboolean manager_init(void)
        DBG("");
 
        dbus_error_init(&err);
-       connection = g_dbus_setup_bus(DBUS_BUS_SESSION, OPENOBEX_SERVICE,
-                                                                       &err);
+
+       connection = g_dbus_setup_bus(DBUS_BUS_SESSION, OBEXD_SERVICE, &err);
        if (connection == NULL) {
                if (dbus_error_is_set(&err) == TRUE) {
                        fprintf(stderr, "%s\n", err.message);
@@ -477,8 +364,8 @@ gboolean manager_init(void)
                return FALSE;
        }
 
-       return g_dbus_register_interface(connection, OPENOBEX_MANAGER_PATH,
-                                       OPENOBEX_MANAGER_INTERFACE,
+       return g_dbus_register_interface(connection, OBEX_MANAGER_PATH,
+                                       OBEX_MANAGER_INTERFACE,
                                        manager_methods, manager_signals, NULL,
                                        NULL, NULL);
 }
@@ -487,8 +374,8 @@ void manager_cleanup(void)
 {
        DBG("");
 
-       g_dbus_unregister_interface(connection, OPENOBEX_MANAGER_PATH,
-                                               OPENOBEX_MANAGER_INTERFACE);
+       g_dbus_unregister_interface(connection, OBEX_MANAGER_PATH,
+                                               OBEX_MANAGER_INTERFACE);
 
        /* FIXME: Release agent? */
 
@@ -502,8 +389,8 @@ void manager_emit_transfer_started(struct obex_session *os)
 {
        char *path = g_strdup_printf("/transfer%u", os->id);
 
-       g_dbus_emit_signal(connection, OPENOBEX_MANAGER_PATH,
-                       OPENOBEX_MANAGER_INTERFACE, "TransferStarted",
+       g_dbus_emit_signal(connection, OBEX_MANAGER_PATH,
+                       OBEX_MANAGER_INTERFACE, "TransferStarted",
                        DBUS_TYPE_OBJECT_PATH, &path,
                        DBUS_TYPE_INVALID);
 
@@ -514,8 +401,8 @@ static void emit_transfer_completed(struct obex_session *os, gboolean success)
 {
        char *path = g_strdup_printf("/transfer%u", os->id);
 
-       g_dbus_emit_signal(connection, OPENOBEX_MANAGER_PATH,
-                       OPENOBEX_MANAGER_INTERFACE, "TransferCompleted",
+       g_dbus_emit_signal(connection, OBEX_MANAGER_PATH,
+                       OBEX_MANAGER_INTERFACE, "TransferCompleted",
                        DBUS_TYPE_OBJECT_PATH, &path,
                        DBUS_TYPE_BOOLEAN, &success,
                        DBUS_TYPE_INVALID);
@@ -524,14 +411,14 @@ static void emit_transfer_completed(struct obex_session *os, gboolean success)
 }
 
 static void emit_transfer_progress(struct obex_session *os, uint32_t total,
-                                                       uint32_t transfered)
+                                                       uint32_t transferred)
 {
        char *path = g_strdup_printf("/transfer%u", os->id);
 
        g_dbus_emit_signal(connection, path,
                        TRANSFER_INTERFACE, "Progress",
                        DBUS_TYPE_INT32, &total,
-                       DBUS_TYPE_INT32, &transfered,
+                       DBUS_TYPE_INT32, &transferred,
                        DBUS_TYPE_INVALID);
 
        g_free(path);
@@ -575,7 +462,7 @@ static void agent_cancel(void)
                return;
 
        msg = dbus_message_new_method_call(agent->bus_name, agent->path,
-                                       "org.openobex.Agent", "Cancel");
+                                               AGENT_INTERFACE, "Cancel");
 
        g_dbus_send_message(connection, msg);
 }
@@ -661,7 +548,7 @@ int manager_request_authorization(struct obex_session *os, int32_t time,
        path = g_strdup_printf("/transfer%u", os->id);
 
        msg = dbus_message_new_method_call(agent->bus_name, agent->path,
-                                       "org.openobex.Agent", "Authorize");
+                                               AGENT_INTERFACE, "Authorize");
 
        dbus_message_append_args(msg,
                        DBUS_TYPE_OBJECT_PATH, &path,
@@ -726,15 +613,15 @@ void manager_register_session(struct obex_session *os)
                                session_methods, NULL,
                                NULL, os, NULL)) {
                error("Cannot register Session interface.");
-               g_free(path);
-               return;
+               goto done;
        }
 
-       g_dbus_emit_signal(connection, OPENOBEX_MANAGER_PATH,
-                       OPENOBEX_MANAGER_INTERFACE, "SessionCreated",
+       g_dbus_emit_signal(connection, OBEX_MANAGER_PATH,
+                       OBEX_MANAGER_INTERFACE, "SessionCreated",
                        DBUS_TYPE_OBJECT_PATH, &path,
                        DBUS_TYPE_INVALID);
 
+done:
        g_free(path);
 }
 
@@ -742,8 +629,8 @@ void manager_unregister_session(struct obex_session *os)
 {
        char *path = g_strdup_printf("/session%u", GPOINTER_TO_UINT(os));
 
-       g_dbus_emit_signal(connection, OPENOBEX_MANAGER_PATH,
-                       OPENOBEX_MANAGER_INTERFACE, "SessionRemoved",
+       g_dbus_emit_signal(connection, OBEX_MANAGER_PATH,
+                       OBEX_MANAGER_INTERFACE, "SessionRemoved",
                        DBUS_TYPE_OBJECT_PATH, &path,
                        DBUS_TYPE_INVALID);