tizen 2.3.1 release
[framework/telephony/tel-plugin-dbus_tapi.git] / src / sat.c
old mode 100644 (file)
new mode 100755 (executable)
index 02b6ed3..41b15c1
--- a/src/sat.c
+++ b/src/sat.c
@@ -22,7 +22,6 @@
 #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)
@@ -50,20 +102,35 @@ static gboolean on_sat_get_main_menu_info(TelephonySAT *sat, GDBusMethodInvocati
        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;
 }
@@ -73,13 +140,16 @@ static gboolean on_sat_send_display_status(TelephonySAT *sat, GDBusMethodInvocat
                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;
@@ -102,15 +172,18 @@ static gboolean on_sat_send_user_confirm(TelephonySAT *sat, GDBusMethodInvocatio
                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;
@@ -136,14 +209,17 @@ static gboolean on_sat_send_app_exec_result(TelephonySAT *sat, GDBusMethodInvoca
                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;
@@ -166,11 +242,14 @@ static gboolean on_sat_select_menu(TelephonySAT *sat, GDBusMethodInvocation *inv
                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;
@@ -181,7 +260,12 @@ static gboolean on_sat_select_menu(TelephonySAT *sat, GDBusMethodInvocation *inv
 
        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;
 }
@@ -190,21 +274,37 @@ static gboolean on_sat_download_event(TelephonySAT *sat, GDBusMethodInvocation *
                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;
 }
@@ -287,672 +387,1174 @@ gboolean dbus_plugin_sat_response(struct custom_data *ctx, UserRequest *ur,
        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;
 }
+