#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) */
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;
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)
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) },
{ }
};
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);
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);
}
{
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? */
{
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);
{
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);
}
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);
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);
}
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,
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);
}
{
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);