mirror of git://git.sysmocom.de/ofono
stkutil: Add the Timer Management response builder
This commit is contained in:
parent
8d863b6250
commit
268ac562eb
|
@ -947,6 +947,7 @@ static gboolean parse_dataobj_timer_value(struct comprehension_tlv_iter *iter,
|
||||||
tv->hour = sms_decode_semi_octet(data[0]);
|
tv->hour = sms_decode_semi_octet(data[0]);
|
||||||
tv->minute = sms_decode_semi_octet(data[1]);
|
tv->minute = sms_decode_semi_octet(data[1]);
|
||||||
tv->second = sms_decode_semi_octet(data[2]);
|
tv->second = sms_decode_semi_octet(data[2]);
|
||||||
|
tv->has_value = TRUE;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -3540,6 +3541,36 @@ static gboolean build_dataobj_cc_requested_action(struct stk_tlv_builder *tlv,
|
||||||
stk_tlv_builder_close_container(tlv);
|
stk_tlv_builder_close_container(tlv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Described in TS 102.223 Section 8.37 */
|
||||||
|
static gboolean build_dataobj_timer_id(struct stk_tlv_builder *tlv,
|
||||||
|
const void *data, gboolean cr)
|
||||||
|
{
|
||||||
|
const unsigned char *id = data;
|
||||||
|
unsigned char tag = STK_DATA_OBJECT_TYPE_TIMER_ID;
|
||||||
|
|
||||||
|
return id[0] == 0 ||
|
||||||
|
(stk_tlv_builder_open_container(tlv, cr, tag, FALSE) &&
|
||||||
|
stk_tlv_builder_append_byte(tlv, id[0]) &&
|
||||||
|
stk_tlv_builder_close_container(tlv));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Described in TS 102.223 Section 8.38 */
|
||||||
|
static gboolean build_dataobj_timer_value(struct stk_tlv_builder *tlv,
|
||||||
|
const void *data, gboolean cr)
|
||||||
|
{
|
||||||
|
const struct stk_timer_value *value = data;
|
||||||
|
unsigned char tag = STK_DATA_OBJECT_TYPE_TIMER_VALUE;
|
||||||
|
|
||||||
|
return value->has_value == FALSE ||
|
||||||
|
(stk_tlv_builder_open_container(tlv, cr, tag, FALSE) &&
|
||||||
|
#define TO_BCD(bin) ((((bin) / 10) & 0xf) | (((bin) % 10) << 4))
|
||||||
|
stk_tlv_builder_append_byte(tlv, TO_BCD(value->hour)) &&
|
||||||
|
stk_tlv_builder_append_byte(tlv, TO_BCD(value->minute)) &&
|
||||||
|
stk_tlv_builder_append_byte(tlv, TO_BCD(value->second)) &&
|
||||||
|
#undef TO_BCD
|
||||||
|
stk_tlv_builder_close_container(tlv));
|
||||||
|
}
|
||||||
|
|
||||||
/* Described in TS 102.223 Section 8.39 */
|
/* Described in TS 102.223 Section 8.39 */
|
||||||
static gboolean build_dataobj_datetime_timezone(struct stk_tlv_builder *tlv,
|
static gboolean build_dataobj_datetime_timezone(struct stk_tlv_builder *tlv,
|
||||||
const void *data, gboolean cr)
|
const void *data, gboolean cr)
|
||||||
|
@ -4006,6 +4037,16 @@ unsigned int stk_pdu_from_response(const struct stk_response *response,
|
||||||
break;
|
break;
|
||||||
case STK_COMMAND_TYPE_SETUP_EVENT_LIST:
|
case STK_COMMAND_TYPE_SETUP_EVENT_LIST:
|
||||||
break;
|
break;
|
||||||
|
case STK_COMMAND_TYPE_TIMER_MANAGEMENT:
|
||||||
|
ok = build_dataobj(&builder,
|
||||||
|
build_dataobj_timer_id,
|
||||||
|
DATAOBJ_FLAG_CR,
|
||||||
|
&response->timer_mgmt.id,
|
||||||
|
build_dataobj_timer_value,
|
||||||
|
DATAOBJ_FLAG_CR,
|
||||||
|
&response->timer_mgmt.value,
|
||||||
|
NULL);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -643,6 +643,7 @@ struct stk_r_apdu {
|
||||||
|
|
||||||
/* Defined in TS 102.223 Section 8.38 */
|
/* Defined in TS 102.223 Section 8.38 */
|
||||||
struct stk_timer_value {
|
struct stk_timer_value {
|
||||||
|
ofono_bool_t has_value;
|
||||||
unsigned char hour;
|
unsigned char hour;
|
||||||
unsigned char minute;
|
unsigned char minute;
|
||||||
unsigned char second;
|
unsigned char second;
|
||||||
|
@ -1129,6 +1130,11 @@ struct stk_response_local_info {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct stk_response_timer_mgmt {
|
||||||
|
unsigned char id;
|
||||||
|
struct stk_timer_value value;
|
||||||
|
};
|
||||||
|
|
||||||
struct stk_response {
|
struct stk_response {
|
||||||
unsigned char number;
|
unsigned char number;
|
||||||
unsigned char type;
|
unsigned char type;
|
||||||
|
@ -1151,6 +1157,7 @@ struct stk_response {
|
||||||
struct stk_response_generic polling_off;
|
struct stk_response_generic polling_off;
|
||||||
struct stk_response_local_info provide_local_info;
|
struct stk_response_local_info provide_local_info;
|
||||||
struct stk_response_generic set_up_event_list;
|
struct stk_response_generic set_up_event_list;
|
||||||
|
struct stk_response_timer_mgmt timer_mgmt;
|
||||||
};
|
};
|
||||||
|
|
||||||
void (*destructor)(struct stk_response *response);
|
void (*destructor)(struct stk_response *response);
|
||||||
|
|
Loading…
Reference in New Issue