* [PATCH 01/11] Adjust the sequence of comprehension tlv structures @ 2010-03-31 9:16 Yang Gu 2010-03-31 9:16 ` [PATCH 02/11] Add parser for items next action indicator objects Yang Gu 2010-03-31 17:25 ` [PATCH 01/11] Adjust the sequence of comprehension tlv structures Denis Kenzior 0 siblings, 2 replies; 12+ messages in thread From: Yang Gu @ 2010-03-31 9:16 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 2159 bytes --] --- src/stkutil.h | 35 ++++++++++++++++++----------------- 1 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/stkutil.h b/src/stkutil.h index a9495de..b0b09df 100644 --- a/src/stkutil.h +++ b/src/stkutil.h @@ -308,15 +308,6 @@ struct stk_ccp { }; /* - * Icon ID denotes a file on the SIM filesystem. Since EF cannot have record - * ids of 0, we use icon_id with 0 to denote empty icon_identifier objects - */ -struct stk_icon_identifier { - unsigned char qualifier; - unsigned char id; -}; - -/* * According to 102.223 Section 8.8 interval values of 0x00 are reserved. * We use this to denote empty duration objects. */ @@ -347,6 +338,17 @@ struct stk_result { unsigned char *additional; }; +/* Define the struct of single file in TS102.223 Section 8.18. + * According to TS 11.11 Section 6.2, each file id has two bytes, and the + * maximum Dedicated File level is 2. So the maximum size of file is 8, which + * contains two bytes of Master File, 2 bytes of 1st level Dedicated File, + * 2 bytes of 2nd level Dedicated File and 2 bytes of Elementary File. + */ +struct stk_file { + unsigned char file[8]; + unsigned int len; +}; + /* Defined in TS 102.223 Section 8.19 */ struct stk_location_info { char mnc[OFONO_MAX_MNC_LENGTH + 1]; @@ -358,15 +360,14 @@ struct stk_location_info { unsigned short ext_ci; }; -/* Define the struct of single file in TS102.223 Section 8.18. - * According to TS 11.11 Section 6.2, each file id has two bytes, and the - * maximum Dedicated File level is 2. So the maximum size of file is 8, which - * contains two bytes of Master File, 2 bytes of 1st level Dedicated File, - * 2 bytes of 2nd level Dedicated File and 2 bytes of Elementary File. +/* + * Defined in TS 102.223 Section 8.31 + * Icon ID denotes a file on the SIM filesystem. Since EF cannot have record + * ids of 0, we use icon_id with 0 to denote empty icon_identifier objects */ -struct stk_file { - unsigned char file[8]; - unsigned int len; +struct stk_icon_identifier { + unsigned char qualifier; + unsigned char id; }; /* -- 1.6.3.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 02/11] Add parser for items next action indicator objects 2010-03-31 9:16 [PATCH 01/11] Adjust the sequence of comprehension tlv structures Yang Gu @ 2010-03-31 9:16 ` Yang Gu 2010-03-31 9:16 ` [PATCH 03/11] Add parser for event list objects Yang Gu 2010-03-31 17:25 ` [PATCH 01/11] Adjust the sequence of comprehension tlv structures Denis Kenzior 1 sibling, 1 reply; 12+ messages in thread From: Yang Gu @ 2010-03-31 9:16 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 2140 bytes --] --- src/stkutil.c | 20 ++++++++++++++++++++ src/stkutil.h | 9 +++++++++ 2 files changed, 29 insertions(+), 0 deletions(-) diff --git a/src/stkutil.c b/src/stkutil.c index c737395..37db3c3 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -592,6 +592,24 @@ static gboolean parse_dataobj_default_text(struct comprehension_tlv_iter *iter, return TRUE; } +/* Defined in TS 102.223 Section 8.24 */ +static gboolean parse_dataobj_items_next_action_indicator( + struct comprehension_tlv_iter *iter, void *user) +{ + struct stk_items_next_action_indicator *inai = user; + const unsigned char *data; + unsigned int len = comprehension_tlv_iter_get_length(iter); + + if ((len < 1) || (len > sizeof(inai->list))) + return FALSE; + + data = comprehension_tlv_iter_get_data(iter); + inai->len = len; + memcpy(inai->list, data, len); + + return TRUE; +} + /* Defined in TS 102.223 Section 8.31 */ static gboolean parse_dataobj_icon_id(struct comprehension_tlv_iter *iter, void *user) @@ -698,6 +716,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type) return parse_dataobj_network_measurement_results; case STK_DATA_OBJECT_TYPE_DEFAULT_TEXT: return parse_dataobj_default_text; + case STK_DATA_OBJECT_TYPE_ITEMS_NEXT_ACTION_INDICATOR: + return parse_dataobj_items_next_action_indicator; case STK_DATA_OBJECT_TYPE_ICON_ID: return parse_dataobj_icon_id; case STK_DATA_OBJECT_TYPE_IMMEDIATE_RESPONSE: diff --git a/src/stkutil.h b/src/stkutil.h index b0b09df..fb7a2d0 100644 --- a/src/stkutil.h +++ b/src/stkutil.h @@ -361,6 +361,15 @@ struct stk_location_info { }; /* + * According to 102.223 Section 8.24 the length of CTLV is 1 byte. This means + * that the maximum size is 127 according to the rules of CTLVs. + */ +struct stk_items_next_action_indicator { + unsigned char list[127]; + unsigned int len; +}; + +/* * Defined in TS 102.223 Section 8.31 * Icon ID denotes a file on the SIM filesystem. Since EF cannot have record * ids of 0, we use icon_id with 0 to denote empty icon_identifier objects -- 1.6.3.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 03/11] Add parser for event list objects 2010-03-31 9:16 ` [PATCH 02/11] Add parser for items next action indicator objects Yang Gu @ 2010-03-31 9:16 ` Yang Gu 2010-03-31 9:16 ` [PATCH 04/11] Add parser for cause objects Yang Gu 0 siblings, 1 reply; 12+ messages in thread From: Yang Gu @ 2010-03-31 9:16 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 3266 bytes --] --- src/stkutil.c | 20 ++++++++++++++++++++ src/stkutil.h | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 0 deletions(-) diff --git a/src/stkutil.c b/src/stkutil.c index 37db3c3..ec64af3 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -610,6 +610,24 @@ static gboolean parse_dataobj_items_next_action_indicator( return TRUE; } +/* Defined in TS 102.223 Section 8.25 */ +static gboolean parse_dataobj_event_list( + struct comprehension_tlv_iter *iter, void *user) +{ + struct stk_event_list *el = user; + const unsigned char *data; + unsigned int len = comprehension_tlv_iter_get_length(iter); + + if ((len < 1) || (len > sizeof(el->list))) + return FALSE; + + data = comprehension_tlv_iter_get_data(iter); + el->len = len; + memcpy(el->list, data, len); + + return TRUE; +} + /* Defined in TS 102.223 Section 8.31 */ static gboolean parse_dataobj_icon_id(struct comprehension_tlv_iter *iter, void *user) @@ -718,6 +736,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type) return parse_dataobj_default_text; case STK_DATA_OBJECT_TYPE_ITEMS_NEXT_ACTION_INDICATOR: return parse_dataobj_items_next_action_indicator; + case STK_DATA_OBJECT_TYPE_EVENT_LIST: + return parse_dataobj_event_list; case STK_DATA_OBJECT_TYPE_ICON_ID: return parse_dataobj_icon_id; case STK_DATA_OBJECT_TYPE_IMMEDIATE_RESPONSE: diff --git a/src/stkutil.h b/src/stkutil.h index fb7a2d0..be89c9b 100644 --- a/src/stkutil.h +++ b/src/stkutil.h @@ -266,6 +266,30 @@ enum stk_tone_type { STK_TONE_TYPE_MELODY_8 = 0x47 }; +enum stk_event_type { + STK_EVENT_TYPE_MT_CALL = 0x00, + STK_EVENT_TYPE_CALL_CONNECTED = 0x01, + STK_EVENT_TYPE_CALL_DISCONNECTED = 0x02, + STK_EVENT_TYPE_LOCATION_STATUS = 0x03, + STK_EVENT_TYPE_USER_ACTIVITY = 0x04, + STK_EVENT_TYPE_IDLE_SCREEN_AVAILABLE = 0x05, + STK_EVENT_TYPE_CARD_READER_STATUS = 0x06, + STK_EVENT_TYPE_LANGUAGE_SELECTION = 0x07, + STK_EVENT_TYPE_BROWSER_TERMINATION = 0x08, + STK_EVENT_TYPE_DATA_AVAILABLE = 0x09, + STK_EVENT_TYPE_CHANNEL_STATUS = 0x0A, + STK_EVENT_TYPE_SINGLE_ACCESS_TECHNOLOGY_CHANGE = 0x0B, + STK_EVENT_TYPE_DISPLAY_PARAMETERS_CHANGED = 0x0C, + STK_EVENT_TYPE_LOCAL_CONNECTION = 0x0D, + STK_EVENT_TYPE_NETWORK_SEARCH_MODE_CHANGE = 0x0E, + STK_EVENT_TYPE_BROWSING_STATUS = 0x0F, + STK_EVENT_TYPE_FRAMES_INFORMATION_CHANGE = 0x10, + STK_EVENT_TYPE_I_WLAN_ACCESS_STATUS = 0x11, + STK_EVENT_TYPE_NETWORK_REJECTION = 0x12, + STK_EVENT_TYPE_HCI_CONNECTIVITY_EVENT = 0x13, + STK_EVENT_TYPE_MULTIPLE_ACCESS_TECHNOLOGIES_CHANGE = 0x14 +}; + /* Defined in TS 102.223 Section 8.1 */ struct stk_address { unsigned char ton_npi; @@ -370,6 +394,15 @@ struct stk_items_next_action_indicator { }; /* + * According to 102.223 Section 8.25, there are 21 kinds of event type and no + * one should appear more than once. + */ +struct stk_event_list { + unsigned char list[21]; + unsigned int len; +}; + +/* * Defined in TS 102.223 Section 8.31 * Icon ID denotes a file on the SIM filesystem. Since EF cannot have record * ids of 0, we use icon_id with 0 to denote empty icon_identifier objects -- 1.6.3.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 04/11] Add parser for cause objects 2010-03-31 9:16 ` [PATCH 03/11] Add parser for event list objects Yang Gu @ 2010-03-31 9:16 ` Yang Gu 2010-03-31 9:16 ` [PATCH 05/11] Add parser for location status objects Yang Gu 0 siblings, 1 reply; 12+ messages in thread From: Yang Gu @ 2010-03-31 9:16 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 2020 bytes --] --- src/stkutil.c | 25 +++++++++++++++++++++++++ src/stkutil.h | 9 +++++++++ 2 files changed, 34 insertions(+), 0 deletions(-) diff --git a/src/stkutil.c b/src/stkutil.c index ec64af3..08d013b 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -628,6 +628,29 @@ static gboolean parse_dataobj_event_list( return TRUE; } +/* Defined in TS 102.223 Section 8.26 */ +static gboolean parse_dataobj_cause( + struct comprehension_tlv_iter *iter, void *user) +{ + struct stk_cause *cause = user; + const unsigned char *data; + unsigned int len = comprehension_tlv_iter_get_length(iter); + + if ((len == 1) || (len > sizeof(cause->cause))) + return FALSE; + + cause->has_cause = TRUE; + + if (len == 0) + return TRUE; + + data = comprehension_tlv_iter_get_data(iter); + cause->len = len; + memcpy(cause->cause, data, len); + + return TRUE; +} + /* Defined in TS 102.223 Section 8.31 */ static gboolean parse_dataobj_icon_id(struct comprehension_tlv_iter *iter, void *user) @@ -738,6 +761,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type) return parse_dataobj_items_next_action_indicator; case STK_DATA_OBJECT_TYPE_EVENT_LIST: return parse_dataobj_event_list; + case STK_DATA_OBJECT_TYPE_CAUSE: + return parse_dataobj_cause; case STK_DATA_OBJECT_TYPE_ICON_ID: return parse_dataobj_icon_id; case STK_DATA_OBJECT_TYPE_IMMEDIATE_RESPONSE: diff --git a/src/stkutil.h b/src/stkutil.h index be89c9b..21f6e8a 100644 --- a/src/stkutil.h +++ b/src/stkutil.h @@ -403,6 +403,15 @@ struct stk_event_list { }; /* + * According to 102.223 Section 8.26, the maximum length of cause is 30. + */ +struct stk_cause { + unsigned char cause[30]; + unsigned int len; + ofono_bool_t has_cause; +}; + +/* * Defined in TS 102.223 Section 8.31 * Icon ID denotes a file on the SIM filesystem. Since EF cannot have record * ids of 0, we use icon_id with 0 to denote empty icon_identifier objects -- 1.6.3.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 05/11] Add parser for location status objects 2010-03-31 9:16 ` [PATCH 04/11] Add parser for cause objects Yang Gu @ 2010-03-31 9:16 ` Yang Gu 2010-03-31 9:16 ` [PATCH 06/11] Add parser for transaction identifier objects Yang Gu 0 siblings, 1 reply; 12+ messages in thread From: Yang Gu @ 2010-03-31 9:16 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 2202 bytes --] --- src/stkutil.c | 26 ++++++++++++++++++++++++++ src/stkutil.h | 6 ++++++ 2 files changed, 32 insertions(+), 0 deletions(-) diff --git a/src/stkutil.c b/src/stkutil.c index 08d013b..b04ef4c 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -97,6 +97,21 @@ static gboolean parse_dataobj_common_bool(struct comprehension_tlv_iter *iter, return TRUE; } +/* For data object that only has one byte */ +static gboolean parse_dataobj_common_byte( + struct comprehension_tlv_iter *iter, unsigned char *out) +{ + const unsigned char *data; + + if (comprehension_tlv_iter_get_length(iter) != 1) + return FALSE; + + data = comprehension_tlv_iter_get_data(iter); + *out = data[0]; + + return TRUE; +} + /* Defined in TS 102.223 Section 8.1 */ static gboolean parse_dataobj_address(struct comprehension_tlv_iter *iter, void *user) @@ -651,6 +666,15 @@ static gboolean parse_dataobj_cause( return TRUE; } +/* Defined in TS 102.223 Section 8.27 */ +static gboolean parse_dataobj_location_status( + struct comprehension_tlv_iter *iter, void *user) +{ + unsigned char *byte = user; + + return parse_dataobj_common_byte(iter, byte); +} + /* Defined in TS 102.223 Section 8.31 */ static gboolean parse_dataobj_icon_id(struct comprehension_tlv_iter *iter, void *user) @@ -763,6 +787,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type) return parse_dataobj_event_list; case STK_DATA_OBJECT_TYPE_CAUSE: return parse_dataobj_cause; + case STK_DATA_OBJECT_TYPE_LOCATION_STATUS: + return parse_dataobj_location_status; case STK_DATA_OBJECT_TYPE_ICON_ID: return parse_dataobj_icon_id; case STK_DATA_OBJECT_TYPE_IMMEDIATE_RESPONSE: diff --git a/src/stkutil.h b/src/stkutil.h index 21f6e8a..a87b4ef 100644 --- a/src/stkutil.h +++ b/src/stkutil.h @@ -290,6 +290,12 @@ enum stk_event_type { STK_EVENT_TYPE_MULTIPLE_ACCESS_TECHNOLOGIES_CHANGE = 0x14 }; +enum stk_service_state { + STK_NORMAL_SERVICE = 0x00, + STK_LIMITED_SERVICE = 0x01, + STK_NO_SERVICE = 0x02 +}; + /* Defined in TS 102.223 Section 8.1 */ struct stk_address { unsigned char ton_npi; -- 1.6.3.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 06/11] Add parser for transaction identifier objects 2010-03-31 9:16 ` [PATCH 05/11] Add parser for location status objects Yang Gu @ 2010-03-31 9:16 ` Yang Gu 2010-03-31 9:16 ` [PATCH 07/11] Add parser for call control requested action objects Yang Gu 0 siblings, 1 reply; 12+ messages in thread From: Yang Gu @ 2010-03-31 9:16 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 2043 bytes --] --- src/stkutil.c | 20 ++++++++++++++++++++ src/stkutil.h | 9 +++++++++ 2 files changed, 29 insertions(+), 0 deletions(-) diff --git a/src/stkutil.c b/src/stkutil.c index b04ef4c..73dae2c 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -675,6 +675,24 @@ static gboolean parse_dataobj_location_status( return parse_dataobj_common_byte(iter, byte); } +/* Defined in TS 102.223 Section 8.28 */ +static gboolean parse_dataobj_transaction_id( + struct comprehension_tlv_iter *iter, void *user) +{ + struct stk_transaction_id *ti = user; + const unsigned char *data; + unsigned int len = comprehension_tlv_iter_get_length(iter); + + if ((len < 1) || (len > sizeof(ti->list))) + return FALSE; + + data = comprehension_tlv_iter_get_data(iter); + ti->len = len; + memcpy(ti->list, data, len); + + return TRUE; +} + /* Defined in TS 102.223 Section 8.31 */ static gboolean parse_dataobj_icon_id(struct comprehension_tlv_iter *iter, void *user) @@ -789,6 +807,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type) return parse_dataobj_cause; case STK_DATA_OBJECT_TYPE_LOCATION_STATUS: return parse_dataobj_location_status; + case STK_DATA_OBJECT_TYPE_TRANSACTION_ID: + return parse_dataobj_transaction_id; case STK_DATA_OBJECT_TYPE_ICON_ID: return parse_dataobj_icon_id; case STK_DATA_OBJECT_TYPE_IMMEDIATE_RESPONSE: diff --git a/src/stkutil.h b/src/stkutil.h index a87b4ef..419cda7 100644 --- a/src/stkutil.h +++ b/src/stkutil.h @@ -418,6 +418,15 @@ struct stk_cause { }; /* + * According to 102.223 Section 8.28 the length of CTLV is 1 byte. This means + * that the maximum size is 127 according to the rules of CTLVs. + */ +struct stk_transaction_id { + unsigned char list[127]; + unsigned int len; +}; + +/* * Defined in TS 102.223 Section 8.31 * Icon ID denotes a file on the SIM filesystem. Since EF cannot have record * ids of 0, we use icon_id with 0 to denote empty icon_identifier objects -- 1.6.3.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 07/11] Add parser for call control requested action objects 2010-03-31 9:16 ` [PATCH 06/11] Add parser for transaction identifier objects Yang Gu @ 2010-03-31 9:16 ` Yang Gu 2010-03-31 9:17 ` [PATCH 08/11] Add enum for icon qualifier Yang Gu 0 siblings, 1 reply; 12+ messages in thread From: Yang Gu @ 2010-03-31 9:16 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 2492 bytes --] --- src/stkutil.c | 34 ++++++++++++++++++++++++++++++++++ src/stkutil.h | 6 ++++++ 2 files changed, 40 insertions(+), 0 deletions(-) diff --git a/src/stkutil.c b/src/stkutil.c index 73dae2c..b60aa65 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -112,6 +112,29 @@ static gboolean parse_dataobj_common_byte( return TRUE; } +/* For data object that only has a byte array with undetermined length */ +static gboolean parse_dataobj_common_byte_array( + struct comprehension_tlv_iter *iter, + struct stk_common_byte_array *array) +{ + const unsigned char *data; + unsigned int len = comprehension_tlv_iter_get_length(iter); + + if (len < 1) + return FALSE; + + data = comprehension_tlv_iter_get_data(iter); + array->len = len; + + array->array = g_try_malloc(len); + if (array->array == NULL) + return FALSE; + + memcpy(array->array, data, len); + + return TRUE; +} + /* Defined in TS 102.223 Section 8.1 */ static gboolean parse_dataobj_address(struct comprehension_tlv_iter *iter, void *user) @@ -693,6 +716,15 @@ static gboolean parse_dataobj_transaction_id( return TRUE; } +/* Defined in TS 102.223 Section 8.30 */ +static gboolean parse_dataobj_call_control_requested_action( + struct comprehension_tlv_iter *iter, void *user) +{ + struct stk_common_byte_array *array = user; + + return parse_dataobj_common_byte_array(iter, array); +} + /* Defined in TS 102.223 Section 8.31 */ static gboolean parse_dataobj_icon_id(struct comprehension_tlv_iter *iter, void *user) @@ -809,6 +841,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type) return parse_dataobj_location_status; case STK_DATA_OBJECT_TYPE_TRANSACTION_ID: return parse_dataobj_transaction_id; + case STK_DATA_OBJECT_TYPE_CALL_CONTROL_REQUESTED_ACTION: + return parse_dataobj_call_control_requested_action; case STK_DATA_OBJECT_TYPE_ICON_ID: return parse_dataobj_icon_id; case STK_DATA_OBJECT_TYPE_IMMEDIATE_RESPONSE: diff --git a/src/stkutil.h b/src/stkutil.h index 419cda7..9ba8138 100644 --- a/src/stkutil.h +++ b/src/stkutil.h @@ -296,6 +296,12 @@ enum stk_service_state { STK_NO_SERVICE = 0x02 }; +/* For data object that only has a byte array with undetermined length */ +struct stk_common_byte_array { + unsigned char *array; + unsigned int len; +}; + /* Defined in TS 102.223 Section 8.1 */ struct stk_address { unsigned char ton_npi; -- 1.6.3.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 08/11] Add enum for icon qualifier 2010-03-31 9:16 ` [PATCH 07/11] Add parser for call control requested action objects Yang Gu @ 2010-03-31 9:17 ` Yang Gu 2010-03-31 9:17 ` [PATCH 09/11] Add parser for item icon identifier list objects Yang Gu 0 siblings, 1 reply; 12+ messages in thread From: Yang Gu @ 2010-03-31 9:17 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 579 bytes --] --- src/stkutil.h | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/src/stkutil.h b/src/stkutil.h index 9ba8138..5619211 100644 --- a/src/stkutil.h +++ b/src/stkutil.h @@ -296,6 +296,11 @@ enum stk_service_state { STK_NO_SERVICE = 0x02 }; +enum stk_icon_qualifier { + STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY = 0x00, + STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY = 0x01 +}; + /* For data object that only has a byte array with undetermined length */ struct stk_common_byte_array { unsigned char *array; -- 1.6.3.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 09/11] Add parser for item icon identifier list objects 2010-03-31 9:17 ` [PATCH 08/11] Add enum for icon qualifier Yang Gu @ 2010-03-31 9:17 ` Yang Gu 2010-03-31 9:17 ` [PATCH 10/11] Rename stk_icon_identifier to stk_icon_id Yang Gu 0 siblings, 1 reply; 12+ messages in thread From: Yang Gu @ 2010-03-31 9:17 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 2281 bytes --] --- src/stkutil.c | 21 +++++++++++++++++++++ src/stkutil.h | 12 ++++++++++++ 2 files changed, 33 insertions(+), 0 deletions(-) diff --git a/src/stkutil.c b/src/stkutil.c index b60aa65..4c9cb6a 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -743,6 +743,25 @@ static gboolean parse_dataobj_icon_id(struct comprehension_tlv_iter *iter, return TRUE; } +/* Defined in TS 102.223 Section 8.32 */ +static gboolean parse_dataobj_item_icon_id_list( + struct comprehension_tlv_iter *iter, void *user) +{ + struct stk_item_icon_id_list *iiil = user; + const unsigned char *data; + unsigned int len = comprehension_tlv_iter_get_length(iter); + + if ((len < 2) || (len > 127)) + return FALSE; + + data = comprehension_tlv_iter_get_data(iter); + iiil->qualifier = data[0]; + iiil->len = len - 1; + memcpy(iiil->list, data + 1, iiil->len); + + return TRUE; +} + /* Defined in 102.223 Section 8.43 */ static gboolean parse_dataobj_imm_resp(struct comprehension_tlv_iter *iter, void *user) @@ -845,6 +864,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type) return parse_dataobj_call_control_requested_action; case STK_DATA_OBJECT_TYPE_ICON_ID: return parse_dataobj_icon_id; + case STK_DATA_OBJECT_TYPE_ITEM_ICON_ID_LIST: + return parse_dataobj_item_icon_id_list; case STK_DATA_OBJECT_TYPE_IMMEDIATE_RESPONSE: return parse_dataobj_imm_resp; case STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE: diff --git a/src/stkutil.h b/src/stkutil.h index 5619211..3f2802e 100644 --- a/src/stkutil.h +++ b/src/stkutil.h @@ -448,6 +448,18 @@ struct stk_icon_identifier { }; /* + * According to 102.223 Section 8.32 the length of CTLV is 1 byte. This means + * that the maximum size is 127 according to the rules of CTLVs. This size also + * includes icon list qualifier for 1 byte, so the maxmimum size of icon + * identifier list is 126. + */ +struct stk_item_icon_id_list { + unsigned char qualifier; + unsigned char list[126]; + unsigned int len; +}; + +/* * According to 102.223 Section 8.72 the length of text attribute CTLV is 1 * byte. This means that the maximum size is 127 according to the rules * of CTLVs. Empty attribute options will have len of 0. -- 1.6.3.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 10/11] Rename stk_icon_identifier to stk_icon_id 2010-03-31 9:17 ` [PATCH 09/11] Add parser for item icon identifier list objects Yang Gu @ 2010-03-31 9:17 ` Yang Gu 2010-03-31 9:17 ` [PATCH 11/11] Handle the comprehension tlv with bad format in parse_dataobj() Yang Gu 0 siblings, 1 reply; 12+ messages in thread From: Yang Gu @ 2010-03-31 9:17 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 1942 bytes --] --- src/stkutil.c | 2 +- src/stkutil.h | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/stkutil.c b/src/stkutil.c index 4c9cb6a..b830291 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -729,7 +729,7 @@ static gboolean parse_dataobj_call_control_requested_action( static gboolean parse_dataobj_icon_id(struct comprehension_tlv_iter *iter, void *user) { - struct stk_icon_identifier *id = user; + struct stk_icon_id *id = user; const unsigned char *data; if (comprehension_tlv_iter_get_length(iter) != 2) diff --git a/src/stkutil.h b/src/stkutil.h index 3f2802e..4ff8c4b 100644 --- a/src/stkutil.h +++ b/src/stkutil.h @@ -442,7 +442,7 @@ struct stk_transaction_id { * Icon ID denotes a file on the SIM filesystem. Since EF cannot have record * ids of 0, we use icon_id with 0 to denote empty icon_identifier objects */ -struct stk_icon_identifier { +struct stk_icon_id { unsigned char qualifier; unsigned char id; }; @@ -471,7 +471,7 @@ struct stk_text_attribute { struct stk_command_display_text { char *text; - struct stk_icon_identifier icon_id; + struct stk_icon_id icon_id; ofono_bool_t immediate_response; struct stk_duration duration; struct stk_text_attribute text_attribute; @@ -482,7 +482,7 @@ struct stk_command_get_input { char *text; struct stk_response_length response_length; char *default_text; - struct stk_icon_identifier icon_id; + struct stk_icon_id icon_id; struct stk_text_attribute text_attribute; unsigned char frame_id; /* Values 0x10 to 0xFF reserved */ }; @@ -491,7 +491,7 @@ struct stk_command_send_sms { char *alpha_id; struct stk_address address; struct sms gsm_sms; - struct stk_icon_identifier icon_id; + struct stk_icon_id icon_id; struct stk_text_attribute text_attribute; unsigned char frame_id; /* Values 0x10 to 0xFF reserved */ }; -- 1.6.3.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 11/11] Handle the comprehension tlv with bad format in parse_dataobj() 2010-03-31 9:17 ` [PATCH 10/11] Rename stk_icon_identifier to stk_icon_id Yang Gu @ 2010-03-31 9:17 ` Yang Gu 0 siblings, 0 replies; 12+ messages in thread From: Yang Gu @ 2010-03-31 9:17 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 1111 bytes --] --- src/stkutil.c | 16 ++++++---------- 1 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/stkutil.c b/src/stkutil.c index b830291..937ef1a 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -910,7 +910,6 @@ static gboolean parse_dataobj(struct comprehension_tlv_iter *iter, entries = g_slist_reverse(entries); for (l = entries; l; l = l->next) { - gboolean ret; dataobj_handler handler; struct dataobj_handler_entry *entry = l->data; @@ -918,15 +917,12 @@ static gboolean parse_dataobj(struct comprehension_tlv_iter *iter, if (handler == NULL) continue; - if (comprehension_tlv_iter_get_tag(iter) == entry->type) - ret = handler(iter, entry->data); - else - ret = FALSE; - - entry->parsed = ret; - - if (ret && comprehension_tlv_iter_next(iter) == FALSE) - break; + if (comprehension_tlv_iter_get_tag(iter) == entry->type) { + if (handler(iter, entry->data)) + entry->parsed = TRUE; + if (comprehension_tlv_iter_next(iter) == FALSE) + break; + } } for (l = entries; l; l = l->next) { -- 1.6.3.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 01/11] Adjust the sequence of comprehension tlv structures 2010-03-31 9:16 [PATCH 01/11] Adjust the sequence of comprehension tlv structures Yang Gu 2010-03-31 9:16 ` [PATCH 02/11] Add parser for items next action indicator objects Yang Gu @ 2010-03-31 17:25 ` Denis Kenzior 1 sibling, 0 replies; 12+ messages in thread From: Denis Kenzior @ 2010-03-31 17:25 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 195 bytes --] Hi Yang, > --- > src/stkutil.h | 35 ++++++++++++++++++----------------- > 1 files changed, 18 insertions(+), 17 deletions(-) All 11 patches have now been applied. Thanks, -Denis ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2010-03-31 17:25 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-03-31 9:16 [PATCH 01/11] Adjust the sequence of comprehension tlv structures Yang Gu 2010-03-31 9:16 ` [PATCH 02/11] Add parser for items next action indicator objects Yang Gu 2010-03-31 9:16 ` [PATCH 03/11] Add parser for event list objects Yang Gu 2010-03-31 9:16 ` [PATCH 04/11] Add parser for cause objects Yang Gu 2010-03-31 9:16 ` [PATCH 05/11] Add parser for location status objects Yang Gu 2010-03-31 9:16 ` [PATCH 06/11] Add parser for transaction identifier objects Yang Gu 2010-03-31 9:16 ` [PATCH 07/11] Add parser for call control requested action objects Yang Gu 2010-03-31 9:17 ` [PATCH 08/11] Add enum for icon qualifier Yang Gu 2010-03-31 9:17 ` [PATCH 09/11] Add parser for item icon identifier list objects Yang Gu 2010-03-31 9:17 ` [PATCH 10/11] Rename stk_icon_identifier to stk_icon_id Yang Gu 2010-03-31 9:17 ` [PATCH 11/11] Handle the comprehension tlv with bad format in parse_dataobj() Yang Gu 2010-03-31 17:25 ` [PATCH 01/11] Adjust the sequence of comprehension tlv structures Denis Kenzior
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox