static DBusMessage *get_folder_listing(struct map_data *map, DBusMessage *message, GObexApparam *apparam) { struct obc_transfer *transfer; GError *err = NULL; DBusMessage *reply; transfer = obc_transfer_get("x-obex/folder-listing", NULL, NULL, &err); if (transfer == NULL) { g_obex_apparam_free(apparam); goto fail; } obc_transfer_set_apparam(transfer, apparam); if (obc_session_queue(map->session, transfer, folder_listing_cb, map, &err)) { map->msg = dbus_message_ref(message); return NULL; } fail: reply = g_dbus_create_error(message, ERROR_INTERFACE ".Failed", "%s", err->message); g_error_free(err); return reply; }
static DBusMessage *get_capabilities(DBusConnection *connection, DBusMessage *message, void *user_data) { struct obc_session *session = user_data; struct obc_transfer *pull; DBusMessage *reply; GError *gerr = NULL; pull = obc_transfer_get("x-obex/capability", NULL, NULL, &gerr); if (pull == NULL) goto fail; if (!obc_session_queue(session, pull, capabilities_complete_callback, message, &gerr)) goto fail; dbus_message_ref(message); return NULL; fail: reply = g_dbus_create_error(message, "org.openobex.Error.Failed", "%s", gerr->message); g_error_free(gerr); return reply; }
static bool set_notification_registration(struct map_data *map, bool status) { struct obc_transfer *transfer; GError *err = NULL; GObexApparam *apparam; char contents[2]; contents[0] = FILLER_BYTE; contents[1] = '\0'; transfer = obc_transfer_put("x-bt/MAP-NotificationRegistration", NULL, NULL, contents, sizeof(contents), &err); if (transfer == NULL) return false; apparam = g_obex_apparam_set_uint8(NULL, MAP_AP_NOTIFICATIONSTATUS, status); obc_transfer_set_apparam(transfer, apparam); if (obc_session_queue(map->session, transfer, NULL, map, &err)) return true; return false; }
static DBusMessage *push_message(struct map_data *map, DBusMessage *message, const char *filename, const char *folder, GObexApparam *apparam) { struct obc_transfer *transfer; GError *err = NULL; DBusMessage *reply; transfer = obc_transfer_put("x-bt/message", folder, filename, NULL, 0, &err); if (transfer == NULL) { g_obex_apparam_free(apparam); goto fail; } obc_transfer_set_apparam(transfer, apparam); if (!obc_session_queue(map->session, transfer, NULL, NULL, &err)) goto fail; return obc_transfer_create_dbus_reply(transfer, message); fail: reply = g_dbus_create_error(message, ERROR_INTERFACE ".Failed", "%s", err->message); g_error_free(err); return reply; }
static DBusMessage *map_update_inbox(DBusConnection *connection, DBusMessage *message, void *user_data) { struct map_data *map = user_data; DBusMessage *reply; char contents[2]; struct obc_transfer *transfer; GError *err = NULL; contents[0] = FILLER_BYTE; contents[1] = '\0'; transfer = obc_transfer_put("x-bt/MAP-messageUpdate", NULL, NULL, contents, sizeof(contents), &err); if (transfer == NULL) goto fail; if (!obc_session_queue(map->session, transfer, update_inbox_cb, map, &err)) goto fail; map->msg = dbus_message_ref(message); return NULL; fail: reply = g_dbus_create_error(message, ERROR_INTERFACE ".Failed", "%s", err->message); g_error_free(err); return reply; }
static DBusMessage *map_get_message_listing(DBusConnection *connection, DBusMessage *message, void *user_data) { struct map_data *map = user_data; struct obc_transfer *transfer; const char *folder; DBusMessageIter msg_iter; GError *err = NULL; DBusMessage *reply; dbus_message_iter_init(message, &msg_iter); if (dbus_message_iter_get_arg_type(&msg_iter) != DBUS_TYPE_STRING) return g_dbus_create_error(message, "org.openobex.Error.InvalidArguments", NULL); dbus_message_iter_get_basic(&msg_iter, &folder); transfer = obc_transfer_get("x-bt/MAP-msg-listing", folder, NULL, &err); if (transfer == NULL) goto fail; if (obc_session_queue(map->session, transfer, buffer_cb, map, &err)) { map->msg = dbus_message_ref(message); return NULL; } fail: reply = g_dbus_create_error(message, "org.openobex.Error.Failed", "%s", err->message); g_error_free(err); return reply; }
static void set_status(const GDBusPropertyTable *property, DBusMessageIter *iter, GDBusPendingPropertySet id, uint8_t status, void *data) { struct map_msg *msg = data; struct obc_transfer *transfer; gboolean value; GError *err = NULL; GObexApparam *apparam; char contents[2]; if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_BOOLEAN) { g_dbus_pending_property_error(id, ERROR_INTERFACE ".InvalidArguments", "Invalid arguments in method call"); return; } dbus_message_iter_get_basic(iter, &value); contents[0] = FILLER_BYTE; contents[1] = '\0'; transfer = obc_transfer_put("x-bt/messageStatus", msg->handle, NULL, contents, sizeof(contents), &err); if (transfer == NULL) goto fail; apparam = g_obex_apparam_set_uint8(NULL, MAP_AP_STATUSINDICATOR, status); apparam = g_obex_apparam_set_uint8(apparam, MAP_AP_STATUSVALUE, value); obc_transfer_set_apparam(transfer, apparam); if (!obc_session_queue(msg->data->session, transfer, set_message_status_cb, msg, &err)) goto fail; msg->pending = id; return; fail: g_dbus_pending_property_error(id, ERROR_INTERFACE ".Failed", "%s", err->message); g_error_free(err); }
static DBusMessage *map_msg_get(DBusConnection *connection, DBusMessage *message, void *user_data) { struct map_msg *msg = user_data; struct obc_transfer *transfer; const char *target_file; gboolean attachment; GError *err = NULL; DBusMessage *reply; GObexApparam *apparam; if (dbus_message_get_args(message, NULL, DBUS_TYPE_STRING, &target_file, DBUS_TYPE_BOOLEAN, &attachment, DBUS_TYPE_INVALID) == FALSE) return g_dbus_create_error(message, ERROR_INTERFACE ".InvalidArguments", NULL); transfer = obc_transfer_get("x-bt/message", msg->handle, target_file, &err); if (transfer == NULL) goto fail; apparam = g_obex_apparam_set_uint8(NULL, MAP_AP_ATTACHMENT, attachment); apparam = g_obex_apparam_set_uint8(apparam, MAP_AP_CHARSET, CHARSET_UTF8); obc_transfer_set_apparam(transfer, apparam); if (!obc_session_queue(msg->data->session, transfer, NULL, NULL, &err)) goto fail; return obc_transfer_create_dbus_reply(transfer, message); fail: reply = g_dbus_create_error(message, ERROR_INTERFACE ".Failed", "%s", err->message); g_error_free(err); return reply; }
static DBusMessage *map_get_folder_listing(DBusConnection *connection, DBusMessage *message, void *user_data) { struct map_data *map = user_data; struct obc_transfer *transfer; GError *err = NULL; DBusMessage *reply; transfer = obc_transfer_get("x-obex/folder-listing", NULL, NULL, &err); if (transfer == NULL) goto fail; if (obc_session_queue(map->session, transfer, buffer_cb, map, &err)) { map->msg = dbus_message_ref(message); return NULL; } fail: reply = g_dbus_create_error(message, "org.openobex.Error.Failed", "%s", err->message); g_error_free(err); return reply; }