* [PATCH obexd v3 2/3] MAP: Input parameters for GetMessagesListing
2012-04-12 18:53 [PATCH obexd v3 1/3] MAP: Mark filter strings const Slawomir Bochenski
@ 2012-04-12 18:53 ` Slawomir Bochenski
2012-04-12 18:53 ` [PATCH obexd v3 3/3] MAP: Output " Slawomir Bochenski
2012-04-12 19:00 ` [PATCH obexd v3 1/3] MAP: Mark filter strings const Johan Hedberg
2 siblings, 0 replies; 4+ messages in thread
From: Slawomir Bochenski @ 2012-04-12 18:53 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Slawomir Bochenski
This adds support for input application parameters header given in
GetMessagesListing request.
---
plugins/mas.c | 27 +++++++++++++++++++++++++--
1 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/plugins/mas.c b/plugins/mas.c
index 97a37e4..76dc8e9 100644
--- a/plugins/mas.c
+++ b/plugins/mas.c
@@ -531,6 +531,9 @@ static void *msg_listing_open(const char *name, int oflag, mode_t mode,
{
struct mas_session *mas = driver_data;
struct messages_filter filter = { 0, };
+ /* 1024 is the default when there was no MaxListCount sent */
+ uint16_t max = 1024;
+ uint16_t offset = 0;
DBG("");
@@ -539,8 +542,28 @@ static void *msg_listing_open(const char *name, int oflag, mode_t mode,
return NULL;
}
- *err = messages_get_messages_listing(mas->backend_data, name, 0xffff, 0,
- &filter,
+ map_ap_get_u16(mas->inparams, MAP_AP_MAXLISTCOUNT, &max);
+ map_ap_get_u16(mas->inparams, MAP_AP_STARTOFFSET, &offset);
+
+ map_ap_get_u32(mas->inparams, MAP_AP_PARAMETERMASK,
+ &filter.parameter_mask);
+ map_ap_get_u8(mas->inparams, MAP_AP_FILTERMESSAGETYPE,
+ &filter.type);
+ filter.period_begin = map_ap_get_string(mas->inparams,
+ MAP_AP_FILTERPERIODBEGIN);
+ filter.period_end = map_ap_get_string(mas->inparams,
+ MAP_AP_FILTERPERIODEND);
+ map_ap_get_u8(mas->inparams, MAP_AP_FILTERREADSTATUS,
+ &filter.read_status);
+ filter.recipient = map_ap_get_string(mas->inparams,
+ MAP_AP_FILTERRECIPIENT);
+ filter.originator = map_ap_get_string(mas->inparams,
+ MAP_AP_FILTERORIGINATOR);
+ map_ap_get_u8(mas->inparams, MAP_AP_FILTERPRIORITY,
+ &filter.priority);
+
+ *err = messages_get_messages_listing(mas->backend_data, name, max,
+ offset, &filter,
get_messages_listing_cb, mas);
mas->buffer = g_string_new("");
--
1.7.5.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH obexd v3 3/3] MAP: Output parameters for GetMessagesListing
2012-04-12 18:53 [PATCH obexd v3 1/3] MAP: Mark filter strings const Slawomir Bochenski
2012-04-12 18:53 ` [PATCH obexd v3 2/3] MAP: Input parameters for GetMessagesListing Slawomir Bochenski
@ 2012-04-12 18:53 ` Slawomir Bochenski
2012-04-12 19:00 ` [PATCH obexd v3 1/3] MAP: Mark filter strings const Johan Hedberg
2 siblings, 0 replies; 4+ messages in thread
From: Slawomir Bochenski @ 2012-04-12 18:53 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Slawomir Bochenski
This sets the parameters returned from MAP backend for
GetMessagesListing to be used in application parameters header sent in
response.
---
plugins/mas.c | 17 +++++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/plugins/mas.c b/plugins/mas.c
index 76dc8e9..576c206 100644
--- a/plugins/mas.c
+++ b/plugins/mas.c
@@ -282,12 +282,22 @@ static void get_messages_listing_cb(void *session, int err, uint16_t size,
void *user_data)
{
struct mas_session *mas = user_data;
+ uint16_t max = 1024;
if (err < 0 && err != -EAGAIN) {
obex_object_set_io_flags(mas, G_IO_ERR, err);
return;
}
+ map_ap_get_u16(mas->inparams, MAP_AP_MAXLISTCOUNT, &max);
+
+ if (max == 0) {
+ if (!entry)
+ mas->finished = TRUE;
+
+ goto proceed;
+ }
+
if (!mas->nth_call) {
g_string_append(mas->buffer, ML_BODY_BEGIN);
mas->nth_call = TRUE;
@@ -379,6 +389,13 @@ static void get_messages_listing_cb(void *session, int err, uint16_t size,
g_string_append(mas->buffer, "/>\n");
proceed:
+ if (!entry) {
+ map_ap_set_u16(mas->outparams, MAP_AP_MESSAGESLISTINGSIZE,
+ size);
+ map_ap_set_u8(mas->outparams, MAP_AP_NEWMESSAGE,
+ newmsg ? 1 : 0);
+ }
+
if (err != -EAGAIN)
obex_object_set_io_flags(mas, G_IO_IN, 0);
}
--
1.7.5.1
^ permalink raw reply related [flat|nested] 4+ messages in thread