TReturn (*start_conference)(CoreObject *o, UserRequest *ur);
TReturn (*modify_participants_in_conference)(CoreObject *o, UserRequest *ur);
TReturn (*set_ecc_status)(CoreObject *o, UserRequest *ur);
+ TReturn (*set_call_list)(CoreObject *o, UserRequest *ur);
+ TReturn (*set_volte_call_connection_status)(CoreObject *o, UserRequest *ur);
+ TReturn (*set_ssac_status)(CoreObject *o, UserRequest *ur);
};
struct tcore_call_information_operations {
gboolean tcore_call_object_set_audio_codec(CallObject *co, gchar *audio_codec);
gchar *tcore_call_object_get_audio_codec(CallObject* co);
+gboolean tcore_call_object_set_emergency_category(CallObject *co, enum telephony_call_emergency_category ecc_category);
+enum telephony_call_emergency_category tcore_call_object_get_emergency_category(CallObject* co);
+
/* Call Control APIs */
gboolean tcore_call_control_new(CoreObject *o, struct tcore_call_control_operations *ops);
void tcore_call_control_free(CoreObject *o);
TReturn (*read_file)(CoreObject *o, UserRequest *ur);
TReturn (*update_file)(CoreObject *o, UserRequest *ur);
TReturn (*transmit_apdu)(CoreObject *o, UserRequest *ur);
+ TReturn (*access_rsim_io)(CoreObject *o, UserRequest *ur);
TReturn (*get_atr)(CoreObject *o, UserRequest *ur);
TReturn (*req_authentication)(CoreObject *o, UserRequest *ur);
TReturn (*set_powerstate)(CoreObject *o, UserRequest *ur);
#define nDCSOffset 26
#define nVPOffset 27
+struct property_sms_info {
+ int g_trans_id;
+ int SMSPRecordLen;
+};
+
+enum tcore_sms_routing_policy {
+ TCORE_SMS_ROUTING_POLICY_CS_ALWAYS,
+ TCORE_SMS_ROUTING_POLICY_IMS_ALWAYS,
+ TCORE_SMS_ROUTING_POLICY_IMS_CS
+};
+
struct tcore_sms_operations {
TReturn (*send_umts_msg)(CoreObject *o, UserRequest *ur);
TReturn (*read_msg)(CoreObject *o, UserRequest *ur);
void tcore_sms_free(CoreObject * n);
void tcore_sms_set_ops(CoreObject *o, struct tcore_sms_operations *ops, enum tcore_ops_type ops_type);
+void tcore_sms_set_sms_routing(CoreObject *o, enum tcore_sms_routing_policy sms_routing_policy);
+enum tcore_sms_routing_policy tcore_sms_get_sms_routing(CoreObject *o);
__END_DECLS
CALL_ECC_STATUS_FAILED =4,
};
+enum telephony_call_volte_call_connection_status {
+ CALL_VOLTE_CONNECTION_STATUS_DISCONNECTED = 0,
+ CALL_VOLTE_CONNECTION_STATUS_CONNECTED =1,
+};
/**********
Struct
struct treq_call_set_ecc_status {
enum telephony_call_ecc_status status;
+ enum telephony_network_access_technology ecc_rat;
+};
+
+struct treq_call_set_call_list {
+ GSList *call_list;
+};
+
+struct treq_call_set_volte_call_connection_status {
+ enum telephony_call_volte_call_connection_status status;
};
+struct treq_call_set_ssac_status {
+ unsigned int voice_factor;
+ unsigned int voice_time;
+ unsigned int video_factor;
+ unsigned int video_time;
+};
+
+
// Response
struct tresp_call_dial {
enum telephony_call_error err;
};
+struct tresp_call_set_call_list {
+ enum telephony_call_error err;
+};
+
+
+struct tresp_call_set_ssac_status {
+ enum telephony_call_error err;
+};
// Notification
struct telephony_call_rec_info rec_info;
};
+struct tnoti_call_info_held {
+ unsigned int handle;
+ gboolean remote_held_tone;
+};
+
/* IMS specific */
struct tnoti_call_upgrade_requested {
unsigned int handle;
char product_code[33];
char prl_version[18];
char eri_version[18];
+ char cp_chipset[17];
};
struct tresp_modem_get_sn {
NETWORK_EPDG_STATUS_CONNECTED, /* 0x03: Connected */
NETWORK_EPDG_STATUS_HO_LTE_TO_IWLAN, /* 0x04: L2W */
NETWORK_EPDG_STATUS_HO_IWLAN_TO_LTE, /* 0x05: W2L */
+ NETWORK_EPDG_STATUS_THROTTLING, /* 0x06: Throttling */
};
struct tel_network_geran_cell_info {
TNOTI_PS_EXTERNAL_CALL,
TNOTI_PS_PROTOCOL_STATUS,
TNOTI_PS_ALL_PDP_DISCONNECTED,
+ TNOTI_PS_GPRS_BACKOFF_TIMER,
+ TNOTI_PS_GPRS_NAS_TIMER,
TNOTI_SMS = TCORE_NOTIFICATION | TCORE_TYPE_SMS,
TNOTI_SMS_INCOM_MSG, /* This is an unsolicited Incoming SMS Event*/
int result; /* specified in 3GPP TS 24.008 10.5.6.6. */
};
+struct tnoti_ps_backoff_timer {
+ int context_id;
+ int result;
+ unsigned int retry_time;
+ char apn[102];
+};
+
+struct tnoti_ps_nas_timer {
+ int timer_type;
+ int timer_status;
+ int timer_value;
+};
+
struct tnoti_ps_pdp_ipconfiguration {
int context_id;
int secondary_context_id;
TREQ_CALL_START_CONFERENCE,
TREQ_CALL_MODIFY_PARTICIPANTS_IN_CONFERENCE,
TREQ_CALL_SET_ECC_STATUS,
+ TREQ_CALL_SET_CALL_LIST,
+ TREQ_CALL_SET_VOLTE_CALL_CONNECTION_STATUS,
+ TREQ_CALL_SET_SSAC_STATUS,
TREQ_SS = TCORE_REQUEST | TCORE_TYPE_SS,
TREQ_SS_BARRING_ACTIVATE,
TREQ_SIM_DISABLE_FACILITY,
TREQ_SIM_ENABLE_FACILITY,
TREQ_SIM_TRANSMIT_APDU,
+ TREQ_SIM_ACCESS_RSIM_IO,
TREQ_SIM_GET_ATR,
TREQ_SIM_GET_ECC,
TREQ_SIM_GET_LANGUAGE,
TREQ_SIM_GET_DOMAIN,
TREQ_SIM_GET_PCSCF,
TREQ_SIM_GET_ISIM_SERVICE_TABLE,
+ TREQ_SIM_GET_CDMAIMSI,
TREQ_SIM_SET_PROVISIONING,
TREQ_SAT = TCORE_REQUEST | TCORE_TYPE_SAT,
TRESP_CALL_MODIFY_PARTICIPANTS_IN_CONFERENCE,
TRESP_CALL_SET_ECC_STATUS,
-
+ TRESP_CALL_SET_CALL_LIST,
+ TRESP_CALL_SET_VOLTE_CALL_CONNECTION_STATUS,
+ TRESP_CALL_SET_SSAC_STATUS,
TRESP_SS = TCORE_RESPONSE | TCORE_TYPE_SS,
TRESP_SS_BARRING_ACTIVATE,
TRESP_SIM_DISABLE_FACILITY,
TRESP_SIM_ENABLE_FACILITY,
TRESP_SIM_TRANSMIT_APDU,
+ TRESP_SIM_ACCESS_RSIM_IO,
TRESP_SIM_GET_ATR,
TRESP_SIM_GET_ECC,
TRESP_SIM_GET_LANGUAGE,
TRESP_SIM_GET_DOMAIN,
TRESP_SIM_GET_PCSCF,
TRESP_SIM_GET_ISIM_SERVICE_TABLE,
+ TRESP_SIM_GET_CDMAIMSI,
TRESP_SAT = TCORE_RESPONSE | TCORE_TYPE_SAT,
TRESP_SAT_REQ_ENVELOPE,
enum envelop_rsp envelop_resp;
};
+struct tresp_sat_terminal_response {
+ int result;
+};
+
/*
* Define SAT Notification structure
*/
SIM_EF_EXT5 = 0x6F4E, /**< Extension File-5 */
SIM_EF_EXT6 = 0x6FC8, /**< Extension File-6 */
SIM_EF_IMG = 0x4F20, /**Image file*/
+ SIM_EF_ROAMING = 0x2F50,
+ SIM_EF_FPLMN = 0x6F7B,
+ SIM_EF_EPSLOCI = 0x6FE3,
+ SIM_EF_PSLOCI = 0x6F73,
+ SIM_EF_LOCI = 0x6F7E,
SIM_EF_USIM_LI = 0x6A05, /**< USIM: Language Indication */
SIM_EF_USIM_PL = 0x2A05, /**< the Language Preference file of USIM */
struct tel_sim_pcscf pcscf[SIM_PCSCF_CNT_MAX]; /**< ISIM P-CSCF list */
};
+struct tel_sim_cdma_imsi {
+ unsigned short provisioned;
+ char *min;
+};
+
struct treq_sim_verify_pins {
enum tel_sim_pin_type pin_type;
unsigned int pin_length;
unsigned char apdu[SIM_APDU_DATA_LEN_MAX];
};
+struct treq_sim_access_rsim_io {
+ unsigned int field;
+ unsigned int data_len;
+ unsigned char data[SIM_APDU_DATA_LEN_MAX];
+ unsigned int rec_index;
+};
+
struct treq_sim_set_language {
enum tel_sim_language_type language;
};
struct tel_sim_pcscf_list pcscf_list;
struct tel_sim_ist ist;
struct tel_sim_cphs_csp csp;
+ struct tel_sim_cdma_imsi imsim;
} data;
};
%define major 0
%define minor 3
-%define patchlevel 10
+%define patchlevel 11
Name: libtcore
Version: %{major}.%{minor}.%{patchlevel}
long end; /* In seconds */
} time;
+ enum telephony_call_emergency_category ecc_category;
+
/* IMS: VoLTE/ViLTE speciifc parameters */
gboolean is_volte_call; /* True: VoLTE Call, False: CS Call */
int session_id; /* IMS Session ID */
return ops->set_ecc_status(o, ur);
+ case TREQ_CALL_SET_CALL_LIST:
+ tcore_check_null_ret_err("ops->set_call_list",
+ ops->set_call_list, TCORE_RETURN_ENOSYS);
+
+ return ops->set_call_list(o, ur);
+
+ case TREQ_CALL_SET_VOLTE_CALL_CONNECTION_STATUS:
+ tcore_check_null_ret_err("ops->set_volte_call_connection_status",
+ ops->set_volte_call_connection_status, TCORE_RETURN_ENOSYS);
+
+ return ops->set_volte_call_connection_status(o, ur);
+
+ case TREQ_CALL_SET_SSAC_STATUS:
+ tcore_check_null_ret_err("ops->set_ssac_status",
+ ops->set_ssac_status, TCORE_RETURN_ENOSYS);
+
+ return ops->set_ssac_status(o, ur);
default:
break;
return _find_object(po->cobjs, &session_id, _compare_by_session_id);
}
+gboolean tcore_call_object_set_emergency_category(CallObject *co, enum telephony_call_emergency_category ecc_category)
+{
+ tcore_check_null_ret_err("co", co, FALSE);
+ co->ecc_category = ecc_category;
+ return TRUE;
+}
+
+enum telephony_call_emergency_category tcore_call_object_get_emergency_category(CallObject* co)
+{
+ tcore_check_null_ret_err("co", co, FALSE);
+ return co->ecc_category;
+}
+
gboolean tcore_call_object_check_cs_call_existence(CoreObject *o)
{
struct private_object_data *po = NULL;
return ops->transmit_apdu(o, ur);
+ case TREQ_SIM_ACCESS_RSIM_IO:
+ tcore_check_null_ret_err("ops->access_rsim_io",
+ ops->access_rsim_io, TCORE_RETURN_ENOSYS);
+
+ return ops->access_rsim_io(o, ur);
+
case TREQ_SIM_GET_ATR:
tcore_check_null_ret_err("ops->get_atr",
ops->get_atr, TCORE_RETURN_ENOSYS);
case TREQ_SIM_GET_DOMAIN:
case TREQ_SIM_GET_PCSCF:
case TREQ_SIM_GET_ISIM_SERVICE_TABLE:
+ case TREQ_SIM_GET_CDMAIMSI:
tcore_check_null_ret_err("ops->read_file",
ops->read_file, TCORE_RETURN_ENOSYS);
struct private_object_data {
struct tcore_sms_operations *ops[TCORE_OPS_TYPE_MAX];
enum telephony_sms_ready_status SmsReadyStatus;
+ enum tcore_sms_routing_policy sms_routing_policy;
};
int _tcore_util_sms_encode_smsParameters(const struct telephony_sms_Params *incoming,
return TRUE;
}
+void tcore_sms_set_sms_routing(CoreObject *o, enum tcore_sms_routing_policy sms_routing_policy)
+{
+ struct private_object_data *po = NULL;
+
+ po = tcore_object_ref_object(o);
+ if (!po)
+ return;
+
+ po->sms_routing_policy = sms_routing_policy;
+}
+
+enum tcore_sms_routing_policy tcore_sms_get_sms_routing(CoreObject *o)
+{
+ struct private_object_data *po = NULL;
+
+ po = tcore_object_ref_object(o);
+ if (!po)
+ return TCORE_SMS_ROUTING_POLICY_CS_ALWAYS; /* 'default' to CS */
+
+ return po->sms_routing_policy;
+}
+
+
CoreObject *tcore_sms_new(TcorePlugin *p, const char *name,
struct tcore_sms_operations *ops, TcoreHal *hal)
{
/* set ops to default type when core object is created. */
po->ops[TCORE_OPS_TYPE_CP] = ops;
+ po->sms_routing_policy = TCORE_SMS_ROUTING_POLICY_IMS_CS;
tcore_object_set_type(o, CORE_OBJECT_TYPE_SMS);
tcore_object_link_object(o, po);