diff options
author | Andrzej Zaborowski <andrew.zaborowski@intel.com> | 2010-06-07 12:08:26 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-06-09 12:25:25 -0500 |
commit | f98954116191946a2c043406db9177d41b3b37ab (patch) | |
tree | 04222bdfd260552e6ea2b6ab68a0550e20344722 /src | |
parent | d9f4abfd3f2e45946a8b6ac6cd330aa38c413f59 (diff) | |
download | ofono-f98954116191946a2c043406db9177d41b3b37ab.tar.bz2 |
stkutil: Add CBS-PP Data Download envelope builder
Diffstat (limited to 'src')
-rw-r--r-- | src/stkutil.c | 26 | ||||
-rw-r--r-- | src/stkutil.h | 5 |
2 files changed, 31 insertions, 0 deletions
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; }; }; |