diff options
author | Andrzej Zaborowski <andrew.zaborowski@intel.com> | 2010-05-27 06:59:52 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-05-28 11:35:17 -0500 |
commit | 27a9d785c4ac9bd833758f39cd764a91b0d4919f (patch) | |
tree | 5775ad6e9279c4e7bf6ad2107413681327e3c2e2 /src/stkutil.c | |
parent | 5af0120c676707f11e6908ae3631c8aebe04accf (diff) | |
download | ofono-27a9d785c4ac9bd833758f39cd764a91b0d4919f.tar.bz2 |
stkutil: Add the Run AT Command response builder
Diffstat (limited to 'src/stkutil.c')
-rw-r--r-- | src/stkutil.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/stkutil.c b/src/stkutil.c index 1f639ab0..c3a5612d 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -3604,6 +3604,28 @@ static gboolean build_dataobj_datetime_timezone(struct stk_tlv_builder *tlv, stk_tlv_builder_close_container(tlv); } +/* Described in TS 102.223 Section 8.41 */ +static gboolean build_dataobj_at_response(struct stk_tlv_builder *tlv, + const void *data, gboolean cr) +{ + unsigned char tag = STK_DATA_OBJECT_TYPE_AT_RESPONSE; + int len; + + if (data == NULL) + return TRUE; + + /* "If the AT Response string is longer than the maximum length + * capable of being transmitted to the UICC then the AT Response + * string shall be truncated to this length by the terminal." */ + len = strlen(data); + if (len > 240) /* Safe pick */ + len = 240; + + return stk_tlv_builder_open_container(tlv, cr, tag, TRUE) && + stk_tlv_builder_append_bytes(tlv, data, len) && + stk_tlv_builder_close_container(tlv); +} + /* Described in TS 102.223 Section 8.45 */ static gboolean build_dataobj_language(struct stk_tlv_builder *tlv, const void *data, gboolean cr) @@ -4053,6 +4075,13 @@ unsigned int stk_pdu_from_response(const struct stk_response *response, break; case STK_COMMAND_TYPE_SETUP_IDLE_MODE_TEXT: break; + case STK_COMMAND_TYPE_RUN_AT_COMMAND: + ok = build_dataobj(&builder, + build_dataobj_at_response, + DATAOBJ_FLAG_CR, + response->run_at_command.at_response, + NULL); + break; default: return 0; }; |