stk: Add parser for timing advance objects

This commit is contained in:
Yang Gu 2010-06-17 18:35:11 +08:00 committed by Denis Kenzior
parent 042724c5ab
commit 6018d1fe82
3 changed files with 41 additions and 13 deletions

View File

@ -1151,6 +1151,26 @@ static gboolean parse_dataobj_language(struct comprehension_tlv_iter *iter,
return TRUE;
}
/* Defined in 31.111 Section 8.46 */
static gboolean parse_dataobj_timing_advance(
struct comprehension_tlv_iter *iter, void *user)
{
struct stk_timing_advance *ta = 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);
ta->has_value = TRUE;
ta->status = data[0];
ta->advance = data[1];
return TRUE;
}
/* Defined in 102.223 Section 8.47 */
static gboolean parse_dataobj_browser_id(struct comprehension_tlv_iter *iter,
void *user)
@ -2074,6 +2094,8 @@ static dataobj_handler handler_for_type(enum stk_data_object_type type)
return parse_dataobj_language;
case STK_DATA_OBJECT_TYPE_BROWSER_ID:
return parse_dataobj_browser_id;
case STK_DATA_OBJECT_TYPE_TIMING_ADVANCE:
return parse_dataobj_timing_advance;
case STK_DATA_OBJECT_TYPE_URL:
return parse_dataobj_url;
case STK_DATA_OBJECT_TYPE_BEARER:

View File

@ -552,6 +552,11 @@ enum stk_rejection_cause_code {
STK_CAUSE_EMM_PROTOCOL_ERROR = 0x6f,
};
enum stk_me_status {
STK_ME_STATUS_IDLE = 0x00,
STK_ME_STATUS_NOT_IDLE = 0x01
};
/* For data object that only has a byte array with undetermined length */
struct stk_common_byte_array {
unsigned char *array;
@ -801,6 +806,18 @@ struct stk_bc_repeat {
unsigned char value;
};
/* Defined in TS 31.111 Section 8.46 */
struct stk_timing_advance {
ofono_bool_t has_value;
enum stk_me_status status;
/*
* Contains bit periods number according to 3GPP TS
* 44.118 Section 9.3.106 / 3GPP TS 44.018 Section
* 10.5.2.40.1, not microseconds
*/
unsigned char advance;
};
/*
* According to 102.223 Section 8.52 the length of CTLV is 1 byte. This means
* that the maximum size is 127 according to the rules of CTLVs. This size also
@ -1381,18 +1398,7 @@ struct stk_response_local_info {
const char *language;
enum stk_battery_state battery_charge;
enum stk_access_technology_type access_technology;
struct stk_timing_advance {
enum {
STK_TIMING_ADVANCE_ME_IDLE = 0x00,
STK_TIMING_ADVANCE_ME_NOT_IDLE = 0x01,
} status;
/*
* Contains bit periods number according to 3GPP TS
* 44.118 Section 9.3.106 / 3GPP TS 44.018 Section
* 10.5.2.40.1, not microseconds
*/
int advance;
} tadv;
struct stk_timing_advance tadv;
/* Bits[31:24]: manufacturer, bits[23:0]: serial number */
guint32 esn;
const char *imeisv;

View File

@ -18699,7 +18699,7 @@ static const struct terminal_response_test
},
{ .provide_local_info = {
{ .tadv = {
.status = STK_TIMING_ADVANCE_ME_IDLE,
.status = STK_ME_STATUS_IDLE,
.advance = 0,
}},
}},