From f98954116191946a2c043406db9177d41b3b37ab Mon Sep 17 00:00:00 2001 From: Andrzej Zaborowski Date: Mon, 7 Jun 2010 12:08:26 +0200 Subject: [PATCH] stkutil: Add CBS-PP Data Download envelope builder --- src/stkutil.c | 26 ++++++++++++++++++++++++++ src/stkutil.h | 5 +++++ 2 files changed, 31 insertions(+) diff --git a/src/stkutil.c b/src/stkutil.c index 661cfc60..acdf34f5 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -3357,6 +3357,22 @@ static gboolean build_dataobj_address(struct stk_tlv_builder *tlv, stk_tlv_builder_close_container(tlv); } +/* Described in TS 131.111 Section 8.5 */ +static gboolean build_dataobj_cbs_page(struct stk_tlv_builder *tlv, + const void *data, gboolean cr) +{ + const struct cbs *page = data; + unsigned char tag = STK_DATA_OBJECT_TYPE_CBS_PAGE; + unsigned char pdu[88]; + + if (cbs_encode(page, NULL, pdu) == FALSE) + return FALSE; + + return stk_tlv_builder_open_container(tlv, cr, tag, TRUE) && + stk_tlv_builder_append_bytes(tlv, pdu, 88) && + stk_tlv_builder_close_container(tlv); +} + /* Described in TS 102.223 Section 8.6 */ static gboolean build_dataobj_item_id(struct stk_tlv_builder *tlv, const void *data, gboolean cr) @@ -4216,6 +4232,16 @@ const unsigned char *stk_pdu_from_envelope(const struct stk_envelope *envelope, &envelope->sms_pp_download.message, NULL); break; + case STK_ENVELOPE_TYPE_CBS_PP_DOWNLOAD: + ok = build_dataobj(&builder, + build_envelope_dataobj_device_ids, + DATAOBJ_FLAG_CR, + envelope, + build_dataobj_cbs_page, + DATAOBJ_FLAG_CR, + &envelope->cbs_pp_download.page, + NULL); + break; default: return NULL; }; diff --git a/src/stkutil.h b/src/stkutil.h index cc293ca8..65ccfd34 100644 --- a/src/stkutil.h +++ b/src/stkutil.h @@ -1178,12 +1178,17 @@ struct stk_envelope_sms_pp_download { struct sms_deliver message; }; +struct stk_envelope_cbs_pp_download { + struct cbs page; +}; + struct stk_envelope { enum stk_envelope_type type; enum stk_device_identity_type src; enum stk_device_identity_type dst; union { struct stk_envelope_sms_pp_download sms_pp_download; + struct stk_envelope_cbs_pp_download cbs_pp_download; }; };