Open Source Telephony
 help / color / mirror / Atom feed
* [PATCH v2 01/10] Add parser for items next action indicator objects
@ 2010-03-30  7:57 Yang Gu
  2010-03-30  7:57 ` [PATCH v2 02/10] Adjust the sequence of comprehension tlv structures Yang Gu
  2010-03-30 15:28 ` [PATCH v2 01/10] Add parser for items next action indicator objects Denis Kenzior
  0 siblings, 2 replies; 12+ messages in thread
From: Yang Gu @ 2010-03-30  7:57 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 2864 bytes --]

---
 src/stkutil.c |   36 ++++++++++++++++++++++++++++++++++++
 src/stkutil.h |    9 +++++++++
 2 files changed, 45 insertions(+), 0 deletions(-)

diff --git a/src/stkutil.c b/src/stkutil.c
index c5e0369..3f7183f 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -67,6 +67,29 @@ static gboolean parse_dataobj_common_bool(struct comprehension_tlv_iter *iter,
 	return TRUE;
 }
 
+/* For data object that only has a byte array with variable length */
+static gboolean parse_dataobj_common_byte_array(
+			struct comprehension_tlv_iter *iter,
+			enum stk_data_object_type type,
+			unsigned char *array, unsigned int *array_len)
+{
+	const unsigned char *data;
+	unsigned int len;
+
+	if (comprehension_tlv_iter_get_tag(iter) != type)
+		return FALSE;
+
+	len = comprehension_tlv_iter_get_length(iter);
+	if (len < 1)
+		return FALSE;
+
+	data = comprehension_tlv_iter_get_data(iter);
+	*array_len = len;
+	memcpy(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)
@@ -643,6 +666,17 @@ static gboolean parse_dataobj_network_measurement_results(
 	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;
+
+	return parse_dataobj_common_byte_array(iter,
+			STK_DATA_OBJECT_TYPE_ITEMS_NEXT_ACTION_INDICATOR,
+			inai->list, &inai->len);
+}
+
 /* Defined in TS 102.223 Section 8.31 */
 static gboolean parse_dataobj_icon_id(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -760,6 +794,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_help_request;
 	case STK_DATA_OBJECT_TYPE_NETWORK_MEASUREMENT_RESULTS:
 		return parse_dataobj_network_measurement_results;
+	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 a9495de..c4b8970 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -370,6 +370,15 @@ struct stk_file {
 };
 
 /*
+ * 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;
+};
+
+/*
  * 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 v2 02/10] Adjust the sequence of comprehension tlv structures
  2010-03-30  7:57 [PATCH v2 01/10] Add parser for items next action indicator objects Yang Gu
@ 2010-03-30  7:57 ` Yang Gu
  2010-03-30  7:57   ` [PATCH v2 03/10] Add parser for event list objects Yang Gu
  2010-03-30 15:28 ` [PATCH v2 01/10] Add parser for items next action indicator objects Denis Kenzior
  1 sibling, 1 reply; 12+ messages in thread
From: Yang Gu @ 2010-03-30  7:57 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1331 bytes --]

---
 src/stkutil.h |   22 +++++++++++-----------
 1 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/stkutil.h b/src/stkutil.h
index c4b8970..0a9c145 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -347,17 +347,6 @@ struct stk_result {
 	unsigned char *additional;
 };
 
-/* Defined in TS 102.223 Section 8.19 */
-struct stk_location_info {
-	char mnc[OFONO_MAX_MNC_LENGTH + 1];
-	char mcc[OFONO_MAX_MCC_LENGTH + 1];
-	unsigned short lac_tac;
-	ofono_bool_t has_ci;
-	unsigned short ci;
-	ofono_bool_t has_ext_ci;
-	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
@@ -369,6 +358,17 @@ struct stk_file {
 	unsigned int len;
 };
 
+/* Defined in TS 102.223 Section 8.19 */
+struct stk_location_info {
+	char mnc[OFONO_MAX_MNC_LENGTH + 1];
+	char mcc[OFONO_MAX_MCC_LENGTH + 1];
+	unsigned short lac_tac;
+	ofono_bool_t has_ci;
+	unsigned short ci;
+	ofono_bool_t has_ext_ci;
+	unsigned short ext_ci;
+};
+
 /*
  * 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.
-- 
1.6.3.3


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v2 03/10] Add parser for event list objects
  2010-03-30  7:57 ` [PATCH v2 02/10] Adjust the sequence of comprehension tlv structures Yang Gu
@ 2010-03-30  7:57   ` Yang Gu
  2010-03-30  7:57     ` [PATCH v2 04/10] Add parser for cause objects Yang Gu
  0 siblings, 1 reply; 12+ messages in thread
From: Yang Gu @ 2010-03-30  7:57 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 3132 bytes --]

---
 src/stkutil.c |   12 ++++++++++++
 src/stkutil.h |   33 +++++++++++++++++++++++++++++++++
 2 files changed, 45 insertions(+), 0 deletions(-)

diff --git a/src/stkutil.c b/src/stkutil.c
index 3f7183f..aa57543 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -677,6 +677,16 @@ static gboolean parse_dataobj_items_next_action_indicator(
 			inai->list, &inai->len);
 }
 
+/* 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;
+
+	return parse_dataobj_common_byte_array(iter,
+			STK_DATA_OBJECT_TYPE_EVENT_LIST, el->list, &el->len);
+}
+
 /* Defined in TS 102.223 Section 8.31 */
 static gboolean parse_dataobj_icon_id(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -796,6 +806,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_network_measurement_results;
 	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 0a9c145..12428ca 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;
@@ -379,6 +403,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;
+};
+
+/*
  * 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 v2 04/10] Add parser for cause objects
  2010-03-30  7:57   ` [PATCH v2 03/10] Add parser for event list objects Yang Gu
@ 2010-03-30  7:57     ` Yang Gu
  2010-03-30  7:57       ` [PATCH v2 05/10] Add parser for location status objects Yang Gu
  0 siblings, 1 reply; 12+ messages in thread
From: Yang Gu @ 2010-03-30  7:57 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 2203 bytes --]

---
 src/stkutil.c |   30 ++++++++++++++++++++++++++++++
 src/stkutil.h |    9 +++++++++
 2 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/src/stkutil.c b/src/stkutil.c
index aa57543..14d3999 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -687,6 +687,34 @@ static gboolean parse_dataobj_event_list(
 			STK_DATA_OBJECT_TYPE_EVENT_LIST, el->list, &el->len);
 }
 
+/* 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;
+
+	if (comprehension_tlv_iter_get_tag(iter) != STK_DATA_OBJECT_TYPE_CAUSE)
+		return FALSE;
+
+	len = comprehension_tlv_iter_get_length(iter);
+	if ((len == 1) || (len > 30))
+		return FALSE;
+
+	if (len == 0) {
+		cause->has_cause = TRUE;
+		return TRUE;
+	}
+
+	data = comprehension_tlv_iter_get_data(iter);
+	cause->len = len;
+	memcpy(cause->cause, data, len);
+	cause->has_cause = TRUE;
+
+	return TRUE;
+}
+
 /* Defined in TS 102.223 Section 8.31 */
 static gboolean parse_dataobj_icon_id(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -808,6 +836,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 12428ca..e719403 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -412,6 +412,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;
+};
+
+/*
  * 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 v2 05/10] Add parser for location status objects
  2010-03-30  7:57     ` [PATCH v2 04/10] Add parser for cause objects Yang Gu
@ 2010-03-30  7:57       ` Yang Gu
  2010-03-30  7:57         ` [PATCH v2 06/10] Add parser for transaction identifier objects Yang Gu
  0 siblings, 1 reply; 12+ messages in thread
From: Yang Gu @ 2010-03-30  7:57 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 2369 bytes --]

---
 src/stkutil.c |   30 ++++++++++++++++++++++++++++++
 src/stkutil.h |    6 ++++++
 2 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/src/stkutil.c b/src/stkutil.c
index 14d3999..37cb81e 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -67,6 +67,26 @@ 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, void *user,
+		enum stk_data_object_type type)
+{
+	char *byte = user;
+	const unsigned char *data;
+
+	if (comprehension_tlv_iter_get_tag(iter) != type)
+		return FALSE;
+
+	if (comprehension_tlv_iter_get_length(iter) != 1)
+		return FALSE;
+
+	data = comprehension_tlv_iter_get_data(iter);
+	*byte = data[0];
+
+	return TRUE;
+}
+
 /* For data object that only has a byte array with variable length */
 static gboolean parse_dataobj_common_byte_array(
 			struct comprehension_tlv_iter *iter,
@@ -715,6 +735,14 @@ 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)
+{
+	return parse_dataobj_common_byte(iter, user,
+					STK_DATA_OBJECT_TYPE_LOCATION_STATUS);
+}
+
 /* Defined in TS 102.223 Section 8.31 */
 static gboolean parse_dataobj_icon_id(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -838,6 +866,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 e719403..00e351b 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 v2 06/10] Add parser for transaction identifier objects
  2010-03-30  7:57       ` [PATCH v2 05/10] Add parser for location status objects Yang Gu
@ 2010-03-30  7:57         ` Yang Gu
  2010-03-30  7:57           ` [PATCH v2 07/10] Add parser for call control requested action objects Yang Gu
  0 siblings, 1 reply; 12+ messages in thread
From: Yang Gu @ 2010-03-30  7:57 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1880 bytes --]

---
 src/stkutil.c |   12 ++++++++++++
 src/stkutil.h |    9 +++++++++
 2 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/src/stkutil.c b/src/stkutil.c
index 37cb81e..189d831 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -743,6 +743,16 @@ static gboolean parse_dataobj_location_status(
 					STK_DATA_OBJECT_TYPE_LOCATION_STATUS);
 }
 
+/* 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;
+
+	return parse_dataobj_common_byte_array(iter,
+		STK_DATA_OBJECT_TYPE_TRANSACTION_ID, ti->list, &ti->len);
+}
+
 /* Defined in TS 102.223 Section 8.31 */
 static gboolean parse_dataobj_icon_id(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -868,6 +878,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 00e351b..4c2f195 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -427,6 +427,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;
+};
+
+/*
  * 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 v2 07/10] Add parser for call control requested action objects
  2010-03-30  7:57         ` [PATCH v2 06/10] Add parser for transaction identifier objects Yang Gu
@ 2010-03-30  7:57           ` Yang Gu
  2010-03-30  7:57             ` [PATCH v2 08/10] Add enum for icon qualifier Yang Gu
  0 siblings, 1 reply; 12+ messages in thread
From: Yang Gu @ 2010-03-30  7:57 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 2036 bytes --]

---
 src/stkutil.c |   20 ++++++++++++++++++++
 src/stkutil.h |    6 ++++++
 2 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/src/stkutil.c b/src/stkutil.c
index 189d831..c901213 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -753,6 +753,24 @@ static gboolean parse_dataobj_transaction_id(
 		STK_DATA_OBJECT_TYPE_TRANSACTION_ID, ti->list, &ti->len);
 }
 
+/* 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_call_control_requested_action *action = user;
+	unsigned int len;
+
+	len = comprehension_tlv_iter_get_length(iter);
+
+	action->action = g_try_malloc(len);
+	if (action->action == NULL)
+		return FALSE;
+
+	return parse_dataobj_common_byte_array(iter,
+			STK_DATA_OBJECT_TYPE_CALL_CONTROL_REQUESTED_ACTION,
+			action->action, &action->len);
+}
+
 /* Defined in TS 102.223 Section 8.31 */
 static gboolean parse_dataobj_icon_id(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -880,6 +898,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 4c2f195..1eae1cd 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -435,6 +435,12 @@ struct stk_transaction_id {
 	unsigned int len;
 };
 
+/* Defined in TS 102.223 Section 8.30 */
+struct stk_call_control_requested_action {
+	unsigned char *action;
+	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
-- 
1.6.3.3


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v2 08/10] Add enum for icon qualifier
  2010-03-30  7:57           ` [PATCH v2 07/10] Add parser for call control requested action objects Yang Gu
@ 2010-03-30  7:57             ` Yang Gu
  2010-03-30  7:57               ` [PATCH v2 09/10] Adjust the sequence of icon identifier structure Yang Gu
  0 siblings, 1 reply; 12+ messages in thread
From: Yang Gu @ 2010-03-30  7:57 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 536 bytes --]

---
 src/stkutil.h |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/src/stkutil.h b/src/stkutil.h
index 1eae1cd..0820dda 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
+};
+
 /* 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 v2 09/10] Adjust the sequence of icon identifier structure
  2010-03-30  7:57             ` [PATCH v2 08/10] Add enum for icon qualifier Yang Gu
@ 2010-03-30  7:57               ` Yang Gu
  2010-03-30  7:57                 ` [PATCH v2 10/10] Add parser for item icon identifier list objects Yang Gu
  2010-03-30 15:04                 ` [PATCH v2 09/10] Adjust the sequence of icon identifier structure Denis Kenzior
  0 siblings, 2 replies; 12+ messages in thread
From: Yang Gu @ 2010-03-30  7:57 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1264 bytes --]

---
 src/stkutil.h |   19 ++++++++++---------
 1 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/stkutil.h b/src/stkutil.h
index 0820dda..a3674e4 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -343,15 +343,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.
  */
@@ -447,6 +438,16 @@ struct stk_call_control_requested_action {
 };
 
 /*
+ * 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_icon_identifier {
+	unsigned char qualifier;
+	unsigned char id;
+};
+
+/* 
  * 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 v2 10/10] Add parser for item icon identifier list objects
  2010-03-30  7:57               ` [PATCH v2 09/10] Adjust the sequence of icon identifier structure Yang Gu
@ 2010-03-30  7:57                 ` Yang Gu
  2010-03-30 15:04                 ` [PATCH v2 09/10] Adjust the sequence of icon identifier structure Denis Kenzior
  1 sibling, 0 replies; 12+ messages in thread
From: Yang Gu @ 2010-03-30  7:57 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 2352 bytes --]

---
 src/stkutil.c |   26 ++++++++++++++++++++++++++
 src/stkutil.h |   12 ++++++++++++
 2 files changed, 38 insertions(+), 0 deletions(-)

diff --git a/src/stkutil.c b/src/stkutil.c
index c901213..5b95cba 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -793,6 +793,30 @@ 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;
+
+	if (comprehension_tlv_iter_get_tag(iter) !=
+			STK_DATA_OBJECT_TYPE_ITEM_ICON_ID_LIST)
+		return FALSE;
+
+	len = comprehension_tlv_iter_get_length(iter);
+	if (len < 2)
+		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)
@@ -902,6 +926,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 a3674e4..5cb50f1 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -447,6 +447,18 @@ struct stk_icon_identifier {
 	unsigned char id;
 };
 
