From 63d1b60c8cfc39122fa496cfcbb610cf8eb0713b Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Thu, 9 Aug 2012 13:32:27 +0300 Subject: gobex: Integrate GObexApparam with GObexHeader This introduce 2 new convenient functions: g_obex_header_get_apparam which parses and decode an header into GObexApparam and gobex_header_new_apparam that encode GObexApparam into GObexHeader. --- gobex/gobex-header.c | 25 +++++++++++++++++++++++++ gobex/gobex-header.h | 3 +++ 2 files changed, 28 insertions(+) (limited to 'gobex') diff --git a/gobex/gobex-header.c b/gobex/gobex-header.c index 56dd9b258..80e8e4e6f 100644 --- a/gobex/gobex-header.c +++ b/gobex/gobex-header.c @@ -337,6 +337,19 @@ gboolean g_obex_header_get_bytes(GObexHeader *header, const guint8 **val, return TRUE; } +GObexApparam *g_obex_header_get_apparam(GObexHeader *header) +{ + gboolean ret; + const guint8 *val; + gsize len; + + ret = g_obex_header_get_bytes(header, &val, &len); + if (!ret) + return NULL; + + return g_obex_apparam_decode(val, len); +} + gboolean g_obex_header_get_uint8(GObexHeader *header, guint8 *val) { g_obex_debug(G_OBEX_DEBUG_HEADER, "header 0x%02x", @@ -411,6 +424,18 @@ GObexHeader *g_obex_header_new_bytes(guint8 id, const void *data, gsize len) return header; } +GObexHeader *g_obex_header_new_apparam(GObexApparam *apparam) +{ + guint8 buf[1024]; + gssize len; + + len = g_obex_apparam_encode(apparam, buf, sizeof(buf)); + if (len < 0) + return NULL; + + return g_obex_header_new_bytes(G_OBEX_HDR_APPARAM, buf, len); +} + GObexHeader *g_obex_header_new_uint8(guint8 id, guint8 val) { GObexHeader *header; diff --git a/gobex/gobex-header.h b/gobex/gobex-header.h index 2ee83649b..196cb20dd 100644 --- a/gobex/gobex-header.h +++ b/gobex/gobex-header.h @@ -25,6 +25,7 @@ #include #include +#include /* Header ID's */ #define G_OBEX_HDR_INVALID 0x00 @@ -77,11 +78,13 @@ gboolean g_obex_header_get_bytes(GObexHeader *header, const guint8 **val, gsize *len); gboolean g_obex_header_get_uint8(GObexHeader *header, guint8 *val); gboolean g_obex_header_get_uint32(GObexHeader *header, guint32 *val); +GObexApparam *g_obex_header_get_apparam(GObexHeader *header); GObexHeader *g_obex_header_new_unicode(guint8 id, const char *str); GObexHeader *g_obex_header_new_bytes(guint8 id, const void *data, gsize len); GObexHeader *g_obex_header_new_uint8(guint8 id, guint8 val); GObexHeader *g_obex_header_new_uint32(guint8 id, guint32 val); +GObexHeader *g_obex_header_new_apparam(GObexApparam *apparam); GSList *g_obex_header_create_list(guint8 first_hdr_id, va_list args, gsize *total_len); -- cgit v1.2.1