return BLUETOOTH_ERROR_NONE;
}
+static void __bt_list_messages_cb(
+ GDBusProxy *proxy, GAsyncResult *res, gpointer user_data)
+{
+ BT_DBG("+");
+
+ GError *error = NULL;
+ GVariant *value, *in_param, *param;
+
+ int result = BLUETOOTH_ERROR_NONE;
+ int request_id;
+ int size = 0;
+
+ in_param = (GVariant*) user_data;
+ g_variant_get(in_param, "(i)", &request_id);
+
+ value = g_dbus_proxy_call_finish(proxy, res, &error);
+
+ if (error) {
+ BT_ERR("%s", error->message);
+ g_clear_error(&error);
+ result = BLUETOOTH_ERROR_INTERNAL;
+ }
+
+ param = g_variant_new("(iiv)", result, request_id, value);
+ BT_DBG("RequestID[%d]", request_id);
+ result = _bt_send_event(BT_MAP_CLIENT_EVENT,
+ BLUETOOTH_EVENT_MAP_LIST_MESSAGES_COMPLETE, param);
+
+ g_variant_unref(value);
+ g_variant_unref(in_param);
+
+ BT_DBG("-");
+}
+
int _bt_map_client_list_messages(
+ int request_id,
+ GDBusMethodInvocation *context,
const char* session_id,
const char* folder,
GVariant *filter)
{
- BT_DBG("+");
+ BT_DBG("Entered _bt_map_client_list_messages with session id: \"%s\"", session_id);
+ BT_DBG("Entered folder: %s", folder);
+ GDBusConnection *g_conn;
+ GDBusProxy *message_access_proxy;
+ GError *error = NULL;
+ int result = BLUETOOTH_ERROR_NONE;
- /* TODO: MAP */
+ retv_if(session_id == NULL, BLUETOOTH_ERROR_INVALID_PARAM);
+
+ g_conn = _bt_gdbus_get_session_gconn();
+ retv_if(g_conn == NULL, BLUETOOTH_ERROR_INTERNAL);
+
+ GVariant *out_param1 = g_variant_new_from_data((const GVariantType *)"ay",
+ &request_id, sizeof(int),
+ TRUE, NULL, NULL);
+ g_dbus_method_invocation_return_value(context,
+ g_variant_new("(iv)", result, out_param1));
+ // create message access proxy
+ g_clear_error(&error);
+ message_access_proxy = g_dbus_proxy_new_sync(g_conn, G_DBUS_PROXY_FLAGS_NONE, NULL,
+ BT_OBEX_SERVICE_NAME, session_id, "org.bluez.obex.MessageAccess1",
+ NULL, &error);
+ if (error != NULL) {
+ BT_ERR("Could not create message access proxy: %s\n", error->message);
+ result = BLUETOOTH_ERROR_INTERNAL;
+ } else {
+ if (!message_access_proxy) {
+ BT_ERR("message proxy handle is null\n");
+ result = BLUETOOTH_ERROR_INTERNAL;
+ } else {
+ BT_DBG("message proxy set");
+
+ GVariant *params = g_variant_new("(s@a{sv})", folder, filter);
+ GVariant *param = g_variant_new("(i)", request_id);
+
+ g_dbus_proxy_call(message_access_proxy,
+ "ListMessages", params,
+ G_DBUS_CALL_FLAGS_NONE, -1,
+ NULL,
+ (GAsyncReadyCallback)__bt_list_messages_cb,
+ (void*)param);
+ }
+ }
+
+ g_object_unref(message_access_proxy);
BT_DBG("-");
- return BLUETOOTH_ERROR_NONE;
+ return result;
}
int _bt_map_client_update_inbox(const char* session_id)