All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.