Reduce the complexity of _process_sat_event function 30/188530/3 accepted/tizen/unified/20180910.172031 submit/tizen/20180907.083718
authorsinikang <sinikang@samsung.com>
Wed, 5 Sep 2018 23:51:27 +0000 (08:51 +0900)
committersinikang <sinikang@samsung.com>
Thu, 6 Sep 2018 05:16:16 +0000 (14:16 +0900)
Change-Id: I10afcf7677488bde4273621480f68d170981fdbc

packaging/libtapi.spec
src/tapi_common.c

index 79758b375d413d1d03f97898fb5d01cad906ce70..daa26e89e4f7474c27bb8a3ced29ed4d4d2ca52a 100644 (file)
@@ -1,6 +1,6 @@
 %define major 0
 %define minor 8
-%define patchlevel 32
+%define patchlevel 33
 
 Name:           libtapi
 Version:        %{major}.%{minor}.%{patchlevel}
index 3a4a0dc657ef222812288483ecc1187eb06673b4..fcaf35906ec1bd7448842bf5eda77f81e54f1ed1 100644 (file)
@@ -327,7 +327,7 @@ static void _process_call_event(const gchar *sig, GVariant *param,
 
                memset(&noti, '\0', sizeof(TelCallRecordInfoNoti_t));
                g_variant_get(param, "(ii@v)", &noti.info.id, &noti.info.type, &data);
-               if(noti.info.type == TAPI_CALL_REC_INFO_TYPE_NAME) {
+               if (noti.info.type == TAPI_CALL_REC_INFO_TYPE_NAME) {
                        inner_si = g_variant_get_variant(data);
                        strncpy(noti.info.data.name, g_variant_get_string(inner_si, NULL), TAPI_CALLING_NAME_SIZE_MAX);
 
@@ -346,20 +346,20 @@ static void _process_call_event(const gchar *sig, GVariant *param,
                        inner_si = g_variant_get_variant(data);
 
                        g_variant_iter_init(&iter, inner_si);
-                       while(g_variant_iter_next(&iter, "{si}", &key, &value)) {
+                       while (g_variant_iter_next(&iter, "{si}", &key, &value)) {
                                if (!g_strcmp0(key, "polarity_included")) {
                                        noti.info.data.line_ctrl_info.polarity_included = (unsigned char)(value);
-                               }else if (!g_strcmp0(key, "toggle_mode")) {
+                               } else if (!g_strcmp0(key, "toggle_mode")) {
                                        noti.info.data.line_ctrl_info.toggle_mode = (unsigned char)(value);
-                               }else if (!g_strcmp0(key, "reverse_polarity")) {
+                               } else if (!g_strcmp0(key, "reverse_polarity")) {
                                        noti.info.data.line_ctrl_info.reverse_polarity = (unsigned char)(value);
-                               }else if (!g_strcmp0(key, "power_denial_time")) {
+                               } else if (!g_strcmp0(key, "power_denial_time")) {
                                        noti.info.data.line_ctrl_info.power_denial_time = (unsigned char)(value);
                                }
                        }
                        msg("[ check ] %s (%s): polarity_included(%d), toggle_mode(%d), reverse_polarity(%d), power_denial_time(%d)", "CallInfoRec",
                                handle->cp_name, noti.info.data.line_ctrl_info.polarity_included, noti.info.data.line_ctrl_info.toggle_mode,
-                                                                 noti.info.data.line_ctrl_info.reverse_polarity, noti.info.data.line_ctrl_info.power_denial_time );
+                                                                 noti.info.data.line_ctrl_info.reverse_polarity, noti.info.data.line_ctrl_info.power_denial_time);
                }
 
                TAPI_INVOKE_NOTI_CALLBACK(&noti);
@@ -395,7 +395,7 @@ static void _process_call_event(const gchar *sig, GVariant *param,
                g_variant_get(param, "(i)", &data.preferred_subs);
                dbg("[ check ] %s : Voice preferred_subs(%d)", "Call Preferred Voice Subscription noti", data.preferred_subs);
                TAPI_INVOKE_NOTI_CALLBACK(&data);
-       } else if(!g_strcmp0(sig, "Modifiable")){
+       } else if (!g_strcmp0(sig, "Modifiable")) {
                TelCallInfoModifiableNoti_t data;
                g_variant_get(param, "(ib)", &data.call_handle, &data.modifiable);
                dbg("[ check ] %s : call_handle (%d), modifiable (%d)", "Call modification availablity noti", data.call_handle, data.modifiable);
@@ -417,379 +417,580 @@ static void _process_call_event(const gchar *sig, GVariant *param,
        }
 }
 
-static void _process_sat_event(const gchar *sig, GVariant *param,
+static void __process_sat_event_setup_menu(const gchar *sig, GVariant *param,
        TapiHandle *handle, char *noti_id, struct tapi_evt_cb *evt_cb_data)
 {
-       TAPI_RETURN_IF_FAIL(evt_cb_data);
-
-       if (!g_strcmp0(sig, "SetupMenu")) {
-               TelSatSetupMenuInfo_t setup_menu;
-
-               gchar *title = NULL;
-               gint command_id, item_cnt;
-               gboolean b_present, b_helpinfo, b_updated;
-               GVariant *items = NULL;
-               int sat_index = 0;
-               GVariant *unbox;
-               GVariantIter *iter;
-
-               memset(&setup_menu, 0, sizeof(TelSatSetupMenuInfo_t));
-
-               g_variant_get(param, "(ibs@vibb)", &command_id, &b_present, &title, &items, &item_cnt,
-                       &b_helpinfo, &b_updated);
-
-               setup_menu.commandId = command_id;
-               setup_menu.bIsMainMenuPresent = (b_present ? 1 : 0);
-               memcpy(setup_menu.satMainTitle, title, TAPI_SAT_DEF_TITLE_LEN_MAX+1);
-               g_free(title);
-               setup_menu.satMainMenuNum = item_cnt;
-               if (items && item_cnt > 0) {
-                       gchar *item_str;
-                       gint item_id;
-                       unbox = g_variant_get_variant(items);
-                       dbg("items(%p) items type_format(%s)", items, g_variant_get_type_string(unbox));
-
-                       g_variant_get(unbox, "a(si)", &iter);
-                       while (g_variant_iter_loop(iter, "(si)", &item_str, &item_id)) {
-                               setup_menu.satMainMenuItem[sat_index].itemId = item_id;
-                               memcpy(setup_menu.satMainMenuItem[sat_index].itemString,
-                                       item_str, TAPI_SAT_DEF_ITEM_STR_LEN_MAX + 6);
-                               dbg("item index(%d) id(%d) str(%s)", sat_index,
-                                       setup_menu.satMainMenuItem[sat_index].itemId,
-                                       setup_menu.satMainMenuItem[sat_index].itemString);
-                               sat_index++;
-                       }
-                       g_variant_iter_free(iter);
+       TelSatSetupMenuInfo_t setup_menu;
+
+       gchar *title = NULL;
+       gint command_id, item_cnt;
+       gboolean b_present, b_helpinfo, b_updated;
+       GVariant *items = NULL;
+       int sat_index = 0;
+       GVariant *unbox;
+       GVariantIter *iter;
+
+       memset(&setup_menu, 0, sizeof(TelSatSetupMenuInfo_t));
+
+       g_variant_get(param, "(ibs@vibb)", &command_id, &b_present, &title, &items, &item_cnt,
+               &b_helpinfo, &b_updated);
+
+       setup_menu.commandId = command_id;
+       setup_menu.bIsMainMenuPresent = (b_present ? 1 : 0);
+       memcpy(setup_menu.satMainTitle, title, TAPI_SAT_DEF_TITLE_LEN_MAX+1);
+       g_free(title);
+       setup_menu.satMainMenuNum = item_cnt;
+       if (items && item_cnt > 0) {
+               gchar *item_str;
+               gint item_id;
+               unbox = g_variant_get_variant(items);
+               dbg("items(%p) items type_format(%s)", items, g_variant_get_type_string(unbox));
+
+               g_variant_get(unbox, "a(si)", &iter);
+               while (g_variant_iter_loop(iter, "(si)", &item_str, &item_id)) {
+                       setup_menu.satMainMenuItem[sat_index].itemId = item_id;
+                       memcpy(setup_menu.satMainMenuItem[sat_index].itemString,
+                               item_str, TAPI_SAT_DEF_ITEM_STR_LEN_MAX + 6);
+                       dbg("item index(%d) id(%d) str(%s)", sat_index,
+                               setup_menu.satMainMenuItem[sat_index].itemId,
+                               setup_menu.satMainMenuItem[sat_index].itemString);
+                       sat_index++;
                }
-               setup_menu.bIsSatMainMenuHelpInfo = (b_helpinfo ? 1 : 0);
-               setup_menu.bIsUpdatedSatMainMenu = (b_updated ? 1 : 0);
+               g_variant_iter_free(iter);
+       }
+       setup_menu.bIsSatMainMenuHelpInfo = (b_helpinfo ? 1 : 0);
+       setup_menu.bIsUpdatedSatMainMenu = (b_updated ? 1 : 0);
 
-               dbg("command id (%d)", setup_menu.commandId);
-               dbg("menu present (%d)", setup_menu.bIsMainMenuPresent);
-               dbg("menu title (%s)", setup_menu.satMainTitle);
-               dbg("item cnt (%d)", setup_menu.satMainMenuNum);
-               dbg("menu help info (%d)", setup_menu.bIsSatMainMenuHelpInfo);
-               dbg("menu updated (%d)", setup_menu.bIsUpdatedSatMainMenu);
+       dbg("command id (%d)", setup_menu.commandId);
+       dbg("menu present (%d)", setup_menu.bIsMainMenuPresent);
+       dbg("menu title (%s)", setup_menu.satMainTitle);
+       dbg("item cnt (%d)", setup_menu.satMainMenuNum);
+       dbg("menu help info (%d)", setup_menu.bIsSatMainMenuHelpInfo);
+       dbg("menu updated (%d)", setup_menu.bIsUpdatedSatMainMenu);
 
-               dbg("icon exist(%d), icon_quali: (%d), icon_id: (%d), width: (%d), height: (%d), ics: (%d), icon_data_len: (%d)", setup_menu.iconId.bIsPresent, setup_menu.iconId.iconQualifier, setup_menu.iconId.iconIdentifier, setup_menu.iconId.iconInfo.width,
-                       setup_menu.iconId.iconInfo.height, setup_menu.iconId.iconInfo.ics, setup_menu.iconId.iconInfo.iconDataLen);
+       dbg("icon exist(%d), icon_quali: (%d), icon_id: (%d), width: (%d), height: (%d), ics: (%d), icon_data_len: (%d)", setup_menu.iconId.bIsPresent, setup_menu.iconId.iconQualifier, setup_menu.iconId.iconIdentifier, setup_menu.iconId.iconInfo.width,
+               setup_menu.iconId.iconInfo.height, setup_menu.iconId.iconInfo.ics, setup_menu.iconId.iconInfo.iconDataLen);
 
-               TAPI_INVOKE_NOTI_CALLBACK(&setup_menu);
-       } else if (!g_strcmp0(sig, "DisplayText")) {
-               TelSatDisplayTextInd_t display_text;
-               gchar *text;
-               gint command_id, text_len, duration;
-               gboolean high_priority, user_rsp_required, immediately_rsp;
+       TAPI_INVOKE_NOTI_CALLBACK(&setup_menu);
+
+}
 
-               memset(&display_text, 0, sizeof(TelSatDisplayTextInd_t));
+static void __process_sat_event_display_text(const gchar *sig, GVariant *param,
+       TapiHandle *handle, char *noti_id, struct tapi_evt_cb *evt_cb_data)
+{
+       TelSatDisplayTextInd_t display_text;
+       gchar *text;
+       gint command_id, text_len, duration;
+       gboolean high_priority, user_rsp_required, immediately_rsp;
+
+       memset(&display_text, 0, sizeof(TelSatDisplayTextInd_t));
+
+       g_variant_get(param, "(isiibbb)", &command_id, &text, &text_len, &duration,
+               &high_priority, &user_rsp_required, &immediately_rsp);
+
+       display_text.commandId = command_id;
+       memcpy(display_text.text.string, text, TAPI_SAT_DEF_TEXT_STRING_LEN_MAX+1);
+       g_free(text);
+       display_text.text.stringLen = text_len;
+       display_text.duration = duration;
+       display_text.bIsPriorityHigh = (high_priority ? 1 : 0);
+       display_text.bIsUserRespRequired = (user_rsp_required ? 1 : 0);
+       display_text.b_immediately_resp = (immediately_rsp ? 1 : 0);
+
+       dbg("command id (%d)", display_text.commandId);
+       dbg("display text (%s)", display_text.text.string);
+       dbg("string len(%d)", display_text.text.stringLen);
+       dbg("duration (%d)", display_text.duration);
+       dbg("high priority (%d)", display_text.bIsPriorityHigh);
+       dbg("user response required(%d)", display_text.bIsUserRespRequired);
+       dbg("immediately response (%d)", display_text.b_immediately_resp);
+
+       TAPI_INVOKE_NOTI_CALLBACK(&display_text);
 
-               g_variant_get(param, "(isiibbb)", &command_id, &text, &text_len, &duration,
-                       &high_priority, &user_rsp_required, &immediately_rsp);
+}
 
-               display_text.commandId = command_id;
-               memcpy(display_text.text.string, text, TAPI_SAT_DEF_TEXT_STRING_LEN_MAX+1);
-               g_free(text);
-               display_text.text.stringLen = text_len;
-               display_text.duration = duration;
-               display_text.bIsPriorityHigh = (high_priority ? 1 : 0);
-               display_text.bIsUserRespRequired = (user_rsp_required ? 1 : 0);
-               display_text.b_immediately_resp = (immediately_rsp ? 1 : 0);
-
-               dbg("command id (%d)", display_text.commandId);
-               dbg("display text (%s)", display_text.text.string);
-               dbg("string len(%d)", display_text.text.stringLen);
-               dbg("duration (%d)", display_text.duration);
-               dbg("high priority (%d)", display_text.bIsPriorityHigh);
-               dbg("user response required(%d)", display_text.bIsUserRespRequired);
-               dbg("immediately response (%d)", display_text.b_immediately_resp);
-
-               TAPI_INVOKE_NOTI_CALLBACK(&display_text);
-       } else if (!g_strcmp0(sig, "SelectItem")) {
-               TelSatSelectItemInd_t select_item;
-
-               gboolean help_info ;
-               gchar *selected_text;
-               gint command_id, default_item_id, menu_cnt, text_len = 0;
-               GVariant *menu_items;
-               int select_item_index = 0;
-               GVariant *unbox;
-               GVariantIter *iter;
-
-               memset(&select_item, 0, sizeof(TelSatSelectItemInd_t));
-
-               g_variant_get(param, "(ibsiii@v)", &command_id, &help_info, &selected_text,
-                       &text_len, &default_item_id, &menu_cnt, &menu_items);
-
-               select_item.commandId = command_id;
-               select_item.bIsHelpInfoAvailable = (help_info ? 1 : 0);
-               memcpy(select_item.text.string, selected_text, TAPI_SAT_DEF_TITLE_LEN_MAX+1);
-               g_free(selected_text);
-               select_item.text.stringLen = text_len;
-               select_item.defaultItemIndex = default_item_id;
-               select_item.menuItemCount = menu_cnt;
-               if (menu_items && menu_cnt > 0) {
-                       gchar *item_str;
-                       gint item_id, item_len;
-                       unbox = g_variant_get_variant(menu_items);
-                       dbg("items(%p) items type_format(%s)", menu_items, g_variant_get_type_string(unbox));
-
-                       g_variant_get(unbox, "a(iis)", &iter);
-                       while (g_variant_iter_loop(iter, "(iis)", &item_id, &item_len, &item_str)) {
-                               select_item.menuItem[select_item_index].itemId = item_id;
-                               select_item.menuItem[select_item_index].textLen = item_len;
-                               memcpy(select_item.menuItem[select_item_index].text, item_str, TAPI_SAT_ITEM_TEXT_LEN_MAX + 1);
-                               dbg("item index(%d) id(%d) len(%d) str(%s)", select_item_index,
-                                               select_item.menuItem[select_item_index].itemId, select_item.menuItem[select_item_index].textLen, select_item.menuItem[select_item_index].text);
-                               select_item_index++;
-                       }
-                       g_variant_iter_free(iter);
+static void __process_sat_event_select_item(const gchar *sig, GVariant *param,
+       TapiHandle *handle, char *noti_id, struct tapi_evt_cb *evt_cb_data)
+{
+       TelSatSelectItemInd_t select_item;
+
+       gboolean help_info ;
+       gchar *selected_text;
+       gint command_id, default_item_id, menu_cnt, text_len = 0;
+       GVariant *menu_items;
+       int select_item_index = 0;
+       GVariant *unbox;
+       GVariantIter *iter;
+
+       memset(&select_item, 0, sizeof(TelSatSelectItemInd_t));
+
+       g_variant_get(param, "(ibsiii@v)", &command_id, &help_info, &selected_text,
+               &text_len, &default_item_id, &menu_cnt, &menu_items);
+
+       select_item.commandId = command_id;
+       select_item.bIsHelpInfoAvailable = (help_info ? 1 : 0);
+       memcpy(select_item.text.string, selected_text, TAPI_SAT_DEF_TITLE_LEN_MAX+1);
+       g_free(selected_text);
+       select_item.text.stringLen = text_len;
+       select_item.defaultItemIndex = default_item_id;
+       select_item.menuItemCount = menu_cnt;
+       if (menu_items && menu_cnt > 0) {
+               gchar *item_str;
+               gint item_id, item_len;
+               unbox = g_variant_get_variant(menu_items);
+               dbg("items(%p) items type_format(%s)", menu_items, g_variant_get_type_string(unbox));
+
+               g_variant_get(unbox, "a(iis)", &iter);
+               while (g_variant_iter_loop(iter, "(iis)", &item_id, &item_len, &item_str)) {
+                       select_item.menuItem[select_item_index].itemId = item_id;
+                       select_item.menuItem[select_item_index].textLen = item_len;
+                       memcpy(select_item.menuItem[select_item_index].text, item_str, TAPI_SAT_ITEM_TEXT_LEN_MAX + 1);
+                       dbg("item index(%d) id(%d) len(%d) str(%s)", select_item_index,
+                                       select_item.menuItem[select_item_index].itemId, select_item.menuItem[select_item_index].textLen, select_item.menuItem[select_item_index].text);
+                       select_item_index++;
                }
+               g_variant_iter_free(iter);
+       }
 
-               dbg("command id (%d)", select_item.commandId);
-               dbg("help info(%d)", select_item.bIsHelpInfoAvailable);
-               dbg("selected item string(%s)", select_item.text.string);
-               dbg("string len(%d)", select_item.text.stringLen);
-               dbg("default item index(%d)", select_item.defaultItemIndex);
-               dbg("item count(%d)", select_item.menuItemCount);
+       dbg("command id (%d)", select_item.commandId);
+       dbg("help info(%d)", select_item.bIsHelpInfoAvailable);
+       dbg("selected item string(%s)", select_item.text.string);
+       dbg("string len(%d)", select_item.text.stringLen);
+       dbg("default item index(%d)", select_item.defaultItemIndex);
+       dbg("item count(%d)", select_item.menuItemCount);
 
-               TAPI_INVOKE_NOTI_CALLBACK(&select_item);
-       } else if (!g_strcmp0(sig, "GetInkey")) {
-               TelSatGetInkeyInd_t get_inkey;
+       TAPI_INVOKE_NOTI_CALLBACK(&select_item);
+}
 
-               gint command_id, key_type, input_character_mode;
-               gint text_len, duration;
-               gboolean b_numeric, b_help_info;
-               gchar *text = NULL;
+static void __process_sat_event_get_inkey(const gchar *sig, GVariant *param,
+       TapiHandle *handle, char *noti_id, struct tapi_evt_cb *evt_cb_data)
+{
+       TelSatGetInkeyInd_t get_inkey;
+
+       gint command_id, key_type, input_character_mode;
+       gint text_len, duration;
+       gboolean b_numeric, b_help_info;
+       gchar *text = NULL;
+
+       memset(&get_inkey, 0, sizeof(TelSatGetInkeyInd_t));
+
+       g_variant_get(param, "(iiibbsii)", &command_id, &key_type, &input_character_mode,
+               &b_numeric, &b_help_info, &text, &text_len, &duration);
+
+       get_inkey.commandId = command_id;
+       get_inkey.keyType = key_type;
+       get_inkey.inputCharMode = input_character_mode;
+       get_inkey.bIsNumeric = (b_numeric ? 1 : 0);
+       get_inkey.bIsHelpInfoAvailable = (b_help_info ? 1 : 0);
+       memcpy(get_inkey.text.string, text, TAPI_SAT_DEF_TEXT_STRING_LEN_MAX+1);
+       g_free(text);
+       get_inkey.text.stringLen = text_len;
+       get_inkey.duration = duration;
+
+       dbg("command id(%d)", get_inkey.commandId);
+       dbg("key type(%d)", get_inkey.keyType);
+       dbg("input character mode(%d)", get_inkey.inputCharMode);
+       dbg("numeric(%d)", get_inkey.bIsNumeric);
+       dbg("help info available(%d)", get_inkey.bIsHelpInfoAvailable);
+       dbg("text (%s)", get_inkey.text.string);
+       dbg("text length (%d)", get_inkey.text.stringLen);
+       dbg("duration (%d)", get_inkey.duration);
+
+       TAPI_INVOKE_NOTI_CALLBACK(&get_inkey);
 
-               memset(&get_inkey, 0, sizeof(TelSatGetInkeyInd_t));
+}
 
-               g_variant_get(param, "(iiibbsii)", &command_id, &key_type, &input_character_mode,
-                       &b_numeric, &b_help_info, &text, &text_len, &duration);
+static void __process_sat_event_get_input(const gchar *sig, GVariant *param,
+       TapiHandle *handle, char *noti_id, struct tapi_evt_cb *evt_cb_data)
+{
+       TelSatGetInputInd_t get_input;
+
+       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;
+
+       memset(&get_input, 0, sizeof(TelSatGetInputInd_t));
+
+       g_variant_get(param, "(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);
+
+       get_input.commandId = command_id;
+       get_input.inputCharMode = input_character_mode;
+       get_input.bIsNumeric = (b_numeric ? 1 : 0);
+       get_input.bIsHelpInfoAvailable = (b_help_info ? 1 : 0);
+       get_input.bIsEchoInput = (b_echo_input ? 1 : 0);
+       memcpy(get_input.text.string, text, TAPI_SAT_DEF_TEXT_STRING_LEN_MAX+1);
+       g_free(text);
+       get_input.text.stringLen = text_len;
+       get_input.respLen.max = rsp_len_max;
+       get_input.respLen.min = rsp_len_min;
+       memcpy(get_input.defaultText.string, def_text, TAPI_SAT_DEF_TEXT_STRING_LEN_MAX+1);
+       g_free(def_text);
+       get_input.defaultText.stringLen = def_text_len;
+
+       dbg("command id(%d)", get_input.commandId);
+       dbg("input character mode(%d)", get_input.inputCharMode);
+       dbg("numeric(%d)", get_input.bIsNumeric);
+       dbg("help info avaiable(%d)", get_input.bIsHelpInfoAvailable);
+       dbg("echo input(%d)", get_input.bIsEchoInput);
+       dbg("text(%s)", get_input.text.string);
+       dbg("text length(%d)", get_input.text.stringLen);
+       dbg("response length max(%d)", get_input.respLen.max);
+       dbg("response length min(%d)", get_input.respLen.min);
+       dbg("default text(%s)", get_input.defaultText.string);
+       dbg("default text length(%d)", get_input.defaultText.stringLen);
+
+       TAPI_INVOKE_NOTI_CALLBACK(&get_input);
 
-               get_inkey.commandId = command_id;
-               get_inkey.keyType = key_type;
-               get_inkey.inputCharMode = input_character_mode;
-               get_inkey.bIsNumeric = (b_numeric ? 1 : 0);
-               get_inkey.bIsHelpInfoAvailable = (b_help_info ? 1 : 0);
-               memcpy(get_inkey.text.string, text, TAPI_SAT_DEF_TEXT_STRING_LEN_MAX+1);
-               g_free(text);
-               get_inkey.text.stringLen = text_len;
-               get_inkey.duration = duration;
-
-               dbg("command id(%d)", get_inkey.commandId);
-               dbg("key type(%d)", get_inkey.keyType);
-               dbg("input character mode(%d)", get_inkey.inputCharMode);
-               dbg("numeric(%d)", get_inkey.bIsNumeric);
-               dbg("help info available(%d)", get_inkey.bIsHelpInfoAvailable);
-               dbg("text (%s)", get_inkey.text.string);
-               dbg("text length (%d)", get_inkey.text.stringLen);
-               dbg("duration (%d)", get_inkey.duration);
-
-               TAPI_INVOKE_NOTI_CALLBACK(&get_inkey);
-       } else if (!g_strcmp0(sig, "GetInput")) {
-               TelSatGetInputInd_t get_input;
+}
 
-               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;
+static void __process_sat_event_send_sms(const gchar *sig, GVariant *param,
+       TapiHandle *handle, char *noti_id, struct tapi_evt_cb *evt_cb_data)
+{
+       TelSatSendSmsIndSmsData_t send_sms;
 
-               memset(&get_input, 0, sizeof(TelSatGetInputInd_t));
+       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;
 
-               g_variant_get(param, "(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);
+       memset(&send_sms, 0, sizeof(TelSatSendSmsIndSmsData_t));
 
-               get_input.commandId = command_id;
-               get_input.inputCharMode = input_character_mode;
-               get_input.bIsNumeric = (b_numeric ? 1 : 0);
-               get_input.bIsHelpInfoAvailable = (b_help_info ? 1 : 0);
-               get_input.bIsEchoInput = (b_echo_input ? 1 : 0);
-               memcpy(get_input.text.string, text, TAPI_SAT_DEF_TEXT_STRING_LEN_MAX+1);
-               g_free(text);
-               get_input.text.stringLen = text_len;
-               get_input.respLen.max = rsp_len_max;
-               get_input.respLen.min = rsp_len_min;
-               memcpy(get_input.defaultText.string, def_text, TAPI_SAT_DEF_TEXT_STRING_LEN_MAX+1);
-               g_free(def_text);
-               get_input.defaultText.stringLen = def_text_len;
-
-               dbg("command id(%d)", get_input.commandId);
-               dbg("input character mode(%d)", get_input.inputCharMode);
-               dbg("numeric(%d)", get_input.bIsNumeric);
-               dbg("help info avaiable(%d)", get_input.bIsHelpInfoAvailable);
-               dbg("echo input(%d)", get_input.bIsEchoInput);
-               dbg("text(%s)", get_input.text.string);
-               dbg("text length(%d)", get_input.text.stringLen);
-               dbg("response length max(%d)", get_input.respLen.max);
-               dbg("response length min(%d)", get_input.respLen.min);
-               dbg("default text(%s)", get_input.defaultText.string);
-               dbg("default text length(%d)", get_input.defaultText.stringLen);
-
-               TAPI_INVOKE_NOTI_CALLBACK(&get_input);
-       } else if (!g_strcmp0(sig, "SendSMS")) {
-               TelSatSendSmsIndSmsData_t send_sms;
+       g_variant_get(param, "(isibiisii@vi)", &command_id, &text, &text_len, &b_packing_required, &ton, &npi,
+                               &dialling_number, &number_len, &tpdu_type, &tpdu_data, &tpdu_data_len);
 
-               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;
+       send_sms.commandId = command_id;
+       send_sms.bIsPackingRequired = (b_packing_required ? 1 : 0);
 
-               memset(&send_sms, 0, sizeof(TelSatSendSmsIndSmsData_t));
+       send_sms.address.ton = ton;
+       send_sms.address.npi = npi;
+       send_sms.address.diallingNumberLen = number_len;
+       memcpy(send_sms.address.diallingNumber, dialling_number, TAPI_SAT_DIALLING_NUMBER_LEN_MAX);
+       g_free(dialling_number);
+       g_free(text);
 
-               g_variant_get(param, "(isibiisii@vi)", &command_id, &text, &text_len, &b_packing_required, &ton, &npi,
-                                       &dialling_number, &number_len, &tpdu_type, &tpdu_data, &tpdu_data_len);
+       send_sms.smsTpdu.tpduType = tpdu_type;
+       send_sms.smsTpdu.dataLen = tpdu_data_len;
 
-               send_sms.commandId = command_id;
-               send_sms.bIsPackingRequired = (b_packing_required ? 1 : 0);
+       if (tpdu_data) {
+               int send_sms_index = 0;
+               guchar data;
+               GVariantIter *iter = NULL;
+               GVariant *inner_gv = NULL;
 
-               send_sms.address.ton = ton;
-               send_sms.address.npi = npi;
-               send_sms.address.diallingNumberLen = number_len;
-               memcpy(send_sms.address.diallingNumber, dialling_number, TAPI_SAT_DIALLING_NUMBER_LEN_MAX);
-               g_free(dialling_number);
-               g_free(text);
+               inner_gv = g_variant_get_variant(tpdu_data);
+               dbg("tpdu data exist type_format(%s)", g_variant_get_type_string(inner_gv));
+
+               g_variant_get(inner_gv, "ay", &iter);
+               while (g_variant_iter_loop(iter, "y", &data)) {
+                       dbg("index(%d) data(%c)", send_sms_index, data);
+                       send_sms.smsTpdu.data[send_sms_index] = data;
+                       send_sms_index++;
+               }
+               g_variant_iter_free(iter);
+               g_variant_unref(inner_gv);
+       }
 
-               send_sms.smsTpdu.tpduType = tpdu_type;
-               send_sms.smsTpdu.dataLen = tpdu_data_len;
+       dbg("command id(%d)", send_sms.commandId);
+       dbg("packing required(%d)", send_sms.bIsPackingRequired);
+       dbg("address ton(%d)", send_sms.address.ton);
+       dbg("address npi(%d)", send_sms.address.npi);
+       dbg("address dialing number (%s)", send_sms.address.diallingNumber);
+       dbg("address number length (%d)", send_sms.address.diallingNumberLen);
+       dbg("tpdu type (%d)", send_sms.smsTpdu.tpduType);
+       dbg("tpdu length (%d)", send_sms.smsTpdu.dataLen);
 
-               if (tpdu_data) {
-                       int send_sms_index = 0;
-                       guchar data;
-                       GVariantIter *iter = NULL;
-                       GVariant *inner_gv = NULL;
+       TAPI_INVOKE_NOTI_CALLBACK(&send_sms);
 
-                       inner_gv = g_variant_get_variant(tpdu_data);
-                       dbg("tpdu data exist type_format(%s)", g_variant_get_type_string(inner_gv));
+}
 
-                       g_variant_get(inner_gv, "ay", &iter);
-                       while (g_variant_iter_loop(iter, "y", &data)) {
-                               dbg("index(%d) data(%c)", send_sms_index, data);
-                               send_sms.smsTpdu.data[send_sms_index] = data;
-                               send_sms_index++;
-                       }
-                       g_variant_iter_free(iter);
-                       g_variant_unref(inner_gv);
-               }
+static void __process_sat_event_setup_eventlist(const gchar *sig, GVariant *param,
+       TapiHandle *handle, char *noti_id, struct tapi_evt_cb *evt_cb_data)
+{
+       int g_index = 0;
+       gint event_cnt;
+       GVariant *evt_list;
+       TelSatEventListData_t event_list;
+
+       memset(&event_list, 0, sizeof(TelSatEventListData_t));
+
+       g_variant_get(param, "(i@v)", &event_cnt, &evt_list);
+
+       if (evt_list) {
+               guchar data;
+               GVariantIter *iter = NULL;
+               GVariant *inner_gv = NULL;
+
+               inner_gv = g_variant_get_variant(evt_list);
+               dbg("event list exist type_format(%s)", g_variant_get_type_string(inner_gv));
+
+               g_variant_get(inner_gv, "ai", &iter);
+               while (g_variant_iter_loop(iter, "i", &data)) {
+                       dbg("g_index(%d) event(%d)", g_index, data);
+                       g_event_list[g_index] = data;
+
+                       if (data == TAPI_EVENT_SAT_DW_TYPE_IDLE_SCREEN_AVAILABLE)
+                               event_list.bIsIdleScreenAvailable = 1;
+                       else if (data == TAPI_EVENT_SAT_DW_TYPE_LANGUAGE_SELECTION)
+                               event_list.bIsLanguageSelection = 1;
+                       else if (data == TAPI_EVENT_SAT_DW_TYPE_BROWSER_TERMINATION)
+                               event_list.bIsBrowserTermination = 1;
+                       else if (data == TAPI_EVENT_SAT_DW_TYPE_DATA_AVAILABLE)
+                               event_list.bIsDataAvailable = 1;
+                       else if (data == TAPI_EVENT_SAT_DW_TYPE_CHANNEL_STATUS)
+                               event_list.bIsChannelStatus = 1;
+
+                       g_index++;
+               } /* while end */
+               g_variant_iter_free(iter);
+               g_variant_unref(inner_gv);
+       }
 
-               dbg("command id(%d)", send_sms.commandId);
-               dbg("packing required(%d)", send_sms.bIsPackingRequired);
-               dbg("address ton(%d)", send_sms.address.ton);
-               dbg("address npi(%d)", send_sms.address.npi);
-               dbg("address dialing number (%s)", send_sms.address.diallingNumber);
-               dbg("address number length (%d)", send_sms.address.diallingNumberLen);
-               dbg("tpdu type (%d)", send_sms.smsTpdu.tpduType);
-               dbg("tpdu length (%d)", send_sms.smsTpdu.dataLen);
+       dbg("event list cnt(%d)", event_cnt);
 
-               TAPI_INVOKE_NOTI_CALLBACK(&send_sms);
-       } else if (!g_strcmp0(sig, "SetupEventList")) {
-               int g_index = 0;
-               gint event_cnt;
-               GVariant *evt_list;
-               TelSatEventListData_t event_list;
+       TAPI_INVOKE_NOTI_CALLBACK(&event_list);
 
-               memset(&event_list, 0, sizeof(TelSatEventListData_t));
+}
 
-               g_variant_get(param, "(i@v)", &event_cnt, &evt_list);
+static void __process_sat_event_refresh(const gchar *sig, GVariant *param,
+       TapiHandle *handle, char *noti_id, struct tapi_evt_cb *evt_cb_data)
+{
+       TelSatRefreshInd_t refresh_info;
 
-               if (evt_list) {
-                       guchar data;
-                       GVariantIter *iter = NULL;
-                       GVariant *inner_gv = NULL;
+       gint command_id = 0;
+       gint refresh_type = 0;
+       gint file_cnt = 0;
+       GVariant *file_list = NULL;
 
-                       inner_gv = g_variant_get_variant(evt_list);
-                       dbg("event list exist type_format(%s)", g_variant_get_type_string(inner_gv));
-
-                       g_variant_get(inner_gv, "ai", &iter);
-                       while (g_variant_iter_loop(iter, "i", &data)) {
-                               dbg("g_index(%d) event(%d)", g_index, data);
-                               g_event_list[g_index] = data;
-
-                               if (data == TAPI_EVENT_SAT_DW_TYPE_IDLE_SCREEN_AVAILABLE)
-                                       event_list.bIsIdleScreenAvailable = 1;
-                               else if (data == TAPI_EVENT_SAT_DW_TYPE_LANGUAGE_SELECTION)
-                                       event_list.bIsLanguageSelection = 1;
-                               else if (data == TAPI_EVENT_SAT_DW_TYPE_BROWSER_TERMINATION)
-                                       event_list.bIsBrowserTermination = 1;
-                               else if (data == TAPI_EVENT_SAT_DW_TYPE_DATA_AVAILABLE)
-                                       event_list.bIsDataAvailable = 1;
-                               else if (data == TAPI_EVENT_SAT_DW_TYPE_CHANNEL_STATUS)
-                                       event_list.bIsChannelStatus = 1;
-
-                               g_index++;
-                       } /* while end */
-                       g_variant_iter_free(iter);
-                       g_variant_unref(inner_gv);
+       memset(&refresh_info, 0, sizeof(TelSatRefreshInd_t));
+
+       g_variant_get(param, "(ii@v)", &command_id, &refresh_type, &file_list);
+
+       refresh_info.commandId = command_id;
+       refresh_info.refreshMode = refresh_type;
+
+       if (file_list) {
+               int g_index = 0;
+               guchar data;
+               GVariantIter *iter = NULL;
+               GVariant *inner_gv = NULL;
+
+               inner_gv = g_variant_get_variant(file_list);
+               dbg("file list exist type_format(%s)", g_variant_get_type_string(inner_gv));
+
+               g_variant_get(inner_gv, "ai", &iter);
+               while (g_variant_iter_loop(iter, "i", &data)) {
+                       dbg("g_index(%d) file id(%d)", g_index, data);
+                       refresh_info.fileId[g_index] = data;
+                       g_index++;
                }
+               file_cnt = g_index;
 
-               dbg("event list cnt(%d)", event_cnt);
+               /* while end */
+               g_variant_iter_free(iter);
+               g_variant_unref(inner_gv);
+       }
+       refresh_info.fileCount = file_cnt;
 
-               TAPI_INVOKE_NOTI_CALLBACK(&event_list);
-       } else if (!g_strcmp0(sig, "Refresh")) {
-               TelSatRefreshInd_t refresh_info;
+       dbg("refresh event/file cnt(%d)", refresh_info.fileCount);
 
-               gint command_id = 0;
-               gint refresh_type = 0;
-               gint file_cnt = 0;
-               GVariant *file_list = NULL;
+       TAPI_INVOKE_NOTI_CALLBACK(&refresh_info);
 
-               memset(&refresh_info, 0, sizeof(TelSatRefreshInd_t));
+}
 
-               g_variant_get(param, "(ii@v)", &command_id, &refresh_type, &file_list);
+static void __process_sat_event_send_dtmf(const gchar *sig, GVariant *param,
+       TapiHandle *handle, char *noti_id, struct tapi_evt_cb *evt_cb_data)
+{
+       TelSatSendDtmfIndDtmfData_t send_dtmf;
 
-               refresh_info.commandId = command_id;
-               refresh_info.refreshMode = refresh_type;
+       gint command_id = 0;
+       gint text_len = 0, dtmf_str_len = 0;
+       gchar *text = NULL;
+       gchar *dtmf_str = NULL;
 
-               if (file_list) {
-                       int g_index = 0;
-                       guchar data;
-                       GVariantIter *iter = NULL;
-                       GVariant *inner_gv = NULL;
+       memset(&send_dtmf, 0, sizeof(TelSatSendDtmfIndDtmfData_t));
 
-                       inner_gv = g_variant_get_variant(file_list);
-                       dbg("file list exist type_format(%s)", g_variant_get_type_string(inner_gv));
+       g_variant_get(param, "(isisi)", &command_id, &text, &text_len, &dtmf_str, &dtmf_str_len);
 
-                       g_variant_get(inner_gv, "ai", &iter);
-                       while (g_variant_iter_loop(iter, "i", &data)) {
-                               dbg("g_index(%d) file id(%d)", g_index, data);
-                               refresh_info.fileId[g_index] = data;
-                               g_index++;
-                       }
-                       file_cnt = g_index;
+       send_dtmf.commandId = command_id;
+       send_dtmf.bIsHiddenMode = 1;
 
-                       /* while end */
-                       g_variant_iter_free(iter);
-                       g_variant_unref(inner_gv);
-               }
-               refresh_info.fileCount = file_cnt;
+       send_dtmf.dtmfString.stringLen = dtmf_str_len;
+       memcpy(send_dtmf.dtmfString.string, dtmf_str, TAPI_SAT_DEF_TEXT_STRING_LEN_MAX+1);
+       g_free(dtmf_str);
+       g_free(text);
 
-               dbg("refresh event/file cnt(%d)", refresh_info.fileCount);
+       dbg("dtmf event command id(%d)", send_dtmf.commandId);
+       dbg("dtmf event dtmf(%s)", send_dtmf.dtmfString.string);
 
-               TAPI_INVOKE_NOTI_CALLBACK(&refresh_info);
-       } else if (!g_strcmp0(sig, "SendDtmf")) {
-               TelSatSendDtmfIndDtmfData_t send_dtmf;
+       TAPI_INVOKE_NOTI_CALLBACK(&send_dtmf);
 
-               gint command_id = 0;
-               gint text_len = 0, dtmf_str_len = 0;
-               gchar *text = NULL;
-               gchar *dtmf_str = NULL;
+}
+
+static void __process_sat_event_call_control_result(const gchar *sig, GVariant *param,
+       TapiHandle *handle, char *noti_id, struct tapi_evt_cb *evt_cb_data)
+{
+       TelSatCallCtrlIndData_t call_ctrl_result_ind;
+       gint call_ctrl_result = 0, disp_len = 0;
+       gint bc_repeat_indicator = 0, ton = 0x0F, npi = 0X0F;
+       gchar *text = NULL, *call_num = NULL, *ss_string = NULL, *sub_addr = NULL, *ccp1 = NULL, *ccp2 = NULL;
+
+       memset(&call_ctrl_result_ind, 0x00, sizeof(TelSatCallCtrlIndData_t));
+
+       g_variant_get(param, "(isiisssssi)", &call_ctrl_result, &text, &ton, &npi, &call_num,
+               &ss_string, &sub_addr, &ccp1, &ccp2, &bc_repeat_indicator);
+
+       call_ctrl_result_ind.callCtrlResult = call_ctrl_result;
+       disp_len = strlen(text); /* alpha id */
+       if (disp_len > 1) {
+               call_ctrl_result_ind.dispData.stringLen = disp_len;
+               snprintf((char *)call_ctrl_result_ind.dispData.string, disp_len + 1, "%s", text);
+               call_ctrl_result_ind.bIsUserInfoDisplayEnabled = 1;
+       }
+       g_free(text);
+
+       if (strlen(call_num) > 1 && (g_strcmp0(call_num, "") != 0)) {
+               /* Call number exist */
+               call_ctrl_result_ind.callCtrlCnfType = TAPI_SAT_CALL_TYPE_MO_VOICE;
+               call_ctrl_result_ind.u.callCtrlCnfCallData.address.stringLen = strlen(call_num);
+               snprintf((char *)call_ctrl_result_ind.u.callCtrlCnfCallData.address.string, strlen(call_num) + 1, "%s", call_num);
+               call_ctrl_result_ind.u.callCtrlCnfCallData.subAddress.stringLen = strlen(sub_addr);
+               snprintf((char *)call_ctrl_result_ind.u.callCtrlCnfCallData.subAddress.string, strlen(sub_addr) + 1, "%s", sub_addr);
+               call_ctrl_result_ind.u.callCtrlCnfCallData.ccp1.stringLen = strlen(ccp1);
+               snprintf((char *)call_ctrl_result_ind.u.callCtrlCnfCallData.ccp1.string, strlen(ccp1) + 1, "%s", ccp1);
+               call_ctrl_result_ind.u.callCtrlCnfCallData.ccp2.stringLen = strlen(ccp2);
+               snprintf((char *)call_ctrl_result_ind.u.callCtrlCnfCallData.ccp2.string, strlen(ccp2) + 1, "%s", ccp2);
+               call_ctrl_result_ind.u.callCtrlCnfCallData.bcRepeatIndicator = bc_repeat_indicator;
+       } else if (strlen(ss_string) > 1 && (g_strcmp0(ss_string, "") != 0)) {
+               /* SS string exist */
+               call_ctrl_result_ind.callCtrlCnfType = TAPI_SAT_CALL_TYPE_SS;
+               call_ctrl_result_ind.u.callCtrlCnfSsData.ssString.stringLen = strlen(ss_string);
+               snprintf((char *)call_ctrl_result_ind.u.callCtrlCnfSsData.ssString.string, strlen(ss_string) + 1, "%s", ss_string);
+               call_ctrl_result_ind.u.callCtrlCnfSsData.subAddress.stringLen = strlen(sub_addr);
+               snprintf((char *)call_ctrl_result_ind.u.callCtrlCnfSsData.subAddress.string, strlen(sub_addr) + 1, "%s", sub_addr);
+               call_ctrl_result_ind.u.callCtrlCnfSsData.ccp1.stringLen = strlen(ccp1);
+               snprintf((char *)call_ctrl_result_ind.u.callCtrlCnfSsData.ccp1.string, strlen(ccp1) + 1, "%s", ccp1);
+               call_ctrl_result_ind.u.callCtrlCnfSsData.ccp2.stringLen = strlen(ccp2);
+               snprintf((char *)call_ctrl_result_ind.u.callCtrlCnfSsData.ccp2.string, strlen(ccp2) + 1, "%s", ccp2);
+               call_ctrl_result_ind.u.callCtrlCnfSsData.bcRepeatIndicator = bc_repeat_indicator;
+       } else {
+               dbg("not matched call control");
+               goto EXIT;
+       }
 
-               memset(&send_dtmf, 0, sizeof(TelSatSendDtmfIndDtmfData_t));
+       TAPI_INVOKE_NOTI_CALLBACK(&call_ctrl_result_ind);
 
-               g_variant_get(param, "(isisi)", &command_id, &text, &text_len, &dtmf_str, &dtmf_str_len);
+EXIT:
+       g_free(call_num);
+       g_free(sub_addr);
+       g_free(ccp1);
+       g_free(ccp2);
+       g_free(ss_string);
+
+}
+
+static void __process_sat_event_mosms_control_result(const gchar *sig, GVariant *param,
+       TapiHandle *handle, char *noti_id, struct tapi_evt_cb *evt_cb_data)
+{
+       TelSatMoSmCtrlIndData_t mo_sm_ctrl_result_ind;
+       gint call_ctrl_result = 0 , disp_len = 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;
+
+       memset(&mo_sm_ctrl_result_ind, 0x00, sizeof(TelSatMoSmCtrlIndData_t));
+
+       g_variant_get(param, "(isiisiis)", &call_ctrl_result, &text,
+               &rp_dst_ton, &rp_dst_npi, &rp_dst_call_num, &tp_dst_ton, &tp_dst_npi, &tp_dst_call_num);
+
+       mo_sm_ctrl_result_ind.moSmsCtrlResult = call_ctrl_result;
+       disp_len = strlen(text); /* alpha id */
+       if (disp_len > 1) {
+               mo_sm_ctrl_result_ind.dispData.stringLen = disp_len;
+               snprintf(mo_sm_ctrl_result_ind.dispData.string, disp_len + 1, "%s", text);
+               mo_sm_ctrl_result_ind.bIsUserInfoDisplayEnabled = 1;
+       }
+
+       if (strlen(rp_dst_call_num) > 1 && (g_strcmp0(rp_dst_call_num, "") != 0)) {
+               /* RP DST Call number exist */
+               mo_sm_ctrl_result_ind.rpDestAddr.bIsDigitOnly = 1;
+               mo_sm_ctrl_result_ind.rpDestAddr.stringLen = strlen(rp_dst_call_num);
+               snprintf(mo_sm_ctrl_result_ind.rpDestAddr.string, strlen(rp_dst_call_num) + 1, "%s", rp_dst_call_num);
+       } else if (strlen(tp_dst_call_num) > 1 && (g_strcmp0(tp_dst_call_num, "") != 0)) {
+               /* TP DST Call number exist */
+               mo_sm_ctrl_result_ind.tpDestAddr.bIsDigitOnly = 1;
+               mo_sm_ctrl_result_ind.tpDestAddr.stringLen = strlen(tp_dst_call_num);
+               snprintf(mo_sm_ctrl_result_ind.tpDestAddr.string, strlen(tp_dst_call_num) + 1, "%s", tp_dst_call_num);
+       } else {
+               dbg("Any destination address are not provided, use default one.");
+       }
+       g_free(text);
+       g_free(rp_dst_call_num);
+       g_free(tp_dst_call_num);
 
-               send_dtmf.commandId = command_id;
-               send_dtmf.bIsHiddenMode = 1;
+       TAPI_INVOKE_NOTI_CALLBACK(&mo_sm_ctrl_result_ind);
 
-               send_dtmf.dtmfString.stringLen = dtmf_str_len;
-               memcpy(send_dtmf.dtmfString.string, dtmf_str, TAPI_SAT_DEF_TEXT_STRING_LEN_MAX+1);
-               g_free(dtmf_str);
+}
+
+static void __process_sat_event_setup_call(const gchar *sig, GVariant *param,
+       TapiHandle *handle, char *noti_id, struct tapi_evt_cb *evt_cb_data)
+{
+       TelSatSetupCallIndCallData_t setup_call_data;
+       gint command_type = 0, confirm_text_len = 0;
+       gint text_len = 0, call_type = 0, duration = 0;
+       gchar *confirm_text = NULL, *text = NULL, *call_number = NULL;
+
+       dbg("setupcall event");
+       memset(&setup_call_data, 0x00, sizeof(TelSatSetupCallIndCallData_t));
+
+       g_variant_get(param, "(isisiisi)", &command_type, &confirm_text,
+               &confirm_text_len, &text, &text_len, &call_type, &call_number, &duration);
+
+       setup_call_data.commandId = command_type;
+       setup_call_data.calltype = call_type;
+
+       if (text) {
+               snprintf((char *)setup_call_data.dispText.string, strlen(text) + 1, "%s", text);
+               setup_call_data.dispText.stringLen = text_len;
                g_free(text);
+       }
+       if (call_number) {
+               snprintf((char *)setup_call_data.callNumber.string, strlen(call_number) + 1, "%s", call_number);
+               setup_call_data.callNumber.stringLen = strlen(call_number); /* Number length */
+               g_free(call_number);
+       }
+       setup_call_data.duration = duration;
 
-               dbg("dtmf event command id(%d)", send_dtmf.commandId);
-               dbg("dtmf event dtmf(%s)", send_dtmf.dtmfString.string);
+       g_free(confirm_text);
 
-               TAPI_INVOKE_NOTI_CALLBACK(&send_dtmf);
+       TAPI_INVOKE_NOTI_CALLBACK(&setup_call_data);
+
+}
+
+static void _process_sat_event(const gchar *sig, GVariant *param,
+       TapiHandle *handle, char *noti_id, struct tapi_evt_cb *evt_cb_data)
+{
+       TAPI_RETURN_IF_FAIL(evt_cb_data);
+
+       if (!g_strcmp0(sig, "SetupMenu")) {
+               __process_sat_event_setup_menu(sig, param, handle, noti_id, evt_cb_data);
+       } else if (!g_strcmp0(sig, "DisplayText")) {
+               __process_sat_event_display_text(sig, param, handle, noti_id, evt_cb_data);
+       } else if (!g_strcmp0(sig, "SelectItem")) {
+               __process_sat_event_select_item(sig, param, handle, noti_id, evt_cb_data);
+       } else if (!g_strcmp0(sig, "GetInkey")) {
+               __process_sat_event_get_inkey(sig, param, handle, noti_id, evt_cb_data);
+       } else if (!g_strcmp0(sig, "GetInput")) {
+               __process_sat_event_get_input(sig, param, handle, noti_id, evt_cb_data);
+       } else if (!g_strcmp0(sig, "SendSMS")) {
+               __process_sat_event_send_sms(sig, param, handle, noti_id, evt_cb_data);
+       } else if (!g_strcmp0(sig, "SetupEventList")) {
+               __process_sat_event_setup_eventlist(sig, param, handle, noti_id, evt_cb_data);
+       } else if (!g_strcmp0(sig, "Refresh")) {
+               __process_sat_event_refresh(sig, param, handle, noti_id, evt_cb_data);
+       } else if (!g_strcmp0(sig, "SendDtmf")) {
+               __process_sat_event_send_dtmf(sig, param, handle, noti_id, evt_cb_data);
        } else if (!g_strcmp0(sig, "EndProactiveSession")) {
                int command_type = 0;
 
@@ -846,124 +1047,11 @@ static void _process_sat_event(const gchar *sig, GVariant *param,
                g_free(text);
                g_free(ussd_str);
        } else if (!g_strcmp0(sig, "CallControlResult")) {
-               TelSatCallCtrlIndData_t call_ctrl_result_ind;
-               gint call_ctrl_result = 0, disp_len = 0;
-               gint bc_repeat_indicator = 0, ton = 0x0F, npi = 0X0F;
-               gchar *text = NULL, *call_num = NULL, *ss_string = NULL, *sub_addr = NULL, *ccp1 = NULL, *ccp2 = NULL;
-
-               memset(&call_ctrl_result_ind, 0x00, sizeof(TelSatCallCtrlIndData_t));
-
-               g_variant_get(param, "(isiisssssi)", &call_ctrl_result, &text, &ton, &npi, &call_num,
-                       &ss_string, &sub_addr, &ccp1, &ccp2, &bc_repeat_indicator);
-
-               call_ctrl_result_ind.callCtrlResult = call_ctrl_result;
-               disp_len = strlen(text); /* alpha id */
-               if (disp_len > 1) {
-                       call_ctrl_result_ind.dispData.stringLen = disp_len;
-                       snprintf((char *)call_ctrl_result_ind.dispData.string, disp_len + 1, "%s", text);
-                       call_ctrl_result_ind.bIsUserInfoDisplayEnabled = 1;
-               }
-               g_free(text);
-
-               if (strlen(call_num) > 1 && (g_strcmp0(call_num, "") != 0)) {
-                       /* Call number exist */
-                       call_ctrl_result_ind.callCtrlCnfType = TAPI_SAT_CALL_TYPE_MO_VOICE;
-                       call_ctrl_result_ind.u.callCtrlCnfCallData.address.stringLen = strlen(call_num);
-                       snprintf((char *)call_ctrl_result_ind.u.callCtrlCnfCallData.address.string, strlen(call_num) + 1, "%s", call_num);
-                       call_ctrl_result_ind.u.callCtrlCnfCallData.subAddress.stringLen = strlen(sub_addr);
-                       snprintf((char *)call_ctrl_result_ind.u.callCtrlCnfCallData.subAddress.string, strlen(sub_addr) + 1, "%s", sub_addr);
-                       call_ctrl_result_ind.u.callCtrlCnfCallData.ccp1.stringLen = strlen(ccp1);
-                       snprintf((char *)call_ctrl_result_ind.u.callCtrlCnfCallData.ccp1.string, strlen(ccp1) + 1, "%s", ccp1);
-                       call_ctrl_result_ind.u.callCtrlCnfCallData.ccp2.stringLen = strlen(ccp2);
-                       snprintf((char *)call_ctrl_result_ind.u.callCtrlCnfCallData.ccp2.string, strlen(ccp2) + 1, "%s", ccp2);
-                       call_ctrl_result_ind.u.callCtrlCnfCallData.bcRepeatIndicator = bc_repeat_indicator;
-               } else if (strlen(ss_string) > 1 && (g_strcmp0(ss_string, "") != 0)) {
-                       /* SS string exist */
-                       call_ctrl_result_ind.callCtrlCnfType = TAPI_SAT_CALL_TYPE_SS;
-                       call_ctrl_result_ind.u.callCtrlCnfSsData.ssString.stringLen = strlen(ss_string);
-                       snprintf((char *)call_ctrl_result_ind.u.callCtrlCnfSsData.ssString.string, strlen(ss_string) + 1, "%s", ss_string);
-                       call_ctrl_result_ind.u.callCtrlCnfSsData.subAddress.stringLen = strlen(sub_addr);
-                       snprintf((char *)call_ctrl_result_ind.u.callCtrlCnfSsData.subAddress.string, strlen(sub_addr) + 1, "%s", sub_addr);
-                       call_ctrl_result_ind.u.callCtrlCnfSsData.ccp1.stringLen = strlen(ccp1);
-                       snprintf((char *)call_ctrl_result_ind.u.callCtrlCnfSsData.ccp1.string, strlen(ccp1) + 1, "%s", ccp1);
-                       call_ctrl_result_ind.u.callCtrlCnfSsData.ccp2.stringLen = strlen(ccp2);
-                       snprintf((char *)call_ctrl_result_ind.u.callCtrlCnfSsData.ccp2.string, strlen(ccp2) + 1, "%s", ccp2);
-                       call_ctrl_result_ind.u.callCtrlCnfSsData.bcRepeatIndicator = bc_repeat_indicator;
-               } else {
-                       dbg("not matched call control");
-                       goto EXIT;
-               }
-
-               TAPI_INVOKE_NOTI_CALLBACK(&call_ctrl_result_ind);
-
-EXIT:
-               g_free(call_num);
-               g_free(sub_addr);
-               g_free(ccp1);
-               g_free(ccp2);
-               g_free(ss_string);
+               __process_sat_event_call_control_result(sig, param, handle, noti_id, evt_cb_data);
        } else if (!g_strcmp0(sig, "MoSmControlResult")) {
-               TelSatMoSmCtrlIndData_t mo_sm_ctrl_result_ind;
-               gint call_ctrl_result = 0 , disp_len = 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;
-
-               memset(&mo_sm_ctrl_result_ind, 0x00, sizeof(TelSatMoSmCtrlIndData_t));
-
-               g_variant_get(param, "(isiisiis)", &call_ctrl_result, &text,
-                       &rp_dst_ton, &rp_dst_npi, &rp_dst_call_num, &tp_dst_ton, &tp_dst_npi, &tp_dst_call_num);
-
-               mo_sm_ctrl_result_ind.moSmsCtrlResult = call_ctrl_result;
-               disp_len = strlen(text); /* alpha id */
-               if (disp_len > 1) {
-                       mo_sm_ctrl_result_ind.dispData.stringLen = disp_len;
-                       snprintf(mo_sm_ctrl_result_ind.dispData.string, disp_len + 1, "%s", text);
-                       mo_sm_ctrl_result_ind.bIsUserInfoDisplayEnabled = 1;
-               }
-
-               if (strlen(rp_dst_call_num) > 1 && (g_strcmp0(rp_dst_call_num, "") != 0)) {
-                       /* RP DST Call number exist */
-                       mo_sm_ctrl_result_ind.rpDestAddr.bIsDigitOnly = 1;
-                       mo_sm_ctrl_result_ind.rpDestAddr.stringLen = strlen(rp_dst_call_num);
-                       snprintf(mo_sm_ctrl_result_ind.rpDestAddr.string, strlen(rp_dst_call_num) + 1, "%s", rp_dst_call_num);
-               } else if (strlen(tp_dst_call_num) > 1 && (g_strcmp0(tp_dst_call_num, "") != 0)) {
-                       /* TP DST Call number exist */
-                       mo_sm_ctrl_result_ind.tpDestAddr.bIsDigitOnly = 1;
-                       mo_sm_ctrl_result_ind.tpDestAddr.stringLen = strlen(tp_dst_call_num);
-                       snprintf(mo_sm_ctrl_result_ind.tpDestAddr.string, strlen(tp_dst_call_num) + 1, "%s", tp_dst_call_num);
-               } else {
-                       dbg("Any destination address are not provided, use default one.");
-               }
-               g_free(text);
-               g_free(rp_dst_call_num);
-               g_free(tp_dst_call_num);
-
-               TAPI_INVOKE_NOTI_CALLBACK(&mo_sm_ctrl_result_ind);
+               __process_sat_event_mosms_control_result(sig, param, handle, noti_id, evt_cb_data);
        } else if (!g_strcmp0(sig, "SetupCall")) {
-               TelSatSetupCallIndCallData_t setup_call_data;
-               gint command_type = 0, confirm_text_len = 0;
-               gint text_len = 0, call_type = 0, duration = 0;
-               gchar *confirm_text = NULL, *text = NULL, *call_number = NULL;
-
-               dbg("setupcall event");
-               memset(&setup_call_data, 0x00, sizeof(TelSatSetupCallIndCallData_t));
-
-               g_variant_get(param, "(isisiisi)", &command_type, &confirm_text,
-                       &confirm_text_len, &text, &text_len, &call_type, &call_number, &duration);
-
-               setup_call_data.commandId = command_type;
-               setup_call_data.calltype = call_type;
-               snprintf((char *)setup_call_data.dispText.string, strlen(text) + 1, "%s", text);
-               setup_call_data.dispText.stringLen = text_len;
-               snprintf((char *)setup_call_data.callNumber.string, strlen(call_number) + 1, "%s", call_number);
-               setup_call_data.callNumber.stringLen = strlen(call_number); /* Number length */
-               setup_call_data.duration = duration;
-
-               g_free(confirm_text);
-               g_free(text);
-               g_free(call_number);
-
-               TAPI_INVOKE_NOTI_CALLBACK(&setup_call_data);
+               __process_sat_event_setup_call(sig, param, handle, noti_id, evt_cb_data);
        } else {
                dbg("not handled Sat noti[%s]", sig);
        }