#include <string.h>
#include <stdlib.h>
#include <errno.h>
-#include <glib-object.h>
#include <tcore.h>
#include <server.h>
#include "common.h"
#include "sat_manager.h"
#include "sat_ui_support/sat_ui_support.h"
+#include "package-manager.h"
+
+static void _sat_set_main_menu(struct custom_data *ctx, const char *cp_name, GVariant *main_menu)
+{
+ GSList *list = NULL;
+ struct cached_data *object = NULL;
+
+ for (list = ctx->cached_data; list; list = list->next) {
+ object = (struct cached_data *) list->data;
+ if (object == NULL)
+ continue;
+
+ if (g_strcmp0(object->cp_name, cp_name) == 0 ) {
+ /* need to free the previous main_menu */
+ g_variant_unref(object->cached_sat_main_menu);
+ object->cached_sat_main_menu = main_menu;
+ return;
+ }
+ }
+
+ /* If 'object' is NOT created, then create the object and add to the list */
+ object = g_try_malloc0(sizeof(struct cached_data));
+ if (NULL == object) {
+ err(" Malloc Failed");
+ return;
+ }
+ object->cp_name = g_strdup(cp_name);
+ object->cached_sat_main_menu = main_menu;
+
+ ctx->cached_data = g_slist_append(ctx->cached_data, (gpointer) object);
+}
+
+static GVariant *_sat_get_main_menu(struct custom_data *ctx, const char *cp_name)
+{
+ GSList *list = NULL;
+ struct cached_data *object;
+
+ /*
+ * List of Objects in 'ctx',
+ * compare cp_name with modem_name stored in 'ctx'
+ * if matching return main_menu of that object.
+ */
+ for (list = ctx->cached_data; list; list = list->next) {
+ object = (struct cached_data *)list->data;
+ if (object == NULL)
+ continue;
+
+ if (g_strcmp0(object->cp_name, cp_name) == 0)
+ return object->cached_sat_main_menu;
+ }
+
+ return NULL;
+}
static gboolean on_sat_get_main_menu_info(TelephonySAT *sat, GDBusMethodInvocation *invocation,
gpointer user_data)
gint result = 1, command_id, item_cnt;
gboolean b_present, b_help_info, b_updated;
GVariant *items;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id = NULL;
+ GVariant *icon_list = NULL;
+#endif
+ if (!check_access_control (invocation, AC_SAT, "r"))
+ return TRUE;
-
- if(!ctx->cached_sat_main_menu){
+ main_menu = _sat_get_main_menu(ctx, GET_CP_NAME(invocation));
+ if(!main_menu){
dbg("no main menu");
return FALSE;
}
- main_menu = ctx->cached_sat_main_menu;
+
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(main_menu, "(ibs@vibb@v@v)", &command_id, &b_present, &title, &items, &item_cnt,
+ &b_help_info, &b_updated, &icon_id, &icon_list);
+
+ telephony_sat_complete_get_main_menu_info(sat, invocation, result, command_id, b_present, title,
+ items, item_cnt, b_help_info, b_updated, icon_id, icon_list);
+#else
g_variant_get(main_menu, "(ibs@vibb)", &command_id, &b_present, &title, &items, &item_cnt,
&b_help_info, &b_updated);
telephony_sat_complete_get_main_menu_info(sat, invocation, result, command_id, b_present, title,
items, item_cnt, b_help_info, b_updated);
+#endif
+ g_free(title);
return TRUE;
}
gpointer user_data)
{
TcorePlugin *plg = NULL;
- char *plugin_name;
+ char *cp_name;
struct custom_data *ctx = user_data;
gboolean result = FALSE;
gint out_param = 1;
- plugin_name = GET_PLUGIN_NAME(invocation);
- plg = tcore_server_find_plugin(ctx->server, plugin_name);
+ if (!check_access_control (invocation, AC_SAT, "x"))
+ return TRUE;
+
+ cp_name = GET_CP_NAME(invocation);
+ plg = tcore_server_find_plugin(ctx->server, cp_name);
if (!plg){
dbg("there is no valid plugin at this point");
out_param = 0;
GVariant *arg_additional_data, gpointer user_data)
{
TcorePlugin *plg = NULL;
- char *plugin_name;
+ char *cp_name;
struct custom_data *ctx = user_data;
gboolean result = FALSE;
gint out_param = 1;
GVariant *confirm_data = NULL;
- plugin_name = GET_PLUGIN_NAME(invocation);
- plg = tcore_server_find_plugin(ctx->server, plugin_name);
+ if (!check_access_control (invocation, AC_SAT, "x"))
+ return TRUE;
+
+ cp_name = GET_CP_NAME(invocation);
+ plg = tcore_server_find_plugin(ctx->server, cp_name);
if (!plg){
dbg("there is no valid plugin at this point");
out_param = 0;
gpointer user_data)
{
TcorePlugin *plg = NULL;
- char *plugin_name;
+ char *cp_name;
struct custom_data *ctx = user_data;
gboolean result = FALSE;
gint out_param = 1;
- plugin_name = GET_PLUGIN_NAME(invocation);
- plg = tcore_server_find_plugin(ctx->server, plugin_name);
+ if (!check_access_control (invocation, AC_SAT, "x"))
+ return TRUE;
+
+ cp_name = GET_CP_NAME(invocation);
+ plg = tcore_server_find_plugin(ctx->server, cp_name);
if (!plg){
dbg("there is no valid plugin at this point");
out_param = 0;
guchar arg_item_identifier, gboolean arg_help_request,
gpointer user_data)
{
+ TReturn rv;
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
-
struct treq_sat_envelop_cmd_data envelop_data;
+ if (!check_access_control (invocation, AC_SAT, "x"))
+ return TRUE;
+
ur = MAKE_UR(ctx, sat, invocation);
memset(&envelop_data, 0, sizeof(struct treq_sat_envelop_cmd_data));
envelop_data.sub_cmd = ENVELOP_MENU_SELECTION;
tcore_user_request_set_data(ur, sizeof(struct treq_sat_envelop_cmd_data), &envelop_data);
tcore_user_request_set_command(ur, TREQ_SAT_REQ_ENVELOPE);
- tcore_communicator_dispatch_request(ctx->comm, ur);
+ rv = tcore_communicator_dispatch_request(ctx->comm, ur);
+ if(rv != TCORE_RETURN_SUCCESS){
+ FAIL_RESPONSE (invocation, DEFAULT_MSG_REQ_FAILED);
+ dbg("[ error ] tcore_communicator_dispatch_request() : (0x%x)", rv);
+ tcore_user_request_unref(ur);
+ }
return TRUE;
}
gint arg_event_download_type, gint arg_src_device,gint arg_dest_device,
GVariant *arg_download_data, gpointer user_data)
{
+ gboolean b_event = FALSE;
+ TReturn rv;
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
struct treq_sat_envelop_cmd_data envelop_data;
+ if (!check_access_control (invocation, AC_SAT, "x"))
+ return TRUE;
+
ur = MAKE_UR(ctx, sat, invocation);
memset(&envelop_data, 0, sizeof(struct treq_sat_envelop_cmd_data));
envelop_data.sub_cmd = ENVELOP_EVENT_DOWNLOAD;
envelop_data.envelop_data.event_download.event = arg_event_download_type;
- sat_manager_handle_event_download_envelop(arg_event_download_type, arg_src_device, arg_dest_device,
- &envelop_data.envelop_data.event_download, arg_download_data);
+ b_event = sat_manager_handle_event_download_envelop(arg_event_download_type, arg_src_device, arg_dest_device,
+ &envelop_data.envelop_data.event_download, arg_download_data);
+
+ if(!b_event){
+ telephony_sat_complete_download_event(sat, invocation, -1, ENVELOPE_FAILED);
+ tcore_user_request_unref(ur);
+ return TRUE;
+ }
tcore_user_request_set_data(ur, sizeof(struct treq_sat_envelop_cmd_data), &envelop_data);
tcore_user_request_set_command(ur, TREQ_SAT_REQ_ENVELOPE);
- tcore_communicator_dispatch_request(ctx->comm, ur);
+ rv = tcore_communicator_dispatch_request(ctx->comm, ur);
+ if(rv != TCORE_RETURN_SUCCESS){
+ FAIL_RESPONSE (invocation, DEFAULT_MSG_REQ_FAILED);
+ dbg("[ error ] tcore_communicator_dispatch_request() : (0x%x)", rv);
+ tcore_user_request_unref(ur);
+ }
return TRUE;
}
return TRUE;
}
-gboolean dbus_plugin_sat_notification(struct custom_data *ctx, const char *plugin_name,
+gboolean dbus_plugin_sat_notification(struct custom_data *ctx, CoreObject *source,
TelephonyObjectSkeleton *object, enum tcore_notification_command command,
unsigned int data_len, const void *data)
{
- TcorePlugin *plg = NULL;
TelephonySAT *sat;
- struct tnoti_sat_proactive_ind *p_ind = (struct tnoti_sat_proactive_ind *)data;
+ const char *cp_name;
+ enum dbus_tapi_sim_slot_id slot_id;
- if (!object) {
- dbg("object is NULL");
+ if (!object || !ctx) {
+ dbg("NULL data is detected!!");
return FALSE;
}
+ cp_name = tcore_server_get_cp_name_by_plugin(tcore_object_ref_plugin(source));
- plg = tcore_server_find_plugin(ctx->server, plugin_name);
- if (!plg){
- dbg("there is no valid plugin at this point");
- return FALSE;
- }
+ slot_id = get_sim_slot_id_by_cp_name((char *)cp_name);
+ dbg("slot_id: [%d]", slot_id);
sat = telephony_object_peek_sat(TELEPHONY_OBJECT(object));
- dbg("sat = %p", sat);
-
- dbg("notification !!! (command = 0x%x, data_len = %d)", command, data_len);
- if (command == TNOTI_SAT_SESSION_END) {
+ //session end notification
+ switch (command) {
+ case TNOTI_SAT_SESSION_END: {
dbg("notified sat session end evt");
- sat_manager_init_queue(ctx);
-
- sat_ui_support_terminate_sat_ui();
- telephony_sat_emit_end_proactive_session(sat, SAT_PROATV_CMD_TYPE_END_PROACTIVE_SESSION);
- return TRUE;
- }
-
- //Proactive Command Notification
- dbg("notified sat proactive command(%d)", p_ind->cmd_type);
+ sat_manager_init_queue(ctx, cp_name);
- switch (p_ind->cmd_type) {
- case SAT_PROATV_CMD_SETUP_MENU:{
- gboolean rv = FALSE;
- GVariant *menu_info = NULL;
- GVariant *resp = NULL;
- GVariant *exec_result = NULL;
-
- gchar *title;
- gint command_id, menu_cnt;
- gboolean b_present, b_helpinfo, b_updated;
- GVariant *items;
+ //sat_ui_support_terminate_sat_ui();
+ telephony_sat_emit_end_proactive_session(sat, SAT_PROATV_CMD_TYPE_END_PROACTIVE_SESSION);
+ return TRUE;
+ }
+ break;
- menu_info = sat_manager_caching_setup_menu_info(ctx, plugin_name, (struct tel_sat_setup_menu_tlv*) &p_ind->proactive_ind_data.setup_menu);
- ctx->cached_sat_main_menu = menu_info;
+ //call control notification
+ case TNOTI_SAT_CALL_CTRL_RESULT: {
+ struct tnoti_sat_call_control_result_ind *cc_result_noti = NULL;
+ gint call_ctrl_result = 0, bc_repeat_indicator = 0, ton = 0x0F, npi=0X0F;
+ gchar *text = NULL, *call_num = NULL, *ss_string = NULL, *sub_addr = NULL, *ccp1 = NULL, *ccp2 = NULL;
- if(!menu_info){
- dbg("no main menu data");
- sat_ui_support_remove_desktop_file();
- return TRUE;
+ cc_result_noti = (struct tnoti_sat_call_control_result_ind *)data;
+ if (cc_result_noti == NULL) {
+ err("Indication data is NULL");
+ return FALSE;
}
+ dbg("sat call control result notification");
- dbg("menu_info type_format(%s)", g_variant_get_type_string(menu_info));
- g_variant_get(menu_info, "(ibs@vibb)", &command_id, &b_present, &title, &items,
- &menu_cnt, &b_helpinfo, &b_updated);
+ call_ctrl_result = cc_result_noti->cc_result;
+ bc_repeat_indicator = cc_result_noti->bc_repeat_type.bc_indi_repeat_type;
- rv = sat_ui_support_create_desktop_file(title);
- rv = TRUE;
- dbg("return value (%d)", rv);
- if(rv)
- resp = g_variant_new("(i)", RESULT_SUCCESS);
+ if(cc_result_noti->address.dialing_number_len > 0){
+ ton = cc_result_noti->address.ton;
+ npi = cc_result_noti->address.npi;
+ if(ton == TON_INTERNATIONAL)
+ call_num = g_strdup_printf("+%s", cc_result_noti->address.dialing_number);
else
- resp = g_variant_new("(i)", RESULT_ME_UNABLE_TO_PROCESS_COMMAND);
-
- exec_result = g_variant_new_variant(resp);
- sat_manager_handle_app_exec_result(ctx, plg, command_id, SAT_PROATV_CMD_SETUP_MENU, exec_result);
-
- //sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_SETUP_MENU, menu_info);
-
- telephony_sat_emit_setup_menu(sat, command_id, b_present, title, items, menu_cnt,
- b_helpinfo, b_updated);
- } break;
-
- case SAT_PROATV_CMD_DISPLAY_TEXT:{
- GVariant *display_text = NULL;
-
- gint command_id, text_len, duration;
- gboolean high_priority, user_rsp_required, immediately_rsp;
- gchar text[SAT_TEXT_STRING_LEN_MAX];
- GVariant *icon_id = NULL;
-
- display_text = sat_manager_display_text_noti(ctx, plugin_name, (struct tel_sat_display_text_tlv*) &p_ind->proactive_ind_data.display_text);
-
- if(!display_text){
- dbg("no display text data");
- return TRUE;
- }
-
- dbg("display text type_format(%s)", g_variant_get_type_string(display_text));
- g_variant_get(display_text, "(isiibbb@v)", &command_id, &text, &text_len, &duration,
- &high_priority, &user_rsp_required, &immediately_rsp, &icon_id);
-
- sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_DISPLAY_TEXT, display_text);
-
- telephony_sat_emit_display_text(sat, command_id, text, text_len, duration,
- high_priority, user_rsp_required, immediately_rsp);
-
- } break;
-
- case SAT_PROATV_CMD_SELECT_ITEM:{
- GVariant *select_menu = NULL;
-
- gboolean help_info ;
- gchar *selected_text;
- gint command_id, default_item_id, menu_cnt, text_len =0;
- GVariant *menu_items, *icon_id, *icon_list;
-
- select_menu = sat_manager_select_item_noti(ctx, plugin_name, (struct tel_sat_select_item_tlv*) &p_ind->proactive_ind_data.select_item);
-
- if(!select_menu){
- dbg("no select menu data");
- return TRUE;
- }
-
- dbg("select menu type_format(%s)", g_variant_get_type_string(select_menu));
- g_variant_get(select_menu, "(ibsiii@v@v@v)", &command_id, &help_info, &selected_text,
- &text_len, &default_item_id, &menu_cnt, &menu_items, &icon_id, &icon_list);
-
- sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_SELECT_ITEM, select_menu);
-
- telephony_sat_emit_select_item (sat, command_id, help_info, selected_text, text_len,
- default_item_id, menu_cnt, menu_items);
- } break;
-
- case SAT_PROATV_CMD_GET_INKEY:{
- GVariant *get_inkey = NULL;
-
- gint command_id, key_type, input_character_mode;
- gint text_len, duration;
- gboolean b_numeric, b_help_info;
- gchar *text;
- GVariant *icon_id;
-
- get_inkey = sat_manager_get_inkey_noti(ctx, plugin_name, (struct tel_sat_get_inkey_tlv*) &p_ind->proactive_ind_data.get_inkey);
-
- if(!get_inkey){
- dbg("no get inkey data");
- return TRUE;
- }
-
- dbg("get inkey type_format(%s)", g_variant_get_type_string(get_inkey));
- g_variant_get(get_inkey, "(iiibbsii@v)", &command_id, &key_type, &input_character_mode,
- &b_numeric,&b_help_info, &text, &text_len, &duration, &icon_id);
-
- sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_GET_INKEY, get_inkey);
-
- telephony_sat_emit_get_inkey(sat, command_id, key_type, input_character_mode,
- b_numeric, b_help_info, text, text_len, duration);
- } break;
-
- case SAT_PROATV_CMD_GET_INPUT:{
- GVariant *get_input = NULL;
-
- gint command_id, input_character_mode;
- gint text_len, def_text_len, rsp_len_min, rsp_len_max;
- gboolean b_numeric, b_help_info, b_echo_input;
- gchar *text, *def_text;
- GVariant *icon_id;
-
- get_input = sat_manager_get_input_noti(ctx, plugin_name, (struct tel_sat_get_input_tlv*) &p_ind->proactive_ind_data.get_input);
-
- if(!get_input){
- dbg("no get input data");
- return TRUE;
- }
-
- dbg("get input type_format(%s)", g_variant_get_type_string(get_input));
- g_variant_get(get_input, "(iibbbsiiisi@v)", &command_id, &input_character_mode, &b_numeric, &b_help_info, &b_echo_input,
- &text, &text_len, &rsp_len_max, &rsp_len_min, &def_text, &def_text_len, &icon_id);
-
- sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_GET_INPUT, get_input);
-
- telephony_sat_emit_get_input(sat, command_id, input_character_mode, b_numeric, b_help_info,
- b_echo_input, text, text_len, rsp_len_max, rsp_len_min, def_text, def_text_len);
- } break;
-
- case SAT_PROATV_CMD_PLAY_TONE:{
- GVariant *play_tone = NULL;
-
- gint command_id, tone_type, duration;
- gint text_len;
- gchar* text;
- GVariant *icon_id;
-
- play_tone = sat_manager_play_tone_noti(ctx, plugin_name, (struct tel_sat_play_tone_tlv*) &p_ind->proactive_ind_data.play_tone);
-
- if(!play_tone){
- dbg("no play tone data");
- return TRUE;
- }
-
- dbg("play tone type_format(%s)", g_variant_get_type_string(play_tone));
- g_variant_get(play_tone, "(isi@vii)", &command_id, &text, &text_len, &icon_id, &tone_type, &duration);
-
- dbg("check display text : text(%s) text len(%d)", text, text_len);
- if(text_len > 1 && (g_strcmp0(text,"") != 0) ){
- GVariant *ui_info = NULL;
- gboolean user_confirm = FALSE;
- dbg("text should be displayed by ui");
- dbg("play tone is pending!!!")
-
- ui_info = g_variant_new("(isib)", command_id, text, text_len, user_confirm);
- sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_NONE, ui_info);
- return TRUE;
- }
-
- telephony_sat_emit_play_tone(sat, command_id, text, text_len, tone_type, duration);
- } break;
-
- case SAT_PROATV_CMD_SEND_SMS:{
- GVariant *send_sms = NULL;
-
- gint command_id, ton, npi, tpdu_type;
- gboolean b_packing_required;
- gint text_len, number_len, tpdu_data_len;
- gchar* text, *dialling_number;
- GVariant *tpdu_data, *icon_id;
-
- send_sms = sat_manager_send_sms_noti(ctx, plugin_name, (struct tel_sat_send_sms_tlv*) &p_ind->proactive_ind_data.send_sms);
-
- if(!send_sms){
- dbg("no send sms data");
- return TRUE;
- }
-
- dbg("send sms type_format(%s)", g_variant_get_type_string(send_sms));
- g_variant_get(send_sms, "(isi@vbiisii@vi)", &command_id, &text, &text_len, &icon_id, &b_packing_required, &ton, &npi,
- &dialling_number, &number_len, &tpdu_type, &tpdu_data, &tpdu_data_len);
-
- dbg("check display text : text(%s) text len(%d)", text, text_len);
- if(text_len > 1 && (g_strcmp0(text,"") != 0) ){
- GVariant *ui_info = NULL;
- gboolean user_confirm = FALSE;
- dbg("text should be displayed by ui");
- dbg("send sms is pending!!!")
-
- ui_info = g_variant_new("(isib)", command_id, text, text_len, user_confirm);
- sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_NONE, ui_info);
- return TRUE;
- }
-
- telephony_sat_emit_send_sms(sat, command_id, text, text_len, b_packing_required,
- ton, npi, dialling_number, number_len, tpdu_type, tpdu_data, tpdu_data_len);
- } break;
-
- case SAT_PROATV_CMD_SEND_SS:{
- GVariant *send_ss = NULL;
-
- gint command_id, ton, npi;
- gint text_len, ss_str_len;
- gchar* text, *ss_string;
-
- GVariant *icon_id;
-
- send_ss = sat_manager_send_ss_noti(ctx, plugin_name, (struct tel_sat_send_ss_tlv*) &p_ind->proactive_ind_data.send_ss);
-
- if(!send_ss){
- dbg("no send ss data");
- return TRUE;
- }
-
- dbg("send ss type_format(%s)", g_variant_get_type_string(send_ss));
- g_variant_get(send_ss, "(isi@viiis)", &command_id, &text, &text_len, &icon_id,
- &ton, &npi, &ss_str_len, &ss_string);
-
- dbg("check display text : text(%s) text len(%d)", text, text_len);
- if(text_len > 1 && (g_strcmp0(text,"") != 0) ){
- GVariant *ui_info = NULL;
- gboolean user_confirm = FALSE;
- dbg("text should be displayed by ui");
- dbg("send ss is pending!!!")
-
- ui_info = g_variant_new("(isib)", command_id, text, text_len, user_confirm);
- sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_NONE, ui_info);
- return TRUE;
- }
-
- telephony_sat_emit_send_ss(sat, command_id, text, text_len, ton, npi, ss_string);
- } break;
-
- case SAT_PROATV_CMD_SEND_USSD:{
- GVariant *send_ussd = NULL;
-
- gint command_id;
- gint text_len, ussd_str_len;
- gchar* text, *ussd_string;
-
- GVariant *icon_id;
-
- send_ussd = sat_manager_send_ussd_noti(ctx, plugin_name, (struct tel_sat_send_ussd_tlv*) &p_ind->proactive_ind_data.send_ussd);
-
- if(!send_ussd){
- dbg("no send ussd data");
- return TRUE;
- }
-
- dbg("send ussd type_format(%s)", g_variant_get_type_string(send_ussd));
- g_variant_get(send_ussd, "(isi@vis)", &command_id, &text, &text_len, &icon_id, &ussd_str_len, &ussd_string);
-
- dbg("check display text : text(%s) text len(%d)", text, text_len);
- if(text_len > 1 && (g_strcmp0(text,"") != 0) ){
- GVariant *ui_info = NULL;
- gboolean user_confirm = FALSE;
- dbg("text should be displayed by ui");
- dbg("send ussd is pending!!!")
-
- ui_info = g_variant_new("(isib)", command_id, text, text_len, user_confirm);
- sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_NONE, ui_info);
- return TRUE;
- }
-
- telephony_sat_emit_setup_ussd(sat, command_id, text, text_len, ussd_string);
- } break;
-
- case SAT_PROATV_CMD_SETUP_CALL:{
- GVariant *setup_call = NULL;
-
- gint command_id, call_type, text_len, duration;
- gchar *text, *call_number;
- GVariant *icon_id;
-
- setup_call = sat_manager_setup_call_noti(ctx, plugin_name, (struct tel_sat_setup_call_tlv*) &p_ind->proactive_ind_data.setup_call);
-
- if(!setup_call){
- dbg("no setup call data");
- return TRUE;
- }
-
- dbg("setup call type_format(%s)", g_variant_get_type_string(setup_call));
- g_variant_get(setup_call, "(isi@visi)", &command_id, &text, &text_len, &icon_id, &call_type, &call_number, &duration);
-
- dbg("check display text : text(%s) text len(%d)", text, text_len);
- if(text_len > 1 && (g_strcmp0(text,"") != 0) ){
- GVariant *ui_info = NULL;
- gboolean user_confirm = TRUE;
- dbg("text should be displayed by ui");
- dbg("setup call is pending!!!")
-
- ui_info = g_variant_new("(isib)", command_id, text, text_len, user_confirm);
- sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_NONE, ui_info);
- return TRUE;
- }
-
- telephony_sat_emit_setup_call(sat, command_id, text, text_len, call_type,
- call_number, duration);
- }break;
-
- case SAT_PROATV_CMD_SETUP_EVENT_LIST:{
- GVariant *event_list = NULL;
-
- gint event_cnt;
- GVariant *evt_list;
-
- event_list = sat_manager_setup_event_list_noti(ctx, plugin_name, (struct tel_sat_setup_event_list_tlv*) &p_ind->proactive_ind_data.setup_event_list);
-
- if(!event_list){
- dbg("no setup event list data");
- return TRUE;
- }
-
- dbg("setup event list type_format(%s)", g_variant_get_type_string(event_list));
- g_variant_get(event_list, "(i@v)", &event_cnt, &evt_list);
-
- telephony_sat_emit_setup_event_list(sat, event_cnt, evt_list);
- } break;
-
- case SAT_PROATV_CMD_SETUP_IDLE_MODE_TEXT:{
- GVariant *setup_idle_mode = NULL;
-
- gint command_id, text_len;
- gchar* text;
- GVariant *icon_id;
+ call_num = g_strdup(cc_result_noti->address.dialing_number);
+ ss_string = g_strdup("");
+ }
+ else if(cc_result_noti->ss_string.string_len > 0){
+ ton = cc_result_noti->ss_string.ton;
+ npi = cc_result_noti->ss_string.npi;
+ call_num = g_strdup("");
+ ss_string = g_strdup(cc_result_noti->ss_string.ss_string);
+ }
+
+ if(cc_result_noti->alpha_id.alpha_data_len > 0){
+ text = g_strdup(cc_result_noti->alpha_id.alpha_data);
+ }
+ else{
+ text = g_strdup("");
+ }
+
+ if(cc_result_noti->sub_address.subaddress_len > 0){
+ sub_addr = g_strdup(cc_result_noti->sub_address.subaddress);
+ }
+ else{
+ sub_addr = g_strdup("");
+ }
+
+ if(cc_result_noti->ccp1.data_len > 0){
+ ccp1 = g_strdup(cc_result_noti->ccp1.data);
+ }
+ else{
+ ccp1 = g_strdup("");
+ }
+
+
+ if(cc_result_noti->ccp2.data_len > 0){
+ ccp2 = g_strdup(cc_result_noti->ccp2.data);
+ }
+ else{
+ ccp2 = g_strdup("");
+ }
+
+ telephony_sat_emit_call_control_result(sat, call_ctrl_result, text, ton, npi, call_num,
+ ss_string, sub_addr, ccp1, ccp2, bc_repeat_indicator);
+
+ g_free(text); g_free(call_num); g_free(ss_string); g_free(sub_addr); g_free(ccp1); g_free(ccp2);
+ return TRUE;
+ }
+ break;
- setup_idle_mode = sat_manager_setup_idle_mode_text_noti(ctx, plugin_name, (struct tel_sat_setup_idle_mode_text_tlv*) &p_ind->proactive_ind_data.setup_idle_mode_text);
+ case TNOTI_SAT_MO_SM_CTRL_RESULT: {
+ struct tnoti_sat_mo_sm_control_result_ind *mo_sm_result_noti = NULL;
+ gint call_ctrl_result = 0;
+ gint rp_dst_ton = 0x0F, rp_dst_npi = 0X0F, tp_dst_ton = 0x0F, tp_dst_npi = 0X0F;
+ gchar *text = NULL, *rp_dst_call_num = NULL, *tp_dst_call_num = NULL;
- if(!setup_idle_mode){
- dbg("no setup idle mode text data");
- return TRUE;
+ mo_sm_result_noti = (struct tnoti_sat_mo_sm_control_result_ind *)data;
+ if (mo_sm_result_noti == NULL) {
+ err("Indication data is NULL");
+ return FALSE;
}
+ dbg("sat mo sm control result notification");
- dbg("setup idle mode text type_format(%s)", g_variant_get_type_string(setup_idle_mode));
- g_variant_get(setup_idle_mode, "(isi@v)", &command_id, &text, &text_len, &icon_id);
+ call_ctrl_result = mo_sm_result_noti->cc_result;
- if(text_len > 1 && (g_strcmp0(text,"") != 0) ){
- GVariant *ui_info = NULL;
- gboolean user_confirm = TRUE;
- dbg("text should be displayed by ui");
- dbg("setup idle mode text is displayed!!!")
+ if(mo_sm_result_noti->rp_dst_address.dialing_number_len > 0){
+ rp_dst_ton = mo_sm_result_noti->rp_dst_address.ton;
+ rp_dst_npi = mo_sm_result_noti->rp_dst_address.npi;
+ if(rp_dst_ton == TON_INTERNATIONAL)
+ rp_dst_call_num = g_strdup_printf("+%s", mo_sm_result_noti->rp_dst_address.dialing_number);
+ else
+ rp_dst_call_num = g_strdup(mo_sm_result_noti->rp_dst_address.dialing_number);
+ } else {
+ rp_dst_call_num = g_strdup("");
+ }
+
+ if(mo_sm_result_noti->tp_dst_address.dialing_number_len > 0){
+ tp_dst_ton = mo_sm_result_noti->tp_dst_address.ton;
+ tp_dst_npi = mo_sm_result_noti->tp_dst_address.npi;
+ if(tp_dst_ton == TON_INTERNATIONAL)
+ tp_dst_call_num = g_strdup_printf("+%s", mo_sm_result_noti->tp_dst_address.dialing_number);
+ else
+ tp_dst_call_num = g_strdup(mo_sm_result_noti->tp_dst_address.dialing_number);
+ } else {
+ tp_dst_call_num = g_strdup("");
+ }
+
+ if(mo_sm_result_noti->alpha_id.alpha_data_len > 0){
+ text = g_strdup(mo_sm_result_noti->alpha_id.alpha_data);
+ }
+ else{
+ text = g_strdup("");
+ }
+
+ telephony_sat_emit_mo_sm_control_result(sat, call_ctrl_result, text,
+ rp_dst_ton, rp_dst_npi, rp_dst_call_num, tp_dst_ton, tp_dst_npi, tp_dst_call_num);
+
+ g_free(text); g_free(rp_dst_call_num); g_free(tp_dst_call_num);
+ return TRUE;
+ }
+ break;
- ui_info = g_variant_new("(isib)", command_id, text, text_len, user_confirm);
- sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_NONE, ui_info);
- return TRUE;
+ //Proactive Command Notification
+ case TNOTI_SAT_PROACTIVE_CMD: {
+ struct tnoti_sat_proactive_ind *p_ind;
+ TcorePlugin *plg;
+ plg = tcore_object_ref_plugin(source);
+ if (plg == NULL) {
+ dbg("there is no valid plugin at this point");
+ return FALSE;
}
- telephony_sat_emit_setup_idle_mode_text(sat, command_id, text, text_len);
- } break;
-
- case SAT_PROATV_CMD_OPEN_CHANNEL:{
- GVariant *open_channel = NULL;
-
- gint command_id, bearer_type, protocol_type, dest_addr_type;
- gboolean immediate_link, auto_reconnection, bg_mode;
- gint text_len, buffer_size, port_number;
- gchar *text, *dest_address;
- GVariant *icon_id;
- GVariant *bearer_param;
- GVariant *bearer_detail;
-
- open_channel = sat_manager_open_channel_noti(ctx, plugin_name, (struct tel_sat_open_channel_tlv*) &p_ind->proactive_ind_data.open_channel);
-
- if(!open_channel){
- dbg("no open channel data");
- return TRUE;
+ if (cp_name == NULL) {
+ dbg("CP name is NULL");
+ return FALSE;
}
- dbg("open channel type_format(%s)", g_variant_get_type_string(open_channel));
- g_variant_get(open_channel,"(isi@vbbbi@viiiis@v)", &command_id, &text, &text_len, &icon_id, &immediate_link, &auto_reconnection, &bg_mode,
- &bearer_type, &bearer_param, &buffer_size, &protocol_type, &port_number, &dest_addr_type, &dest_address, &bearer_detail);
-
- dbg("check display text : text(%s) text len(%d)", text, text_len);
- if(text_len > 1 && (g_strcmp0(text,"") != 0) ){
- GVariant *ui_info = NULL;
- gboolean user_confirm = TRUE;
- dbg("text should be displayed by ui");
- dbg("open channel text is displayed!!!")
-
- ui_info = g_variant_new("(isib)", command_id, text, text_len, user_confirm);
- sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_NONE, ui_info);
- return TRUE;
+ p_ind = (struct tnoti_sat_proactive_ind *)data;
+ if (p_ind == NULL) {
+ dbg("Indication data is NULL");
+ return FALSE;
}
-
- telephony_sat_emit_open_channel(sat, command_id, text, text_len, immediate_link, auto_reconnection, bg_mode,
- bearer_type, bearer_param, buffer_size, protocol_type, port_number, dest_addr_type, dest_address, bearer_detail);
- } break;
-
- case SAT_PROATV_CMD_CLOSE_CHANNEL:{
- GVariant *close_channel = NULL;
-
- gint command_id, channel_id, text_len;
- gchar *text;
- GVariant *icon_id;
-
- close_channel = sat_manager_close_channel_noti(ctx, plugin_name, (struct tel_sat_close_channel_tlv*) &p_ind->proactive_ind_data.close_channel);
-
- if(!close_channel){
- dbg("no close channel data");
- return TRUE;
+ dbg("notified sat proactive command(%d)", p_ind->cmd_type);
+
+ switch (p_ind->cmd_type) {
+ case SAT_PROATV_CMD_SETUP_MENU:{
+ GVariant *menu_info = NULL;
+ gchar *title;
+ gint command_id, menu_cnt;
+ gboolean b_present, b_helpinfo, b_updated;
+ GVariant *items;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id = NULL;
+ GVariant *icon_list = NULL;
+#endif
+ menu_info = sat_manager_caching_setup_menu_info(ctx, cp_name,
+ (struct tel_sat_setup_menu_tlv*)&p_ind->proactive_ind_data.setup_menu);
+
+ dbg("menu_info type_format(%s)", g_variant_get_type_string(menu_info));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(menu_info, "(ibs@vibb@v@v)", &command_id, &b_present, &title, &items,
+ &menu_cnt, &b_helpinfo, &b_updated, &icon_id, &icon_list);
+#else
+ g_variant_get(menu_info, "(ibs@vibb)", &command_id, &b_present, &title, &items,
+ &menu_cnt, &b_helpinfo, &b_updated);
+#endif
+ if(!menu_cnt){
+ dbg("no main menu data");
+ /* No need to cache anything so make store NULL in cached_sat_main_menu */
+ _sat_set_main_menu(ctx, cp_name, NULL);
+ g_variant_unref(menu_info);
+ } else {
+ _sat_set_main_menu(ctx, cp_name, menu_info);
+ }
+ if(b_updated) {
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ telephony_sat_emit_setup_menu(sat, command_id, b_present, title, items, menu_cnt,
+ b_helpinfo, b_updated, icon_id, icon_list);
+#else
+ telephony_sat_emit_setup_menu(sat, command_id, b_present, title, items, menu_cnt,
+ b_helpinfo, b_updated);
+#endif
+ }
+ g_free(title);
+ } break;
+
+ case SAT_PROATV_CMD_DISPLAY_TEXT:{
+ GVariant *display_text = NULL;
+
+ gint command_id, text_len, duration;
+ gboolean high_priority, user_rsp_required, immediately_rsp;
+ gchar* text = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id = NULL;
+#endif
+ int ret;
+
+ display_text = sat_manager_display_text_noti(ctx, cp_name, (struct tel_sat_display_text_tlv*) &p_ind->proactive_ind_data.display_text, p_ind->decode_err_code);
+
+ if(!display_text){
+ dbg("no display text data");
+ return TRUE;
+ }
+
+ dbg("display text type_format(%s)", g_variant_get_type_string(display_text));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(display_text, "(isiibbb@v)", &command_id, &text, &text_len, &duration,
+ &high_priority, &user_rsp_required, &immediately_rsp, &icon_id);
+#else
+ g_variant_get(display_text, "(isiibbb)", &command_id, &text, &text_len, &duration,
+ &high_priority, &user_rsp_required, &immediately_rsp);
+#endif
+ ret = sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_DISPLAY_TEXT, display_text, slot_id);
+ if(!ret) {
+ int rv;
+ dbg("fail to launch sat-ui, remove the queued data!!\n");
+ if(!sat_manager_handle_sat_ui_launch_fail(ctx, cp_name, p_ind))
+ dbg("Fail to send terminal response\n");
+ rv = sat_manager_remove_cmd_by_id(ctx, command_id);
+ if(!rv)
+ dbg("fail to dequeue data\n");
+ }
+
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ telephony_sat_emit_display_text(sat, command_id, text, text_len, duration,
+ high_priority, user_rsp_required, immediately_rsp, icon_id);
+#else
+ telephony_sat_emit_display_text(sat, command_id, text, text_len, duration,
+ high_priority, user_rsp_required, immediately_rsp);
+#endif
+ g_free(text);
+ } break;
+
+ case SAT_PROATV_CMD_SELECT_ITEM:{
+ GVariant *select_menu = NULL;
+
+ gboolean help_info ;
+ gchar *selected_text = NULL;
+ gint command_id, default_item_id, menu_cnt, text_len =0;
+ GVariant *menu_items;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id, *icon_list;
+#endif
+ int ret;
+
+ select_menu = sat_manager_select_item_noti(ctx, cp_name, (struct tel_sat_select_item_tlv*) &p_ind->proactive_ind_data.select_item);
+
+ if(!select_menu){
+ dbg("no select menu data");
+ return TRUE;
+ }
+
+ dbg("select menu type_format(%s)", g_variant_get_type_string(select_menu));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(select_menu, "(ibsiii@v@v@v)", &command_id, &help_info, &selected_text,
+ &text_len, &default_item_id, &menu_cnt, &menu_items, &icon_id, &icon_list);
+#else
+ g_variant_get(select_menu, "(ibsiii@v)", &command_id, &help_info, &selected_text,
+ &text_len, &default_item_id, &menu_cnt, &menu_items);
+#endif
+ ret = sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_SELECT_ITEM, select_menu, slot_id);
+ if(!ret) {
+ int rv;
+ dbg("fail to launch sat-ui, remove the queued data!!\n");
+ if(!sat_manager_handle_sat_ui_launch_fail(ctx, cp_name, p_ind))
+ dbg("Fail to send terminal response\n");
+ rv = sat_manager_remove_cmd_by_id(ctx, command_id);
+ if(!rv)
+ dbg("fail to dequeue data\n");
+ }
+
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ telephony_sat_emit_select_item (sat, command_id, help_info, selected_text, text_len,
+ default_item_id, menu_cnt, menu_items, icon_id, icon_list);
+#else
+ telephony_sat_emit_select_item (sat, command_id, help_info, selected_text, text_len,
+ default_item_id, menu_cnt, menu_items);
+#endif
+ g_free(selected_text);
+ } break;
+
+ case SAT_PROATV_CMD_GET_INKEY:{
+ GVariant *get_inkey = NULL;
+ gint command_id, key_type, input_character_mode;
+ gint text_len, duration;
+ gboolean b_numeric, b_help_info;
+ gchar *text = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+#endif
+ int ret;
+
+ get_inkey = sat_manager_get_inkey_noti(ctx, cp_name, (struct tel_sat_get_inkey_tlv*) &p_ind->proactive_ind_data.get_inkey, p_ind->decode_err_code);
+
+ if(!get_inkey){
+ dbg("no get inkey data");
+ return TRUE;
+ }
+
+ dbg("get inkey type_format(%s)", g_variant_get_type_string(get_inkey));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(get_inkey, "(iiibbsii@v)", &command_id, &key_type, &input_character_mode,
+ &b_numeric,&b_help_info, &text, &text_len, &duration, &icon_id);
+#else
+ g_variant_get(get_inkey, "(iiibbsii)", &command_id, &key_type, &input_character_mode,
+ &b_numeric,&b_help_info, &text, &text_len, &duration);
+#endif
+ ret = sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_GET_INKEY, get_inkey, slot_id);
+ if(!ret) {
+ int rv;
+ dbg("fail to launch sat-ui, remove the queued data!!\n");
+ if(!sat_manager_handle_sat_ui_launch_fail(ctx, cp_name, p_ind))
+ dbg("Fail to send terminal response\n");
+ rv = sat_manager_remove_cmd_by_id(ctx, command_id);
+ if(!rv)
+ dbg("fail to dequeue data\n");
+ }
+
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ telephony_sat_emit_get_inkey(sat, command_id, key_type, input_character_mode,
+ b_numeric, b_help_info, text, text_len, duration, icon_id);
+#else
+ telephony_sat_emit_get_inkey(sat, command_id, key_type, input_character_mode,
+ b_numeric, b_help_info, text, text_len, duration);
+#endif
+ g_free(text);
+ } break;
+
+ case SAT_PROATV_CMD_GET_INPUT:{
+ GVariant *get_input = NULL;
+ gint command_id, input_character_mode;
+ gint text_len, def_text_len, rsp_len_min, rsp_len_max;
+ gboolean b_numeric, b_help_info, b_echo_input;
+ gchar *text = NULL, *def_text = NULL;
+ int ret;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+#endif
+ get_input = sat_manager_get_input_noti(ctx, cp_name, (struct tel_sat_get_input_tlv*) &p_ind->proactive_ind_data.get_input, p_ind->decode_err_code);
+
+ if(!get_input){
+ dbg("no get input data");
+ return TRUE;
+ }
+
+ dbg("get input type_format(%s)", g_variant_get_type_string(get_input));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(get_input, "(iibbbsiiisi@v)", &command_id, &input_character_mode, &b_numeric, &b_help_info, &b_echo_input,
+ &text, &text_len, &rsp_len_max, &rsp_len_min, &def_text, &def_text_len, &icon_id);
+#else
+ g_variant_get(get_input, "(iibbbsiiisi)", &command_id, &input_character_mode, &b_numeric, &b_help_info, &b_echo_input,
+ &text, &text_len, &rsp_len_max, &rsp_len_min, &def_text, &def_text_len);
+#endif
+ ret = sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_GET_INPUT, get_input, slot_id);
+ if(!ret) {
+ int rv;
+ dbg("fail to launch sat-ui, remove the queued data!!\n");
+ if(!sat_manager_handle_sat_ui_launch_fail(ctx, cp_name, p_ind))
+ dbg("Fail to send terminal response\n");
+ rv = sat_manager_remove_cmd_by_id(ctx, command_id);
+ if(!rv)
+ dbg("fail to dequeue data\n");
+ }
+
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ telephony_sat_emit_get_input(sat, command_id, input_character_mode, b_numeric, b_help_info,
+ b_echo_input, text, text_len, rsp_len_max, rsp_len_min, def_text, def_text_len, icon_id);
+#else
+ telephony_sat_emit_get_input(sat, command_id, input_character_mode, b_numeric, b_help_info,
+ b_echo_input, text, text_len, rsp_len_max, rsp_len_min, def_text, def_text_len);
+#endif
+ g_free(text);
+ g_free(def_text);
+ } break;
+
+ case SAT_PROATV_CMD_PLAY_TONE:{
+ GVariant *play_tone = NULL;
+ gint command_id, tone_type, duration;
+ gint text_len;
+ gchar* text = NULL;
+ int ret;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+#endif
+ play_tone = sat_manager_play_tone_noti(ctx, cp_name, (struct tel_sat_play_tone_tlv*) &p_ind->proactive_ind_data.play_tone);
+
+ if(!play_tone){
+ dbg("no play tone data");
+ return TRUE;
+ }
+
+ dbg("play tone type_format(%s)", g_variant_get_type_string(play_tone));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(play_tone, "(isi@vii)", &command_id, &text, &text_len, &icon_id, &tone_type, &duration);
+#else
+ g_variant_get(play_tone, "(isiii)", &command_id, &text, &text_len, &tone_type, &duration);
+#endif
+ ret = sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_PLAY_TONE, play_tone, slot_id);
+ if(!ret) {
+ int rv;
+ dbg("fail to launch sat-ui, remove the queued data!!\n");
+ if(!sat_manager_handle_sat_ui_launch_fail(ctx, cp_name, p_ind))
+ dbg("Fail to send terminal response\n");
+ rv = sat_manager_remove_cmd_by_id(ctx, command_id);
+ if(!rv)
+ dbg("fail to dequeue data\n");
+ }
+
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ telephony_sat_emit_play_tone(sat, command_id, text, text_len, icon_id, tone_type, duration);
+#else
+ telephony_sat_emit_play_tone(sat, command_id, text, text_len, tone_type, duration);
+#endif
+ g_free(text);
+ } break;
+
+ case SAT_PROATV_CMD_SEND_SMS:{
+ GVariant *send_sms = NULL;
+
+ gint command_id, ton, npi, tpdu_type;
+ gboolean b_packing_required;
+ gint text_len, number_len, tpdu_data_len;
+ gchar* text = NULL, *dialling_number = NULL;
+ GVariant *tpdu_data;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+#endif
+ send_sms = sat_manager_send_sms_noti(ctx, cp_name, (struct tel_sat_send_sms_tlv*) &p_ind->proactive_ind_data.send_sms);
+
+ if(!send_sms){
+ dbg("no send sms data");
+ return TRUE;
+ }
+
+ dbg("send sms type_format(%s)", g_variant_get_type_string(send_sms));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(send_sms, "(isi@vbiisii@vi)", &command_id, &text, &text_len, &icon_id, &b_packing_required, &ton, &npi,
+ &dialling_number, &number_len, &tpdu_type, &tpdu_data, &tpdu_data_len);
+#else
+ g_variant_get(send_sms, "(isibiisii@vi)", &command_id, &text, &text_len, &b_packing_required, &ton, &npi,
+ &dialling_number, &number_len, &tpdu_type, &tpdu_data, &tpdu_data_len);
+#endif
+ dbg("check display text : text(%s) text len(%d)", text, text_len);
+ if(text_len > 1 && (g_strcmp0(text,"") != 0) ){
+ GVariant *ui_info = NULL;
+ gboolean user_confirm = FALSE;
+ int ret;
+ dbg("text should be displayed by ui");
+ dbg("send sms is pending!!!");
+
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ ui_info = g_variant_new("(isibv)", command_id, text, text_len, user_confirm, icon_id);
+#else
+ ui_info = g_variant_new("(isib)", command_id, text, text_len, user_confirm);
+#endif
+ ret = sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_SEND_SMS, ui_info, slot_id);
+ if(!ret) {
+ int rv;
+ dbg("fail to launch sat-ui, remove the queued data!!\n");
+ if(!sat_manager_handle_sat_ui_launch_fail(ctx, cp_name, p_ind))
+ dbg("Fail to send terminal response\n");
+ rv = sat_manager_remove_cmd_by_id(ctx, command_id);
+ if(!rv)
+ dbg("fail to dequeue data\n");
+ }
+ g_free(text);
+ g_free(dialling_number);
+ return TRUE;
+ }
+#if !defined(TIZEN_PLATFORM_USE_QCOM_QMI)
+ telephony_sat_emit_send_sms(sat, command_id, text, text_len, b_packing_required,
+ ton, npi, dialling_number, number_len, tpdu_type, tpdu_data, tpdu_data_len);
+#endif
+ g_free(text);
+ g_free(dialling_number);
+ } break;
+
+ case SAT_PROATV_CMD_SEND_SS:{
+ GVariant *send_ss = NULL;
+
+ gint command_id, ton, npi;
+ gint text_len, ss_str_len;
+ gchar* text = NULL, *ss_string = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+#endif
+ send_ss = sat_manager_send_ss_noti(ctx, cp_name, (struct tel_sat_send_ss_tlv*) &p_ind->proactive_ind_data.send_ss);
+
+ if(!send_ss){
+ dbg("no send ss data");
+ return TRUE;
+ }
+
+ dbg("send ss type_format(%s)", g_variant_get_type_string(send_ss));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(send_ss, "(isi@viiis)", &command_id, &text, &text_len, &icon_id,
+ &ton, &npi, &ss_str_len, &ss_string);
+#else
+ g_variant_get(send_ss, "(isiiiis)", &command_id, &text, &text_len,
+ &ton, &npi, &ss_str_len, &ss_string);
+#endif
+ dbg("check display text : text(%s) text len(%d)", text, text_len);
+ if(text_len > 1 && (g_strcmp0(text,"") != 0) ){
+ GVariant *ui_info = NULL;
+ gboolean user_confirm = FALSE;
+ int ret;
+ dbg("text should be displayed by ui");
+ dbg("send ss is pending!!!");
+
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ ui_info = g_variant_new("(isibv)", command_id, text, text_len, user_confirm, icon_id);
+#else
+ ui_info = g_variant_new("(isib)", command_id, text, text_len, user_confirm);
+#endif
+ ret = sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_NONE, ui_info, slot_id);
+ if(!ret) {
+ int rv;
+ dbg("fail to launch sat-ui, remove the queued data!!\n");
+ if(!sat_manager_handle_sat_ui_launch_fail(ctx, cp_name, p_ind))
+ dbg("Fail to send terminal response\n");
+ rv = sat_manager_remove_cmd_by_id(ctx, command_id);
+ if(!rv)
+ dbg("fail to dequeue data\n");
+ }
+ g_free(text);
+ g_free(ss_string);
+ return TRUE;
+ }
+#if !defined(TIZEN_PLATFORM_USE_QCOM_QMI)
+ telephony_sat_emit_send_ss(sat, command_id, text, text_len, ton, npi, ss_string);
+ //tizen ciss
+ sat_ui_support_launch_ciss_application(SAT_PROATV_CMD_SEND_SS, send_ss, slot_id);
+#endif
+ g_free(text);
+ g_free(ss_string);
+ } break;
+
+ case SAT_PROATV_CMD_SEND_USSD:{
+ GVariant *send_ussd = NULL;
+
+ gint command_id;
+ gint text_len, ussd_str_len;
+ guchar dcs;
+ gchar* text = NULL, *ussd_string = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+#endif
+ send_ussd = sat_manager_send_ussd_noti(ctx, cp_name, (struct tel_sat_send_ussd_tlv*) &p_ind->proactive_ind_data.send_ussd);
+
+ if(!send_ussd){
+ dbg("no send ussd data");
+ return TRUE;
+ }
+
+ dbg("send ussd type_format(%s)", g_variant_get_type_string(send_ussd));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(send_ussd, "(isi@vyis)", &command_id, &text, &text_len, &icon_id, &dcs, &ussd_str_len, &ussd_string);
+#else
+ g_variant_get(send_ussd, "(isiyis)", &command_id, &text, &text_len, &dcs, &ussd_str_len, &ussd_string);
+#endif
+ dbg("check display text : text(%s) text len(%d)", text, text_len);
+ if(text_len > 1 && (g_strcmp0(text,"") != 0) ){
+ GVariant *ui_info = NULL;
+ gboolean user_confirm = FALSE;
+ int ret;
+ dbg("text should be displayed by ui");
+ dbg("send ussd is pending!!!");
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ ui_info = g_variant_new("(isibv)", command_id, text, text_len, user_confirm, icon_id);
+#else
+ ui_info = g_variant_new("(isib)", command_id, text, text_len, user_confirm);
+#endif
+ ret = sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_NONE, ui_info, slot_id);
+ if(!ret) {
+ int rv;
+ dbg("fail to launch sat-ui, remove the queued data!!\n");
+ if(!sat_manager_handle_sat_ui_launch_fail(ctx, cp_name, p_ind))
+ dbg("Fail to send terminal response\n");
+ rv = sat_manager_remove_cmd_by_id(ctx, command_id);
+ if(!rv)
+ dbg("fail to dequeue data\n");
+ }
+ g_free(text);
+ g_free(ussd_string);
+ return TRUE;
+ }
+#if !defined(TIZEN_PLATFORM_USE_QCOM_QMI)
+ telephony_sat_emit_setup_ussd(sat, command_id, text, text_len, dcs, ussd_string);
+ //tizen ciss ui
+ sat_ui_support_launch_ciss_application(SAT_PROATV_CMD_SEND_USSD, send_ussd, slot_id);
+#endif
+ g_free(text);
+ g_free(ussd_string);
+ } break;
+
+ case SAT_PROATV_CMD_SETUP_CALL:{
+ GVariant *setup_call = NULL;
+
+ gint command_id, call_type, confirmed_text_len, text_len, duration;
+ gchar *confirmed_text, *text = NULL, *call_number = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+#endif
+ setup_call = sat_manager_setup_call_noti(ctx, cp_name, (struct tel_sat_setup_call_tlv*) &p_ind->proactive_ind_data.setup_call);
+
+ if(!setup_call){
+ dbg("no setup call data");
+ return TRUE;
+ }
+
+ dbg("setup call type_format(%s)", g_variant_get_type_string(setup_call));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(setup_call, "(isisi@visi)", &command_id, &confirmed_text, &confirmed_text_len, &text, &text_len, &icon_id, &call_type, &call_number, &duration);
+#else
+ g_variant_get(setup_call, "(isisiisi)", &command_id, &confirmed_text, &confirmed_text_len, &text, &text_len, &call_type, &call_number, &duration);
+#endif
+ dbg("check display text : text(%s) text len(%d)", confirmed_text, confirmed_text_len);
+ if(confirmed_text_len > 1 && (g_strcmp0(confirmed_text,"") != 0) ){
+ GVariant *ui_info = NULL;
+ gboolean user_confirm = TRUE;
+ int ret;
+ dbg("text should be displayed by ui");
+ dbg("setup call is pending!!!");
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ ui_info = g_variant_new("(isibv)", command_id, confirmed_text, confirmed_text_len, user_confirm, icon_id);
+#else
+ ui_info = g_variant_new("(isib)", command_id, confirmed_text, confirmed_text_len, user_confirm);
+#endif
+ ret = sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_NONE, ui_info, slot_id);
+ if(!ret) {
+ int rv;
+ dbg("fail to launch sat-ui, remove the queued data!!\n");
+ if(!sat_manager_handle_sat_ui_launch_fail(ctx, cp_name, p_ind))
+ dbg("Fail to send terminal response\n");
+ rv = sat_manager_remove_cmd_by_id(ctx, command_id);
+ if(!rv)
+ dbg("fail to dequeue data\n");
+ }
+ g_free(text);
+ g_free(call_number);
+ return TRUE;
+ }
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ telephony_sat_emit_setup_call(sat, command_id, confirmed_text, confirmed_text_len,text, text_len, icon_id, call_type, call_number, duration);
+#else
+ telephony_sat_emit_setup_call(sat, command_id, confirmed_text, confirmed_text_len,text, text_len, call_type, call_number, duration);
+#endif
+ g_free(text);
+ g_free(call_number);
+
+ //tizen call ui in no alpha id case
+ sat_ui_support_launch_call_application(SAT_PROATV_CMD_SETUP_CALL, setup_call, slot_id);
+
+ }break;
+
+ case SAT_PROATV_CMD_SETUP_EVENT_LIST:{
+ GVariant *event_list = NULL;
+
+ gint event_cnt;
+ GVariant *evt_list;
+
+ event_list = sat_manager_setup_event_list_noti(ctx, cp_name, (struct tel_sat_setup_event_list_tlv*) &p_ind->proactive_ind_data.setup_event_list);
+
+ if(!event_list){
+ dbg("no setup event list data");
+ return TRUE;
+ }
+
+ dbg("setup event list type_format(%s)", g_variant_get_type_string(event_list));
+ g_variant_get(event_list, "(i@v)", &event_cnt, &evt_list);
+
+ telephony_sat_emit_setup_event_list(sat, event_cnt, evt_list);
+
+ //bip proactive command is only handled by BIP Manager
+ {
+ GDBusConnection *conn = NULL;
+ const gchar *g_path = NULL;
+
+ conn = g_dbus_object_manager_server_get_connection(ctx->manager);
+ g_path = g_dbus_object_get_object_path(G_DBUS_OBJECT(object));
+
+ /* TODO: SAT Event Downloader should execute event_list as well. */
+ sat_ui_support_exec_evtdw(conn, g_path, SAT_PROATV_CMD_SETUP_EVENT_LIST, event_list);
+ sat_ui_support_exec_bip(conn, g_path, SAT_PROATV_CMD_SETUP_EVENT_LIST, event_list);
+ }
+ } break;
+
+ case SAT_PROATV_CMD_SETUP_IDLE_MODE_TEXT:{
+ GVariant *setup_idle_mode = NULL;
+ int ret;
+
+ gint command_id, text_len;
+ gchar* text = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+#endif
+ setup_idle_mode = sat_manager_setup_idle_mode_text_noti(ctx, cp_name, (struct tel_sat_setup_idle_mode_text_tlv*) &p_ind->proactive_ind_data.setup_idle_mode_text, p_ind->decode_err_code);
+
+ if(!setup_idle_mode){
+ dbg("no setup idle mode text data");
+ return TRUE;
+ }
+
+ dbg("setup idle mode text type_format(%s)", g_variant_get_type_string(setup_idle_mode));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(setup_idle_mode, "(isi@v)", &command_id, &text, &text_len, &icon_id);
+#else
+ g_variant_get(setup_idle_mode, "(isi)", &command_id, &text, &text_len);
+#endif
+
+ ret = sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_SETUP_IDLE_MODE_TEXT, setup_idle_mode, slot_id);
+ if(!ret) {
+ int rv;
+ dbg("fail to launch sat-ui, remove the queued data!!\n");
+ if(!sat_manager_handle_sat_ui_launch_fail(ctx, cp_name, p_ind))
+ dbg("Fail to send terminal response\n");
+ rv = sat_manager_remove_cmd_by_id(ctx, command_id);
+ if(!rv)
+ dbg("fail to dequeue data\n");
+ }
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ telephony_sat_emit_setup_idle_mode_text(sat, command_id, text, text_len, icon_id);
+#else
+ telephony_sat_emit_setup_idle_mode_text(sat, command_id, text, text_len);
+#endif
+ g_free(text);
+ } break;
+
+ case SAT_PROATV_CMD_OPEN_CHANNEL:{
+ GVariant *open_channel = NULL;
+
+ gint command_id, bearer_type, protocol_type, dest_addr_type;
+ gboolean immediate_link, auto_reconnection, bg_mode;
+ gint text_len, buffer_size, port_number;
+ gchar *text = NULL, *dest_address;
+ GVariant *bearer_param;
+ GVariant *bearer_detail;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+#endif
+ open_channel = sat_manager_open_channel_noti(ctx, cp_name, (struct tel_sat_open_channel_tlv*) &p_ind->proactive_ind_data.open_channel);
+
+ if(!open_channel){
+ dbg("no open channel data");
+ return TRUE;
+ }
+
+ dbg("open channel type_format(%s)", g_variant_get_type_string(open_channel));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(open_channel,"(isi@vbbbi@viiiis@v)", &command_id, &text, &text_len, &icon_id, &immediate_link, &auto_reconnection, &bg_mode,
+ &bearer_type, &bearer_param, &buffer_size, &protocol_type, &port_number, &dest_addr_type, &dest_address, &bearer_detail);
+#else
+ g_variant_get(open_channel,"(isibbbi@viiiis@v)", &command_id, &text, &text_len, &immediate_link, &auto_reconnection, &bg_mode,
+ &bearer_type, &bearer_param, &buffer_size, &protocol_type, &port_number, &dest_addr_type, &dest_address, &bearer_detail);
+#endif
+ dbg("check display text : text(%s) text len(%d)", text, text_len);
+ if(text_len > 1 && (g_strcmp0(text,"") != 0) ){
+ GVariant *ui_info = NULL;
+ gboolean user_confirm = TRUE;
+ int ret;
+ dbg("text should be displayed by ui");
+ dbg("open channel text is displayed!!!");
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ ui_info = g_variant_new("(isibv)", command_id, text, text_len, user_confirm, icon_id);
+#else
+ ui_info = g_variant_new("(isib)", command_id, text, text_len, user_confirm);
+#endif
+ ret = sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_NONE, ui_info, slot_id);
+ if(!ret) {
+ int rv;
+ dbg("fail to launch sat-ui, remove the queued data!!\n");
+ if(!sat_manager_handle_sat_ui_launch_fail(ctx, cp_name, p_ind))
+ dbg("Fail to send terminal response\n");
+ rv = sat_manager_remove_cmd_by_id(ctx, command_id);
+ if(!rv)
+ dbg("fail to dequeue data\n");
+ }
+ g_free(text);
+ g_free(dest_address);
+ return TRUE;
+ }
+ g_free(text);
+ g_free(dest_address);
+
+ /*telephony_sat_emit_open_channel(sat, command_id, text, text_len, immediate_link, auto_reconnection, bg_mode,
+ bearer_type, bearer_param, buffer_size, protocol_type, port_number, dest_addr_type, dest_address, bearer_detail);*/
+#if !defined(TIZEN_PLATFORM_USE_QCOM_QMI)
+ //bip proactive command is only handled by BIP Manager
+ {
+ GDBusConnection *conn = NULL;
+ const gchar *g_path = NULL;
+
+ conn = g_dbus_object_manager_server_get_connection(ctx->manager);
+ g_path = g_dbus_object_get_object_path(G_DBUS_OBJECT(object));
+
+ sat_ui_support_exec_bip(conn, g_path, SAT_PROATV_CMD_OPEN_CHANNEL, open_channel);
+ }
+#endif
+ } break;
+
+ case SAT_PROATV_CMD_CLOSE_CHANNEL:{
+ GVariant *close_channel = NULL;
+
+ gint command_id, channel_id, text_len;
+ gchar *text = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+#endif
+ close_channel = sat_manager_close_channel_noti(ctx, cp_name, (struct tel_sat_close_channel_tlv*) &p_ind->proactive_ind_data.close_channel);
+
+ if(!close_channel){
+ dbg("no close channel data");
+ return TRUE;
+ }
+
+ //TODO check the data for sat-ui
+
+ dbg("close channel type_format(%s)", g_variant_get_type_string(close_channel));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(close_channel, "(isi@vi)", &command_id, &text, &text_len, &icon_id, &channel_id);
+#else
+ g_variant_get(close_channel, "(isii)", &command_id, &text, &text_len, &channel_id);
+#endif
+
+ /*telephony_sat_emit_close_channel(sat, command_id, text, text_len, channel_id);*/
+
+ //bip proactive command is only handled by BIP Manager
+ {
+ GDBusConnection *conn = NULL;
+ const gchar *g_path = NULL;
+
+ conn = g_dbus_object_manager_server_get_connection(ctx->manager);
+ g_path = g_dbus_object_get_object_path(G_DBUS_OBJECT(object));
+
+ sat_ui_support_exec_bip(conn, g_path, SAT_PROATV_CMD_CLOSE_CHANNEL, close_channel);
+ }
+
+ g_free(text);
+ } break;
+
+ case SAT_PROATV_CMD_RECEIVE_DATA:{
+ GVariant *receive_data = NULL;
+
+ gint command_id, text_len, channel_id, channel_data_len = 0;
+ gchar *text = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+#endif
+ receive_data = sat_manager_receive_data_noti(ctx, cp_name, (struct tel_sat_receive_channel_tlv*) &p_ind->proactive_ind_data.receive_data);
+
+ if(!receive_data){
+ dbg("no receive data data");
+ return TRUE;
+ }
+
+ //TODO check the data for sat-ui
+
+ dbg("receive data type_format(%s)", g_variant_get_type_string(receive_data));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(receive_data, "(isi@vii)", &command_id, &text, &text_len, &icon_id, &channel_id, &channel_data_len);
+#else
+ g_variant_get(receive_data, "(isiii)", &command_id, &text, &text_len, &channel_id, &channel_data_len);
+#endif
+ /*telephony_sat_emit_receive_data(sat, command_id, text, text_len, channel_id, channel_data_len);*/
+
+ //bip proactive command is only handled by BIP Manager
+ {
+ GDBusConnection *conn = NULL;
+ const gchar *g_path = NULL;
+
+ conn = g_dbus_object_manager_server_get_connection(ctx->manager);
+ g_path = g_dbus_object_get_object_path(G_DBUS_OBJECT(object));
+
+ sat_ui_support_exec_bip(conn, g_path, SAT_PROATV_CMD_RECEIVE_DATA, receive_data);
+ }
+ g_free(text);
+ } break;
+
+ case SAT_PROATV_CMD_SEND_DATA:{
+ GVariant *send_data = NULL;
+
+ gint command_id, channel_id, text_len, channel_data_len;
+ gboolean send_data_immediately;
+ gchar *text = NULL;
+ GVariant *channel_data;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+#endif
+ send_data = sat_manager_send_data_noti(ctx, cp_name, (struct tel_sat_send_channel_tlv*) &p_ind->proactive_ind_data.send_data);
+
+ if(!send_data){
+ dbg("no send data data");
+ return TRUE;
+ }
+
+ //TODO check the data for sat-ui
+
+ dbg("send data type_format(%s)", g_variant_get_type_string(send_data));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(send_data, "(isi@vib@vi)", &command_id, &text, &text_len, &icon_id, &channel_id, &send_data_immediately, &channel_data, &channel_data_len);
+#else
+ g_variant_get(send_data, "(isiib@vi)", &command_id, &text, &text_len, &channel_id, &send_data_immediately, &channel_data, &channel_data_len);
+#endif
+ /*telephony_sat_emit_send_data(sat, command_id, text, text_len, channel_id, send_data_immediately, channel_data, channel_data_len);*/
+
+ //bip proactive command is only handled by BIP Manager
+ {
+ GDBusConnection *conn = NULL;
+ const gchar *g_path = NULL;
+
+ conn = g_dbus_object_manager_server_get_connection(ctx->manager);
+ g_path = g_dbus_object_get_object_path(G_DBUS_OBJECT(object));
+
+ sat_ui_support_exec_bip(conn, g_path, SAT_PROATV_CMD_SEND_DATA, send_data);
+ }
+ g_free(text);
+ } break;
+
+ case SAT_PROATV_CMD_GET_CHANNEL_STATUS:{
+ GVariant *channel_status = NULL;
+
+ gint command_id;
+
+ channel_status = sat_manager_get_channel_status_noti(ctx, cp_name, (struct tel_sat_get_channel_status_tlv*) &p_ind->proactive_ind_data.get_channel_status);
+
+ if(!channel_status){
+ dbg("no get channel status data");
+ return TRUE;
+ }
+
+ //TODO check the data for sat-ui
+
+ dbg("get channel status type_format(%s)", g_variant_get_type_string(channel_status));
+ g_variant_get(channel_status, "(i)", &command_id);
+
+ /*telephony_sat_emit_get_channel_status(sat, command_id);*/
+
+ //bip proactive command is only handled by BIP Manager
+ {
+ GDBusConnection *conn = NULL;
+ const gchar *g_path = NULL;
+
+ conn = g_dbus_object_manager_server_get_connection(ctx->manager);
+ g_path = g_dbus_object_get_object_path(G_DBUS_OBJECT(object));
+
+ sat_ui_support_exec_bip(conn, g_path, SAT_PROATV_CMD_GET_CHANNEL_STATUS, channel_status);
+ }
+ } break;
+
+ case SAT_PROATV_CMD_REFRESH:{
+ GVariant *refresh = NULL;
+ gint command_id = 0;
+ gint refresh_type =0;
+ GVariant *file_list = NULL;
+ int ret;
+
+ refresh = sat_manager_refresh_noti(ctx, cp_name, (struct tel_sat_refresh_tlv*) &p_ind->proactive_ind_data.refresh);
+
+ if(!refresh){
+ dbg("no refresh data");
+ return TRUE;
+ }
+
+ dbg("refresh type_format(%s)", g_variant_get_type_string(refresh));
+ g_variant_get(refresh, "(ii@v)", &command_id, &refresh_type, &file_list);
+
+ telephony_sat_emit_refresh(sat, command_id, refresh_type, file_list);
+ ret = sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_REFRESH, refresh, slot_id);
+ if(!ret) {
+ int rv;
+ dbg("fail to launch sat-ui, remove the queued data!!\n");
+ if(!sat_manager_handle_sat_ui_launch_fail(ctx, cp_name, p_ind))
+ dbg("Fail to send terminal response\n");
+ rv = sat_manager_remove_cmd_by_id(ctx, command_id);
+ if(!rv)
+ dbg("fail to dequeue data\n");
+ }
+ }break;
+
+ case SAT_PROATV_CMD_MORE_TIME:{
+ sat_manager_more_time_noti(ctx, cp_name, (struct tel_sat_more_time_tlv*) &p_ind->proactive_ind_data.more_time);
+ telephony_sat_emit_more_time(sat);
+ }break;
+
+ case SAT_PROATV_CMD_SEND_DTMF:{
+ GVariant *send_dtmf = NULL;
+ gint command_id = 0;
+ gint text_len = 0, dtmf_str_len = 0;
+ gchar *text = NULL;
+ gchar *dtmf_str = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id = NULL;
+#endif
+ send_dtmf = sat_manager_send_dtmf_noti(ctx, cp_name, (struct tel_sat_send_dtmf_tlv*) &p_ind->proactive_ind_data.send_dtmf);
+ if(!send_dtmf){
+ dbg("no send_dtmf data");
+ return TRUE;
+ }
+
+ dbg("send_dtmf type_format(%s)", g_variant_get_type_string(send_dtmf));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(send_dtmf, "(isi@vis)", &command_id, &text, &text_len, &icon_id, &dtmf_str_len, &dtmf_str);
+#else
+ g_variant_get(send_dtmf, "(isiis)", &command_id, &text, &text_len, &dtmf_str_len, &dtmf_str);
+#endif
+ if(text_len > 1 && (g_strcmp0(text,"") != 0) ){
+ GVariant *ui_info = NULL;
+ gboolean user_confirm = FALSE;
+ int ret;
+ dbg("text should be displayed by ui");
+ dbg("send dtmf is displayed!!!");
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ ui_info = g_variant_new("(isibv)", command_id, text, text_len, user_confirm, icon_id);
+#else
+ ui_info = g_variant_new("(isib)", command_id, text, text_len, user_confirm);
+#endif
+ ret = sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_SEND_DTMF, ui_info, slot_id);
+ if(!ret) {
+ int rv;
+ dbg("fail to launch sat-ui, remove the queued data!!\n");
+ if(!sat_manager_handle_sat_ui_launch_fail(ctx, cp_name, p_ind))
+ dbg("Fail to send terminal response\n");
+ rv = sat_manager_remove_cmd_by_id(ctx, command_id);
+ if(!rv)
+ dbg("fail to dequeue data\n");
+ }
+ g_free(text);
+ g_free(dtmf_str);
+ return TRUE;
+ }
+#if !defined(TIZEN_PLATFORM_USE_QCOM_QMI)
+ telephony_sat_emit_send_dtmf(sat, command_id, text, text_len, dtmf_str, dtmf_str_len);
+#endif
+ g_free(text);
+ g_free(dtmf_str);
+ }break;
+
+ case SAT_PROATV_CMD_LAUNCH_BROWSER:{
+ GVariant *launch_browser = NULL;
+ gint command_id = 0;
+ gint browser_launch_type = 0, browser_id = 0;
+ gint url_len = 0, text_len = 0, gateway_proxy_len =0;
+ gchar *url = NULL;
+ gchar *text = NULL;
+ gchar *gateway_proxy = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id = NULL;
+#endif
+ launch_browser = sat_manager_launch_browser_noti(ctx, cp_name, (struct tel_sat_launch_browser_tlv*) &p_ind->proactive_ind_data.launch_browser);
+ if(!launch_browser){
+ dbg("no launch_browser data");
+ return TRUE;
+ }
+
+ dbg("launch_browser type_format(%s)", g_variant_get_type_string(launch_browser));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(launch_browser, "(iiisisisi@v)", &command_id, &browser_launch_type, &browser_id, &url, &url_len, &gateway_proxy, &gateway_proxy_len, &text, &text_len, &icon_id);
+#else
+ g_variant_get(launch_browser, "(iiisisisi)", &command_id, &browser_launch_type, &browser_id, &url, &url_len, &gateway_proxy, &gateway_proxy_len, &text, &text_len);
+#endif
+ //Popup is mendatory option in browser case
+ {
+ GVariant *ui_info = NULL;
+ gboolean user_confirm = TRUE;
+ int ret;
+ dbg("text should be displayed by ui");
+ dbg("launch browser is displayed!!!");
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ ui_info = g_variant_new("(isibv)", command_id, text, text_len, user_confirm, icon_id);
+#else
+ ui_info = g_variant_new("(isib)", command_id, text, text_len, user_confirm);
+#endif
+ ret = sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_LAUNCH_BROWSER, ui_info, slot_id);
+ if(!ret) {
+ int rv;
+ dbg("fail to launch sat-ui, remove the queued data!!\n");
+ if(!sat_manager_handle_sat_ui_launch_fail(ctx, cp_name, p_ind))
+ dbg("Fail to send terminal response\n");
+ rv = sat_manager_remove_cmd_by_id(ctx, command_id);
+ if(!rv)
+ dbg("fail to dequeue data\n");
+ }
+ g_free(url);
+ g_free(text);
+ g_free(gateway_proxy);
+ return TRUE;
+ }
+ }break;
+
+ case SAT_PROATV_CMD_PROVIDE_LOCAL_INFO:{
+ GVariant *provide_info = NULL;
+ gint info_type = 0;
+
+ provide_info = sat_manager_provide_local_info_noti(ctx, cp_name, (struct tel_sat_provide_local_info_tlv*) &p_ind->proactive_ind_data.provide_local_info);
+ if(!provide_info){
+ dbg("no provide_info data");
+ return TRUE;
+ }
+
+ dbg("provide_info type_format(%s)", g_variant_get_type_string(provide_info));
+ g_variant_get(provide_info, "(i)", &info_type);
+
+ telephony_sat_emit_provide_local_info(sat, info_type);
+ }break;
+
+ case SAT_PROATV_CMD_LANGUAGE_NOTIFICATION:{
+ GVariant *language_noti = NULL;
+ gint command_id = 0;
+ gint language = 0;
+ gboolean b_specified = FALSE;
+
+ language_noti = sat_manager_language_notification_noti(ctx, cp_name, (struct tel_sat_language_notification_tlv*) &p_ind->proactive_ind_data.language_notification);
+ if(!language_noti){
+ dbg("no language_noti data");
+ return TRUE;
+ }
+
+ dbg("language_noti type_format(%s)", g_variant_get_type_string(language_noti));
+ g_variant_get(language_noti, "(iib)", &command_id, &language, &b_specified);
+
+ sat_manager_update_language(ctx, cp_name, language_noti);
+
+ telephony_sat_emit_language_notification(sat, command_id, language, b_specified);
+ }break;
+
+ default:{
+ gboolean rv = FALSE;
+ rv = sat_manager_processing_unsupport_proactive_command(ctx, cp_name, (struct tel_sat_unsupproted_command_tlv*) &p_ind->proactive_ind_data.unsupport_cmd);
+ dbg("not handled ind->cmd_type[0x%x] send error tr result(%d)", p_ind->cmd_type, rv);
+ }break;
}
-
- //TODO check the data for sat-ui
-
- dbg("close channel type_format(%s)", g_variant_get_type_string(close_channel));
- g_variant_get(close_channel, "(isi@vi)", &command_id, &text, &text_len, &icon_id, &channel_id);
-
- telephony_sat_emit_close_channel(sat, command_id, text, text_len, channel_id);
} break;
-
- case SAT_PROATV_CMD_RECEIVE_DATA:{
- GVariant *receive_data = NULL;
-
- gint command_id, text_len, channel_id, channel_data_len = 0;
- gchar *text;
- GVariant *icon_id;
-
- receive_data = sat_manager_receive_data_noti(ctx, plugin_name, (struct tel_sat_receive_channel_tlv*) &p_ind->proactive_ind_data.receive_data);
-
- if(!receive_data){
- dbg("no receive data data");
- return TRUE;
- }
-
- //TODO check the data for sat-ui
-
- dbg("receive data type_format(%s)", g_variant_get_type_string(receive_data));
- g_variant_get(receive_data, "(isi@vii)", &command_id, &text, &text_len, &icon_id, &channel_id, &channel_data_len);
-
- telephony_sat_emit_receive_data(sat, command_id, text, text_len, channel_id, channel_data_len);
- } break;
-
- case SAT_PROATV_CMD_SEND_DATA:{
- GVariant *send_data = NULL;
-
- gint command_id, channel_id, text_len, channel_data_len;
- gboolean send_data_immediately;
- gchar *text;
- GVariant *channel_data;
- GVariant *icon_id;
-
- send_data = sat_manager_send_data_noti(ctx, plugin_name, (struct tel_sat_send_channel_tlv*) &p_ind->proactive_ind_data.send_data);
-
- if(!send_data){
- dbg("no send data data");
- return TRUE;
- }
-
- //TODO check the data for sat-ui
-
- dbg("send data type_format(%s)", g_variant_get_type_string(send_data));
- g_variant_get(send_data, "(isi@vib@vi)", &command_id, &text, &text_len, &icon_id, &channel_id, &send_data_immediately, &channel_data, &channel_data_len);
-
- telephony_sat_emit_send_data(sat, command_id, text, text_len, channel_id, send_data_immediately, channel_data, channel_data_len);
- } break;
-
- case SAT_PROATV_CMD_GET_CHANNEL_STATUS:{
- GVariant *channel_status = NULL;
-
- gint command_id;
-
- channel_status = sat_manager_get_channel_status_noti(ctx, plugin_name, (struct tel_sat_get_channel_status_tlv*) &p_ind->proactive_ind_data.get_channel_status);
-
- if(!channel_status){
- dbg("no get channel status data");
- return TRUE;
- }
-
- //TODO check the data for sat-ui
-
- dbg("get channel status type_format(%s)", g_variant_get_type_string(channel_status));
- g_variant_get(channel_status, "(i)", &command_id);
-
- telephony_sat_emit_get_channel_status(sat, command_id);
- } break;
-
- case SAT_PROATV_CMD_REFRESH:{
- GVariant *refresh = NULL;
- gint command_id = 0;
- gint refresh_type =0;
- GVariant *file_list = NULL;
-
- GVariant *ui_info = NULL;
- gboolean user_confirm = FALSE;
- gchar info[] = "refresh from SIM TOOLKIT";
-
- refresh = sat_manager_refresh_noti(ctx, plugin_name, (struct tel_sat_refresh_tlv*) &p_ind->proactive_ind_data.refresh);
-
- if(!refresh){
- dbg("no refresh data");
- return TRUE;
- }
-
- dbg("refresh type_format(%s)", g_variant_get_type_string(refresh));
- g_variant_get(refresh, "(ii@v)", &command_id, &refresh_type, &file_list);
-
- dbg("check refresh_type(%d)", refresh_type);
- dbg("text should be displayed by ui");
-
- ui_info = g_variant_new("(isib)", command_id, info, strlen(info), user_confirm);
- sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_NONE, ui_info);
-
- telephony_sat_emit_refresh(sat, command_id, refresh_type, file_list);
- }break;
-
- case SAT_PROATV_CMD_MORE_TIME:{
- sat_manager_more_time_noti(ctx, plugin_name, (struct tel_sat_more_time_tlv*) &p_ind->proactive_ind_data.more_time);
- telephony_sat_emit_more_time(sat);
- }break;
-
- case SAT_PROATV_CMD_SEND_DTMF:{
- GVariant *send_dtmf = NULL;
- gint command_id = 0;
- gint text_len = 0, dtmf_str_len = 0;
- gchar *text = NULL;
- gchar *dtmf_str = NULL;
- GVariant *icon_id = NULL;
-
- send_dtmf = sat_manager_send_dtmf_noti(ctx, plugin_name, (struct tel_sat_send_dtmf_tlv*) &p_ind->proactive_ind_data.send_dtmf);
- if(!send_dtmf){
- dbg("no send_dtmf data");
- return TRUE;
- }
-
- dbg("send_dtmf type_format(%s)", g_variant_get_type_string(send_dtmf));
- g_variant_get(send_dtmf, "(isi@vis)", &command_id, &text, &text_len, &icon_id, &dtmf_str, &dtmf_str_len);
-
- if(text_len > 1 && (g_strcmp0(text,"") != 0) ){
- GVariant *ui_info = NULL;
- gboolean user_confirm = FALSE;
- dbg("text should be displayed by ui");
- dbg("send dtmf is displayed!!!")
-
- ui_info = g_variant_new("(isib)", command_id, text, text_len, user_confirm);
- sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_NONE, ui_info);
- return TRUE;
- }
-
- telephony_sat_emit_send_dtmf(sat, command_id, text, text_len, dtmf_str, dtmf_str_len);
- }break;
-
- case SAT_PROATV_CMD_LAUNCH_BROWSER:{
- GVariant *launch_browser = NULL;
- gint command_id = 0;
- gint browser_id = 0;
- gint url_len = 0, text_len = 0, gateway_proxy_len =0;
- gchar *url = NULL;
- gchar *text = NULL;
- gchar *gateway_proxy = NULL;
- GVariant *icon_id = NULL;
-
- launch_browser = sat_manager_launch_browser_noti(ctx, plugin_name, (struct tel_sat_launch_browser_tlv*) &p_ind->proactive_ind_data.launch_browser);
- if(!launch_browser){
- dbg("no launch_browser data");
- return TRUE;
- }
-
- dbg("launch_browser type_format(%s)", g_variant_get_type_string(launch_browser));
- g_variant_get(launch_browser, "(iisisisi@v)", &command_id, &browser_id, &url, &url_len, &gateway_proxy, &gateway_proxy_len, &text, &text_len, &icon_id);
-
- if(text_len > 1 && (g_strcmp0(text,"") != 0) ){
- GVariant *ui_info = NULL;
- gboolean user_confirm = TRUE;
- dbg("text should be displayed by ui");
- dbg("launch browser is displayed!!!")
-
- ui_info = g_variant_new("(isib)", command_id, text, text_len, user_confirm);
- sat_ui_support_launch_sat_ui(SAT_PROATV_CMD_NONE, ui_info);
- return TRUE;
- }
-
- telephony_sat_emit_launch_browser(sat, command_id, browser_id, url, url_len, gateway_proxy, gateway_proxy_len, text, text_len);
- }break;
-
- case SAT_PROATV_CMD_PROVIDE_LOCAL_INFO:{
- GVariant *provide_info = NULL;
- gint command_id = 0;
- gint info_type = 0;
-
- provide_info = sat_manager_provide_local_info_noti(ctx, plugin_name, (struct tel_sat_provide_local_info_tlv*) &p_ind->proactive_ind_data.provide_local_info);
- if(!provide_info){
- dbg("no provide_info data");
- return TRUE;
- }
-
- dbg("provide_info type_format(%s)", g_variant_get_type_string(provide_info));
- g_variant_get(provide_info, "(ii)", &command_id, &info_type);
-
- telephony_sat_emit_provide_local_info(sat, command_id, info_type);
- }break;
-
- case SAT_PROATV_CMD_LANGUAGE_NOTIFICATION:{
- GVariant *language_noti = NULL;
- gint command_id = 0;
- gint language = 0;
- gboolean b_specified = FALSE;
-
- language_noti = sat_manager_language_notification_noti(ctx, plugin_name, (struct tel_sat_language_notification_tlv*) &p_ind->proactive_ind_data.language_notification);
- if(!language_noti){
- dbg("no language_noti data");
- return TRUE;
- }
-
- dbg("language_noti type_format(%s)", g_variant_get_type_string(language_noti));
- g_variant_get(language_noti, "(iib)", &command_id, &language, &b_specified);
-
- telephony_sat_emit_language_notification(sat, command_id, language, b_specified);
- }break;
-
default:
- dbg("not handled ind->cmd_type[0x%x]", p_ind->cmd_type);
- break;
+ err("Unhandled Notification: [0x%x]", command);
+ break;
}
return TRUE;
}
+