diff --git a/obexd/plugins/mas.c b/obexd/plugins/mas.c
index 63d188c..c47465f 100644
--- a/obexd/plugins/mas.c
+++ b/obexd/plugins/mas.c
#include "messages.h"
+#define READ_STATUS_REQ 0
+
/* Channel number according to bluez doc/assigned-numbers.txt */
#define MAS_CHANNEL 16
obex_object_set_io_flags(mas, G_IO_OUT, 0);
}
+static void set_status_cb(void *session, int err, void *user_data)
+{
+ struct mas_session *mas = user_data;
+
+ DBG("");
+
+ mas->finished = TRUE;
+
+ if (err < 0)
+ obex_object_set_io_flags(mas, G_IO_ERR, err);
+ else
+ obex_object_set_io_flags(mas, G_IO_OUT, 0);
+}
+
static int mas_setpath(struct obex_session *os, void *user_data)
{
const char *name;
return NULL;
}
+ if (indicator == READ_STATUS_REQ)
+ *err = messages_set_read(mas->backend_data, name, value,
+ set_status_cb, mas);
+ else
+ *err = -EBADR;
+
+ if (*err < 0)
+ return NULL;
+
return mas;
}
diff --git a/obexd/plugins/messages-dummy.c b/obexd/plugins/messages-dummy.c
index a47f143..78e20ae 100644
--- a/obexd/plugins/messages-dummy.c
+++ b/obexd/plugins/messages-dummy.c
return -ENOSYS;
}
+int messages_set_read(void *session, const char *handle, uint8_t value,
+ messages_set_read_cb callback, void *user_data)
+{
+ return -ENOSYS;
+}
+
void messages_abort(void *s)
{
struct session *session = s;
diff --git a/obexd/plugins/messages-tracker.c b/obexd/plugins/messages-tracker.c
index 92c1767..1516dc7 100644
--- a/obexd/plugins/messages-tracker.c
+++ b/obexd/plugins/messages-tracker.c
return -ENOSYS;
}
+int messages_set_read(void *session, const char *handle, uint8_t value,
+ messages_set_read_cb callback, void *user_data)
+{
+ return -ENOSYS;
+}
+
void messages_abort(void *session)
{
}
diff --git a/obexd/plugins/messages.h b/obexd/plugins/messages.h
index 669f7c2..45579d3 100644
--- a/obexd/plugins/messages.h
+++ b/obexd/plugins/messages.h
int messages_update_inbox(void *session, messages_update_inbox_cb callback,
void *user_data);
+/* Informs Message Server to modify read status of a given message.
+ *
+ * session: Backend session.
+ * handle: Unique identifier to the message.
+ * value: Indicates the new value of the read status for a given message.
+ * Callback shall be called for every read status update request
+ * recieved from MCE.
+ * user_data: User data if any to be sent.
+ */
+typedef void (*messages_set_read_cb)(void *session, int err, void *user_data);
+
+int messages_set_read(void *session, const char *handle, uint8_t value,
+ messages_set_read_cb callback, void *user_data);
/* Aborts currently pending request.
*