* [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