All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 01/17] Add parser for item text attribute list objects
@ 2010-04-20  6:14 Yang Gu
  2010-04-20  6:14 ` [PATCH 02/17] Add parser for aid objects Yang Gu
                   ` (16 more replies)
  0 siblings, 17 replies; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:14 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1896 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 43c06cd..5b97aeb 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1207,6 +1207,24 @@ static gboolean parse_dataobj_other_address(
 	return TRUE;
 }
 
+/* Defined in TS 102.223 Section 8.59 */
+static gboolean parse_dataobj_uicc_te_interface(
+		struct comprehension_tlv_iter *iter, void *user)
+{
+	struct stk_uicc_te_interface *uti = user;
+	const unsigned char *data;
+	unsigned char len = comprehension_tlv_iter_get_length(iter);
+
+	if (len != 3)
+		return FALSE;
+
+	data = comprehension_tlv_iter_get_data(iter);
+	uti->protocol = data[0];
+	uti->port = (data[1] << 8) + data[2];
+
+	return TRUE;
+}
+
 /* Defined in TS 102.223 Section 8.72 */
 static gboolean parse_dataobj_text_attr(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1353,6 +1371,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_card_reader_id;
 	case STK_DATA_OBJECT_TYPE_OTHER_ADDRESS:
 		return parse_dataobj_other_address;
+	case STK_DATA_OBJECT_TYPE_UICC_TE_INTERFACE:
+		return parse_dataobj_uicc_te_interface;
 	case STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE:
 		return parse_dataobj_text_attr;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
diff --git a/src/stkutil.h b/src/stkutil.h
index 1c05440..1c7c970 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -570,6 +570,12 @@ struct stk_other_address {
 	unsigned char type;
 };
 
+/* Defined in TS 102.223 Section 8.59 */
+struct stk_uicc_te_interface {
+	unsigned char protocol;
+	unsigned short port;
+};
+
 /*
  * 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.7.0.4


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

* [PATCH 02/17] Add parser for aid objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
@ 2010-04-20  6:14 ` Yang Gu
  2010-04-20 22:00   ` Denis Kenzior
  2010-04-20  6:14 ` [PATCH 03/17] Add parser for access technology objects Yang Gu
                   ` (15 subsequent siblings)
  16 siblings, 1 reply; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:14 UTC (permalink / raw)
  To: ofono

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

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

diff --git a/src/stkutil.c b/src/stkutil.c
index 5b97aeb..0d4be68 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1225,6 +1225,24 @@ static gboolean parse_dataobj_uicc_te_interface(
 	return TRUE;
 }
 
+/* Defined in TS 102.223 Section 8.60 */
+static gboolean parse_dataobj_aid(struct comprehension_tlv_iter *iter,
+					void *user)
+{
+	struct stk_aid *aid = user;
+	const unsigned char *data;
+	unsigned char len = comprehension_tlv_iter_get_length(iter);
+
+	if ((len > 16) || (len < 12))
+		return FALSE;
+
+	data = comprehension_tlv_iter_get_data(iter);
+	aid->len = len;
+	memcpy(aid->aid, data, len);
+
+	return TRUE;
+}
+
 /* Defined in TS 102.223 Section 8.72 */
 static gboolean parse_dataobj_text_attr(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1373,6 +1391,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_other_address;
 	case STK_DATA_OBJECT_TYPE_UICC_TE_INTERFACE:
 		return parse_dataobj_uicc_te_interface;
+	case STK_DATA_OBJECT_TYPE_AID:
+		return parse_dataobj_aid;
 	case STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE:
 		return parse_dataobj_text_attr;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
diff --git a/src/stkutil.h b/src/stkutil.h
index 1c7c970..67e7ef7 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -337,6 +337,18 @@ enum stk_address_type {
 	STK_ADDRESS_IPV6 = 	0x57
 };
 
+enum stk_access_technology_type {
+	STK_ACCESS_TECHNOLOGY_GSM = 		0x00,
+	STK_ACCESS_TECHNOLOGY_TIA_EIA_553 =	0x01,
+	STK_ACCESS_TECHNOLOGY_TIA_EIA_136_C =	0x02,
+	STK_ACCESS_TECHNOLOGY_UTRAN = 		0x03,
+	STK_ACCESS_TECHNOLOGY_TETRA = 		0x04,
+	STK_ACCESS_TECHNOLOGY_TIA_EIA_95 = 	0x05,
+	STK_ACCESS_TECHNOLOGY_CDMA2000_1X =	0x06,
+	STK_ACCESS_TECHNOLOGY_CDMA2000_HRPD = 	0x07,
+	STK_ACCESS_TECHNOLOGY_EUTRAN = 		0x08
+};
+
 /* For data object that only has a byte array with undetermined length */
 struct stk_common_byte_array {
 	unsigned char *array;
@@ -577,6 +589,17 @@ struct stk_uicc_te_interface {
 };
 
 /*
+ * Defined in TS 102.223 Section 8.60.
+ * According to 101.220, Section 4, aid contains two fields RID and PIX.
+ * RID has 5 bytes, while PIX contains information between 7 to 11 bytes.
+ * So the maximum size of aid is 16 bytes.
+ */
+struct stk_aid {
+	unsigned char aid[16];
+	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.7.0.4


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

* [PATCH 03/17] Add parser for access technology objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
  2010-04-20  6:14 ` [PATCH 02/17] Add parser for aid objects Yang Gu
@ 2010-04-20  6:14 ` Yang Gu
  2010-04-20 21:53   ` Denis Kenzior
  2010-04-20  6:14 ` [PATCH 04/17] Add parser for display parameters objects Yang Gu
                   ` (14 subsequent siblings)
  16 siblings, 1 reply; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:14 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 2027 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 0d4be68..d690f51 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1243,6 +1243,24 @@ static gboolean parse_dataobj_aid(struct comprehension_tlv_iter *iter,
 	return TRUE;
 }
 
+/* Defined in TS 102.223 Section 8.61 */
+static gboolean parse_dataobj_access_technology(
+		struct comprehension_tlv_iter *iter, void *user)
+{
+	struct stk_access_technology *at = user;
+	const unsigned char *data;
+	unsigned int len = comprehension_tlv_iter_get_length(iter);
+
+	if (len == 0)
+		return TRUE;
+
+	data = comprehension_tlv_iter_get_data(iter);
+	at->len = len;
+	memcpy(at->tech, data, len);
+
+	return TRUE;
+}
+
 /* Defined in TS 102.223 Section 8.72 */
 static gboolean parse_dataobj_text_attr(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1393,6 +1411,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_uicc_te_interface;
 	case STK_DATA_OBJECT_TYPE_AID:
 		return parse_dataobj_aid;
+	case STK_DATA_OBJECT_TYPE_ACCESS_TECHNOLOGY:
+		return parse_dataobj_access_technology;
 	case STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE:
 		return parse_dataobj_text_attr;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
diff --git a/src/stkutil.h b/src/stkutil.h
index 67e7ef7..1e75533 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -600,6 +600,15 @@ struct stk_aid {
 };
 
 /*
+ * According to 102.223 Section 8.61 the length of CTLV is 1 byte. This means
+ * that the maximum size is 127 according to the rules of CTLVs.
+ */
+struct stk_access_technology {
+	unsigned char tech[127];
+	unsigned char 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.7.0.4


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

* [PATCH 04/17] Add parser for display parameters objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
  2010-04-20  6:14 ` [PATCH 02/17] Add parser for aid objects Yang Gu
  2010-04-20  6:14 ` [PATCH 03/17] Add parser for access technology objects Yang Gu
@ 2010-04-20  6:14 ` Yang Gu
  2010-04-20  6:15 ` [PATCH 05/17] Add parser for service record objects Yang Gu
                   ` (13 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:14 UTC (permalink / raw)
  To: ofono

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

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

diff --git a/src/stkutil.c b/src/stkutil.c
index d690f51..1d5d1b4 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1261,6 +1261,24 @@ static gboolean parse_dataobj_access_technology(
 	return TRUE;
 }
 
+/* Defined in TS 102.223 Section 8.62 */
+static gboolean parse_dataobj_display_parameters(
+		struct comprehension_tlv_iter *iter, void *user)
+{
+	struct stk_display_parameters *dp = user;
+	const unsigned char *data;
+
+	if (comprehension_tlv_iter_get_length(iter) != 3)
+		return FALSE;
+
+	data = comprehension_tlv_iter_get_data(iter);
+	dp->height = data[0];
+	dp->width = data[1];
+	dp->effects = data[2];
+
+	return TRUE;
+}
+
 /* Defined in TS 102.223 Section 8.72 */
 static gboolean parse_dataobj_text_attr(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1413,6 +1431,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_aid;
 	case STK_DATA_OBJECT_TYPE_ACCESS_TECHNOLOGY:
 		return parse_dataobj_access_technology;
+	case STK_DATA_OBJECT_TYPE_DISPLAY_PARAMETERS:
+		return parse_dataobj_display_parameters;
 	case STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE:
 		return parse_dataobj_text_attr;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
diff --git a/src/stkutil.h b/src/stkutil.h
index 1e75533..2cfbc83 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -608,6 +608,13 @@ struct stk_access_technology {
 	unsigned char len;
 };
 
+/* Defined in TS 102.223 Section 8.62 */
+struct stk_display_parameters {
+	unsigned char height;
+	unsigned char width;
+	unsigned char effects;
+};
+
 /*
  * 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.7.0.4


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

* [PATCH 05/17] Add parser for service record objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
                   ` (2 preceding siblings ...)
  2010-04-20  6:14 ` [PATCH 04/17] Add parser for display parameters objects Yang Gu
@ 2010-04-20  6:15 ` Yang Gu
  2010-04-20 21:55   ` Denis Kenzior
  2010-04-20  6:15 ` [PATCH 06/17] Add parser for device filter objects Yang Gu
                   ` (12 subsequent siblings)
  16 siblings, 1 reply; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:15 UTC (permalink / raw)
  To: ofono

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

---
 src/stkutil.c |   28 ++++++++++++++++++++++++++++
 src/stkutil.h |   16 ++++++++++++++++
 2 files changed, 44 insertions(+), 0 deletions(-)

diff --git a/src/stkutil.c b/src/stkutil.c
index 1d5d1b4..ecfa32b 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1279,6 +1279,32 @@ static gboolean parse_dataobj_display_parameters(
 	return TRUE;
 }
 
+/* Defined in TS 102.223 Section 8.63 */
+static gboolean parse_dataobj_service_record(
+		struct comprehension_tlv_iter *iter, void *user)
+{
+	struct stk_service_record *sr = user;
+	const unsigned char *data;
+	unsigned int len;
+
+	len = comprehension_tlv_iter_get_length(iter);
+	if (len < 3)
+		return FALSE;
+
+	data = comprehension_tlv_iter_get_data(iter);
+	sr->tech_id = data[0];
+	sr->serv_id = data[1];
+	sr->len = len - 2;
+
+	sr->serv_rec = g_try_malloc(sr->len);
+	if (sr->serv_rec == NULL)
+		return FALSE;
+
+	memcpy(sr->serv_rec, data + 2, sr->len);
+
+	return TRUE;
+}
+
 /* Defined in TS 102.223 Section 8.72 */
 static gboolean parse_dataobj_text_attr(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1433,6 +1459,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_access_technology;
 	case STK_DATA_OBJECT_TYPE_DISPLAY_PARAMETERS:
 		return parse_dataobj_display_parameters;
+	case STK_DATA_OBJECT_TYPE_SERVICE_RECORD:
+		return parse_dataobj_service_record;
 	case STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE:
 		return parse_dataobj_text_attr;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
diff --git a/src/stkutil.h b/src/stkutil.h
index 2cfbc83..524d763 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -349,6 +349,14 @@ enum stk_access_technology_type {
 	STK_ACCESS_TECHNOLOGY_EUTRAN = 		0x08
 };
 
+enum stk_technology_id {
+	STK_TECHNOLOGY_INDEPENDENT = 	0x00,
+	STK_TECHNOLOGY_BLUETOOTH = 	0x01,
+	STK_TECHNOLOGY_IRDA = 		0x02,
+	STK_TECHNOLOGY_RS232 = 		0x03,
+	STK_TECHNOLOGY_USB = 		0x04
+};
+
 /* For data object that only has a byte array with undetermined length */
 struct stk_common_byte_array {
 	unsigned char *array;
@@ -615,6 +623,14 @@ struct stk_display_parameters {
 	unsigned char effects;
 };
 
+/* Defined in TS 102.223 Section 8.63 */
+struct stk_service_record {
+	unsigned char tech_id;
+	unsigned char serv_id;
+	unsigned char *serv_rec;
+	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.7.0.4


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

* [PATCH 06/17] Add parser for device filter objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
                   ` (3 preceding siblings ...)
  2010-04-20  6:15 ` [PATCH 05/17] Add parser for service record objects Yang Gu
@ 2010-04-20  6:15 ` Yang Gu
  2010-04-20 21:56   ` Denis Kenzior
  2010-04-20  6:15 ` [PATCH 07/17] Add parser for service search objects Yang Gu
                   ` (11 subsequent siblings)
  16 siblings, 1 reply; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:15 UTC (permalink / raw)
  To: ofono

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

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

diff --git a/src/stkutil.c b/src/stkutil.c
index ecfa32b..827ea9c 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1305,6 +1305,30 @@ static gboolean parse_dataobj_service_record(
 	return TRUE;
 }
 
+/* Defined in TS 102.223 Section 8.64 */
+static gboolean parse_dataobj_device_filter(struct comprehension_tlv_iter *iter,
+						void *user)
+{
+	struct stk_device_filter *df = user;
+	const unsigned char *data;
+	unsigned int len = comprehension_tlv_iter_get_length(iter);
+
+	if (len < 2)
+		return FALSE;
+
+	data = comprehension_tlv_iter_get_data(iter);
+	df->tech_id = data[0];
+	df->len = len - 1;
+
+	df->dev_filter = g_try_malloc(df->len);
+	if (df->dev_filter == NULL)
+		return FALSE;
+
+	memcpy(df->dev_filter, data + 1, df->len);
+
+	return TRUE;
+}
+
 /* Defined in TS 102.223 Section 8.72 */
 static gboolean parse_dataobj_text_attr(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1461,6 +1485,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_display_parameters;
 	case STK_DATA_OBJECT_TYPE_SERVICE_RECORD:
 		return parse_dataobj_service_record;
+	case STK_DATA_OBJECT_TYPE_DEVICE_FILTER:
+		return parse_dataobj_device_filter;
 	case STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE:
 		return parse_dataobj_text_attr;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
diff --git a/src/stkutil.h b/src/stkutil.h
index 524d763..96c4363 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -631,6 +631,13 @@ struct stk_service_record {
 	unsigned int len;
 };
 
+/* Defined in TS 102.223 Section 8.64 */
+struct stk_device_filter {
+	unsigned char tech_id;
+	unsigned char *dev_filter;
+	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.7.0.4


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

* [PATCH 07/17] Add parser for service search objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
                   ` (4 preceding siblings ...)
  2010-04-20  6:15 ` [PATCH 06/17] Add parser for device filter objects Yang Gu
@ 2010-04-20  6:15 ` Yang Gu
  2010-04-20  6:15 ` [PATCH 08/17] Add parser for attribute information objects Yang Gu
                   ` (10 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:15 UTC (permalink / raw)
  To: ofono

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

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

diff --git a/src/stkutil.c b/src/stkutil.c
index 827ea9c..2baaeab 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1329,6 +1329,30 @@ static gboolean parse_dataobj_device_filter(struct comprehension_tlv_iter *iter,
 	return TRUE;
 }
 
+/* Defined in TS 102.223 Section 8.65 */
+static gboolean parse_dataobj_service_search(
+		struct comprehension_tlv_iter *iter, void *user)
+{
+	struct stk_service_search *ss = user;
+	const unsigned char *data;
+	unsigned int len = comprehension_tlv_iter_get_length(iter);
+
+	if (len < 2)
+		return FALSE;
+
+	data = comprehension_tlv_iter_get_data(iter);
+	ss->tech_id = data[0];
+	ss->len = len - 1;
+
+	ss->ser_search = g_try_malloc(ss->len);
+	if (ss->ser_search == NULL)
+		return FALSE;
+
+	memcpy(ss->ser_search, data + 1, ss->len);
+
+	return TRUE;
+}
+
 /* Defined in TS 102.223 Section 8.72 */
 static gboolean parse_dataobj_text_attr(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1487,6 +1511,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_service_record;
 	case STK_DATA_OBJECT_TYPE_DEVICE_FILTER:
 		return parse_dataobj_device_filter;
+	case STK_DATA_OBJECT_TYPE_SERVICE_SEARCH:
+		return parse_dataobj_service_search;
 	case STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE:
 		return parse_dataobj_text_attr;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
diff --git a/src/stkutil.h b/src/stkutil.h
index 96c4363..9c4ff20 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -638,6 +638,13 @@ struct stk_device_filter {
 	unsigned int len;
 };
 
+/* Defined in TS 102.223 Section 8.65 */
+struct stk_service_search {
+	unsigned char tech_id;
+	unsigned char *ser_search;
+	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.7.0.4


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

* [PATCH 08/17] Add parser for attribute information objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
                   ` (5 preceding siblings ...)
  2010-04-20  6:15 ` [PATCH 07/17] Add parser for service search objects Yang Gu
@ 2010-04-20  6:15 ` Yang Gu
  2010-04-20  6:15 ` [PATCH 09/17] Add parser for service availability objects Yang Gu
                   ` (9 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:15 UTC (permalink / raw)
  To: ofono

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

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

diff --git a/src/stkutil.c b/src/stkutil.c
index 2baaeab..e320086 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1353,6 +1353,30 @@ static gboolean parse_dataobj_service_search(
 	return TRUE;
 }
 
+/* Defined in TS 102.223 Section 8.66 */
+static gboolean parse_dataobj_attribute_info(
+		struct comprehension_tlv_iter *iter, void *user)
+{
+	struct stk_attribute_info *ai = user;
+	const unsigned char *data;
+	unsigned int len = comprehension_tlv_iter_get_length(iter);
+
+	if (len < 2)
+		return FALSE;
+
+	data = comprehension_tlv_iter_get_data(iter);
+	ai->tech_id = data[0];
+	ai->len = len - 1;
+
+	ai->attr_info = g_try_malloc(ai->len);
+	if (ai->attr_info == NULL)
+		return FALSE;
+
+	memcpy(ai->attr_info, data + 1, ai->len);
+
+	return TRUE;
+}
+
 /* Defined in TS 102.223 Section 8.72 */
 static gboolean parse_dataobj_text_attr(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1513,6 +1537,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_device_filter;
 	case STK_DATA_OBJECT_TYPE_SERVICE_SEARCH:
 		return parse_dataobj_service_search;
+	case STK_DATA_OBJECT_TYPE_ATTRIBUTE_INFO:
+		return parse_dataobj_attribute_info;
 	case STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE:
 		return parse_dataobj_text_attr;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
diff --git a/src/stkutil.h b/src/stkutil.h
index 9c4ff20..8c5e6f5 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -645,6 +645,13 @@ struct stk_service_search {
 	unsigned int len;
 };
 
+/* Defined in TS 102.223 Section 8.66 */
+struct stk_attribute_info {
+	unsigned char tech_id;
+	unsigned char *attr_info;
+	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.7.0.4


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

* [PATCH 09/17] Add parser for service availability objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
                   ` (6 preceding siblings ...)
  2010-04-20  6:15 ` [PATCH 08/17] Add parser for attribute information objects Yang Gu
@ 2010-04-20  6:15 ` Yang Gu
  2010-04-20  6:15 ` [PATCH 10/17] Add parser for remote entity address objects Yang Gu
                   ` (8 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:15 UTC (permalink / raw)
  To: ofono

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

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

diff --git a/src/stkutil.c b/src/stkutil.c
index e320086..7209842 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1377,6 +1377,14 @@ static gboolean parse_dataobj_attribute_info(
 	return TRUE;
 }
 
+/* Defined in TS 102.223 Section 8.67 */
+static gboolean parse_dataobj_service_availability(
+		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.72 */
 static gboolean parse_dataobj_text_attr(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1539,6 +1547,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_service_search;
 	case STK_DATA_OBJECT_TYPE_ATTRIBUTE_INFO:
 		return parse_dataobj_attribute_info;
+	case STK_DATA_OBJECT_TYPE_SERVICE_AVAILABILITY:
+		return parse_dataobj_service_availability;
 	case STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE:
 		return parse_dataobj_text_attr;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
-- 
1.7.0.4


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

* [PATCH 10/17] Add parser for remote entity address objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
                   ` (7 preceding siblings ...)
  2010-04-20  6:15 ` [PATCH 09/17] Add parser for service availability objects Yang Gu
@ 2010-04-20  6:15 ` Yang Gu
  2010-04-20 21:58   ` Denis Kenzior
  2010-04-20  6:15 ` [PATCH 11/17] Add parser for esn objects Yang Gu
                   ` (7 subsequent siblings)
  16 siblings, 1 reply; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:15 UTC (permalink / raw)
  To: ofono

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

---
 src/stkutil.c |   31 +++++++++++++++++++++++++++++++
 src/stkutil.h |   10 ++++++++++
 2 files changed, 41 insertions(+), 0 deletions(-)

diff --git a/src/stkutil.c b/src/stkutil.c
index 7209842..4863989 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1385,6 +1385,35 @@ static gboolean parse_dataobj_service_availability(
 	return parse_dataobj_common_byte_array(iter, array);
 }
 
+/* Defined in TS 102.223 Section 8.68 */
+static gboolean parse_dataobj_remote_entity_address(
+		struct comprehension_tlv_iter *iter, void *user)
+{
+	struct stk_remote_entity_address *rea = user;
+	const unsigned char *data;
+	unsigned int len = comprehension_tlv_iter_get_length(iter);
+
+	data = comprehension_tlv_iter_get_data(iter);
+
+	rea->coding_type = data[0];
+	switch (rea->coding_type) {
+	case 0x00:
+		if (len != 7)
+			return FALSE;
+		break;
+	case 0x01:
+		if (len != 5)
+			return FALSE;
+		break;
+	default:
+		return FALSE;
+	}
+
+	memcpy(rea->addr, data + 1, len - 1);
+
+	return TRUE;
+}
+
 /* Defined in TS 102.223 Section 8.72 */
 static gboolean parse_dataobj_text_attr(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1549,6 +1578,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_attribute_info;
 	case STK_DATA_OBJECT_TYPE_SERVICE_AVAILABILITY:
 		return parse_dataobj_service_availability;
+	case STK_DATA_OBJECT_TYPE_REMOTE_ENTITY_ADDRESS:
+		return parse_dataobj_remote_entity_address;
 	case STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE:
 		return parse_dataobj_text_attr;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
diff --git a/src/stkutil.h b/src/stkutil.h
index 8c5e6f5..184c098 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -653,6 +653,16 @@ struct stk_attribute_info {
 };
 
 /*
+ * According to TS 102.223 Section 8.68, remote entity address can be either
+ * 6-bytes IEEE-802 address, or 4-bytes IrDA device address. So the maximum
+ * size of address is 6 bytes.
+ */
+struct stk_remote_entity_address {
+	unsigned char coding_type;
+	unsigned char addr[6];
+};
+
+/*
  * 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.7.0.4


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

* [PATCH 11/17] Add parser for esn objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
                   ` (8 preceding siblings ...)
  2010-04-20  6:15 ` [PATCH 10/17] Add parser for remote entity address objects Yang Gu
@ 2010-04-20  6:15 ` Yang Gu
  2010-04-20  6:15 ` [PATCH 12/17] Add parser for network access name objects Yang Gu
                   ` (6 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:15 UTC (permalink / raw)
  To: ofono

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

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

diff --git a/src/stkutil.c b/src/stkutil.c
index 4863989..db5b8b8 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1414,6 +1414,25 @@ static gboolean parse_dataobj_remote_entity_address(
 	return TRUE;
 }
 
+/* Defined in TS 102.223 Section 8.69 */
+static gboolean parse_dataobj_esn(
+		struct comprehension_tlv_iter *iter, void *user)
+{
+	unsigned char **esn = user;
+	const unsigned char *data;
+	unsigned int len = comprehension_tlv_iter_get_length(iter);
+
+	if (len != 4)
+		return FALSE;
+
+	data = comprehension_tlv_iter_get_data(iter);
+
+	/* Assume esn is 4 bytes long */
+	memcpy(*esn, data, len);
+
+	return TRUE;
+}
+
 /* Defined in TS 102.223 Section 8.72 */
 static gboolean parse_dataobj_text_attr(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1580,6 +1599,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_service_availability;
 	case STK_DATA_OBJECT_TYPE_REMOTE_ENTITY_ADDRESS:
 		return parse_dataobj_remote_entity_address;
+	case STK_DATA_OBJECT_TYPE_ESN:
+		return parse_dataobj_esn;
 	case STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE:
 		return parse_dataobj_text_attr;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
-- 
1.7.0.4


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

* [PATCH 12/17] Add parser for network access name objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
                   ` (9 preceding siblings ...)
  2010-04-20  6:15 ` [PATCH 11/17] Add parser for esn objects Yang Gu
@ 2010-04-20  6:15 ` Yang Gu
  2010-04-20  6:15 ` [PATCH 13/17] Add parser for cdma sms tpdu objects Yang Gu
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:15 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 2026 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 db5b8b8..fd44456 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1433,6 +1433,24 @@ static gboolean parse_dataobj_esn(
 	return TRUE;
 }
 
+/* Defined in TS 102.223 Section 8.70 */
+static gboolean parse_dataobj_network_access_name(
+		struct comprehension_tlv_iter *iter, void *user)
+{
+	struct stk_network_access_name *nan = user;
+	const unsigned char *data;
+	unsigned int len = comprehension_tlv_iter_get_length(iter);
+
+	if (len == 0)
+		return TRUE;
+
+	data = comprehension_tlv_iter_get_data(iter);
+	nan->len = len;
+	memcpy(nan->name, data, len);
+
+	return TRUE;
+}
+
 /* Defined in TS 102.223 Section 8.72 */
 static gboolean parse_dataobj_text_attr(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1601,6 +1619,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_remote_entity_address;
 	case STK_DATA_OBJECT_TYPE_ESN:
 		return parse_dataobj_esn;
+	case STK_DATA_OBJECT_TYPE_NETWORK_ACCESS_NAME:
+		return parse_dataobj_network_access_name;
 	case STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE:
 		return parse_dataobj_text_attr;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
diff --git a/src/stkutil.h b/src/stkutil.h
index 184c098..01597b3 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -663,6 +663,15 @@ struct stk_remote_entity_address {
 };
 
 /*
+ * According to 102.223 Section 8.70 the length of CTLV is 1 byte. This means
+ * that the maximum size is 127 according to the rules of CTLVs.
+ */
+struct stk_network_access_name {
+	unsigned char name[127];
+	unsigned char 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.7.0.4


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

* [PATCH 13/17] Add parser for cdma sms tpdu objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
                   ` (10 preceding siblings ...)
  2010-04-20  6:15 ` [PATCH 12/17] Add parser for network access name objects Yang Gu
@ 2010-04-20  6:15 ` Yang Gu
  2010-04-20  6:15 ` [PATCH 14/17] Add parser for item text attribute list objects Yang Gu
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:15 UTC (permalink / raw)
  To: ofono

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

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

diff --git a/src/stkutil.c b/src/stkutil.c
index fd44456..e6d69ef 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1451,6 +1451,14 @@ static gboolean parse_dataobj_network_access_name(
 	return TRUE;
 }
 
+/* Defined in TS 102.223 Section 8.71 */
+static gboolean parse_dataobj_cdma_sms_tpdu(
+		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.72 */
 static gboolean parse_dataobj_text_attr(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1621,6 +1629,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_esn;
 	case STK_DATA_OBJECT_TYPE_NETWORK_ACCESS_NAME:
 		return parse_dataobj_network_access_name;
+	case STK_DATA_OBJECT_TYPE_CDMA_SMS_TPDU:
+		return parse_dataobj_cdma_sms_tpdu;
 	case STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE:
 		return parse_dataobj_text_attr;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
-- 
1.7.0.4


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

* [PATCH 14/17] Add parser for item text attribute list objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
                   ` (11 preceding siblings ...)
  2010-04-20  6:15 ` [PATCH 13/17] Add parser for cdma sms tpdu objects Yang Gu
@ 2010-04-20  6:15 ` Yang Gu
  2010-04-20  6:15 ` [PATCH 15/17] Add parser for imeisv objects Yang Gu
                   ` (3 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:15 UTC (permalink / raw)
  To: ofono

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

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

diff --git a/src/stkutil.c b/src/stkutil.c
index e6d69ef..0f373f9 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1480,6 +1480,25 @@ static gboolean parse_dataobj_text_attr(struct comprehension_tlv_iter *iter,
 	return TRUE;
 }
 
+/* Defined in TS 102.223 Section 8.73 */
+static gboolean parse_dataobj_item_text_attribute_list(
+		struct comprehension_tlv_iter *iter, void *user)
+{
+	struct stk_item_text_attribute_list *ital = user;
+	const unsigned char *data;
+	unsigned int len = comprehension_tlv_iter_get_length(iter);
+
+	if ((len > sizeof(ital->list)) || (len % 4 != 0))
+		return FALSE;
+
+	data = comprehension_tlv_iter_get_data(iter);
+
+	memcpy(ital->list, data, len);
+	ital->len = len;
+
+	return TRUE;
+}
+
 /* Defined in TS 102.223 Section 8.80 */
 static gboolean parse_dataobj_frame_id(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1633,6 +1652,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_cdma_sms_tpdu;
 	case STK_DATA_OBJECT_TYPE_TEXT_ATTRIBUTE:
 		return parse_dataobj_text_attr;
+	case STK_DATA_OBJECT_TYPE_ITEM_TEXT_ATTRIBUTE_LIST:
+		return parse_dataobj_item_text_attribute_list;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
 		return parse_dataobj_frame_id;
 	default:
diff --git a/src/stkutil.h b/src/stkutil.h
index 01597b3..f9cf34b 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -681,6 +681,17 @@ struct stk_text_attribute {
 	unsigned char len;
 };
 
+/*
+ * According to 102.223 Section 8.73 the length of CTLV is 1 byte. This means
+ * that the maximum size is 127 according to the rules of CTLVs. In addition,
+ * the length should be also the number multiplied by 4, so the maximum number
+ * is 124.
+ */
+struct stk_item_text_attribute_list {
+	unsigned char list[124];
+	unsigned char len;
+};
+
 struct stk_command_display_text {
 	char *text;
 	struct stk_icon_id icon_id;
-- 
1.7.0.4


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

* [PATCH 15/17] Add parser for imeisv objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
                   ` (12 preceding siblings ...)
  2010-04-20  6:15 ` [PATCH 14/17] Add parser for item text attribute list objects Yang Gu
@ 2010-04-20  6:15 ` Yang Gu
  2010-04-20  6:15 ` [PATCH 16/17] Add parser for network search mode objects Yang Gu
                   ` (2 subsequent siblings)
  16 siblings, 0 replies; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:15 UTC (permalink / raw)
  To: ofono

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

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

diff --git a/src/stkutil.c b/src/stkutil.c
index 0f373f9..17e38d3 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1499,6 +1499,49 @@ static gboolean parse_dataobj_item_text_attribute_list(
 	return TRUE;
 }
 
+/*
+ * Defined in TS 102.223 Section 8.74.
+ *
+ * According to 3GPP TS 24.008, Section 10.5.1.4, IMEISV is composed of
+ * 16 digits and totally 9 bytes are used to represent it.
+ *
+ * Bits 1-3 of first byte represent the type of identity, and they
+ * are 0 1 1 separately for IMEISV. Bit 4 of first byte is the odd/even
+ * indication, and it's 0 to indicate IMEISV has odd number of digits (16).
+ * The rest bytes are coded using BCD coding.
+ *
+ * For example, if the IMEISV is "1234567890123456", then it's coded as
+ * "13 32 54 76 98 10 32 54 F6".
+ */
+static gboolean parse_dataobj_imeisv(struct comprehension_tlv_iter *iter,
+					void *user)
+{
+	char **imeisv = user;
+	const unsigned char *data;
+	unsigned int len;
+	static const char digit_lut[] = "0123456789*#abc\0";
+
+	len = comprehension_tlv_iter_get_length(iter);
+	if (len != 9)
+		return FALSE;
+
+	data = comprehension_tlv_iter_get_data(iter);
+
+	if ((data[0] & 0x0f) != 0x03)
+		return FALSE;
+
+	if (data[8] >> 4 != 0x0f)
+		return FALSE;
+
+	/* Assume imeisv is at least 17 bytes long (16 for imeisv + null) */
+	(*imeisv)[0] = digit_lut[data[0] >> 4];
+	extract_bcd_number(data + 1, 7, *imeisv + 1);
+	(*imeisv)[15] = digit_lut[data[8] & 0x0f];
+	(*imeisv)[16] = '\0';
+
+	return TRUE;
+}
+
 /* Defined in TS 102.223 Section 8.80 */
 static gboolean parse_dataobj_frame_id(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1654,6 +1697,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_text_attr;
 	case STK_DATA_OBJECT_TYPE_ITEM_TEXT_ATTRIBUTE_LIST:
 		return parse_dataobj_item_text_attribute_list;
+	case STK_DATA_OBJECT_TYPE_IMEISV:
+		return parse_dataobj_imeisv;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
 		return parse_dataobj_frame_id;
 	default:
-- 
1.7.0.4


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

* [PATCH 16/17] Add parser for network search mode objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
                   ` (13 preceding siblings ...)
  2010-04-20  6:15 ` [PATCH 15/17] Add parser for imeisv objects Yang Gu
@ 2010-04-20  6:15 ` Yang Gu
  2010-04-20  6:15 ` [PATCH 17/17] Add parser for battery state objects Yang Gu
  2010-04-20 22:00 ` [PATCH 01/17] Add parser for item text attribute list objects Denis Kenzior
  16 siblings, 0 replies; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:15 UTC (permalink / raw)
  To: ofono

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

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

diff --git a/src/stkutil.c b/src/stkutil.c
index 17e38d3..a3c5f47 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1542,6 +1542,14 @@ static gboolean parse_dataobj_imeisv(struct comprehension_tlv_iter *iter,
 	return TRUE;
 }
 
+/* Defined in TS 102.223 Section 8.75 */
+static gboolean parse_dataobj_network_search_mode(
+		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.80 */
 static gboolean parse_dataobj_frame_id(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1699,6 +1707,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_item_text_attribute_list;
 	case STK_DATA_OBJECT_TYPE_IMEISV:
 		return parse_dataobj_imeisv;
+	case STK_DATA_OBJECT_TYPE_NETWORK_SEARCH_MODE:
+		return parse_dataobj_network_search_mode;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
 		return parse_dataobj_frame_id;
 	default:
-- 
1.7.0.4


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

* [PATCH 17/17] Add parser for battery state objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
                   ` (14 preceding siblings ...)
  2010-04-20  6:15 ` [PATCH 16/17] Add parser for network search mode objects Yang Gu
@ 2010-04-20  6:15 ` Yang Gu
  2010-04-20 22:00 ` [PATCH 01/17] Add parser for item text attribute list objects Denis Kenzior
  16 siblings, 0 replies; 24+ messages in thread
From: Yang Gu @ 2010-04-20  6:15 UTC (permalink / raw)
  To: ofono

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

---
 src/stkutil.c |   10 ++++++++++
 src/stkutil.h |    8 ++++++++
 2 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/src/stkutil.c b/src/stkutil.c
index a3c5f47..832d2f8 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -1550,6 +1550,14 @@ static gboolean parse_dataobj_network_search_mode(
 	return parse_dataobj_common_byte(iter, byte);
 }
 
+/* Defined in TS 102.223 Section 8.76 */
+static gboolean parse_dataobj_battery_state(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.80 */
 static gboolean parse_dataobj_frame_id(struct comprehension_tlv_iter *iter,
 					void *user)
@@ -1709,6 +1717,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
 		return parse_dataobj_imeisv;
 	case STK_DATA_OBJECT_TYPE_NETWORK_SEARCH_MODE:
 		return parse_dataobj_network_search_mode;
+	case STK_DATA_OBJECT_TYPE_BATTERY_STATE:
+		return parse_dataobj_battery_state;
 	case STK_DATA_OBJECT_TYPE_FRAME_ID:
 		return parse_dataobj_frame_id;
 	default:
diff --git a/src/stkutil.h b/src/stkutil.h
index f9cf34b..6e822f8 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -357,6 +357,14 @@ enum stk_technology_id {
 	STK_TECHNOLOGY_USB = 		0x04
 };
 
+enum stk_battery_state {
+	STK_BATTERY_VERY_LOW = 	0x00,
+	STK_BATTERY_LOW = 	0x01,
+	STK_BATTERY_AVERAGE = 	0x02,
+	STK_BATTERY_GOOD = 	0x03,
+	STK_BATTERY_FULL = 	0x04
+};
+
 /* For data object that only has a byte array with undetermined length */
 struct stk_common_byte_array {
 	unsigned char *array;
-- 
1.7.0.4


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

* Re: [PATCH 03/17] Add parser for access technology objects
  2010-04-20  6:14 ` [PATCH 03/17] Add parser for access technology objects Yang Gu
@ 2010-04-20 21:53   ` Denis Kenzior
  0 siblings, 0 replies; 24+ messages in thread
From: Denis Kenzior @ 2010-04-20 21:53 UTC (permalink / raw)
  To: ofono

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

Hi Yang,

> ---
>  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 0d4be68..d690f51 100644
> --- a/src/stkutil.c
> +++ b/src/stkutil.c
>  /*
> + * According to 102.223 Section 8.61 the length of CTLV is 1 byte. This
>  means + * that the maximum size is 127 according to the rules of CTLVs.
> + */
> +struct stk_access_technology {
> +	unsigned char tech[127];
> +	unsigned char len;
> +};
> +

Please look at 3GPP TS 31.124, my interpretation is that access technology is 
a single byte.  102.223 is not really helping here.

Regards,
-Denis

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

* Re: [PATCH 05/17] Add parser for service record objects
  2010-04-20  6:15 ` [PATCH 05/17] Add parser for service record objects Yang Gu
@ 2010-04-20 21:55   ` Denis Kenzior
  2010-04-21  5:06     ` Gu, Yang
  0 siblings, 1 reply; 24+ messages in thread
From: Denis Kenzior @ 2010-04-20 21:55 UTC (permalink / raw)
  To: ofono

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

Hi Yang,

> +	sr->serv_rec = g_try_malloc(sr->len);
> +	if (sr->serv_rec == NULL)
> +		return FALSE;

I suggest not trying to allocate 0 bytes.

Regards,
-Denis

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

* Re: [PATCH 06/17] Add parser for device filter objects
  2010-04-20  6:15 ` [PATCH 06/17] Add parser for device filter objects Yang Gu
@ 2010-04-20 21:56   ` Denis Kenzior
  0 siblings, 0 replies; 24+ messages in thread
From: Denis Kenzior @ 2010-04-20 21:56 UTC (permalink / raw)
  To: ofono

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

Hi Yang,

> +	df->dev_filter = g_try_malloc(df->len);
> +	if (df->dev_filter == NULL)
> +		return FALSE;

Again, you might want to handle 0 byte objects here or error out.

Regards,
-Denis

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

* Re: [PATCH 10/17] Add parser for remote entity address objects
  2010-04-20  6:15 ` [PATCH 10/17] Add parser for remote entity address objects Yang Gu
@ 2010-04-20 21:58   ` Denis Kenzior
  0 siblings, 0 replies; 24+ messages in thread
From: Denis Kenzior @ 2010-04-20 21:58 UTC (permalink / raw)
  To: ofono

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

Hi Yang,

>  /*
> + * According to TS 102.223 Section 8.68, remote entity address can be
>  either + * 6-bytes IEEE-802 address, or 4-bytes IrDA device address. So
>  the maximum + * size of address is 6 bytes.
> + */
> +struct stk_remote_entity_address {
> +	unsigned char coding_type;
> +	unsigned char addr[6];
> +};
> +

I suggest you use a union here, see stk_other_address for an idea.

Regards,
-Denis

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

* Re: [PATCH 01/17] Add parser for item text attribute list objects
  2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
                   ` (15 preceding siblings ...)
  2010-04-20  6:15 ` [PATCH 17/17] Add parser for battery state objects Yang Gu
@ 2010-04-20 22:00 ` Denis Kenzior
  16 siblings, 0 replies; 24+ messages in thread
From: Denis Kenzior @ 2010-04-20 22:00 UTC (permalink / raw)
  To: ofono

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

Hi Yang,

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

This patch has been applied, thanks.

Regards,
-Denis

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

* Re: [PATCH 02/17] Add parser for aid objects
  2010-04-20  6:14 ` [PATCH 02/17] Add parser for aid objects Yang Gu
@ 2010-04-20 22:00   ` Denis Kenzior
  0 siblings, 0 replies; 24+ messages in thread
From: Denis Kenzior @ 2010-04-20 22:00 UTC (permalink / raw)
  To: ofono

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

Hi Yang,

> ---
>  src/stkutil.c |   20 ++++++++++++++++++++
>  src/stkutil.h |   23 +++++++++++++++++++++++
>  2 files changed, 43 insertions(+), 0 deletions(-)

This patch has been applied.  Can you fix / rebase the other patches and 
resubmit?

Regards,
-Denis

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

* RE: [PATCH 05/17] Add parser for service record objects
  2010-04-20 21:55   ` Denis Kenzior
@ 2010-04-21  5:06     ` Gu, Yang
  0 siblings, 0 replies; 24+ messages in thread
From: Gu, Yang @ 2010-04-21  5:06 UTC (permalink / raw)
  To: ofono

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

Hi Denis,



>-----Original Message-----
>From: ofono-bounces(a)ofono.org [mailto:ofono-bounces(a)ofono.org] On Behalf Of
>Denis Kenzior
>Sent: Wednesday, April 21, 2010 5:56 AM
>To: ofono(a)ofono.org
>Subject: Re: [PATCH 05/17] Add parser for service record objects
>
>Hi Yang,
>
>> +	sr->serv_rec = g_try_malloc(sr->len);
>> +	if (sr->serv_rec == NULL)
>> +		return FALSE;
>
>I suggest not trying to allocate 0 bytes.

The service record field is either meaningful value or "00", so it will never allocate 0 byte. Other patches are modified following this comment.

>
>Regards,
>-Denis
>_______________________________________________
>ofono mailing list
>ofono(a)ofono.org
>http://lists.ofono.org/listinfo/ofono

Regards,
-Yang

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

end of thread, other threads:[~2010-04-21  5:06 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-20  6:14 [PATCH 01/17] Add parser for item text attribute list objects Yang Gu
2010-04-20  6:14 ` [PATCH 02/17] Add parser for aid objects Yang Gu
2010-04-20 22:00   ` Denis Kenzior
2010-04-20  6:14 ` [PATCH 03/17] Add parser for access technology objects Yang Gu
2010-04-20 21:53   ` Denis Kenzior
2010-04-20  6:14 ` [PATCH 04/17] Add parser for display parameters objects Yang Gu
2010-04-20  6:15 ` [PATCH 05/17] Add parser for service record objects Yang Gu
2010-04-20 21:55   ` Denis Kenzior
2010-04-21  5:06     ` Gu, Yang
2010-04-20  6:15 ` [PATCH 06/17] Add parser for device filter objects Yang Gu
2010-04-20 21:56   ` Denis Kenzior
2010-04-20  6:15 ` [PATCH 07/17] Add parser for service search objects Yang Gu
2010-04-20  6:15 ` [PATCH 08/17] Add parser for attribute information objects Yang Gu
2010-04-20  6:15 ` [PATCH 09/17] Add parser for service availability objects Yang Gu
2010-04-20  6:15 ` [PATCH 10/17] Add parser for remote entity address objects Yang Gu
2010-04-20 21:58   ` Denis Kenzior
2010-04-20  6:15 ` [PATCH 11/17] Add parser for esn objects Yang Gu
2010-04-20  6:15 ` [PATCH 12/17] Add parser for network access name objects Yang Gu
2010-04-20  6:15 ` [PATCH 13/17] Add parser for cdma sms tpdu objects Yang Gu
2010-04-20  6:15 ` [PATCH 14/17] Add parser for item text attribute list objects Yang Gu
2010-04-20  6:15 ` [PATCH 15/17] Add parser for imeisv objects Yang Gu
2010-04-20  6:15 ` [PATCH 16/17] Add parser for network search mode objects Yang Gu
2010-04-20  6:15 ` [PATCH 17/17] Add parser for battery state objects Yang Gu
2010-04-20 22:00 ` [PATCH 01/17] Add parser for item text attribute list 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.