+/*
+ * 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
-- 
1.6.3.3


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 09/10] Adjust the sequence of icon identifier structure
  2010-03-30  7:57               ` [PATCH v2 09/10] Adjust the sequence of icon identifier structure Yang Gu
  2010-03-30  7:57                 ` [PATCH v2 10/10] Add parser for item icon identifier list objects Yang Gu
@ 2010-03-30 15:04                 ` Denis Kenzior
  1 sibling, 0 replies; 12+ messages in thread
From: Denis Kenzior @ 2010-03-30 15:04 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1197 bytes --]

Hi Yang,

> ---
>  src/stkutil.h |   19 ++++++++++---------
>  1 files changed, 10 insertions(+), 9 deletions(-)

Please sanity check your patches, while applying I got this:

Applying: Add parser for items next action indicator objects
Applying: Adjust the sequence of comprehension tlv structures
Applying: Add parser for event list objects
Applying: Add parser for cause objects
Applying: Add parser for location status objects
Applying: Add parser for transaction identifier objects
Applying: Add parser for call control requested action objects
Applying: Add enum for icon qualifier
Applying: Adjust the sequence of icon identifier structure
/home/denkenz/ofono-master/.git/rebase-apply/patch:38: trailing whitespace.
/* 
fatal: 1 line adds whitespace errors.
Patch failed at 0009 Adjust the sequence of icon identifier structure
When you have resolved this problem run "git am --resolved".
If you would prefer to skip this patch, instead run "git am --skip".
To restore the original branch and stop patching run "git am --abort".

Use
[apply]
        whitespace = error

in your git config and apply locally to make sure they do so cleanly.

Regards,
-Denis

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 01/10] Add parser for items next action indicator objects
  2010-03-30  7:57 [PATCH v2 01/10] Add parser for items next action indicator objects Yang Gu
  2010-03-30  7:57 ` [PATCH v2 02/10] Adjust the sequence of comprehension tlv structures Yang Gu
@ 2010-03-30 15:28 ` Denis Kenzior
  1 sibling, 0 replies; 12+ messages in thread
From: Denis Kenzior @ 2010-03-30 15:28 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 881 bytes --]

Hi Yang,

> +/* For data object that only has a byte array with variable length */
> +static gboolean parse_dataobj_common_byte_array(
> +			struct comprehension_tlv_iter *iter,
> +			enum stk_data_object_type type,
> +			unsigned char *array, unsigned int *array_len)
> +{
> +	const unsigned char *data;
> +	unsigned int len;
> +
> +	if (comprehension_tlv_iter_get_tag(iter) != type)
> +		return FALSE;
> +
> +	len = comprehension_tlv_iter_get_length(iter);
> +	if (len < 1)
> +		return FALSE;
> +
> +	data = comprehension_tlv_iter_get_data(iter);
> +	*array_len = len;
> +	memcpy(array, data, len);
> +
> +	return TRUE;
> +}
> +

