#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/xattr.h>
#include <errno.h>
-#include <glib-object.h>
-#include <gio/gio.h>
-
#include <aul.h>
+#include <appsvc.h>
#include <bundle.h>
#include "TelSat.h"
#include "sat_ui_support.h"
+#include "package-manager.h"
+
+struct sat_ui_app_launch_data {
+ bundle *bundle_data; /**<bundle data*/
+ char *slot_info; /**<slot info*/
+};
-static gboolean _sat_ui_support_processing_setup_menu_ind(GVariant *data)
+static gpointer __launch_sat_ui_app(gpointer data)
{
- gint rv;
+ gint rv = 0;
+ int i = 0;
+ struct sat_ui_app_launch_data *app_data = (struct sat_ui_app_launch_data *)data;
+
+ if(!app_data) {
+ err("app_data does not exist");
+ goto EXIT;
+ }
+ if(!app_data->bundle_data) {
+ err("bundle_data not present");
+ goto EXIT;
+ }
+ if(!app_data->slot_info) {
+ err("slot_info not present");
+ goto EXIT;
+ }
+
+ for (i=0; i<RETRY_MAXCOUNT; i++)
+ {
+ if(g_str_has_suffix(app_data->slot_info , "0")){
+ dbg("slot 0");
+ rv = aul_launch_app("org.tizen.sat-ui", app_data->bundle_data);
+ } else if (g_str_has_suffix(app_data->slot_info , "1")){
+ dbg("slot 1");
+ rv = aul_launch_app("org.tizen.sat-ui-2", app_data->bundle_data);
+ } else {
+ err("invalid sim slot id");
+ break;
+ }
+
+ dbg("AUL return value:[%d]", rv);
+ if ((rv == AUL_R_ECOMM) || (rv == AUL_R_ETERMINATING)) {
+ err("Need to retry.");
+ usleep(RELAUNCH_INTERVAL);
+ } else {
+ dbg("AUL launches SAT UI app");
+ break;
+ }
+ }
+
+EXIT:
+ if (app_data) {
+ bundle_free(app_data->bundle_data);
+ g_free(app_data->slot_info);
+ g_free(app_data);
+ app_data = NULL;
+ }
+ return NULL;
+}
+
+static gboolean __dispatch_on_new_thread(gchar *name, GThreadFunc thread_cb, gpointer thread_data)
+{
+ GThread *thread;
+ if (!name || !thread_cb) {
+ err("Wrong Input Parameter");
+ return FALSE;
+ }
+ thread = g_thread_new(name, thread_cb, thread_data);
+ if (thread == NULL){
+ return FALSE;
+ }else{
+ dbg("Thread %p is created for %s", thread, name);
+ }
+
+ return TRUE;
+}
+
+static gboolean __sat_ui_support_app_launch(bundle *bundle_data, char *slot_info)
+{
+ struct sat_ui_app_launch_data *app_data = NULL;
+
+ app_data= g_malloc0(sizeof(struct sat_ui_app_launch_data));
+ if (!app_data) {
+ err("malloc failed");
+ return FALSE;
+ }
+ app_data->bundle_data = bundle_data;
+ app_data->slot_info = g_strdup(slot_info);
+
+ if (FALSE == __dispatch_on_new_thread((gchar *)"SAT UI app", __launch_sat_ui_app, (gpointer)app_data)) {
+ err("Unable to create thread");
+ bundle_free(app_data->bundle_data);
+ g_free(app_data->slot_info);
+ g_free(app_data);
+ app_data = NULL;
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static gboolean _sat_ui_support_processing_setup_menu_ind(GVariant *data, char *slot_info)
+{
+ gboolean rv = FALSE;
bundle *bundle_data = 0;
gchar *encoded_data = NULL, *cmd_type = NULL;
TelSatSetupMenuInfo_t setup_menu;
- gchar *title;
+ gchar *title = NULL;
gint command_id, item_cnt;
gboolean b_present, b_helpinfo, b_updated;
- GVariant *items = NULL, *icon_id, *icon_list;
-
+ GVariant *items = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id, *icon_list;
+ int local_index = 0, icon_index = 0;
+ /* Used to get menu items */
+ GVariant *unbox;
+ GVariantIter *iter, *iter2;
+ gchar *item_str;
+ gint item_id;
+ /* Used to get icon data */
+ gboolean is_exist;
+ gint icon_quali, icon_identifier, width, height, ics, icon_data_len;
+ gchar *icon_data = NULL;
+ /* Used to get icon list data */
+ GVariant *unbox_list, *unbox_list_info ;
+ GVariant *icon_list_info;
+ gboolean is_list_exist;
+ gint icon_list_quali, list_cnt, icon_list_identifier, list_width, list_height, list_ics, icon_list_data_len;
+ gchar *icon_list_data = NULL;
+#else
+ int local_index = 0;
+ GVariant *unbox;
+ GVariantIter *iter;
+ gchar *item_str;
+ gint item_id;
+#endif
memset(&setup_menu, 0, sizeof(TelSatSetupMenuInfo_t));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
g_variant_get(data, "(ibs@vibb@v@v)", &command_id, &b_present, &title, &items, &item_cnt,
&b_helpinfo, &b_updated, &icon_id, &icon_list);
-
+#else
+ g_variant_get(data, "(ibs@vibb)", &command_id, &b_present, &title, &items, &item_cnt,
+ &b_helpinfo, &b_updated);
+#endif
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){
- int index = 0;
- GVariant *unbox;
- GVariantIter *iter;
-
- 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[index].itemId = item_id;
- memcpy(setup_menu.satMainMenuItem[index].itemString, item_str, TAPI_SAT_DEF_ITEM_STR_LEN_MAX + 6);
- index++;
+ setup_menu.satMainMenuItem[local_index].itemId = item_id;
+ memcpy(setup_menu.satMainMenuItem[local_index].itemString, item_str, TAPI_SAT_DEF_ITEM_STR_LEN_MAX + 6);
+ local_index++;
}
g_variant_iter_free(iter);
}
setup_menu.bIsSatMainMenuHelpInfo = (b_helpinfo ? 1 : 0);
setup_menu.bIsUpdatedSatMainMenu = (b_updated ? 1 : 0);
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ if(icon_id) {
+ unbox = g_variant_get_variant(icon_id);
+ g_variant_get(unbox, "a(biiiiiis)", &iter);
+
+ while(g_variant_iter_loop(iter,"(biiiiiis)", &is_exist, &icon_quali, &icon_identifier, &width, &height, &ics, &icon_data_len, &icon_data)){
+ if(!is_exist)
+ break;
+ setup_menu.iconId.bIsPresent = is_exist;
+ setup_menu.iconId.iconQualifier = icon_quali;
+ setup_menu.iconId.iconIdentifier = icon_identifier;
+ setup_menu.iconId.iconInfo.width = width;
+ setup_menu.iconId.iconInfo.height = height;
+ setup_menu.iconId.iconInfo.ics = ics;
+ if(icon_data_len > 0) {
+ setup_menu.iconId.iconInfo.iconDataLen = icon_data_len;
+ memcpy(setup_menu.iconId.iconInfo.iconFile, icon_data, icon_data_len);
+ }
+ 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);
+ }
+ g_variant_iter_free(iter);
+ }
+
+ if(icon_list){
+ unbox_list = g_variant_get_variant(icon_list);
+ g_variant_get(unbox_list, "a(biiv)", &iter);
+
+ while(g_variant_iter_loop(iter,"(biiv)", &is_list_exist, &icon_list_quali, &list_cnt, &icon_list_info)){
+ if(!is_list_exist)
+ break;
+ setup_menu.iconIdList.bIsPresent = is_list_exist;
+ setup_menu.iconIdList.iconListQualifier = icon_list_quali;
+ setup_menu.iconIdList.iconCount = list_cnt;
+
+ unbox_list_info = g_variant_get_variant(icon_list_info);
+ g_variant_get(unbox_list_info, "a(iiiiis)", &iter2);
+
+ while(g_variant_iter_loop(iter2,"(iiiiis)",&icon_list_identifier, &list_width, &list_height, &list_ics, &icon_list_data_len, &icon_list_data)){
+ setup_menu.iconIdList.iconIdentifierList[icon_index]= icon_identifier;
+ setup_menu.iconIdList.iconInfo[icon_index].width = list_width;
+ setup_menu.iconIdList.iconInfo[icon_index].height = list_height;
+ setup_menu.iconIdList.iconInfo[icon_index].ics = list_ics;
+ if(icon_list_data_len > 0) {
+ setup_menu.iconIdList.iconInfo[icon_index].iconDataLen = icon_list_data_len;
+ memcpy(setup_menu.iconIdList.iconInfo[icon_index].iconFile, icon_list_data, icon_list_data_len);
+ }
+ icon_index++;
+ }
+ g_variant_iter_free(iter2);
+ }
+ g_variant_iter_free(iter);
+ }
+#endif
cmd_type = g_strdup_printf("%d", SAT_PROATV_CMD_SETUP_MENU);
encoded_data = g_base64_encode((const guchar*)&setup_menu, sizeof(TelSatSetupMenuInfo_t));
bundle_add(bundle_data, "KEY_EXEC_TYPE", "1");
bundle_add(bundle_data, "cmd_type", cmd_type);
bundle_add(bundle_data, "data", encoded_data);
+ bundle_add(bundle_data, "slot_id", slot_info);
- rv = aul_launch_app("com.samsung.sat-ui", bundle_data);
- dbg("setup menu ind (%d)", rv);
+ rv = __sat_ui_support_app_launch(bundle_data, slot_info);
- bundle_free(bundle_data);
g_free(encoded_data);
g_free(cmd_type);
- return TRUE;
+ return rv;
}
-static gboolean _sat_ui_support_processing_display_text_ind(GVariant *data)
+static gboolean _sat_ui_support_processing_display_text_ind(GVariant *data, char *slot_info)
{
- gint rv;
+ gboolean rv = FALSE;
bundle *bundle_data = 0;
gchar *encoded_data = NULL, *cmd_type = NULL;
TelSatDisplayTextInd_t display_text;
- gchar* text;
+ gchar* text = NULL;
gint command_id, text_len, duration;
gboolean high_priority, user_rsp_required, immediately_rsp;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
GVariant *icon_id = NULL;
-
+ GVariant *unbox = NULL;
+ gboolean is_exist;
+ gint icon_quali, icon_identifier, width, height, ics, icon_data_len;
+ gchar *icon_data = NULL;
+ GVariantIter *iter;
+#endif
memset(&display_text, 0, sizeof(TelSatDisplayTextInd_t));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
g_variant_get(data, "(isiibbb@v)", &command_id, &text, &text_len, &duration,
&high_priority, &user_rsp_required, &immediately_rsp, &icon_id);
-
+#else
+ g_variant_get(data, "(isiibbb)", &command_id, &text, &text_len, &duration,
+ &high_priority, &user_rsp_required, &immediately_rsp);
+#endif
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);
- dbg("duration(%d) user_rsp(%d)", duration, user_rsp_required);
+ display_text.b_immediately_resp = (immediately_rsp ? 1 : 0);
+
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ if(icon_id) {
+ unbox = g_variant_get_variant(icon_id);
+ g_variant_get(unbox, "a(biiiiiis)", &iter);
+
+ while(g_variant_iter_loop(iter,"(biiiiiis)", &is_exist, &icon_quali, &icon_identifier, &width, &height, &ics, &icon_data_len, &icon_data)) {
+ if(!is_exist)
+ break;
+ display_text.iconId.bIsPresent = is_exist;
+ display_text.iconId.iconQualifier = icon_quali;
+ display_text.iconId.iconIdentifier = icon_identifier;
+ display_text.iconId.iconInfo.width = width;
+ display_text.iconId.iconInfo.height = height;
+ display_text.iconId.iconInfo.ics = ics;
+ if(icon_data_len > 0) {
+ display_text.iconId.iconInfo.iconDataLen = icon_data_len;
+ memcpy(display_text.iconId.iconInfo.iconFile, icon_data, icon_data_len);
+ }
+ dbg("icon exist(%d), icon_quali: (%d), icon_id: (%d), width: (%d), height: (%d), ics: (%d), icon_data_len: (%d)", display_text.iconId.bIsPresent, display_text.iconId.iconQualifier, display_text.iconId.iconIdentifier, display_text.iconId.iconInfo.width,
+ display_text.iconId.iconInfo.height, display_text.iconId.iconInfo.ics, display_text.iconId.iconInfo.iconDataLen);
+ }
+ g_variant_iter_free(iter);
+ }
+#endif
+ dbg("duration(%d) user_rsp(%d) immediately_rsp(%d)", duration, user_rsp_required, immediately_rsp);
cmd_type = g_strdup_printf("%d", SAT_PROATV_CMD_DISPLAY_TEXT);
encoded_data = g_base64_encode((const guchar*)&display_text, sizeof(TelSatDisplayTextInd_t));
bundle_add(bundle_data, "KEY_EXEC_TYPE", "1");
bundle_add(bundle_data, "cmd_type", cmd_type);
bundle_add(bundle_data, "data", encoded_data);
+ bundle_add(bundle_data, "slot_id", slot_info);
- rv = aul_launch_app("com.samsung.sat-ui", bundle_data);
- dbg("display text ind (%d)", rv);
+ rv = __sat_ui_support_app_launch(bundle_data, slot_info);
- bundle_free(bundle_data);
g_free(encoded_data);
g_free(cmd_type);
- return TRUE;
+ return rv;
}
-static gboolean _sat_ui_support_processing_select_item_ind(GVariant *data)
+static gboolean _sat_ui_support_processing_select_item_ind(GVariant *data, char *slot_info)
{
- gint rv;
+ gboolean rv = FALSE;
bundle *bundle_data = 0;
gchar *encoded_data = NULL, *cmd_type = NULL;
TelSatSelectItemInd_t select_item;
gboolean help_info ;
- gchar *selected_text;
+ gchar *selected_text = NULL;
gint command_id, default_item_id, menu_cnt, text_len =0;
- GVariant *menu_items, *icon_id, *icon_list;
-
+ GVariant *menu_items;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id, *icon_list;
+ int local_index = 0, icon_index = 0;
+ /* Used to get menu items */
+ GVariant *unbox;
+ GVariantIter *iter, *iter2;
+ gchar *item_str;
+ gint item_id, item_len;
+ /* Used to get icon data */
+ gboolean is_exist;
+ gint icon_quali, icon_identifier, width, height, ics, icon_data_len;
+ gchar *icon_data = NULL;
+ /* Used to get icon list data */
+ GVariant *unbox_list, *unbox_list_info ;
+ GVariant *icon_list_info;
+ gboolean is_list_exist;
+ gint icon_list_quali, list_cnt, icon_list_identifier, list_width, list_height, list_ics, icon_list_data_len;
+ gchar *icon_list_data = NULL;
+#else
+ int local_index = 0;
+ GVariant *unbox;
+ GVariantIter *iter;
+ gchar *item_str;
+ gint item_id, item_len;
+#endif
memset(&select_item, 0, sizeof(TelSatSelectItemInd_t));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
g_variant_get(data, "(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(data, "(ibsiii@v)", &command_id, &help_info, &selected_text,
+ &text_len, &default_item_id, &menu_cnt, &menu_items);
+#endif
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);
+ memcpy(select_item.text.string, selected_text, TAPI_SAT_DEF_TEXT_STRING_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){
- int index = 0;
- GVariant *unbox;
- GVariantIter *iter;
-
- 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[index].itemId = item_id;
- select_item.menuItem[index].textLen = item_len;
- memcpy(select_item.menuItem[index].text, item_str, TAPI_SAT_ITEM_TEXT_LEN_MAX + 1);
- index++;
+ select_item.menuItem[local_index].itemId = item_id;
+ select_item.menuItem[local_index].textLen = item_len;
+ memcpy(select_item.menuItem[local_index].text, item_str, TAPI_SAT_ITEM_TEXT_LEN_MAX + 1);
+ local_index++;
+ }
+ g_variant_iter_free(iter);
+ }
+
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ if(icon_id) {
+ unbox = g_variant_get_variant(icon_id);
+ g_variant_get(unbox, "a(biiiiiis)", &iter);
+
+ while(g_variant_iter_loop(iter,"(biiiiiis)", &is_exist, &icon_quali, &icon_identifier, &width, &height, &ics, &icon_data_len, &icon_data)) {
+ if(!is_exist)
+ break;
+ select_item.iconId.bIsPresent = is_exist;
+ select_item.iconId.iconQualifier = icon_quali;
+ select_item.iconId.iconIdentifier = icon_identifier;
+ select_item.iconId.iconInfo.width = width;
+ select_item.iconId.iconInfo.height = height;
+ select_item.iconId.iconInfo.ics = ics;
+ if(icon_data_len > 0) {
+ select_item.iconId.iconInfo.iconDataLen = icon_data_len;
+ memcpy(select_item.iconId.iconInfo.iconFile, icon_data, icon_data_len);
+ }
+ dbg("icon exist(%d), icon_quali: (%d), icon_id: (%d), width: (%d), height: (%d), ics: (%d), icon_data_len: (%d)", select_item.iconId.bIsPresent, select_item.iconId.iconQualifier, select_item.iconId.iconIdentifier, select_item.iconId.iconInfo.width,
+ select_item.iconId.iconInfo.height, select_item.iconId.iconInfo.ics, select_item.iconId.iconInfo.iconDataLen);
}
g_variant_iter_free(iter);
}
+ if(icon_list){
+ unbox_list = g_variant_get_variant(icon_list);
+ g_variant_get(unbox_list, "a(biiv)", &iter);
+
+ while(g_variant_iter_loop(iter,"(biiv)", &is_list_exist, &icon_list_quali, &list_cnt, &icon_list_info)) {
+ if(!is_list_exist)
+ break;
+ select_item.iconIdList.bIsPresent = is_list_exist;
+ select_item.iconIdList.iconListQualifier = icon_list_quali;
+ select_item.iconIdList.iconCount = list_cnt;
+
+ unbox_list_info = g_variant_get_variant(icon_list_info);
+ g_variant_get(unbox_list_info, "a(iiiiis)", &iter2);
+
+ while(g_variant_iter_loop(iter2,"(iiiiis)",&icon_list_identifier, &list_width, &list_height, &list_ics, &icon_list_data_len, &icon_list_data)){
+ select_item.iconIdList.iconIdentifierList[icon_index]= icon_identifier;
+ select_item.iconIdList.iconInfo[icon_index].width = list_width;
+ select_item.iconIdList.iconInfo[icon_index].height = list_height;
+ select_item.iconIdList.iconInfo[icon_index].ics = list_ics;
+ if(icon_list_data_len > 0) {
+ select_item.iconIdList.iconInfo[icon_index].iconDataLen = icon_list_data_len;
+ memcpy(select_item.iconIdList.iconInfo[icon_index].iconFile, icon_list_data, icon_list_data_len);
+ }
+ icon_index++;
+ }
+ g_variant_iter_free(iter2);
+ }
+ g_variant_iter_free(iter);
+ }
+#endif
cmd_type = g_strdup_printf("%d", SAT_PROATV_CMD_SELECT_ITEM);
encoded_data = g_base64_encode((const guchar*)&select_item, sizeof(TelSatSelectItemInd_t));
bundle_add(bundle_data, "KEY_EXEC_TYPE", "1");
bundle_add(bundle_data, "cmd_type", cmd_type);
bundle_add(bundle_data, "data", encoded_data);
+ bundle_add(bundle_data, "slot_id", slot_info);
- rv = aul_launch_app("com.samsung.sat-ui", bundle_data);
- dbg("select item aul (%d)", rv);
+ rv = __sat_ui_support_app_launch(bundle_data, slot_info);
- bundle_free(bundle_data);
g_free(encoded_data);
g_free(cmd_type);
- return TRUE;
+ return rv;
}
-static gboolean _sat_ui_support_processing_get_inkey_ind(GVariant *data)
+static gboolean _sat_ui_support_processing_get_inkey_ind(GVariant *data, char *slot_info)
{
- gint rv;
+ gboolean rv = FALSE;
bundle *bundle_data = 0;
gchar *encoded_data = NULL, *cmd_type = NULL;
TelSatGetInkeyInd_t get_inkey;
gint command_id, key_type, input_character_mode;
gint text_len, duration;
gboolean b_numeric, b_help_info;
- gchar *text;
+ gchar *text = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
GVariant *icon_id;
-
+ GVariant *unbox = NULL;
+ gboolean is_exist;
+ gint icon_quali, icon_identifier, width, height, ics, icon_data_len;
+ gchar *icon_data = NULL;
+ GVariantIter *iter;
+#endif
memset(&get_inkey, 0, sizeof(TelSatGetInkeyInd_t));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
g_variant_get(data, "(iiibbsii@v)", &command_id, &key_type, &input_character_mode,
&b_numeric,&b_help_info, &text, &text_len, &duration, &icon_id);
-
+#else
+ g_variant_get(data, "(iiibbsii)", &command_id, &key_type, &input_character_mode,
+ &b_numeric,&b_help_info, &text, &text_len, &duration);
+#endif
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;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ if(icon_id) {
+ unbox = g_variant_get_variant(icon_id);
+ g_variant_get(unbox, "a(biiiiiis)", &iter);
+
+ while(g_variant_iter_loop(iter,"(biiiiiis)", &is_exist, &icon_quali, &icon_identifier, &width, &height, &ics, &icon_data_len, &icon_data)) {
+ if(!is_exist)
+ break;
+ get_inkey.iconId.bIsPresent = is_exist;
+ get_inkey.iconId.iconQualifier = icon_quali;
+ get_inkey.iconId.iconIdentifier = icon_identifier;
+ get_inkey.iconId.iconInfo.width = width;
+ get_inkey.iconId.iconInfo.height = height;
+ get_inkey.iconId.iconInfo.ics = ics;
+ if(icon_data_len > 0) {
+ get_inkey.iconId.iconInfo.iconDataLen = icon_data_len;
+ memcpy(get_inkey.iconId.iconInfo.iconFile, icon_data, icon_data_len);
+ }
+ dbg("icon exist(%d), icon_quali: (%d), icon_id: (%d), width: (%d), height: (%d), ics: (%d), icon_data_len: (%d)", get_inkey.iconId.bIsPresent, get_inkey.iconId.iconQualifier, get_inkey.iconId.iconIdentifier, get_inkey.iconId.iconInfo.width,
+ get_inkey.iconId.iconInfo.height, get_inkey.iconId.iconInfo.ics, get_inkey.iconId.iconInfo.iconDataLen);
+ }
+ g_variant_iter_free(iter);
+ }
+#endif
cmd_type = g_strdup_printf("%d", SAT_PROATV_CMD_GET_INKEY);
encoded_data = g_base64_encode((const guchar*)&get_inkey, sizeof(TelSatGetInkeyInd_t));
bundle_add(bundle_data, "KEY_EXEC_TYPE", "1");
bundle_add(bundle_data, "cmd_type", cmd_type);
bundle_add(bundle_data, "data", encoded_data);
+ bundle_add(bundle_data, "slot_id", slot_info);
- rv = aul_launch_app("com.samsung.sat-ui", bundle_data);
- dbg("get inkey aul (%d)", rv);
+ rv = __sat_ui_support_app_launch(bundle_data, slot_info);
- bundle_free(bundle_data);
g_free(encoded_data);
g_free(cmd_type);
- return TRUE;
+ return rv;
}
-static gboolean _sat_ui_support_processing_get_input_ind(GVariant *data)
+static gboolean _sat_ui_support_processing_get_input_ind(GVariant *data, char *slot_info)
{
- gint rv;
+ gboolean rv = FALSE;
bundle *bundle_data = 0;
gchar *encoded_data = NULL, *cmd_type = NULL;
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, *def_text;
+ gchar *text = NULL, *def_text = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
GVariant *icon_id;
-
+ GVariant *unbox = NULL;
+ gboolean is_exist;
+ gint icon_quali, icon_identifier, width, height, ics, icon_data_len;
+ gchar *icon_data = NULL;
+ GVariantIter *iter;
+#endif
memset(&get_input, 0, sizeof(TelSatGetInputInd_t));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
g_variant_get(data, "(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(data, "(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
get_input.commandId = command_id;
get_input.inputCharMode = input_character_mode;
get_input.bIsNumeric = (b_numeric ? 1 : 0);
get_input.respLen.min = rsp_len_min;
memcpy(get_input.defaultText.string, def_text, TAPI_SAT_DEF_TEXT_STRING_LEN_MAX+1);
get_input.defaultText.stringLen = def_text_len;
-
+ g_free(text);
+ g_free(def_text);
+
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ if(icon_id) {
+ unbox = g_variant_get_variant(icon_id);
+ g_variant_get(unbox, "a(biiiiiis)", &iter);
+
+ while(g_variant_iter_loop(iter,"(biiiiiis)", &is_exist, &icon_quali, &icon_identifier, &width, &height, &ics, &icon_data_len, &icon_data)) {
+ if(!is_exist)
+ break;
+ get_input.iconId.bIsPresent = is_exist;
+ get_input.iconId.iconQualifier = icon_quali;
+ get_input.iconId.iconIdentifier = icon_identifier;
+ get_input.iconId.iconInfo.width = width;
+ get_input.iconId.iconInfo.height = height;
+ get_input.iconId.iconInfo.ics = ics;
+ if(icon_data_len > 0) {
+ get_input.iconId.iconInfo.iconDataLen = icon_data_len;
+ memcpy(get_input.iconId.iconInfo.iconFile, icon_data, icon_data_len);
+ }
+ dbg("icon exist(%d), icon_quali: (%d), icon_id: (%d), width: (%d), height: (%d), ics: (%d), icon_data_len: (%d)", get_input.iconId.bIsPresent, get_input.iconId.iconQualifier, get_input.iconId.iconIdentifier, get_input.iconId.iconInfo.width,
+ get_input.iconId.iconInfo.height, get_input.iconId.iconInfo.ics, get_input.iconId.iconInfo.iconDataLen);
+ }
+ g_variant_iter_free(iter);
+ }
+#endif
cmd_type = g_strdup_printf("%d", SAT_PROATV_CMD_GET_INPUT);
encoded_data = g_base64_encode((const guchar*)&get_input, sizeof(TelSatGetInputInd_t));
bundle_add(bundle_data, "KEY_EXEC_TYPE", "1");
bundle_add(bundle_data, "cmd_type", cmd_type);
bundle_add(bundle_data, "data", encoded_data);
+ bundle_add(bundle_data, "slot_id", slot_info);
- rv = aul_launch_app("com.samsung.sat-ui", bundle_data);
- dbg("get input aul (%d)", rv);
+ rv = __sat_ui_support_app_launch(bundle_data, slot_info);
+
+ g_free(encoded_data);
+ g_free(cmd_type);
+
+ return rv;
+}
+
+static gboolean _sat_ui_support_processing_refresh_ind(GVariant *data, char *slot_info)
+{
+ gboolean rv = FALSE;
+ bundle *bundle_data = 0;
+ gchar *encoded_data = NULL, *cmd_type = NULL;
+ TelSatRefreshIndUiInfo_t refresh_info;
+
+ gint command_id = 0;
+ gint refresh_type =0;
+ GVariant *file_list = NULL;
+
+ memset(&refresh_info, 0, sizeof(TelSatRefreshIndUiInfo_t));
+
+ dbg("refresh type_format(%s)", g_variant_get_type_string(data));
+ g_variant_get(data, "(ii@v)", &command_id, &refresh_type, &file_list);
+
+ refresh_info.commandId = command_id;
+
+ refresh_info.duration = 3000;
+
+#if defined(TIZEN_SUPPORT_STK_HIDE_ALPHA_ID)
+ refresh_info.duration = 0;
+#endif
+
+ refresh_info.refreshType = refresh_type;
+
+ cmd_type = g_strdup_printf("%d", SAT_PROATV_CMD_REFRESH);
+ encoded_data = g_base64_encode((const guchar*)&refresh_info, sizeof(TelSatRefreshIndUiInfo_t));
+
+ bundle_data = bundle_create();
+ bundle_add(bundle_data, "KEY_EXEC_TYPE", "1");
+ bundle_add(bundle_data, "cmd_type", cmd_type);
+ bundle_add(bundle_data, "data", encoded_data);
+ bundle_add(bundle_data, "slot_id", slot_info);
+
+ rv = __sat_ui_support_app_launch(bundle_data, slot_info);
+
+ g_free(encoded_data);
+ g_free(cmd_type);
+
+ return rv;
+}
+
+static gboolean _sat_ui_support_processing_play_tone_ind(GVariant *data, char *slot_info)
+{
+ gboolean rv = FALSE;
+ bundle *bundle_data = 0;
+ gchar *encoded_data = NULL, *cmd_type = NULL;
+ TelSatPlayToneInd_t play_tone_info;
+
+ gint command_id, tone_type, duration;
+ gint text_len;
+ gchar* text = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+ GVariant *unbox = NULL;
+ gboolean is_exist;
+ gint icon_quali, icon_identifier, width, height, ics, icon_data_len;
+ gchar *icon_data = NULL;
+ GVariantIter *iter;
+#endif
+ memset(&play_tone_info, 0, sizeof(TelSatPlayToneInd_t));
+
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(data, "(isi@vii)", &command_id, &text, &text_len, &icon_id, &tone_type, &duration);
+#else
+ g_variant_get(data, "(isiii)", &command_id, &text, &text_len, &tone_type, &duration);
+#endif
+ play_tone_info.commandId = command_id;
+ play_tone_info.duration = duration;
+ play_tone_info.text.stringLen = text_len;
+ memcpy(play_tone_info.text.string, text, TAPI_SAT_DEF_TEXT_STRING_LEN_MAX+1);
+ g_free(text);
+
+ play_tone_info.tone.type = tone_type;
+
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ if(icon_id) {
+ unbox = g_variant_get_variant(icon_id);
+ g_variant_get(unbox, "a(biiiiiis)", &iter);
+
+ while(g_variant_iter_loop(iter,"(biiiiiis)", &is_exist, &icon_quali, &icon_identifier, &width, &height, &ics, &icon_data_len, &icon_data)) {
+ if(!is_exist)
+ break;
+ play_tone_info.iconId.bIsPresent = is_exist;
+ play_tone_info.iconId.iconQualifier = icon_quali;
+ play_tone_info.iconId.iconIdentifier = icon_identifier;
+ play_tone_info.iconId.iconInfo.width = width;
+ play_tone_info.iconId.iconInfo.height = height;
+ play_tone_info.iconId.iconInfo.ics = ics;
+ if(icon_data_len > 0) {
+ play_tone_info.iconId.iconInfo.iconDataLen = icon_data_len;
+ memcpy(play_tone_info.iconId.iconInfo.iconFile, icon_data, icon_data_len);
+ }
+ dbg("icon exist(%d), icon_quali: (%d), icon_id: (%d), width: (%d), height: (%d), ics: (%d), icon_data_len: (%d)", play_tone_info.iconId.bIsPresent, play_tone_info.iconId.iconQualifier, play_tone_info.iconId.iconIdentifier, play_tone_info.iconId.iconInfo.width,
+ play_tone_info.iconId.iconInfo.height, play_tone_info.iconId.iconInfo.ics, play_tone_info.iconId.iconInfo.iconDataLen);
+ }
+ g_variant_iter_free(iter);
+ }
+#endif
+ cmd_type = g_strdup_printf("%d", SAT_PROATV_CMD_PLAY_TONE);
+ encoded_data = g_base64_encode((const guchar*)&play_tone_info, sizeof(TelSatPlayToneInd_t));
+
+ bundle_data = bundle_create();
+ bundle_add(bundle_data, "KEY_EXEC_TYPE", "1");
+ bundle_add(bundle_data, "cmd_type", cmd_type);
+ bundle_add(bundle_data, "data", encoded_data);
+ bundle_add(bundle_data, "slot_id", slot_info);
+
+ rv = __sat_ui_support_app_launch(bundle_data, slot_info);
- bundle_free(bundle_data);
g_free(encoded_data);
g_free(cmd_type);
+ return rv;
+}
+
+static gboolean _sat_ui_support_processing_idle_mode_text_ind(GVariant *data, char *slot_info)
+{
+ gboolean rv = FALSE;
+ bundle *bundle_data = 0;
+ gchar *encoded_data = NULL, *cmd_type = NULL;
+ TelSatSetupIdleModeTextInd_t idle_mode_text_info;
+
+ gint command_id, text_len;
+ gchar* text = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+ GVariant *unbox = NULL;
+ gboolean is_exist;
+ gint icon_quali, icon_identifier, width, height, ics, icon_data_len;
+ gchar *icon_data = NULL;
+ GVariantIter *iter;
+#endif
+ memset(&idle_mode_text_info, 0, sizeof(TelSatSetupIdleModeTextInd_t));
+
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(data, "(isi@v)", &command_id, &text, &text_len, &icon_id);
+#else
+ g_variant_get(data, "(isi)", &command_id, &text, &text_len);
+#endif
+ idle_mode_text_info.commandId = command_id;
+ idle_mode_text_info.text.stringLen = text_len;
+ memcpy(idle_mode_text_info.text.string, text, TAPI_SAT_DEF_TEXT_STRING_LEN_MAX+1);
+ g_free(text);
+
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ if(icon_id) {
+ unbox = g_variant_get_variant(icon_id);
+ g_variant_get(unbox, "a(biiiiiis)", &iter);
+
+ while(g_variant_iter_loop(iter,"(biiiiiis)", &is_exist, &icon_quali, &icon_identifier, &width, &height, &ics, &icon_data_len, &icon_data)) {
+ if(!is_exist)
+ break;
+ idle_mode_text_info.iconId.bIsPresent = is_exist;
+ idle_mode_text_info.iconId.iconQualifier = icon_quali;
+ idle_mode_text_info.iconId.iconIdentifier = icon_identifier;
+ idle_mode_text_info.iconId.iconInfo.width = width;
+ idle_mode_text_info.iconId.iconInfo.height = height;
+ idle_mode_text_info.iconId.iconInfo.ics = ics;
+ if(icon_data_len > 0) {
+ idle_mode_text_info.iconId.iconInfo.iconDataLen = icon_data_len;
+ memcpy(idle_mode_text_info.iconId.iconInfo.iconFile, icon_data, icon_data_len);
+ }
+ dbg("icon exist(%d), icon_quali: (%d), icon_id: (%d), width: (%d), height: (%d), ics: (%d), icon_data_len: (%d)", idle_mode_text_info.iconId.bIsPresent, idle_mode_text_info.iconId.iconQualifier, idle_mode_text_info.iconId.iconIdentifier, idle_mode_text_info.iconId.iconInfo.width,
+ idle_mode_text_info.iconId.iconInfo.height, idle_mode_text_info.iconId.iconInfo.ics, idle_mode_text_info.iconId.iconInfo.iconDataLen);
+ }
+ g_variant_iter_free(iter);
+ }
+#endif
+ cmd_type = g_strdup_printf("%d", SAT_PROATV_CMD_SETUP_IDLE_MODE_TEXT);
+ encoded_data = g_base64_encode((const guchar*)&idle_mode_text_info, sizeof(TelSatSetupIdleModeTextInd_t));
+
+ bundle_data = bundle_create();
+ bundle_add(bundle_data, "KEY_EXEC_TYPE", "1");
+ bundle_add(bundle_data, "cmd_type", cmd_type);
+ bundle_add(bundle_data, "data", encoded_data);
+ bundle_add(bundle_data, "slot_id", slot_info);
+
+ rv = __sat_ui_support_app_launch(bundle_data, slot_info);
+
+ g_free(encoded_data);
+ g_free(cmd_type);
+
+ /* P130527-4589 (I8800): Megafone Russia SIM cards.
+ * Need to check for debug without execption handling.
+ */
+ if (rv != TRUE) {
+ err("result is error");
+ }
+
return TRUE;
}
-static gboolean _sat_ui_support_processing_ui_info_ind(GVariant *data)
+static gboolean _sat_ui_support_processing_ui_info_ind(enum tel_sat_proactive_cmd_type cmd, GVariant *data, char *slot_info)
{
- gint rv;
- gint cmd = 0;
+ gboolean rv = FALSE;
bundle *bundle_data = 0;
gchar *encoded_data = NULL, *cmd_type = NULL;
TelSatSendUiInfo_t ui_info;
gint command_id, text_len;
gboolean user_confirm;
- gchar *text;
-
+ gchar *text = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *unbox = NULL;
+ gboolean is_exist;
+ gint icon_quali, icon_identifier, width, height, ics, icon_data_len;
+ gchar *icon_data = NULL;
+ GVariant *icon_id = NULL;
+ GVariantIter *iter;
+#endif
memset(&ui_info, 0, sizeof(TelSatSendUiInfo_t));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(data, "(isib@v)", &command_id, &text, &text_len, &user_confirm, &icon_id);
+#else
g_variant_get(data, "(isib)", &command_id, &text, &text_len, &user_confirm);
+#endif
dbg("command_id(%d) data(%s) len(%d) user_confirm(%d)", command_id, text, text_len, user_confirm);
ui_info.commandId = command_id;
memcpy(ui_info.text.string, text, TAPI_SAT_DEF_TEXT_STRING_LEN_MAX+1);
+ g_free(text);
+
ui_info.text.stringLen = text_len;
ui_info.user_confirm = (user_confirm ? 1 : 0);
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ if(icon_id) {
+ unbox = g_variant_get_variant(icon_id);
+ g_variant_get(unbox, "a(biiiiiis)", &iter);
+
+ while(g_variant_iter_loop(iter,"(biiiiiis)", &is_exist, &icon_quali, &icon_identifier, &width, &height, &ics, &icon_data_len, &icon_data)) {
+ if(!is_exist)
+ break;
+ ui_info.iconId.bIsPresent = is_exist;
+ ui_info.iconId.iconQualifier = icon_quali;
+ ui_info.iconId.iconIdentifier = icon_identifier;
+ ui_info.iconId.iconInfo.width = width;
+ ui_info.iconId.iconInfo.height = height;
+ ui_info.iconId.iconInfo.ics = ics;
+ if(icon_data_len > 0) {
+ ui_info.iconId.iconInfo.iconDataLen = icon_data_len;
+ memcpy(ui_info.iconId.iconInfo.iconFile, icon_data, icon_data_len);
+ }
+ dbg("icon exist(%d), icon_quali: (%d), icon_id: (%d), width: (%d), height: (%d), ics: (%d), icon_data_len: (%d)", ui_info.iconId.bIsPresent, ui_info.iconId.iconQualifier, ui_info.iconId.iconIdentifier, ui_info.iconId.iconInfo.width,
+ ui_info.iconId.iconInfo.height, ui_info.iconId.iconInfo.ics, ui_info.iconId.iconInfo.iconDataLen);
+ }
+ g_variant_iter_free(iter);
+ }
+#endif
cmd_type = g_strdup_printf("%d", cmd);
encoded_data = g_base64_encode((const guchar*)&ui_info, sizeof(TelSatSendUiInfo_t));
-
bundle_data = bundle_create();
bundle_add(bundle_data, "KEY_EXEC_TYPE", "1");
bundle_add(bundle_data, "cmd_type", cmd_type);
bundle_add(bundle_data, "data", encoded_data);
+ bundle_add(bundle_data, "slot_id", slot_info);
- rv = aul_launch_app("com.samsung.sat-ui", bundle_data);
- dbg("ui info aul (%d)", rv);
+ rv = __sat_ui_support_app_launch(bundle_data, slot_info);
- bundle_free(bundle_data);
g_free(encoded_data);
g_free(cmd_type);
- return TRUE;
+ return rv;
+}
+
+gboolean sat_ui_check_app_is_running(const char* app_id)
+{
+ gboolean rv = FALSE;
+ rv = aul_app_is_running(app_id);
+ dbg("check the app(%s) is running rv(%d)", app_id, rv);
+ return rv;
}
gboolean sat_ui_support_terminate_sat_ui()
bundle_add(bundle_data, "KEY_EXEC_TYPE", "1");
bundle_add(bundle_data, "cmd_type", cmd_type);
- rv = aul_launch_app("com.samsung.sat-ui", bundle_data);
+ rv = aul_launch_app("org.tizen.sat-ui", bundle_data);
dbg("session end aul (%d)", rv);
bundle_free(bundle_data);
return TRUE;
}
-gboolean sat_ui_support_launch_sat_ui(enum tel_sat_proactive_cmd_type cmd_type, GVariant *data)
+gboolean sat_ui_support_launch_sat_ui(enum tel_sat_proactive_cmd_type cmd_type, GVariant *data, enum dbus_tapi_sim_slot_id slot_id)
{
gboolean result = FALSE;
- sat_ui_support_create_desktop_file("temp");
+ char slot_info[2] = {0,};
+
+ snprintf(slot_info, 2, "%d", slot_id);
+ dbg("slot_id : [%s]", slot_info);
switch(cmd_type){
case SAT_PROATV_CMD_NONE:
- result = _sat_ui_support_processing_ui_info_ind(data);
+ case SAT_PROATV_CMD_SEND_DTMF:
+ case SAT_PROATV_CMD_LAUNCH_BROWSER:
+ case SAT_PROATV_CMD_SEND_SMS:
+ result = _sat_ui_support_processing_ui_info_ind(cmd_type, data, slot_info);
break;
case SAT_PROATV_CMD_SETUP_MENU:
- result = _sat_ui_support_processing_setup_menu_ind(data);
+ result = _sat_ui_support_processing_setup_menu_ind(data, slot_info);
break;
case SAT_PROATV_CMD_DISPLAY_TEXT:
- result = _sat_ui_support_processing_display_text_ind(data);
+ result = _sat_ui_support_processing_display_text_ind(data, slot_info);
break;
case SAT_PROATV_CMD_SELECT_ITEM:
- result = _sat_ui_support_processing_select_item_ind(data);
+ result = _sat_ui_support_processing_select_item_ind(data, slot_info);
break;
case SAT_PROATV_CMD_GET_INKEY:
- result = _sat_ui_support_processing_get_inkey_ind(data);
+ result = _sat_ui_support_processing_get_inkey_ind(data, slot_info);
break;
case SAT_PROATV_CMD_GET_INPUT:
- result = _sat_ui_support_processing_get_input_ind(data);
+ result = _sat_ui_support_processing_get_input_ind(data, slot_info);
+ break;
+ case SAT_PROATV_CMD_REFRESH:
+ result = _sat_ui_support_processing_refresh_ind(data, slot_info);
+ break;
+ case SAT_PROATV_CMD_PLAY_TONE:
+ result = _sat_ui_support_processing_play_tone_ind(data, slot_info);
+ break;
+ case SAT_PROATV_CMD_SETUP_IDLE_MODE_TEXT:
+ result = _sat_ui_support_processing_idle_mode_text_ind(data, slot_info);
break;
case SAT_PROATV_CMD_SETUP_EVENT_LIST:
break;
return result;
}
-gboolean sat_ui_support_launch_call_application(enum tel_sat_proactive_cmd_type cmd_type, GVariant *data)
+gboolean sat_ui_support_launch_call_application(enum tel_sat_proactive_cmd_type cmd_type, GVariant *data, enum dbus_tapi_sim_slot_id slot_id)
{
- gint rv;
char buffer[300];
+ char slot_info[2] = {0,};
bundle *bundle_data = 0;
dbg("launch call application by aul");
+ bundle_data = bundle_create();
+
+ appsvc_set_operation(bundle_data, APPSVC_OPERATION_CALL);
+ appsvc_set_uri(bundle_data,"tel:MT");
switch(cmd_type){
case SAT_PROATV_CMD_SETUP_CALL:{
- gint command_id, call_type, text_len, duration;
- gchar *text, *call_number;
+ gint command_id, call_type, confirm_text_len, text_len, duration;
+ gchar *confirm_text = NULL, *text = NULL, *call_number = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
GVariant *icon_id;
-
+#endif
dbg("setup call type_format(%s)", g_variant_get_type_string(data));
- g_variant_get(data, "(isi@visi)", &command_id, &text, &text_len, &icon_id, &call_type, &call_number, &duration);
-
- bundle_add(bundle_data, "launch-type","SATSETUPCALL");
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(data, "(isisi@visi)", &command_id, &confirm_text, &confirm_text_len, &text, &text_len, &icon_id, &call_type, &call_number, &duration);
+#else
+ g_variant_get(data, "(isisiisi)", &command_id, &confirm_text, &confirm_text_len, &text, &text_len, &call_type, &call_number, &duration);
+#endif
+ appsvc_add_data(bundle_data, "launch-type","SATSETUPCALL");
snprintf(buffer, 300, "%d",command_id);
- bundle_add(bundle_data, "cmd_id",buffer);
+ appsvc_add_data(bundle_data, "cmd_id",buffer);
dbg("cmd_id(%s)",buffer);
snprintf(buffer, 300, "%d",call_type);
- bundle_add(bundle_data, "cmd_qual", buffer);
+ appsvc_add_data(bundle_data, "cmd_qual", buffer);
dbg("cmd_qual(%s)",buffer);
snprintf(buffer, 300, "%s", text);
- bundle_add(bundle_data, "disp_text", buffer);
+ appsvc_add_data(bundle_data, "disp_text", buffer);
dbg("disp_text(%s)",buffer);
snprintf(buffer, 300, "%s", call_number);
- bundle_add(bundle_data, "call_num", buffer);
+ appsvc_add_data(bundle_data, "call_num", buffer);
dbg("call_num(%s)",buffer);
snprintf(buffer, 300, "%d", duration);
- bundle_add(bundle_data, "dur", buffer);
+ appsvc_add_data(bundle_data, "dur", buffer);
dbg("dur(%s)",buffer);
+
+ g_free(confirm_text);
+ g_free(text);
+ g_free(call_number);
} break;
default:
+ bundle_free(bundle_data);
return FALSE;
break;
}
- rv = aul_launch_app("com.samsung.call",bundle_data);
+ snprintf(slot_info, 2, "%d", slot_id);
+ appsvc_add_data(bundle_data, "slot_id", slot_info);
+ dbg("slot_id : [%s]", slot_info);
+
+ appsvc_run_service(bundle_data, 0, NULL, NULL);
+ dbg("call app is called");
bundle_free(bundle_data);
return TRUE;
}
-gboolean sat_ui_support_launch_browser_application(enum tel_sat_proactive_cmd_type cmd_type, GVariant *data)
+gboolean sat_ui_support_launch_browser_application(enum tel_sat_proactive_cmd_type cmd_type, GVariant *data, enum dbus_tapi_sim_slot_id slot_id)
{
- gint rv;
char buffer[300];
+ char slot_info[2] = {0,};
bundle *bundle_data = 0;
dbg("launch browser application by aul");
+ bundle_data = bundle_create();
- /*TODO : need to make a sync with app engineer*/
+ appsvc_set_operation(bundle_data, APPSVC_OPERATION_VIEW);
switch(cmd_type){
case SAT_PROATV_CMD_LAUNCH_BROWSER:{
- gint command_id, call_type, text_len, duration;
- gchar *text, *call_number;
- GVariant *icon_id;
-
- dbg("setup call type_format(%s)", g_variant_get_type_string(data));
- g_variant_get(data, "(isi@visi)", &command_id, &text, &text_len, &icon_id, &call_type, &call_number, &duration);
-
- bundle_add(bundle_data, "launch-type","SATSETUPCALL");
+ gint command_id, launch_type, browser_id;
+ gint url_len, text_len, gateway_proxy_len;
+ gchar *url = NULL, *text = NULL, *gateway_proxy = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id = NULL;
+#endif
+ dbg("launch_browser type_format(%s)", g_variant_get_type_string(data));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(data, "(iiisisisi@v)", &command_id, &launch_type, &browser_id, &url, &url_len, &gateway_proxy, &gateway_proxy_len, &text, &text_len, &icon_id);
+#else
+ g_variant_get(data, "(iiisisisi)", &command_id, &launch_type, &browser_id, &url, &url_len, &gateway_proxy, &gateway_proxy_len, &text, &text_len);
+#endif
+ if(!url || strlen(url) < 7){
+ g_free(url);
+ url = g_strdup("http://");
+ }
+ dbg("url (%s)", url);
+ appsvc_set_uri(bundle_data, url);
+ g_free(url);
+
+ snprintf(buffer, 300, "%d",TRUE);
+ appsvc_add_data(bundle_data, "sat",buffer);
snprintf(buffer, 300, "%d",command_id);
- bundle_add(bundle_data, "cmd_id",buffer);
+ appsvc_add_data(bundle_data, "cmd_id",buffer);
dbg("cmd_id(%s)",buffer);
- snprintf(buffer, 300, "%d",call_type);
- bundle_add(bundle_data, "cmd_qual", buffer);
- dbg("cmd_qual(%s)",buffer);
+ snprintf(buffer, 300, "%d",launch_type);
+ appsvc_add_data(bundle_data, "launch_type", buffer);
+ dbg("launch_type(%s)",buffer);
- snprintf(buffer, 300, "%s", text);
- bundle_add(bundle_data, "disp_text", buffer);
- dbg("disp_text(%s)",buffer);
+ snprintf(buffer, 300, "%s", gateway_proxy);
+ appsvc_add_data(bundle_data, "proxy", buffer);
+ dbg("proxy(%s)",buffer);
- snprintf(buffer, 300, "%s", call_number);
- bundle_add(bundle_data, "call_num", buffer);
- dbg("call_num(%s)",buffer);
+ g_free(text);
+ g_free(gateway_proxy);
- snprintf(buffer, 300, "%d", duration);
- bundle_add(bundle_data, "dur", buffer);
- dbg("dur(%s)",buffer);
} break;
default:
+ bundle_free(bundle_data);
return FALSE;
break;
}
- rv = aul_launch_app("com.samsung.call",bundle_data);
+ snprintf(slot_info, 2, "%d", slot_id);
+ appsvc_add_data(bundle_data, "slot_id", slot_info);
+ dbg("slot_id(%s)", slot_info);
+
+ appsvc_run_service(bundle_data, 0, NULL, NULL);
+ dbg("browser app is called");
bundle_free(bundle_data);
return TRUE;
}
-gboolean sat_ui_support_launch_setting_application(enum tel_sat_proactive_cmd_type cmd_type, GVariant *data)
+gboolean sat_ui_support_launch_ciss_application(enum tel_sat_proactive_cmd_type cmd_type, GVariant *data, enum dbus_tapi_sim_slot_id slot_id)
+{
+ bundle *bundle_data = 0;
+ gchar *encoded_data = NULL, *cmd = NULL;
+ char slot_info[2] = {0,};
+
+ dbg("launch ciss application by aul");
+ bundle_data = bundle_create();
+ appsvc_set_pkgname(bundle_data, "org.tizen.ciss");
+
+ switch(cmd_type){
+ case SAT_PROATV_CMD_SEND_SS:{
+ TelSatSendSsIndSsData_t ss_info;
+
+ 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
+ dbg("launch ciss ui for send ss proactive cmd");
+
+ memset(&ss_info, 0, sizeof(TelSatSendSsIndSsData_t));
+
+ dbg("send ss type_format(%s)", g_variant_get_type_string(data));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(data, "(isi@viiis)", &command_id, &text, &text_len, &icon_id, &ton, &npi, &ss_str_len, &ss_string);
+#else
+ g_variant_get(data, "(isiiiis)", &command_id, &text, &text_len, &ton, &npi, &ss_str_len, &ss_string);
+#endif
+ ss_info.commandId = command_id;
+ ss_info.ton = ton;
+ ss_info.npi = npi;
+ memcpy(ss_info.ssString, ss_string, TAPI_SAT_DEF_SS_LEN_MAX+1);
+ ss_info.ssStringLen = ss_str_len;
+ g_free(text);
+ g_free(ss_string);
+
+ cmd = g_strdup_printf("%d", cmd_type);
+ encoded_data = g_base64_encode((const guchar*)&ss_info, sizeof(TelSatSendSsIndSsData_t));
+ } break;
+
+ case SAT_PROATV_CMD_SEND_USSD:{
+ TelSatSendUssdIndUssdData_t ussd_info;
+
+ 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
+ dbg("launch ciss ui for send ussd proactive cmd");
+
+ memset(&ussd_info, 0, sizeof(TelSatSendUssdIndUssdData_t));
+
+ dbg("send ussd type_format(%s)", g_variant_get_type_string(data));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(data, "(isi@vyis)", &command_id, &text, &text_len, &icon_id, &dcs, &ussd_str_len, &ussd_string);
+#else
+ g_variant_get(data, "(isiyis)", &command_id, &text, &text_len, &dcs, &ussd_str_len, &ussd_string);
+#endif
+ ussd_info.commandId = command_id;
+ ussd_info.rawDcs = dcs;
+ memcpy(ussd_info.ussdString, ussd_string, TAPI_SAT_DEF_USSD_LEN_MAX+1);
+ ussd_info.ussdStringLen = ussd_str_len;
+ g_free(text);
+ g_free(ussd_string);
+
+ cmd = g_strdup_printf("%d", cmd_type);
+ encoded_data = g_base64_encode((const guchar*)&ussd_info, sizeof(TelSatSendUssdIndUssdData_t));
+ } break;
+
+ default:
+ bundle_free(bundle_data);
+ return FALSE;
+ break;
+ }
+
+ snprintf(slot_info, 2, "%d", slot_id);
+ dbg("slot_id : [%s]", slot_info);
+
+ appsvc_add_data(bundle_data, "CISS_LAUNCHING_MODE", "RESP");
+ appsvc_add_data(bundle_data, "KEY_EVENT_TYPE", cmd);
+ appsvc_add_data(bundle_data, "KEY_ENCODED_DATA", encoded_data);
+ appsvc_add_data(bundle_data, "KEY_SLOT_ID", slot_info);
+ g_free(encoded_data);
+ g_free(cmd);
+
+ appsvc_run_service(bundle_data, 0, NULL, NULL);
+ dbg("ciss is called");
+ bundle_free(bundle_data);
+
+ return TRUE;
+}
+
+gboolean sat_ui_support_launch_setting_application(enum tel_sat_proactive_cmd_type cmd_type, GVariant *data, enum dbus_tapi_sim_slot_id slot_id)
{
gint rv;
char buffer[300];
bundle *bundle_data = 0;
+ char slot_info[2] = {0,};
dbg("launch setting application by aul");
switch(cmd_type){
case SAT_PROATV_CMD_LANGUAGE_NOTIFICATION:{
gint command_id, call_type, text_len, duration;
- gchar *text, *call_number;
+ gchar *text = NULL, *call_number = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
GVariant *icon_id;
-
+#endif
dbg("setup call type_format(%s)", g_variant_get_type_string(data));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
g_variant_get(data, "(isi@visi)", &command_id, &text, &text_len, &icon_id, &call_type, &call_number, &duration);
-
+#else
+ g_variant_get(data, "(isiisi)", &command_id, &text, &text_len, &call_type, &call_number, &duration);
+#endif
bundle_add(bundle_data, "launch-type","SATSETUPCALL");
snprintf(buffer, 300, "%d",command_id);
snprintf(buffer, 300, "%d", duration);
bundle_add(bundle_data, "dur", buffer);
dbg("dur(%s)",buffer);
+
+ g_free(text);
+ g_free(call_number);
} break;
case SAT_PROATV_CMD_PROVIDE_LOCAL_INFO:
break;
}
- rv = aul_launch_app("com.samsung.call",bundle_data);
+ snprintf(slot_info, 2, "%d", slot_id);
+ dbg("slot_id : [%s]", slot_info);
+ bundle_add(bundle_data, "slot_id", slot_info);
+
+ rv = aul_launch_app("org.tizen.call",bundle_data);
+ dbg("rv of aul_launch_app()=[%d]", rv);
bundle_free(bundle_data);
return TRUE;
}
-gboolean sat_ui_support_create_desktop_file(const gchar *title)
+gboolean sat_ui_support_exec_bip(GDBusConnection *connection, const gchar *path, enum tel_sat_proactive_cmd_type cmd_type, GVariant *data)
{
- int rv = 0;
- FILE *b_check, *f_out;
+ gboolean rv = FALSE;
+ gchar *signal_name = NULL;
+ GVariant *out_param = NULL;
- if(!title){
- dbg("title does not exist");
- return FALSE;
- }
+ switch(cmd_type){
+ case SAT_PROATV_CMD_OPEN_CHANNEL:{
+ 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 = NULL;
+ GVariant *bearer_param;
+ GVariant *bearer_detail;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+#endif
+ dbg("open channel type_format(%s)", g_variant_get_type_string(data));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(data,"(isi@vbbbiviiiisv)", &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(data,"(isibbbiviiiisv)", &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
+ out_param = g_variant_new("(isibbbiviiiisv)", 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);
+ signal_name = g_strdup("OpenChannel");
+
+ g_free(text);
+ g_free(dest_address);
+ } break;
+ case SAT_PROATV_CMD_CLOSE_CHANNEL:{
+ gint command_id, channel_id, text_len;
+ gchar *text = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+#endif
+ dbg("close channel type_format(%s)", g_variant_get_type_string(data));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(data, "(isi@vi)", &command_id, &text, &text_len, &icon_id, &channel_id);
+#else
+ g_variant_get(data, "(isii)", &command_id, &text, &text_len, &channel_id);
+#endif
+ out_param = g_variant_new("(isii)", command_id, text, text_len, channel_id);
+ signal_name = g_strdup("CloseChannel");
+
+ g_free(text);
+ } break;
+ case SAT_PROATV_CMD_RECEIVE_DATA:{
+ gint command_id, text_len, channel_id, channel_data_len = 0;
+ gchar *text = NULL;
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ GVariant *icon_id;
+#endif
+ dbg("receive data type_format(%s)", g_variant_get_type_string(data));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(data, "(isi@vii)", &command_id, &text, &text_len, &icon_id, &channel_id, &channel_data_len);
+#else
+ g_variant_get(data, "(isiii)", &command_id, &text, &text_len, &channel_id, &channel_data_len);
+#endif
+ out_param = g_variant_new("(isiii)", command_id, text, text_len, channel_id, channel_data_len);
+ signal_name = g_strdup("ReceiveData");
+
+ g_free(text);
+ } break;
+ case SAT_PROATV_CMD_SEND_DATA:{
+ 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
+ dbg("send data type_format(%s)", g_variant_get_type_string(data));
+#if defined(TIZEN_SUPPORT_SAT_ICON)
+ g_variant_get(data, "(isi@vibvi)", &command_id, &text, &text_len, &icon_id, &channel_id, &send_data_immediately, &channel_data, &channel_data_len);
+#else
+ g_variant_get(data, "(isiibvi)", &command_id, &text, &text_len, &channel_id, &send_data_immediately, &channel_data, &channel_data_len);
+#endif
+ out_param = g_variant_new("(isiibvi)", command_id, text, text_len, channel_id, send_data_immediately, channel_data, channel_data_len);
+ signal_name = g_strdup("SendData");
+
+ g_free(text);
+ } break;
+ case SAT_PROATV_CMD_GET_CHANNEL_STATUS:{
+ gint command_id;
- b_check = fopen("/opt/share/applications/com.samsung.sat-ui.desktop", "r");
- if(b_check && !(g_strcmp0(title,"temp")) ){
- dbg("desktop file aleady exist");
- fclose(b_check);
- return TRUE;
- }
+ dbg("get channel status type_format(%s)", g_variant_get_type_string(data));
+ g_variant_get(data, "(i)", &command_id);
- if(b_check)
- fclose(b_check);
+ out_param = g_variant_new("(i)", command_id);
+ signal_name = g_strdup("GetChannelStatus");
+ } break;
+ case SAT_PROATV_CMD_SETUP_EVENT_LIST:{
+ gint event_cnt;
+ GVariant *evt_list;
- f_out = fopen("/tmp/com.samsung.sat-ui.desktop", "w");
- if(!f_out){
- dbg("fail to create sat-ui desktop file");
- return FALSE;
+ dbg("setup event list type_format(%s)", g_variant_get_type_string(data));
+ g_variant_get(data, "(iv)", &event_cnt, &evt_list);
+
+ out_param = g_variant_new("(iv)", event_cnt, evt_list);
+ signal_name = g_strdup("SetupEventList");
+ } break;
+ default:
+ dbg("no matched command");
+ return FALSE;
+ break;
}
- fprintf(f_out, "Package=com.samsung.sat-ui\n");
- fprintf(f_out, "Name=%s\n",title);
- fprintf(f_out, "Type=Application\n");
- fprintf(f_out, "Version=0.2.2\n");
- fprintf(f_out, "Exec=/usr/apps/com.samsung.sat-ui/bin/sat-ui KEY_EXEC_TYPE 0\n");
- fprintf(f_out, "Icon=com.samsung.sat-ui.png\n");
- fprintf(f_out, "X-Tizen-TaskManage=True\n");
- fprintf(f_out, "X-Tizen-Multiple=False\n");
- fprintf(f_out, "X-Tizen-Removable=False\n");
- fprintf(f_out, "Comment=SIM Application UI\n");
- fclose(f_out);
-
- rv = system("/bin/cp /tmp/com.samsung.sat-ui.desktop /opt/share/applications/");
- dbg("the result to create desktop file (%d)", rv);
- rv = system("/bin/rm /tmp/com.samsung.sat-ui.desktop");
-
- if(rv == -1 || rv == 127)
- return FALSE;
+ dbg("dbus conn(%p), path(%s)", connection, path);
+ rv = g_dbus_connection_emit_signal(connection, "org.tizen.bip-manager", path, "org.tizen.telephony.SAT", signal_name, out_param, NULL);
+ g_free(signal_name);
- return TRUE;
+ dbg("send signal to bip-mananger result (%d)", rv);
+
+ return rv;
}
-gboolean sat_ui_support_remove_desktop_file(void)
+gboolean sat_ui_support_exec_evtdw(GDBusConnection *connection, const gchar *path, enum tel_sat_proactive_cmd_type cmd_type, GVariant *data)
{
- int rv = 0;
- FILE *b_check;
+ gboolean rv = FALSE;
+ gchar *signal_name = NULL;
+ GVariant *out_param = NULL;
+ gchar *interface_name = NULL;
+ gint event_cnt;
+ GVariant *evt_list;
+
+ dbg("dbus conn(%p), path(%s)", connection, path);
+
+ if(g_str_has_suffix(path , "0")){
+ interface_name = g_strdup("org.tizen.sat-event-downloader");
+
+ } else if (g_str_has_suffix(path , "1")){
+ interface_name = g_strdup("org.tizen.sat-event-downloader-2");
+ } else {
+ err("invalid sim slot id");
+ return FALSE;
+ }
+
+ if (cmd_type == SAT_PROATV_CMD_SETUP_EVENT_LIST){
+ dbg("setup event list type_format(%s)", g_variant_get_type_string(data));
+ g_variant_get(data, "(iv)", &event_cnt, &evt_list);
- b_check = fopen("/opt/share/applications/com.samsung.sat-ui.desktop", "r");
- if(!b_check){
- dbg("desktop file does not exist");
- return TRUE;
+ out_param = g_variant_new("(iv)", event_cnt, evt_list);
+ signal_name = g_strdup("SetupEventList");
+ } else {
+ err("invalid cmd_type:[%d]", cmd_type);
+ g_free(interface_name);
+ return FALSE;
}
- rv = system("/bin/rm /opt/share/applications/com.samsung.sat-ui.desktop");
- dbg("the result to remove desktop file (%d)", rv);
+ rv = g_dbus_connection_emit_signal(connection, interface_name, path, "org.tizen.telephony.SAT", signal_name, out_param, NULL);
+ dbg("send signal to sat-event-downloader result (%d)", rv);
- return TRUE;
+ g_free(interface_name);
+ g_free(signal_name);
+ return rv;
}