TCORE_CALL_STATUS_SETUP_PENDING, /*call core object created but no operation invoked - when invoked, status transition to TCORE_CALL_STATUS_SETUP*/
TCORE_CALL_STATUS_SETUP, /*call core object created & call_handle assigned, but call_id not assigned by CP*/
+ TCORE_CALL_STATUS_MT_SETUP, /*MT SETUP msg received but detailed info not gathered from CP side. added to cover early SS_INFO_NOTI with CLI info*/
+
TCORE_CALL_STATUS_MAX
};
int tcore_call_object_get_active_line(CallObject *co);
gboolean tcore_call_object_set_is_volte_call(CallObject *co, gboolean flag);
gboolean tcore_call_object_get_is_volte_call(CallObject *co);
+gboolean tcore_call_object_set_is_srvcc_call(CallObject *co, gboolean flag);
+gboolean tcore_call_object_get_is_srvcc_call(CallObject *co);
gboolean tcore_call_object_set_session_id(CallObject *co, int session_id);
int tcore_call_object_get_session_id(CallObject *co);
gboolean tcore_call_object_set_conf_call_session_id(CallObject *co, int session_id);
TReturn tcore_network_get_ecc_rat(CoreObject *co,
enum telephony_network_access_technology *ecc_rat);
TReturn tcore_network_operator_info_add(CoreObject *co,
- const struct tcore_network_operator_info *noi);
+ const struct tcore_network_operator_info *noi);
+TReturn tcore_network_operator_info_remove(CoreObject *co,
+ const struct tcore_network_operator_info *noi);
struct tcore_network_operator_info *tcore_network_operator_info_find(CoreObject *co,
const char *mcc, const char *mnc);
NETWORK_IMS_REG_ECMP_MODE_PS_PREFERRED = 1, /**< PS preferred */
};
+/* IMS specific */
+enum telephony_network_ims_dereg_cause {
+ NETWORK_IMS_DEREG_CAUSE_NONE = 0, /**< None */
+ NETWORK_IMS_DEREG_CAUSE_LOW_BATTERY = 1, /**< Low Battery */
+ NETWORK_IMS_DEREG_CAUSE_APN_CHANGED = 2, /**< APN Changed */
+};
+
enum telephony_network_ecc_rat_search_status {
NETWORK_ECC_RAT_SEARCH_STATUS_IDLE,
NETWORK_ECC_RAT_SEARCH_STATUS_WAITING,
struct treq_network_get_subscription_source { /* no data */
};
+struct treq_network_set_ims_deregister {
+ enum telephony_network_ims_dereg_cause cause;
+};
+
struct tresp_network_search {
TReturn result;
int list_count;
TNOTI_SIM = TCORE_NOTIFICATION | TCORE_TYPE_SIM,
TNOTI_SIM_STATUS,
+ TNOTI_SIM_REFRESH_STAGE,
TNOTI_SIM_REFRESHED,
TNOTI_SIM_CALL_FORWARD_STATE,
SIM_IMG_CODING_SCHEME_RESERVED = 0xFF
};
+enum tel_sim_refresh_stage {
+ SIM_REFRESH_WAIT_FOR_OK = 0, /** Waiting for OK to init. */
+ SIM_REFRESH_START = 1, /**Refresh Start.*/
+ SIM_RFRESH_END_SUCCESS = 2, /**Refresh End with Success.*/
+ SIM_REFRESH_END_FAILURE = 3 /**Refresh End with Failure.*/
+};
+
struct tel_sim_sst {
char service[SIM_SST_SERVICE_CNT_MAX]; /**< should accessed with 'enum tel_sim_sst_service' as index */
};
gboolean b_forward;
};
+struct tnoti_sim_refresh_stage {
+ enum tel_sim_refresh_stage stage;
+};
+
__END_DECLS
#endif
SMS_NETTYPE_MWI, /**< Message waiting indication */
};
+/**
+ * @enum telephony_sms_cb_selected_id
+ * This defines the cb config, type (selected_id)
+ */
+enum telephony_sms_cb_enabled_id {
+ SMS_CB_SET_OFF,
+ SMS_CB_SET_SOME,
+ SMS_CB_SET_ALL,
+ SMS_CB_SET_CB_SOME_CMAS_SOME,
+ SMS_CB_SET_CB_ALL_CMAS_SOME,
+ SMS_CB_SET_CB_SOME_CMAS_ALL,
+ SMS_CB_SET_CB_ALL_CMAS_ALL,
+ SMS_CB_SET_MAX,
+};
/**
* This structure defines the fields related to an Sms like SIM index, TPDU and length
char *tcore_util_get_version(void);
void tcore_util_set_log(gboolean enable);
gboolean tcore_util_is_country_NA(char *plmn);
-
+gboolean tcore_util_convert_ipv4_secure_log(gchar *input, gchar *output, int output_len);
+gboolean tcore_util_convert_ipv6_secure_log(gchar *input, gchar *output, int output_len);
__END_DECLS
#endif /* __TCORE_UTIL_H__ */
%define major 0
%define minor 3
-%define patchlevel 12
+%define patchlevel 13
Name: libtcore
Version: %{major}.%{minor}.%{patchlevel}
/* IMS: VoLTE/ViLTE speciifc parameters */
gboolean is_volte_call; /* True: VoLTE Call, False: CS Call */
+ gboolean is_srvcc_call; /* VoLTE call that will be moved to CS call after SRVCC */
int session_id; /* IMS Session ID */
int conf_call_session_id; /* N-way Conference call session-id (VoLTE only) */
gboolean early_media; /* Early media started */
return co->is_volte_call;
}
+gboolean tcore_call_object_set_is_srvcc_call(CallObject *co, gboolean flag)
+{
+ tcore_check_null_ret_err("co", co, FALSE);
+
+ co->is_srvcc_call = flag;
+
+ return TRUE;
+}
+
+gboolean tcore_call_object_get_is_srvcc_call(CallObject *co)
+{
+ tcore_check_null_ret_err("co", co, FALSE);
+
+ return co->is_srvcc_call;
+}
+
gboolean tcore_call_object_set_session_id(CallObject *co, int session_id)
{
tcore_check_null_ret_err("co", co, FALSE);
return TCORE_RETURN_SUCCESS;
}
+TReturn tcore_network_operator_info_remove(CoreObject *co,
+ const struct tcore_network_operator_info *noi)
+{
+ struct private_object_data *po = NULL;
+ char plmn[7];
+ int mcc_index, mnc_index;
+ GSList *noi_list = NULL, *list = NULL;
+
+ CORE_OBJECT_CHECK_RETURN(co, CORE_OBJECT_TYPE_NETWORK, TCORE_RETURN_EINVAL);
+
+ if (!noi)
+ return TCORE_RETURN_EINVAL;
+
+ mcc_index = atoi(noi->mcc);
+ mnc_index = atoi(noi->mnc);
+
+ if (mcc_index > 999 || mnc_index > 999) {
+ err("mcc_index %d mnc_index %d", mcc_index, mnc_index);
+ return TCORE_RETURN_EINVAL;
+ }
+
+ po = tcore_object_ref_object(co);
+ if (!po)
+ return TCORE_RETURN_EINVAL;
+
+ g_strlcpy(plmn, noi->mcc, NETWORK_MAX_MCC_LEN + 1);
+ g_strlcpy(plmn + NETWORK_MAX_MCC_LEN, noi->mnc, NETWORK_MAX_MNC_LEN + 1);
+
+ noi_list = g_hash_table_lookup(po->operator_info_hash, plmn);
+ if (noi_list) {
+ for (list = noi_list; list; list = list->next) {
+ struct tcore_network_operator_info *tmp_noi = list->data;
+
+ if (strlen(tmp_noi->name) == 0)
+ continue;
+
+ if (tmp_noi->type == noi->type) {
+ dbg("Remove mcc[%s] mnc[%s] name[%s] type[%d]", tmp_noi->mcc, tmp_noi->mnc, tmp_noi->name, tmp_noi->type);
+ noi_list = g_slist_remove(noi_list, tmp_noi);
+ break;
+ }
+ }
+ }
+
+ return TCORE_RETURN_SUCCESS;
+
+}
+
struct tcore_network_operator_info *
tcore_network_operator_info_find(CoreObject *co, const char *mcc, const char *mnc)
{
#define tabGsmUniMax2 9
#define tabGsmUniMax 42
#define TAB_SPACE " "
+#define MAX_BUF_SIZE 255
gboolean tcore_debug = TRUE;
return FALSE;
}
+gboolean tcore_util_convert_ipv4_secure_log(gchar *input, gchar *output, int output_len)
+{
+ gchar buf[MAX_BUF_SIZE] = {0,};
+ gchar * pch = NULL;
+ int count = 0;
+
+ pch = strtok(input, ".");
+ while (pch != NULL)
+ {
+ if (count % 2) {
+ int i = 0;
+ int len = strlen(pch);
+ for (i = 0; i < len;i++)
+ g_strlcat(buf, "x", MAX_BUF_SIZE);
+ }
+ else
+ g_strlcat(buf, pch, MAX_BUF_SIZE);
+ pch = strtok(NULL, ".");
+ if(pch)
+ g_strlcat(buf, ".", MAX_BUF_SIZE);
+ count++;
+ }
+ g_strlcpy(output, buf, output_len);
+
+ return TRUE;
+}
+
+gboolean tcore_util_convert_ipv6_secure_log(gchar *input, gchar *output, int output_len)
+{
+ gchar buf[MAX_BUF_SIZE] = {0,};
+ gchar * pch = NULL;
+ int count = 0;
+
+ pch = strtok(input, ":");
+ while (pch != NULL)
+ {
+ if (count % 2) {
+ int i = 0;
+ int len = strlen(pch);
+ for (i = 0; i < len;i++)
+ g_strlcat(buf, "x", MAX_BUF_SIZE);
+ }
+ else
+ g_strlcat(buf, pch, MAX_BUF_SIZE);
+ pch = strtok(NULL, ":");
+ if(pch)
+ g_strlcat(buf, ":", MAX_BUF_SIZE);
+ count++;
+ }
+ g_strlcpy(output, buf, output_len);
+
+ return TRUE;
+}
+