So I can see the point of this function for a byte array that requires to be 
allocated.  For fixed size arrays this function is not adequate; it does not do 
length (boundary) checking for instance.

Regards,
-Denis

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2010-03-30 15:28 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-30  7:57 [PATCH v2 01/10] Add parser for items next action indicator objects Yang Gu
2010-03-30  7:57 ` [PATCH v2 02/10] Adjust the sequence of comprehension tlv structures Yang Gu
2010-03-30  7:57   ` [PATCH v2 03/10] Add parser for event list objects Yang Gu
2010-03-30  7:57     ` [PATCH v2 04/10] Add parser for cause objects Yang Gu
2010-03-30  7:57       ` [PATCH v2 05/10] Add parser for location status objects Yang Gu
2010-03-30  7:57         ` [PATCH v2 06/10] Add parser for transaction identifier objects Yang Gu
2010-03-30  7:57           ` [PATCH v2 07/10] Add parser for call control requested action objects Yang Gu
2010-03-30  7:57             ` [PATCH v2 08/10] Add enum for icon qualifier Yang Gu
2010-03-30  7:57               ` [PATCH v2 09/10] Adjust the sequence of icon identifier structure Yang Gu
2010-03-30  7:57                 ` [PATCH v2 10/10] Add parser for item icon identifier list objects Yang Gu
2010-03-30 15:04                 ` [PATCH v2 09/10] Adjust the sequence of icon identifier structure Denis Kenzior
2010-03-30 15:28 ` [PATCH v2 01/10] Add parser for items next action indicator objects Denis Kenzior

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox